26 #ifndef CANONICAL_SLICE_H
27 #define CANONICAL_SLICE_H
34 #include <vtkSmartPointer.h>
35 #include <vtkWindowLevelLookupTable.h>
36 #include <vtkImageMapToColors.h>
38 #include <vtkImageActor.h>
39 #include <vtkImageChangeInformation.h>
40 #include <vtkImageReslice.h>
41 #include <vtkMatrix4x4.h>
42 #include <vtkPolyDataMapper.h>
43 #include <vtkPlaneSource.h>
44 #include <vtkTransform.h>
46 #include <vtkUnstructuredGrid.h>
47 #include <vtkDataSetMapper.h>
49 #include <vtkPolygon.h>
50 #include <vtkTextProperty.h>
51 #include <vtkTextMapper.h>
52 #include <vtkAxesActor.h>
53 #include <vtkTransformPolyDataFilter.h>
102 class CAMITK_API Slice :
public InterfaceBitMap {
132 enum SliceOrientation {
141 Slice(vtkSmartPointer<vtkImageData> volume, SliceOrientation AXIAL_ORIENTATION, vtkSmartPointer<vtkWindowLevelLookupTable> lookupTable =
nullptr);
153 void setOriginalVolume(vtkSmartPointer<vtkImageData> img)
override;
156 void setImageWorldTransform(vtkSmartPointer<vtkTransform>)
override;
159 vtkSmartPointer<vtkImageActor> get2DImageActor()
const override;
162 vtkSmartPointer<vtkImageActor> get3DImageActor()
const override;
165 vtkSmartPointer<vtkActor> getPickPlaneActor()
const override;
168 vtkSmartPointer<vtkActor> getPixelActor()
override;
171 virtual vtkSmartPointer<vtkAxesActor> get2DAxesActor();
176 void pixelPicked(
double,
double,
double)
override;
183 void reslicedToVolumeCoords(
const double* ijk,
double* xyz);
187 void volumeToReslicedCoords(
const double* xyz,
double* ijk);
189 void updatePickPlane()
override;
192 int getNumberOfSlices()
const override;
195 int getSlice()
const override;
201 void setSlice(
int s)
override;
204 void setSlice(
double x,
double y,
double z)
override;
209 int getNumberOfColors()
const override;
212 void setPixelRealPosition(
double,
double,
double)
override;
215 vtkSmartPointer<vtkImageData> getImageData()
const override;
219 QMap<QString, vtkSmartPointer<vtkProp> > extraProp;
222 vtkSmartPointer<vtkProp> getProp(
const QString&)
override;
225 unsigned int getNumberOfProp()
const override;
228 vtkSmartPointer<vtkProp> getProp(
unsigned int)
override;
233 bool addProp(
const QString&, vtkSmartPointer<vtkProp>)
override;
253 virtual void initActors();
265 vtkSmartPointer<vtkImageData> originalVolume;
272 int currentSliceIndex;
275 vtkSmartPointer<vtkWindowLevelLookupTable> lut;
278 int originalDimensions[3];
281 double originalSpacing[3];
284 double originalSize[3];
287 vtkSmartPointer<vtkImageMapToColors> imgToMapFilter;
290 vtkSmartPointer<vtkImageActor> image3DActor;
293 vtkSmartPointer<vtkImageActor> image2DActor;
303 vtkSmartPointer<vtkPlaneSource> pickPlane;
306 vtkSmartPointer<vtkPolyDataMapper> pickPlaneMapper;
309 vtkSmartPointer<vtkActor> pickPlaneActor;
315 void initPixelActor();
327 void updatePixelActorPosition(
double x,
double y,
double z);
331 vtkSmartPointer<vtkActor> pixelActor;
334 void update2DAxesActorPosition();
335 void init2DAxesActor();
336 vtkSmartPointer<vtkAxesActor> axes2DActor;
343 #endif // CANONICAL_SLICE_H