]> Creatis software - clitk.git/blobdiff - vv/vvSlicerManager.h
Romulo:
[clitk.git] / vv / vvSlicerManager.h
index 1608fbcec492dff52fae769cc3f957b6c3e5bb51..eda2d227a2ead7e85b76b7f7be4a82e22ae430d5 100644 (file)
@@ -1,3 +1,4 @@
+
 /*=========================================================================
   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
@@ -39,6 +40,8 @@ class vtkPolyData;
 #include "clitkCommon.h"
 #include "vvImage.h"
 #include "vvMesh.h"
+#include "vvImageReader.h"
+
 class vvSlicer;
 class vvInteractorStyleNavigator;
 class vvImageReader;
@@ -57,9 +60,8 @@ 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);
-  void SetExtractedImage(std::string filename, vvImage::Pointer image, int slice);
   bool SetImages(std::vector<std::string> filenames, LoadedImageType type, int n=0);
 
   bool SetOverlay(std::string filename, int dim, std::string component);
@@ -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; }
@@ -98,7 +100,7 @@ class vvSlicerManager : public QObject {
     else return -1;
   }
 
-  void SetFilename(std::string f);
+  void SetFilename(std::string f, int number=0);
 
   void SetTSlice(int slice);
   void SetNextTSlice(int originating_slicer);
@@ -114,7 +116,7 @@ class vvSlicerManager : public QObject {
   void SetColorMap(int colormap);
   void SetPreset(int preset);
   void SetOverlayColor(int color) {
-    mOverlayColor = color;
+    mOverlayColor = (color/60)*60; //SR: new vvBlendImageActor needs 0 or 255 per component
   }
   void SetFusionOpacity(int opacity) {
     mFusionOpacity = opacity;
@@ -122,10 +124,10 @@ class vvSlicerManager : public QObject {
   void SetFusionColorMap(int colorMap) {
     mFusionColorMap = colorMap;
   }
-  void SetFusionWindow(int window) {
+  void SetFusionWindow(double window) {
     mFusionWindow = window;
   }
-  void SetFusionLevel(int level) {
+  void SetFusionLevel(double level) {
     mFusionLevel = level;
   }
 
@@ -154,16 +156,21 @@ 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);
   void Render();
 
   void AddLink(std::string newId) {
     mLinkedId.push_back(newId);
   }
   void RemoveLink(std::string oldId) {
-    mLinkedId.remove(oldId);
+    mLinkedId.remove(oldId); 
+  }
+  
+  bool IsLinked() {
+    return mLinkedId.size() > 0;
   }
 
   ///Remove the actor defined by its type and index (example: 3rd contour)
@@ -175,6 +182,7 @@ class vvSlicerManager : public QObject {
   void ReloadVF();
 
   void Activated();
+  void Picked();
   void UpdateInfoOnCursorPosition(int slicer);
   void UpdateWindowLevel();
   void UpdateSlice(int slicer);
@@ -186,9 +194,13 @@ class vvSlicerManager : public QObject {
   
   void NextImage(int slicer);
   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);
@@ -199,17 +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*, 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;
 
@@ -235,6 +250,9 @@ protected:
   std::list<std::string> mLinkedId;
 
   vvLandmarks* mLandmarks;
+  
+  std::vector<int> mPreviousSlice;
+  std::vector<int> mPreviousTSlice;
 };
 
 #endif