VTK  9.2.6
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 =========================================================================*/
98 #ifndef vtkCheckerboardSplatter_h
99 #define vtkCheckerboardSplatter_h
100 
101 #include "vtkImageAlgorithm.h"
102 #include "vtkImagingHybridModule.h" // For export macro
103 
104 #define VTK_ACCUMULATION_MODE_MIN 0
105 #define VTK_ACCUMULATION_MODE_MAX 1
106 #define VTK_ACCUMULATION_MODE_SUM 2
107 
108 class vtkDoubleArray;
109 class vtkCompositeDataSet;
110 
111 class VTKIMAGINGHYBRID_EXPORT vtkCheckerboardSplatter : public vtkImageAlgorithm
112 {
113 public:
115  void PrintSelf(ostream& os, vtkIndent indent) override;
116 
122  static vtkCheckerboardSplatter* New();
123 
125 
129  void SetSampleDimensions(int i, int j, int k);
130  void SetSampleDimensions(int dim[3]);
131  vtkGetVectorMacro(SampleDimensions, int, 3);
133 
135 
141  vtkSetVector6Macro(ModelBounds, double);
142  vtkGetVectorMacro(ModelBounds, double, 6);
144 
146 
156  vtkSetClampMacro(Footprint, int, 0, VTK_INT_MAX);
157  vtkGetMacro(Footprint, int);
159 
161 
167  vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
168  vtkGetMacro(Radius, double);
170 
172 
177  vtkSetClampMacro(ScaleFactor, double, 0.0, VTK_DOUBLE_MAX);
178  vtkGetMacro(ScaleFactor, double);
180 
182 
187  vtkSetMacro(ExponentFactor, double);
188  vtkGetMacro(ExponentFactor, double);
190 
192 
195  vtkSetMacro(ScalarWarping, vtkTypeBool);
196  vtkGetMacro(ScalarWarping, vtkTypeBool);
197  vtkBooleanMacro(ScalarWarping, vtkTypeBool);
199 
201 
206  vtkSetMacro(NormalWarping, vtkTypeBool);
207  vtkGetMacro(NormalWarping, vtkTypeBool);
208  vtkBooleanMacro(NormalWarping, vtkTypeBool);
210 
212 
219  vtkSetClampMacro(Eccentricity, double, 0.001, VTK_DOUBLE_MAX);
220  vtkGetMacro(Eccentricity, double);
222 
224 
232  vtkSetClampMacro(AccumulationMode, int, VTK_ACCUMULATION_MODE_MIN, VTK_ACCUMULATION_MODE_SUM);
233  vtkGetMacro(AccumulationMode, int);
234  void SetAccumulationModeToMin() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MIN); }
235  void SetAccumulationModeToMax() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MAX); }
236  void SetAccumulationModeToSum() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_SUM); }
237  const char* GetAccumulationModeAsString();
239 
241 
246  vtkSetMacro(OutputScalarType, int);
247  vtkGetMacro(OutputScalarType, int);
248  void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
249  void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
251 
253 
258  vtkSetMacro(Capping, vtkTypeBool);
259  vtkGetMacro(Capping, vtkTypeBool);
260  vtkBooleanMacro(Capping, vtkTypeBool);
262 
264 
268  vtkSetMacro(CapValue, double);
269  vtkGetMacro(CapValue, double);
271 
273 
280  vtkSetMacro(NullValue, double);
281  vtkGetMacro(NullValue, double);
283 
285 
292  vtkSetClampMacro(MaximumDimension, int, 0, 255);
293  vtkGetMacro(MaximumDimension, int);
295 
297 
304  vtkSetClampMacro(ParallelSplatCrossover, int, 0, 255);
305  vtkGetMacro(ParallelSplatCrossover, int);
307 
312  void ComputeModelBounds(vtkDataSet* input, vtkImageData* output, vtkInformation* outInfo);
313 
314 protected:
316  ~vtkCheckerboardSplatter() override = default;
317 
318  int FillInputPortInformation(int port, vtkInformation* info) override;
321 
322  int OutputScalarType; // the type of output scalars
323  int SampleDimensions[3]; // dimensions of volume to splat into
324  double Radius; // Radius factor in the Gaussian exponential function
325  int Footprint; // maximum distance splat propagates (in voxels 0->Dim)
326  double ExponentFactor; // scale exponent of gaussian function
327  double ModelBounds[6]; // bounding box of splatting dimensions
328  double Origin[3], Spacing[3]; // output geometry
329  vtkTypeBool NormalWarping; // on/off warping of splat via normal
330  double Eccentricity; // elliptic distortion due to normals
331  vtkTypeBool ScalarWarping; // on/off warping of splat via scalar
332  double ScaleFactor; // splat size influenced by scale factor
333  vtkTypeBool Capping; // Cap side of volume to close surfaces
334  double CapValue; // value to use for capping
335  int AccumulationMode; // how to combine scalar values
336  double NullValue; // initial value of voxels
337  unsigned char MaximumDimension; // max resolution of checkerboard
338  int ParallelSplatCrossover; // the point at which parallel splatting occurs
339 
340 private:
342  void operator=(const vtkCheckerboardSplatter&) = delete;
343 };
344 
345 #endif
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
Store vtkAlgorithm input/output information.
#define VTK_ACCUMULATION_MODE_MIN
#define VTK_ACCUMULATION_MODE_MAX
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
#define VTK_INT_MAX
Definition: vtkType.h:155
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:55
splat points into a volume with an elliptical, Gaussian distribution
#define VTK_FLOAT
Definition: vtkType.h:54
abstract superclass for composite (multi-block or AMR) datasets
a simple class to control print indentation
Definition: vtkIndent.h:39
topologically and geometrically regular array of data
Definition: vtkImageData.h:53
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.