]> Creatis software - clitk.git/blobdiff - vv/vvSlicer.h
remove unuseful Render (faster)
[clitk.git] / vv / vvSlicer.h
index a25748a95b6ea3c1e7cc6e02cf912ef518a6f75d..3ccf8effcdb4e49206e577620255b4361ef2e0b5 100644 (file)
@@ -1,29 +1,22 @@
 /*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
- Program:   vv
- Language:  C++
- Author :   Pierre Seroul (pierre.seroul@gmail.com)
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
-Copyright (C) 2008
-Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-CREATIS-LRMN http://www.creatis.insa-lyon.fr
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
 
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3 of the License.
+  It is distributed under dual licence
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-=========================================================================*/
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+======================================================================-====*/
 #ifndef __vvSlicer_h
 #define __vvSlicer_h
-
 #include <iostream>
 #include <vector>
 
@@ -41,6 +34,7 @@ class vtkPolyDataMapper2D;
 class vtkProperty2D;
 class vtkClipPolyData;
 class vtkImageActor;
+class vvBlendImageActor;
 class vtkBox;
 class vtkCornerAnnotation;
 class vtkExtractVOI;
@@ -51,10 +45,10 @@ class vvGlyph2D;
 class vvGlyphSource;
 class vtkCursor3D;
 class vtkCutter;
-class vtkPlane;
 class vtkAssignAttribute;
 class vtkScalarBarActor;
-
+class vtkTransform;
+class vtkImageReslice;
 
 class vvSlicer: public vtkImageViewer2
 {
@@ -74,12 +68,12 @@ public:
     }
 
     vtkImageMapToWindowLevelColors* GetOverlayMapper(); 
-    vtkImageActor* GetOverlayActor() ;
+    vvBlendImageActor* GetOverlayActor() ;
     vtkImageMapToWindowLevelColors* GetFusionMapper() ;
     vtkImageActor* GetFusionActor() ;
     vtkActor* GetVFActor() ;
-    vtkCornerAnnotation* GetAnnotation() ;
-
+    vtkCornerAnnotation* GetAnnotation();
+    
     void SetFusion(vvImage::Pointer inputFusion);
     vvImage::Pointer GetFusion() {
         return mFusion;
@@ -120,6 +114,7 @@ public:
         return mSubSampling;
     }
     void SetVFScale(int scale);
+    void SetVFWidth(int width);
     int GetVFScale() {
         return mScale;
     }
@@ -149,6 +144,8 @@ public:
     bool GetCursorVisibility();
     void SetCursorColor(int r,int g, int b);
 
+    void GetExtremasAroundMousePointer(double & min, double & max);
+
     void UpdateLandmarks();
     void ForceUpdateDisplayExtent();
 
@@ -159,6 +156,17 @@ public:
     ///Toggle temporal superposition of contours
     void ToggleContourSuperposition();
 
+    virtual void SetColorWindow(double s);
+    virtual void SetColorLevel(double s);
+
+    
+    void EnableReducedExtent(bool b);
+    void SetReducedExtent(int * ext);
+
+    void ClipDisplayedExtent(int extent[6], int refExtent[6]);
+    int GetOrientation();
+    int * GetExtent();
+
 protected:
     vvSlicer();
     ~vvSlicer();
@@ -172,7 +180,7 @@ protected:
     vvLandmarks* mLandmarks;
 
     vtkSmartPointer<vtkImageMapToWindowLevelColors> mOverlayMapper;
-    vtkSmartPointer<vtkImageActor> mOverlayActor;
+    vtkSmartPointer<vvBlendImageActor> mOverlayActor;
     vtkSmartPointer<vtkImageMapToWindowLevelColors> mFusionMapper;
     vtkSmartPointer<vtkImageActor> mFusionActor;
     vtkSmartPointer<vtkCornerAnnotation> ca;
@@ -191,9 +199,7 @@ protected:
     vtkSmartPointer<vtkPolyDataMapper> mLandMapper;
     vtkSmartPointer<vtkActor> mLandActor;
     vtkSmartPointer<vtkBox> mClipBox;
-    vtkSmartPointer<vtkPlane> mSlicePlane;
     vtkSmartPointer<vtkScalarBarActor> legend;
-
     std::vector<vvMeshActor*> mSurfaceCutActors;
 
     int mCurrentTSlice;
@@ -202,6 +208,10 @@ protected:
     int mSubSampling;
     int mScale;
     int mVFLog;
+    int mVFWidth;
+    bool mUseReducedExtent;
+    int * mReducedExtent;
+    int * mInitialExtent;
 
 private:
     void UpdateOrientation();
@@ -209,7 +219,6 @@ private:
     void ComputeVFDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int extent[6]);
     void ComputeOverlayDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int overExtent[6]);
     void ComputeFusionDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int overExtent[6]);
-    void ClipDisplayedExtent(int extent[6], int refExtent[6]);
     ///Sets the surfaces to be cut on the image slice: update the vtkCutter
     void SetContourSlice();