X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.h;h=4acb1668cd22ed64e4b20abf07e883671771982a;hb=HEAD;hp=ffaea7822b7938944ad7bc0863b90baf9f211450;hpb=1548a47199250d3819961adb37becac65bc72f3c;p=clitk.git diff --git a/vv/vvSlicerManager.h b/vv/vvSlicerManager.h index ffaea78..4acb166 100644 --- a/vv/vvSlicerManager.h +++ b/vv/vvSlicerManager.h @@ -47,6 +47,18 @@ class vvImageReader; class vvImageReader; class vvLandmarks; +enum WindowLevelPreset { + WL_AUTO, + WL_HOUNSFIELD, + WL_SOFTTISSUE, + WL_LUNGS, + WL_BONES, + WL_HEAD, + WL_BINARY, + WL_USER, + WL_VENTILATION +}; + //------------------------------------------------------------------------------ class vvSlicerManager : public QObject { Q_OBJECT @@ -62,10 +74,10 @@ class vvSlicerManager : public QObject { bool SetImage(std::string filename, vvImageReader::LoadedImageType type, int n=0, unsigned int slice=0); void SetImage(vvImage::Pointer image); - bool SetImages(std::vector filenames, vvImageReader::LoadedImageType type, int n=0); + bool SetImages(std::vector filenames, vvImageReader::LoadedImageType type, int n=0, bool patientCoordinateSystem=0); bool SetOverlay(std::vector filenames, int dim, std::string component, vvImageReader::LoadedImageType type); - bool SetFusion(std::string filename, int dim, std::string component); + bool SetFusion(std::vector filenames,int dim, std::string component, vvImageReader::LoadedImageType type); 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); @@ -110,7 +122,7 @@ 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); @@ -153,6 +165,7 @@ class vvSlicerManager : public QObject { //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(); @@ -163,15 +176,26 @@ class vvSlicerManager : public QObject { tmpMat->DeepCopy(mat); mFusionSequenceListInitialTransformMatrices.push_back( tmpMat ); } + void SetFusionSequenceIndexOfLinkedManager(int index) { mFusionSequenceIndexLinkedManager = index; } + void SetFusionSequenceCorrespondances(std::vector s) { mFusionSequenceCorrespondances = 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& GetFusionSequenceCorrespondances() {return mFusionSequenceCorrespondances;} double GetColorWindow() const; double GetColorLevel() const; @@ -250,7 +274,8 @@ class vvSlicerManager : public QObject { void SetSlicingPreset(SlicingPresetType preset); vvLandmarks *GetLandmarks(); - void AddLandmark(float x,float y,float z,float t); + void AddNewLandmark(float x,float y,float z,float t); + void AddLandmarkProfile(float x,float y,float z,float t); void NextImage(int slicer); void PrevImage(int slicer); @@ -258,7 +283,12 @@ class vvSlicerManager : public QObject { void VerticalSliderHasChanged(int slicer, int slice); double GetScalarComponentAsDouble(vtkImageData *image, double X, double Y, double Z, int component=0); +public slots: + void AddLandmark(float x,float y,float z,float t); + void UpdateLandmark(); + signals : + void callAddLandmark(float x,float y,float z,float t); 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); @@ -270,7 +300,7 @@ signals : void KeyPressedSignal(std::string KeyPressed); void UpdateOrientation(int slicer, int orientation); void UpdateSlice(int slicer, int slice); - void UpdateTSlice(int slicer, int slice); + void UpdateTSlice(int slicer, int slice, int code); void UpdateSliceRange(int slice, int min, int max, int tmin, int tmax); void WindowLevelChanged(); void UpdateLinkManager(std::string, int slicer, double x, double y, double z, int temps); @@ -300,12 +330,15 @@ protected: double mFusionLevel; bool mFusionShowLegend; - //fusionSequence related data - int mFusionSequenceFrameIndex; - bool mFusionSequenceSpatialSyncFlag; - unsigned int mFusionSequenceNbFrames; + //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 mFusionSequenceCorrespondances; int mPreset; SlicingPresetType mSlicingPreset;