]> Creatis software - clitk.git/blobdiff - vv/vvImageContour.h
textbox for loading initial transform included
[clitk.git] / vv / vvImageContour.h
index 5b16d3541387385fa91e20eaf49716095def2bed..d93a3f343b29ffbe1e0339903b935fc30984a1fd 100644 (file)
 ======================================================================-====*/
 #ifndef VVIMAGECONTOUR_H
 #define VVIMAGECONTOUR_H
+
 #include "clitkCommon.h"
 #include "vvSlicer.h"
+
 class vtkImageClip;
 class vtkMarchingSquares;
 class vtkActor;
+class vvImage;
 
 //------------------------------------------------------------------------------
 class vvImageContour
@@ -31,22 +34,50 @@ class vvImageContour
   vvImageContour();
   ~vvImageContour();
 
-  void setSlicer(vvSlicer * slicer);
-  void update(double value);
-  void hideActors();
-  void showActors();
-  void setColor(double r, double g, double b);
+  void SetSlicer(vvSlicer * slicer);
+  void Update(double value);
+  void HideActors();
+  void ShowActors();
+  void SetColor(double r, double g, double b);
+  void SetLineWidth(double w);
+  void SetImage(vvImage::Pointer image);
+  void SetPreserveMemoryModeEnabled(bool b);
 
  protected:
   vvSlicer * mSlicer;
   int mSlice;
   int mTSlice;
   double mValue;
+  int mPreviousTSlice;
+  double mPreviousValue;
+  bool mHiddenImageIsUsed;
+  vvImage::Pointer mHiddenImage;
+  bool mDisplayModeIsPreserveMemory;
 
+  // For preserveMemory mode
   std::vector<vtkImageClip*> mClipperList;
   std::vector<vtkMarchingSquares*> mSquaresList;
   std::vector<vtkActor*> mSquaresActorList;
 
+  // For fast cache mode
+  int mPreviousSlice;
+  int mPreviousOrientation;
+  std::vector<std::vector<vtkActor*> > mListOfCachedContourActors;
+
+  // Functions
+  void InitializeCacheMode();
+  void UpdateWithPreserveMemoryMode();
+  void UpdateWithFastCacheMode();
+  void CreateNewActor(vtkActor ** actor, 
+                     vtkMarchingSquares ** squares, 
+                     vtkImageClip ** clipper, int numImage);
+  void UpdateActor(vtkActor * actor, 
+                  vtkMarchingSquares * squares,
+                  vtkImageClip * clipper, 
+                  double threshold, int orientation, int slice);
+  void CreateActor(int orientation, int slice);
+  int ComputeCurrentOrientation();
+  
 }; // end class vvImageContour
 //------------------------------------------------------------------------------