X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicer.h;h=a5156f28bc92e4f3c08e49db2c30b74c46d44ff9;hb=5a7da4aedae5c204bc55c187717193e5950f9a44;hp=7a1ee02a5857b559cbef3fb30f831b17a8ac241b;hpb=358b7d254e07d4eae0cb1350b580783a82c1638f;p=clitk.git diff --git a/vv/vvSlicer.h b/vv/vvSlicer.h index 7a1ee02..a5156f2 100644 --- a/vv/vvSlicer.h +++ b/vv/vvSlicer.h @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - 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 @@ -27,7 +27,8 @@ #include #include -#include +#include +#include class vtkActor; class vtkActor2D; @@ -70,7 +71,7 @@ public: } vtkImageMapToWindowLevelColors* GetOverlayMapper(); vvBlendImageActor* GetOverlayActor() ; - vtkImageMapToWindowLevelColors* GetFusionMapper() ; + vtkImageMapToColors* GetFusionMapper() ; vtkImageActor* GetFusionActor() ; vtkActor* GetVFActor() ; vtkCornerAnnotation* GetAnnotation(); @@ -80,9 +81,10 @@ public: return mFusion; } - /**Set an actor's visibility ("overlay, fusion, vf, contour...") + /**Get/Set an actor's visibility ("overlay, fusion, vf, contour...") Overlay index is the index of the overlay by type, eg. if there are 5 contours and we want to activate the 3rd one, pass 2 **/ + bool GetActorVisibility(const std::string& actor_type, int overlay_index); void SetActorVisibility(const std::string& actor_type, int overlay_index,bool vis); void RemoveActor(const std::string& actor_type, int overlay_index); @@ -94,6 +96,7 @@ public: void SetLandmarks(vvLandmarks* landmarks); void SetTSlice(int t); void SetSliceOrientation(int orientation); + void AdjustResliceToSliceOrientation(vtkImageReslice *reslice); int GetTSlice(); ///Reimplemented from vtkImageViewer2 to add polydata support void SetSlice(int s); @@ -106,7 +109,7 @@ public: void SetDisplayMode(bool i); void FlipHorizontalView(); void FlipVerticalView(); - static double GetScalarComponentAsDouble(vtkImageData *image, int X, double Y, double Z, int &ix, int &iy, int &iz, int component=0); + static double GetScalarComponentAsDouble(vtkImageData *image, double X, double Y, double Z, int &ix, int &iy, int &iz, int component=0); void Render(); ///Sets the camera to fit the image in the window void ResetCamera(); @@ -143,10 +146,14 @@ public: void UpdateCursorPosition(); void SetCursorVisibility(bool s); + bool GetCursorVisibility(); void SetCursorColor(int r,int g, int b); - void GetExtremasAroundMousePointer(double & min, double & max); + void SetCornerAnnotationVisibility(bool s); + bool GetCornerAnnotationVisibility(); + + void GetExtremasAroundMousePointer(double & min, double & max, vtkImageData *image); void UpdateLandmarks(); void ForceUpdateDisplayExtent(); @@ -161,7 +168,19 @@ public: virtual void SetColorWindow(double s); virtual void SetColorLevel(double s); - + double GetOverlayColorWindow(); + double GetOverlayColorLevel(); + bool GetLinkOverlayWindowLevel() { return mLinkOverlayWindowLevel; } + + void SetOverlayColorWindow(double s); + void SetOverlayColorLevel(double s); + void SetLinkOverlayWindowLevel(bool b) { mLinkOverlayWindowLevel = b; } + + /** + * When it is enabled, beware of a call to GetExtent. + * we must have setted mReducedExtent otherwhise random values + * are returned by GetExtent + * */ void EnableReducedExtent(bool b); void SetReducedExtent(int * ext); @@ -186,9 +205,12 @@ protected: vvLandmarks* mLandmarks; + vtkSmartPointer mImageReslice; + vtkSmartPointer mOverlayReslice; vtkSmartPointer mOverlayMapper; vtkSmartPointer mOverlayActor; - vtkSmartPointer mFusionMapper; + vtkSmartPointer mFusionReslice; + vtkSmartPointer mFusionMapper; vtkSmartPointer mFusionActor; vtkSmartPointer ca; vtkSmartPointer crossCursor; @@ -221,13 +243,13 @@ protected: bool mUseReducedExtent; int * mReducedExtent; int * mInitialExtent; + bool mLinkOverlayWindowLevel; private: void UpdateOrientation(); void UpdateDisplayExtent(); - 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 ConvertImageToImageDisplayExtent(vtkImageData *sourceImage, const int sourceExtent[6], + vtkImageData *targetImage, int targetExtent[6]); ///Sets the surfaces to be cut on the image slice: update the vtkCutter void SetContourSlice();