#include <iostream>
#include <vector>
+#include <QObject>
#include <QString> //TODO delete
#include <QMessageBox>
#include <vtkImageReslice.h>
#include <vtkImageMapToColors.h>
#include <vtkCaptionActor2D.h>
+#include <vtkTransformPolyDataFilter.h>
class vtkActor;
class vtkActor2D;
class vtkTransform;
class vtkImageReslice;
-class vvSlicer: public vtkImageViewer2
-{
+class vvSlicer: public QObject, public vtkImageViewer2 {
+
+Q_OBJECT
+
public:
static vvSlicer *New();
vtkTypeMacro(vvSlicer,vtkImageViewer2);
double* GetCursorPosition() {
return mCursor;
}
-
vtkTransform * GetSlicingTransform() { return mSlicingTransform; }
vtkTransform * GetConcatenatedTransform() { return mConcatenatedTransform; }
vtkTransform * GetConcatenatedFusionTransform() { return mConcatenatedFusionTransform; }
void GetExtremasAroundMousePointer(double & min, double & max, vtkImageData *image, vtkTransform *transform);
- void UpdateLandmarks();
+ void RemoveLandmarks();
+ void DisplayLandmarks();
void ForceUpdateDisplayExtent();
int* GetDisplayExtent();
void SetRegisterExtent(int [6]);
void GetRegisterExtent(int [6]);
+ void SetSlicerNumber(const int nbSlicer) {mSlicerNumber = nbSlicer;}
+ int GetSlicerNumber() const {return mSlicerNumber;}
+
+signals:
+ void UpdateDisplayExtentBegin(int);
+ void UpdateDisplayExtentEnd(int);
+
protected:
vvSlicer();
~vvSlicer();
// ___|__|___ VTK world coordinates (mm) (never displayed) mCurrent
vtkSmartPointer<vtkTransform> mSlicingTransform;
+ vtkSmartPointer<vtkTransformPolyDataFilter> mLandmarkTransform;
vtkSmartPointer<vtkImageReslice> mImageReslice;
vtkSmartPointer<vtkTransform> mConcatenatedTransform;
vtkSmartPointer<vtkImageReslice> mOverlayReslice;
vtkSmartPointer<vtkScalarBarActor> legend;
std::vector<vvMeshActor*> mSurfaceCutActors;
+ int mSlicerNumber;
int mCurrentTSlice;
int mCurrentFusionTSlice;
int mCurrentOverlayTSlice;
private:
void UpdateOrientation();
void UpdateDisplayExtent();
+ void ConvertImageToImageDisplayExtent(vtkInformation *sourceImage, const int sourceExtent[6],
+ vtkImageData *targetImage, int targetExtent[6]);
void ConvertImageToImageDisplayExtent(vtkImageData *sourceImage, const int sourceExtent[6],
vtkImageData *targetImage, int targetExtent[6]);
///Sets the surfaces to be cut on the image slice: update the vtkCutter