VTK
vtkImageMapper3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageMapper3D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
29 #ifndef vtkImageMapper3D_h
30 #define vtkImageMapper3D_h
31 
32 #include "vtkRenderingCoreModule.h" // For export macro
33 #include "vtkAbstractMapper3D.h"
34 
35 class vtkRenderer;
36 class vtkProp3D;
37 class vtkPoints;
38 class vtkMatrix4x4;
39 class vtkLookupTable;
40 class vtkScalarsToColors;
41 class vtkImageSlice;
42 class vtkImageProperty;
43 class vtkImageData;
44 class vtkMultiThreader;
45 class vtkImageToImageMapper3DFriendship;
46 
47 class VTKRENDERINGCORE_EXPORT vtkImageMapper3D : public vtkAbstractMapper3D
48 {
49 public:
51  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
52 
56  virtual void Render(vtkRenderer *renderer, vtkImageSlice *prop) = 0;
57 
63  void ReleaseGraphicsResources(vtkWindow *) VTK_OVERRIDE = 0;
64 
66 
69  void SetInputData(vtkImageData *input);
70  vtkImageData *GetInput();
71  vtkDataSet *GetDataSetInput();
72  vtkDataObject *GetDataObjectInput();
74 
76 
82  vtkSetMacro(Border, int);
83  vtkBooleanMacro(Border, int);
84  vtkGetMacro(Border, int);
86 
88 
94  vtkSetMacro(Background, int);
96  vtkGetMacro(Background, int);
98 
100 
105  vtkSetMacro(SliceAtFocalPoint, int);
106  vtkBooleanMacro(SliceAtFocalPoint, int);
107  vtkGetMacro(SliceAtFocalPoint, int);
109 
111 
116  vtkSetMacro(SliceFacesCamera, int);
117  vtkBooleanMacro(SliceFacesCamera, int);
118  vtkGetMacro(SliceFacesCamera, int);
120 
122 
129  vtkGetObjectMacro(SlicePlane, vtkPlane);
131 
137  virtual void GetSlicePlaneInDataCoords(vtkMatrix4x4 *propMatrix,
138  double plane[4]);
139 
141 
144  vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
145  vtkGetMacro(NumberOfThreads, int);
147 
149 
158  vtkSetMacro(Streaming, int);
159  vtkGetMacro(Streaming, int);
160  vtkBooleanMacro(Streaming, int);
162 
163 protected:
165  ~vtkImageMapper3D() VTK_OVERRIDE;
166 
168 
171  int FillInputPortInformation(int port, vtkInformation* info) VTK_OVERRIDE;
172  int FillOutputPortInformation(int port, vtkInformation* info) VTK_OVERRIDE;
174 
178  int ProcessRequest(vtkInformation* request,
179  vtkInformationVector** inInfo,
180  vtkInformationVector* outInfo) VTK_OVERRIDE;
181 
186  static void CheckerboardRGBA(
187  unsigned char *data, int xsize, int ysize,
188  double originx, double originy, double spacingx, double spacingy);
189 
195  unsigned char *MakeTextureData(
196  vtkImageProperty *property, vtkImageData *input, int extent[6],
197  int &xsize, int &ysize, int &bytesPerPixel, bool &reuseTexture,
198  bool &reuseData);
199 
204  void MakeTextureGeometry(
205  const int extent[6], double coords[12], double tcoords[8]);
206 
214  virtual void ComputeTextureSize(
215  const int extent[6], int &xdim, int &ydim,
216  int imageSize[2], int textureSize[2]);
217 
222  vtkRenderer *GetCurrentRenderer();
223 
227  vtkImageSlice *GetCurrentProp() { return this->CurrentProp; }
228 
233  vtkMatrix4x4 *GetDataToWorldMatrix();
234 
239  void GetBackgroundColor(vtkImageProperty *property, double color[4]);
240 
241  int Border;
247 
248  // The slice.
252 
253  // Information about the image, updated by UpdateInformation
254  double DataSpacing[3];
255  double DataOrigin[3];
256  int DataWholeExtent[6];
257 
258  // Set by vtkImageStack when doing multi-pass rendering
262 
263 private:
264  // The prop this mapper is attached to, or zero if none.
265  vtkImageSlice *CurrentProp;
266  vtkRenderer *CurrentRenderer;
267 
268  // The cached data-to-world matrix
269  vtkMatrix4x4 *DataToWorldMatrix;
270 
271  vtkImageMapper3D(const vtkImageMapper3D&) VTK_DELETE_FUNCTION;
272  void operator=(const vtkImageMapper3D&) VTK_DELETE_FUNCTION;
273 
274  friend class vtkImageToImageMapper3DFriendship;
275 };
276 
277 #endif
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:35
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
A class for performing multithreaded execution.
vtkScalarsToColors * DefaultLookupTable
map scalar values into colors via a lookup table
image display properties
abstract specification for renderers
Definition: vtkRenderer.h:57
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:43
Superclass for mapping scalar values to colors.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
a simple class to control print indentation
Definition: vtkIndent.h:33
abstract class for mapping images to the screen
topologically and geometrically regular array of data
Definition: vtkImageData.h:39
perform various plane computations
Definition: vtkPlane.h:31
abstract class specifies interface to map 3D data
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkMultiThreader * Threader
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
represents an image in a 3D scene
Definition: vtkImageSlice.h:46
virtual void ReleaseGraphicsResources(vtkWindow *)
Release any graphics resources that are being consumed by this mapper.
Store zero or more vtkInformation instances.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
general representation of visualization data
Definition: vtkDataObject.h:58
represent and manipulate 3D points
Definition: vtkPoints.h:33