]> Creatis software - clitk.git/blobdiff - vv/vvSlicerManager.h
changes in license header
[clitk.git] / vv / vvSlicerManager.h
index 5d8d5d2d846890c35e024f99e5e988bbf20ca3c4..bb30f54d5aa255611b6fb9901de7463a078ea6b3 100644 (file)
@@ -4,7 +4,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
@@ -15,7 +15,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 #ifndef VVSLICERMANAGER_H
 #define VVSLICERMANAGER_H
@@ -36,10 +36,11 @@ class vtkRenderWindow;
 class vtkPolyData;
 
 // VV
-#include "vvConstants.h"
 #include "clitkCommon.h"
 #include "vvImage.h"
 #include "vvMesh.h"
+#include "vvImageReader.h"
+
 class vvSlicer;
 class vvInteractorStyleNavigator;
 class vvImageReader;
@@ -58,10 +59,9 @@ class vvSlicerManager : public QObject {
     return mLastError;
   }
 
-  bool SetImage(std::string filename,LoadedImageType type, int n=0);
+  bool SetImage(std::string filename, vvImageReader::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 SetImages(std::vector<std::string> filenames, vvImageReader::LoadedImageType type, int n=0);
 
   bool SetOverlay(std::string filename, int dim, std::string component);
   bool SetFusion(std::string filename, int dim, std::string component);
@@ -88,7 +88,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; }
@@ -99,7 +99,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);
@@ -115,7 +115,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;
@@ -123,10 +123,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;
   }
 
@@ -155,9 +155,10 @@ 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) {
@@ -166,6 +167,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 +181,7 @@ class vvSlicerManager : public QObject {
   void ReloadVF();
 
   void Activated();
+  void Picked();
   void UpdateInfoOnCursorPosition(int slicer);
   void UpdateWindowLevel();
   void UpdateSlice(int slicer);
@@ -189,9 +195,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,19 +210,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;
 
@@ -224,7 +233,7 @@ protected:
   double mFusionLevel;
 
   int mPreset;
-  LoadedImageType mType;
+  vvImageReader::LoadedImageType mType;
   std::string mVFComponent;
   std::string mOverlayComponent;
   std::string mFusionComponent;