X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.h;h=aff339a42b0f846e388265369cc724fecf31ac9e;hb=5a7da4aedae5c204bc55c187717193e5950f9a44;hp=74560789979b45c13e133359562ba6dcf36ab0f4;hpb=1df2c8867c511818511bbd2b0be560325a4944c5;p=clitk.git diff --git a/vv/vvSlicerManager.h b/vv/vvSlicerManager.h index 7456078..aff339a 100644 --- a/vv/vvSlicerManager.h +++ b/vv/vvSlicerManager.h @@ -1,9 +1,10 @@ + /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv 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 @@ -14,11 +15,12 @@ - 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 +// std #include #include #include @@ -34,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; @@ -56,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 filenames, LoadedImageType type, int n=0); + bool SetImages(std::vector 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); @@ -78,6 +80,7 @@ class vvSlicerManager : public QObject { std::string GetVFName() { return mVFName; } std::string GetOverlayName() { return mOverlayName; } std::string GetFusionName() { return mFusionName; } + std::string GetListOfAbsoluteFilePathInOneString(const std::string &actorType); ///Switch between nearest neighbor and linear interpolation void ToggleInterpolation(); @@ -86,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; } @@ -97,8 +100,9 @@ class vvSlicerManager : public QObject { else return -1; } - void SetFilename(std::string f); + void SetFilename(std::string f, int number=0); + void SetSliceOrientation(int slicer, int orientation); void SetTSlice(int slice); void SetNextTSlice(int originating_slicer); void SetPreviousTSlice(int originating_slicer); @@ -107,62 +111,78 @@ class vvSlicerManager : public QObject { void GenerateDefaultLookupTable(); void SetColorWindow(double s); void SetColorLevel(double s); - void SetLocalColorWindowing(const int slicer); + void SetOverlayColorWindow(double s); + void SetOverlayColorLevel(double s); + void SetLinkOverlayWindowLevel(bool b); + void SetLocalColorWindowing(const int slicer, const bool bCtrlKey); void SetOpacity(int i, double factor); - void SetColorMap(); 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; } + void SetFusionThresholdOpacity(int thresOpacity) { + mFusionThresOpacity = thresOpacity; + } 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; } double GetColorWindow(); double GetColorLevel(); + double GetOverlayColorWindow() const; + double GetOverlayColorLevel() const; + bool GetLinkOverlayWindowLevel() const; int GetColorMap() { return mColorMap; } int GetPreset() { return mPreset; } - int GetOverlayColor() { + int GetOverlayColor() const { return mOverlayColor; } - - int GetFusionOpacity() { + int GetFusionOpacity() const { return mFusionOpacity; } - int GetFusionColorMap() { + int GetFusionThresholdOpacity() const { + return mFusionThresOpacity; + } + int GetFusionColorMap() const { return mFusionColorMap; } - double GetFusionWindow() { + double GetFusionWindow() const { return mFusionWindow; } - double GetFusionLevel() { + double GetFusionLevel() const { 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 ResetTransformationToIdentity(const std::string actorType); 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) @@ -174,6 +194,7 @@ class vvSlicerManager : public QObject { void ReloadVF(); void Activated(); + void Picked(); void UpdateInfoOnCursorPosition(int slicer); void UpdateWindowLevel(); void UpdateSlice(int slicer); @@ -182,39 +203,51 @@ class vvSlicerManager : public QObject { vvLandmarks *GetLandmarks(); void AddLandmark(float x,float y,float z,float t); + + 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); void UpdateFusion(int display, double valueFus); - void UpdateWindows(int slicer, int view, int slice); + void UpdateOrientation(int slicer, int orientation); void UpdateSlice(int slicer, int slice); void UpdateTSlice(int slicer, int slice); void UpdateSliceRange(int slice, int min, int max, int tmin, int tmax); - void WindowLevelChanged(double window, double level, int preset, int colormap); + void WindowLevelChanged(); 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 mSlicers; - vvImageReader* mReader; - vvImageReader* mOverlayReader; - vvImageReader* mFusionReader; + std::vector< vtkSmartPointer > 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; int mFusionOpacity; + int mFusionThresOpacity; int mFusionColorMap; double mFusionWindow; double mFusionLevel; int mPreset; - LoadedImageType mType; + vvImageReader::LoadedImageType mType; std::string mVFComponent; std::string mOverlayComponent; std::string mFusionComponent; @@ -230,6 +263,9 @@ protected: std::list mLinkedId; vvLandmarks* mLandmarks; + + std::vector mPreviousSlice; + std::vector mPreviousTSlice; }; #endif