X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.h;h=ffaea7822b7938944ad7bc0863b90baf9f211450;hb=1548a47199250d3819961adb37becac65bc72f3c;hp=9858d69fdb23f0615c8666e8ee24e1d68e200148;hpb=42e16e21ac020e807f7656d570baec84d46e0579;p=clitk.git diff --git a/vv/vvSlicerManager.h b/vv/vvSlicerManager.h index 9858d69..ffaea78 100644 --- a/vv/vvSlicerManager.h +++ b/vv/vvSlicerManager.h @@ -52,6 +52,7 @@ class vvSlicerManager : public QObject { Q_OBJECT public: + typedef enum {WORLD_SLICING, VOXELS_SLICING} SlicingPresetType; vvSlicerManager(int numberOfSlicers); ~vvSlicerManager(); @@ -63,8 +64,9 @@ class vvSlicerManager : public QObject { void SetImage(vvImage::Pointer image); bool SetImages(std::vector filenames, vvImageReader::LoadedImageType type, int n=0); - bool SetOverlay(std::string filename, int dim, std::string component); + bool SetOverlay(std::vector filenames, int dim, std::string component, vvImageReader::LoadedImageType type); bool SetFusion(std::string filename, int dim, std::string component); + bool SetFusionSequence(std::vector filenames, int dim, std::string component, vvImageReader::LoadedImageType type); ///Set a VF by loading it from the disk bool SetVF(std::string filename); ///Set a VF from memory @@ -85,6 +87,10 @@ class vvSlicerManager : public QObject { ///Switch between nearest neighbor and linear interpolation void ToggleInterpolation(); vvSlicer* GetSlicer(int i); + int GetSelectedSlicer() { + return mSelectedSlicer; + } + void UpdateSlicer(int num, bool state); void SetSlicerWindow(int i, vtkRenderWindow* RW); void SetInteractorStyleNavigator(int i,vtkInteractorStyle* style); @@ -94,7 +100,7 @@ class vvSlicerManager : public QObject { vvImage::Pointer GetVF() { return mVF; } int GetType() { return mType; } void SetId(std::string id) { mId = id; } - std::string GetId() { return mId; } + std::string GetId() const { return mId; } int GetDimension() { if (mImage) return mImage->GetNumberOfDimensions(); else return -1; @@ -103,11 +109,14 @@ class vvSlicerManager : public QObject { void SetFilename(std::string f, int number=0); void SetSliceOrientation(int slicer, int orientation); + int GetTSlice(); void SetTSlice(int slice); void SetNextTSlice(int originating_slicer); void SetPreviousTSlice(int originating_slicer); void SetTSliceInSlicer(int tslice, int slicer); + void SetFusionSequenceTSlice(int slice); + void GenerateDefaultLookupTable(); void SetColorWindow(double s); void SetColorLevel(double s); @@ -140,17 +149,44 @@ class vvSlicerManager : public QObject { mFusionShowLegend = show; } - double GetColorWindow(); - double GetColorLevel(); + + //set/get fusionSequence related data + void SetFusionSequenceFrameIndex(int sequenceFrameIndex) { mFusionSequenceFrameIndex = sequenceFrameIndex; } + void SetFusionSequenceSpatialSyncFlag(bool spatialSync) { mFusionSequenceSpatialSyncFlag = spatialSync; } + void SetFusionSequenceLength(unsigned int fusionSequenceNbFrames) { mFusionSequenceNbFrames = fusionSequenceNbFrames; } + void SetFusionSequenceMainTransformMatrix(vtkSmartPointer mat) { + mFusionSequenceMainTransform = vtkSmartPointer::New(); + mFusionSequenceMainTransform->DeepCopy(mat); + } + void AddFusionSequenceInitialTransformMatrices(vtkSmartPointer mat) { + vtkSmartPointer tmpMat = vtkSmartPointer::New(); + tmpMat->DeepCopy(mat); + mFusionSequenceListInitialTransformMatrices.push_back( tmpMat ); + } + + int GetFusionSequenceFrameIndex() { return mFusionSequenceFrameIndex; } + bool GetFusionSequenceSpatialSyncFlag() { return mFusionSequenceSpatialSyncFlag; } + unsigned int GetFusionSequenceNbFrames() { return mFusionSequenceNbFrames; } + const vtkSmartPointer& GetFusionSequenceMainTransformMatrix() {return mFusionSequenceMainTransform;} + const std::vector< vtkSmartPointer >& GetFusionSequenceInitialTransformMatrices() {return mFusionSequenceListInitialTransformMatrices;} + const vtkSmartPointer& GetFusionSequenceInitialTransformMatrixAtFrame(unsigned i) { + return mFusionSequenceListInitialTransformMatrices[i]; + } + + double GetColorWindow() const; + double GetColorLevel() const; double GetOverlayColorWindow() const; double GetOverlayColorLevel() const; bool GetLinkOverlayWindowLevel() const; int GetColorMap() { return mColorMap; } - int GetPreset() { + int GetPreset() const { return mPreset; } + SlicingPresetType GetSlicingPreset() { + return mSlicingPreset; + } int GetOverlayColor() const { return mOverlayColor; } @@ -170,6 +206,7 @@ class vvSlicerManager : public QObject { return mFusionLevel; } + void SetCursorAndCornerAnnotationVisibility(int s); void UpdateViews(int current, int slicer); void UpdateLinked(int slicer); @@ -184,6 +221,10 @@ class vvSlicerManager : public QObject { mLinkedId.remove(oldId); } + std::list GetLinks() const { + return mLinkedId; + } + bool IsLinked() { return mLinkedId.size() > 0; } @@ -194,15 +235,19 @@ class vvSlicerManager : public QObject { void Reload(); void ReloadOverlay(); void ReloadFusion(); + void ReloadFusionSequence(); void ReloadVF(); void Activated(); void Picked(); void UpdateInfoOnCursorPosition(int slicer); + void EmitMousePositionUpdated(int slicer); + void EmitKeyPressed(std::string keyPress); void UpdateWindowLevel(); void UpdateSlice(int slicer); void UpdateTSlice(int slicer); void UpdateSliceRange(int slicer); + void SetSlicingPreset(SlicingPresetType preset); vvLandmarks *GetLandmarks(); void AddLandmark(float x,float y,float z,float t); @@ -220,6 +265,9 @@ signals : 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 UpdateFusionSequence(int fusionSequenceFrameIndex, bool fusionSequenceSpatialSyncFlag, unsigned int fusionSequenceNbFrames); + void MousePositionUpdatedSignal(int slicer); + void KeyPressedSignal(std::string KeyPressed); void UpdateOrientation(int slicer, int orientation); void UpdateSlice(int slicer, int slice); void UpdateTSlice(int slicer, int slice); @@ -234,9 +282,11 @@ signals : protected: std::vector< vtkSmartPointer > mSlicers; + int mSelectedSlicer; vvImageReader::Pointer mReader; vvImageReader::Pointer mOverlayReader; vvImageReader::Pointer mFusionReader; + vvImageReader::Pointer mFusionSequenceReader; vvImageReader::Pointer mVectorReader; vvImage::Pointer mImage; vvImage::Pointer mVF; @@ -250,7 +300,15 @@ protected: double mFusionLevel; bool mFusionShowLegend; + //fusionSequence related data + int mFusionSequenceFrameIndex; + bool mFusionSequenceSpatialSyncFlag; + unsigned int mFusionSequenceNbFrames; + vtkSmartPointer mFusionSequenceMainTransform; + std::vector< vtkSmartPointer > mFusionSequenceListInitialTransformMatrices; + int mPreset; + SlicingPresetType mSlicingPreset; vvImageReader::LoadedImageType mType; std::string mVFComponent; std::string mOverlayComponent;