]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOWxGimmick.cpp
No newline at end of file
[creaImageIO.git] / src / creaImageIOWxGimmick.cpp
index 3ad5e81280ede7cdd930ffcaab3ae209e648a723..4b8f3f3f76dbc77d6716617baa36dc5224249b51 100644 (file)
@@ -63,6 +63,8 @@ namespace creaImageIO
       PopUp_Settings = 501,
       PopUp_About    = 502,
       PopUp_User = WxGimmick::UserMenuFirstId,
+      PopUp_SaveAs = 701,
+      PopUp_AddToFavorites = 702
     };
   //================================================================
 
@@ -931,11 +933,13 @@ namespace creaImageIO
   {
     wxBusyCursor busy;
     //    std::cout << "WxGimmick : Reading config"<<std::endl;
+    LoadOrCreateFavoritesDatabase();
 
     //    std::cout <<     
     creaMessage("Gimmick!",1,"Gimmick! : ==> Loading collections from '"<<mDatabaseListFile<<"'"<<std::endl);
     //       <<"'"<<std::endl;
 
+
     std::ifstream s;
     s.open(mDatabaseListFile.c_str());
     if (s.good())
@@ -1024,6 +1028,13 @@ namespace creaImageIO
   }
   //================================================================
 
+  //================================================================
+  void WxGimmick::LoadOrCreateFavoritesDatabase()
+  {
+    // TODO
+  }
+  //================================================================
+
   /*
   //================================================================
   void  WxGimmick::OnClose(wxCloseEvent& event)
@@ -1992,7 +2003,7 @@ namespace creaImageIO
              }
            sib = GetTreeListCtrl()->GetNextSibling(sib);
          }
-       prio = maxprio + 1000;
+       prio = maxprio + 999;
        sib = GetTreeListCtrl()->GetPrevSibling(item);
        while (sib.IsOk())
          {
@@ -2035,13 +2046,17 @@ namespace creaImageIO
   void WxGimmick::ShowImage(vtkImageData* im)
   {
     //  wxBusyCursor busy;
+    mViewer->SetInput( im );
+    mViewer->SetSlice( 0 );
     
+
     int x1,x2,y1,y2,z1,z2;
     double spx,spy,spz;
+    im->Update();
     im->GetSpacing(spx,spy,spz);
     im->GetExtent (x1,x2,y1,y2,z1,z2);
-    
     /*
+    std::cout << "-----------------------------"<<std::endl;
       std::cout << x1 << "-"<<x2<<std::endl; 
       std::cout << y1 << "-"<<y2<<std::endl; 
       std::cout << z1 << "-"<<z2<<std::endl; 
@@ -2069,19 +2084,39 @@ namespace creaImageIO
        mspy = spy;
        mspz = spz;
        
+       double *range = im->GetScalarRange();
+        mViewer->SetColorWindow(range[1] - range[0]);
+        mViewer->SetColorLevel(0.5 * (range[1] + range[0]));
+
+        mViewer->GetRenderer()->ResetCamera();
+       double bounds[6];
+
+
+        mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds);
+
+        /*
+       std::cout <<"bounds : "<<bounds[0]<<","
+<<bounds[1]<<","
+<<bounds[2]<<","
+<<bounds[3]<<","
+<<bounds[4]<<","
+                 <<bounds[5]<<std::endl;
+        */
+        mViewer->GetRenderer()->ResetCameraClippingRange(bounds);
+       /*
        vtkCamera *camera = mViewer->GetRenderer()->GetActiveCamera();
        
        camera->SetViewUp ( spx*0, -spy*1, spz*0);
-       camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, -spz*10000000); 
+       camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, spz*10000000); 
        camera->SetFocalPoint   ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0); 
        
        camera->ComputeViewPlaneNormal();
        camera->SetParallelScale(  spx*(x2-x1)/2.0 );
        
+       camera->Roll ( 180 );
+       */
       }
     
-    mViewer->SetInput( im );
-    mViewer->SetSlice( 0 );
     mInteractor->Render();
   } 
   //================================================================
@@ -2270,6 +2305,10 @@ namespace creaImageIO
            ext[5] = im.size();
            out->SetExtent(ext);
            // LG : TODO : Z Spacing  ?
+           //
+           // ==> to get an accurate ZSpacing from a Dicom set of files
+           // ==> you need a gdcm::SerieHelper
+           //  JPR
            
            out->AllocateScalars();