]> Creatis software - clitk.git/blobdiff - vv/vvSlicerManager.h
Romulo:
[clitk.git] / vv / vvSlicerManager.h
index 431f1a04ef1b52f52efceb727eccac6a4f55911d..eda2d227a2ead7e85b76b7f7be4a82e22ae430d5 100644 (file)
@@ -40,6 +40,8 @@ class vtkPolyData;
 #include "clitkCommon.h"
 #include "vvImage.h"
 #include "vvMesh.h"
+#include "vvImageReader.h"
+
 class vvSlicer;
 class vvInteractorStyleNavigator;
 class vvImageReader;
@@ -58,7 +60,7 @@ class vvSlicerManager : public QObject {
     return mLastError;
   }
 
-  bool SetImage(std::string filename,LoadedImageType type, int n=0);
+  bool SetImage(std::string filename,LoadedImageType type, int n=0, unsigned int slice=0);
   void SetImage(vvImage::Pointer image);
   bool SetImages(std::vector<std::string> filenames, LoadedImageType type, int n=0);
 
@@ -87,7 +89,7 @@ class vvSlicerManager : public QObject {
   void SetSlicerWindow(int i, vtkRenderWindow* RW);
   void SetInteractorStyleNavigator(int i,vtkInteractorStyle* style);
 
-  int NumberOfSlicers()        { return mSlicers.size(); }
+  int GetNumberOfSlicers()        { return mSlicers.size(); }
   vvImage::Pointer GetImage()  { return mImage; }
   vvImage::Pointer GetVF()     { return mVF; }
   int GetType()                { return mType; }
@@ -154,7 +156,7 @@ class vvSlicerManager : public QObject {
     return mFusionLevel;
   }
 
-  void SetCursorVisibility(int s);
+  void SetCursorAndCornerAnnotationVisibility(int s);
   void UpdateViews(int current, int slicer);
   void UpdateLinked(int slicer);
   void UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate=false);
@@ -166,6 +168,10 @@ class vvSlicerManager : public QObject {
   void RemoveLink(std::string oldId) {
     mLinkedId.remove(oldId); 
   }
+  
+  bool IsLinked() {
+    return mLinkedId.size() > 0;
+  }
 
   ///Remove the actor defined by its type and index (example: 3rd contour)
   void RemoveActor(const std::string& actor_type, int overlay_index);
@@ -176,6 +182,7 @@ class vvSlicerManager : public QObject {
   void ReloadVF();
 
   void Activated();
+  void Picked();
   void UpdateInfoOnCursorPosition(int slicer);
   void UpdateWindowLevel();
   void UpdateSlice(int slicer);
@@ -189,9 +196,11 @@ class vvSlicerManager : public QObject {
   void PrevImage(int slicer);
   void LeftButtonReleaseEvent(int slicer);
   void VerticalSliderHasChanged(int slicer, int slice);
+  double GetScalarComponentAsDouble(vtkImageData *image, double X, double Y, double Z, int component=0);
 
 signals :
   void currentImageChanged(std::string id);
+  void currentPickedImageChanged(std::string id);
   void UpdatePosition(int visibility,double x, double y, double z, double X, double Y, double Z, double value);
   void UpdateVector(int display, double x, double y, double z, double value);
   void UpdateOverlay(int display, double valueOver, double valueRef);
@@ -202,20 +211,20 @@ signals :
   void UpdateSliceRange(int slice, int min, int max, int tmin, int tmax);
   void WindowLevelChanged(double window, double level, int preset, int colormap);
   void UpdateLinkManager(std::string, int slicer, double x, double y, double z, int temps);
-  void UpdateLinkedNavigation(std::string, vvSlicerManager*);
+  void UpdateLinkedNavigation(std::string, vvSlicerManager*, vvSlicer*);
   void LandmarkAdded();
   void ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset);
   void LeftButtonReleaseSignal(int slicer);
   void AVerticalSliderHasChanged(int slicer, int slice);
 
 protected:
-  std::vector<vvSlicer*> mSlicers;
-  vvImageReader* mReader;
-  vvImageReader* mOverlayReader;
-  vvImageReader* mFusionReader;
+  std::vector< vtkSmartPointer<vvSlicer> > mSlicers;
+  vvImageReader::Pointer mReader;
+  vvImageReader::Pointer mOverlayReader;
+  vvImageReader::Pointer mFusionReader;
+  vvImageReader::Pointer mVectorReader;
   vvImage::Pointer mImage;
   vvImage::Pointer mVF;
-  vvImageReader* mVectorReader;
   int mColorMap;
   int mOverlayColor;