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
- 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 <vtkSmartPointer.h>
#include <vtkImageViewer2.h>
+#include <vtkImageReslice.h>
+#include <vtkImageMapToColors.h>
class vtkActor;
class vtkActor2D;
}
vtkImageMapToWindowLevelColors* GetOverlayMapper();
vvBlendImageActor* GetOverlayActor() ;
- vtkImageMapToWindowLevelColors* GetFusionMapper() ;
+ vtkImageMapToColors* GetFusionMapper() ;
vtkImageActor* GetFusionActor() ;
vtkActor* GetVFActor() ;
vtkCornerAnnotation* GetAnnotation();
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);
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);
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();
void SetCornerAnnotationVisibility(bool s);
bool GetCornerAnnotationVisibility();
- void GetExtremasAroundMousePointer(double & min, double & max);
+ void GetExtremasAroundMousePointer(double & min, double & max, vtkImageData *image);
void UpdateLandmarks();
void ForceUpdateDisplayExtent();
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);
vvLandmarks* mLandmarks;
+ vtkSmartPointer<vtkImageReslice> mImageReslice;
+ vtkSmartPointer<vtkImageReslice> mOverlayReslice;
vtkSmartPointer<vtkImageMapToWindowLevelColors> mOverlayMapper;
vtkSmartPointer<vvBlendImageActor> mOverlayActor;
- vtkSmartPointer<vtkImageMapToWindowLevelColors> mFusionMapper;
+ vtkSmartPointer<vtkImageReslice> mFusionReslice;
+ vtkSmartPointer<vtkImageMapToColors> mFusionMapper;
vtkSmartPointer<vtkImageActor> mFusionActor;
vtkSmartPointer<vtkCornerAnnotation> ca;
vtkSmartPointer<vtkCursor2D> crossCursor;
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();