X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.h;h=527078af0ac77789bbeb4e0ef2aa53f19fcf2262;hb=9ac2232043d7a08735edf00572ccb6565919fd3d;hp=940b107e9df32abfe299bba6e8c37bbc11ecb894;hpb=f1cebc71809c5218578a58486f829980eeb29ab3;p=clitk.git diff --git a/vv/vvSlicerManager.h b/vv/vvSlicerManager.h index 940b107..527078a 100644 --- a/vv/vvSlicerManager.h +++ b/vv/vvSlicerManager.h @@ -66,6 +66,7 @@ class vvSlicerManager : public QObject { 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 @@ -99,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; @@ -109,11 +110,13 @@ class vvSlicerManager : public QObject { void SetSliceOrientation(int slicer, int orientation); int GetTSlice(); - void SetTSlice(int slice); + void SetTSlice(int slice, bool updateLinkedImages = true); 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); @@ -146,6 +149,42 @@ class vvSlicerManager : public QObject { mFusionShowLegend = show; } + + //set/get fusionSequence related data + void SetFusionSequenceFrameIndex(int sequenceFrameIndex) { mFusionSequenceFrameIndex = sequenceFrameIndex; } + void SetFusionSequenceSpatialSyncFlag(bool spatialSync) { mFusionSequenceSpatialSyncFlag = spatialSync; } + void SetFusionSequenceTemporalSyncFlag(bool temporalSync) { mFusionSequenceTemporalSyncFlag = temporalSync; } + 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 ); + } + void SetFusionSequenceIndexOfLinkedManager(int index) { mFusionSequenceIndexLinkedManager = index; } + void SetFusionSequenceTemporalSignal(std::vector s) { mFusionSequenceTemporalSignal = s; } + + void SetFusionSequenceInvolvmentCode(int code) { mFusionSequenceInvolvementCode=code; } + int GetFusionSequenceInvolvmentCode() { return mFusionSequenceInvolvementCode;} + bool IsInvolvedInFusionSequence() {return (!(mFusionSequenceInvolvementCode==-1));} + bool IsMainSequenceOfFusionSequence() {return (mFusionSequenceInvolvementCode==0);} + bool IsSecondarySequenceOfFusionSequence() {return (mFusionSequenceInvolvementCode==1);} + + int GetFusionSequenceIndexOfLinkedManager() { return mFusionSequenceIndexLinkedManager; } + int GetFusionSequenceFrameIndex() { return mFusionSequenceFrameIndex; } + bool GetFusionSequenceSpatialSyncFlag() { return mFusionSequenceSpatialSyncFlag; } + bool GetFusionSequenceTemporalSyncFlag() { return mFusionSequenceTemporalSyncFlag; } + 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]; + } + const std::vector& GetFusionSequenceTemporalSignal() {return mFusionSequenceTemporalSignal;} + double GetColorWindow() const; double GetColorLevel() const; double GetOverlayColorWindow() const; @@ -179,6 +218,7 @@ class vvSlicerManager : public QObject { return mFusionLevel; } + void SetCursorAndCornerAnnotationVisibility(int s); void UpdateViews(int current, int slicer); void UpdateLinked(int slicer); @@ -193,6 +233,10 @@ class vvSlicerManager : public QObject { mLinkedId.remove(oldId); } + std::list GetLinks() const { + return mLinkedId; + } + bool IsLinked() { return mLinkedId.size() > 0; } @@ -203,6 +247,7 @@ class vvSlicerManager : public QObject { void Reload(); void ReloadOverlay(); void ReloadFusion(); + void ReloadFusionSequence(); void ReloadVF(); void Activated(); @@ -232,6 +277,7 @@ 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); @@ -252,6 +298,7 @@ protected: vvImageReader::Pointer mReader; vvImageReader::Pointer mOverlayReader; vvImageReader::Pointer mFusionReader; + vvImageReader::Pointer mFusionSequenceReader; vvImageReader::Pointer mVectorReader; vvImage::Pointer mImage; vvImage::Pointer mVF; @@ -265,6 +312,16 @@ protected: double mFusionLevel; bool mFusionShowLegend; + //Fusion of sequences related data + int mFusionSequenceInvolvementCode; //-1: not involved, 0: main sequence(CT), 1: secondary sequence (US) + int mFusionSequenceIndexLinkedManager; //index of the other sequence involved in the visualization + int mFusionSequenceFrameIndex; //temporal index of the current image in the sequence (<->TSlice) + unsigned int mFusionSequenceNbFrames; //number of frames in the temporal sequence + bool mFusionSequenceSpatialSyncFlag, mFusionSequenceTemporalSyncFlag; //flags indicating whether the spatial/temporal synchronization are actives + vtkSmartPointer mFusionSequenceMainTransform; + std::vector< vtkSmartPointer > mFusionSequenceListInitialTransformMatrices; + std::vector mFusionSequenceTemporalSignal; + int mPreset; SlicingPresetType mSlicingPreset; vvImageReader::LoadedImageType mType;