VTK
vtkCheckerboardSplatter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCheckerboardSplatter.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 =========================================================================*/
95 #ifndef vtkCheckerboardSplatter_h
96 #define vtkCheckerboardSplatter_h
97 
98 #include "vtkImagingHybridModule.h" // For export macro
99 #include "vtkImageAlgorithm.h"
100 
101 #define VTK_ACCUMULATION_MODE_MIN 0
102 #define VTK_ACCUMULATION_MODE_MAX 1
103 #define VTK_ACCUMULATION_MODE_SUM 2
104 
105 class vtkDoubleArray;
106 class vtkCompositeDataSet;
107 
108 class VTKIMAGINGHYBRID_EXPORT vtkCheckerboardSplatter : public vtkImageAlgorithm
109 {
110 public:
112  void PrintSelf(ostream& os, vtkIndent indent) override;
113 
119  static vtkCheckerboardSplatter *New();
120 
122 
126  void SetSampleDimensions(int i, int j, int k);
127  void SetSampleDimensions(int dim[3]);
128  vtkGetVectorMacro(SampleDimensions,int,3);
130 
132 
138  vtkSetVector6Macro(ModelBounds,double);
139  vtkGetVectorMacro(ModelBounds,double,6);
141 
143 
153  vtkSetClampMacro(Footprint,int,0,VTK_INT_MAX);
154  vtkGetMacro(Footprint,int);
156 
158 
164  vtkSetClampMacro(Radius,double,0.0,VTK_DOUBLE_MAX);
165  vtkGetMacro(Radius,double);
167 
169 
174  vtkSetClampMacro(ScaleFactor,double,0.0,VTK_DOUBLE_MAX);
175  vtkGetMacro(ScaleFactor,double);
177 
179 
184  vtkSetMacro(ExponentFactor,double);
185  vtkGetMacro(ExponentFactor,double);
187 
189 
192  vtkSetMacro(ScalarWarping,vtkTypeBool);
193  vtkGetMacro(ScalarWarping,vtkTypeBool);
194  vtkBooleanMacro(ScalarWarping,vtkTypeBool);
196 
198 
203  vtkSetMacro(NormalWarping,vtkTypeBool);
204  vtkGetMacro(NormalWarping,vtkTypeBool);
205  vtkBooleanMacro(NormalWarping,vtkTypeBool);
207 
209 
216  vtkSetClampMacro(Eccentricity,double,0.001,VTK_DOUBLE_MAX);
217  vtkGetMacro(Eccentricity,double);
219 
221 
229  vtkSetClampMacro(AccumulationMode,int,
231  vtkGetMacro(AccumulationMode,int);
233  {this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MIN);}
235  {this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MAX);}
237  {this->SetAccumulationMode(VTK_ACCUMULATION_MODE_SUM);}
238  const char *GetAccumulationModeAsString();
240 
242 
247  vtkSetMacro(OutputScalarType,int);
248  vtkGetMacro(OutputScalarType,int);
250  {this->SetOutputScalarType(VTK_DOUBLE);}
252  {this->SetOutputScalarType(VTK_FLOAT);}
254 
256 
261  vtkSetMacro(Capping,vtkTypeBool);
262  vtkGetMacro(Capping,vtkTypeBool);
263  vtkBooleanMacro(Capping,vtkTypeBool);
265 
267 
271  vtkSetMacro(CapValue,double);
272  vtkGetMacro(CapValue,double);
274 
276 
283  vtkSetMacro(NullValue,double);
284  vtkGetMacro(NullValue,double);
286 
288 
295  vtkSetClampMacro(MaximumDimension,int,0,255);
296  vtkGetMacro(MaximumDimension,int);
298 
300 
307  vtkSetClampMacro(ParallelSplatCrossover,int,0,255);
308  vtkGetMacro(ParallelSplatCrossover,int);
310 
315  void ComputeModelBounds(vtkDataSet *input, vtkImageData *output,
316  vtkInformation *outInfo);
317 
318 protected:
321 
322  int FillInputPortInformation(int port, vtkInformation* info) override;
325  vtkInformationVector *) override;
328  vtkInformationVector *) override;
329 
330  int OutputScalarType; //the type of output scalars
331  int SampleDimensions[3]; // dimensions of volume to splat into
332  double Radius; // Radius factor in the Gaussian exponential function
333  int Footprint; // maximum distance splat propagates (in voxels 0->Dim)
334  double ExponentFactor; // scale exponent of gaussian function
335  double ModelBounds[6]; // bounding box of splatting dimensions
336  double Origin[3], Spacing[3]; // output geometry
337  vtkTypeBool NormalWarping; // on/off warping of splat via normal
338  double Eccentricity;// elliptic distortion due to normals
339  vtkTypeBool ScalarWarping; // on/off warping of splat via scalar
340  double ScaleFactor; // splat size influenced by scale factor
341  vtkTypeBool Capping; // Cap side of volume to close surfaces
342  double CapValue; // value to use for capping
343  int AccumulationMode; // how to combine scalar values
344  double NullValue; // initial value of voxels
345  unsigned char MaximumDimension; // max resolution of checkerboard
346  int ParallelSplatCrossover; //the point at which parallel splatting occurs
347 
348 private:
350  void operator=(const vtkCheckerboardSplatter&) = delete;
351 };
352 
353 #endif
#define VTK_DOUBLE_MAX
Definition: vtkType.h:169
Store vtkAlgorithm input/output information.
#define VTK_ACCUMULATION_MODE_MIN
#define VTK_ACCUMULATION_MODE_MAX
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
#define VTK_INT_MAX
Definition: vtkType.h:159
void SetOutputScalarTypeToFloat()
Set what type of scalar data this source should generate.
dynamic, self-adjusting array of double
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_DOUBLE
Definition: vtkType.h:59
splat points into a volume with an elliptical, Gaussian distribution
#define VTK_FLOAT
Definition: vtkType.h:58
abstract superclass for composite (multi-block or AMR) datasets
a simple class to control print indentation
Definition: vtkIndent.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:39
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
#define VTK_ACCUMULATION_MODE_SUM
void SetAccumulationModeToSum()
Specify the scalar accumulation mode.
void SetAccumulationModeToMin()
Specify the scalar accumulation mode.
void SetAccumulationModeToMax()
Specify the scalar accumulation mode.
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
void SetOutputScalarTypeToDouble()
Set what type of scalar data this source should generate.
Generic algorithm superclass for image algs.
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.