VTK
vtkEncodedGradientEstimator.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkEncodedGradientEstimator.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=========================================================================*/
15
34#ifndef vtkEncodedGradientEstimator_h
35#define vtkEncodedGradientEstimator_h
36
37#include "vtkRenderingVolumeModule.h" // For export macro
38#include "vtkObject.h"
39
40class vtkImageData;
43
44class VTKRENDERINGVOLUME_EXPORT vtkEncodedGradientEstimator : public vtkObject
45{
46public:
48 void PrintSelf( ostream& os, vtkIndent indent );
49
51
59 virtual void SetInputData(vtkImageData*);
60 vtkGetObjectMacro( InputData, vtkImageData );
62
64
67 vtkSetMacro( GradientMagnitudeScale, float );
68 vtkGetMacro( GradientMagnitudeScale, float );
69 vtkSetMacro( GradientMagnitudeBias, float );
70 vtkGetMacro( GradientMagnitudeBias, float );
72
74
78 vtkSetClampMacro( BoundsClip, int, 0, 1 );
79 vtkGetMacro( BoundsClip, int );
80 vtkBooleanMacro( BoundsClip, int );
82
84
89 vtkSetVector6Macro( Bounds, int );
90 vtkGetVectorMacro( Bounds, int, 6 );
92
96 void Update( void );
97
101 unsigned short *GetEncodedNormals( void );
102
104
108 int GetEncodedNormalIndex( int x_index, int y_index, int z_index );
110
114 unsigned char *GetGradientMagnitudes(void);
115
117
121 vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
122 vtkGetMacro( NumberOfThreads, int );
124
126
131 vtkGetObjectMacro( DirectionEncoder, vtkDirectionEncoder );
133
135
141 vtkSetMacro( ComputeGradientMagnitudes, int );
142 vtkGetMacro( ComputeGradientMagnitudes, int );
143 vtkBooleanMacro( ComputeGradientMagnitudes, int );
145
147
152 vtkSetMacro( CylinderClip, int );
153 vtkGetMacro( CylinderClip, int );
154 vtkBooleanMacro( CylinderClip, int );
156
158
161 vtkGetMacro( LastUpdateTimeInSeconds, float );
162 vtkGetMacro( LastUpdateTimeInCPUSeconds, float );
164
165 vtkGetMacro( UseCylinderClip, int );
166 int *GetCircleLimits() { return this->CircleLimits; };
167
169
177 void SetZeroNormalThreshold( float v );
178 vtkGetMacro( ZeroNormalThreshold, float );
180
182
186 vtkSetClampMacro( ZeroPad, int, 0, 1 );
187 vtkGetMacro( ZeroPad, int );
188 vtkBooleanMacro( ZeroPad, int );
190
191
192 // These variables should be protected but are being
193 // made public to be accessible to the templated function.
194 // We used to have the templated function as a friend, but
195 // this does not work with all compilers
196
197 // The input scalar data on which the normals are computed
199
200 // The encoded normals (2 bytes) and the size of the encoded normals
201 unsigned short *EncodedNormals;
202 int EncodedNormalsSize[3];
203
204 // The magnitude of the gradient array and the size of this array
205 unsigned char *GradientMagnitudes;
206
207 // The time at which the normals were last built
209
210 vtkGetVectorMacro( InputSize, int, 3 );
211 vtkGetVectorMacro( InputAspect, float, 3 );
212
213protected:
216
218
219 // The number of threads to use when encoding normals
221
223
225
226 virtual void UpdateNormals( void ) = 0;
227
230
233
235
241
243 int Bounds[6];
244
245 int InputSize[3];
246 float InputAspect[3];
247
249
251
252private:
254 void operator=(const vtkEncodedGradientEstimator&) VTK_DELETE_FUNCTION;
255};
256
257
258#endif
259
encode a direction into a one or two byte value
Superclass for gradient estimation.
void Update(void)
Recompute the encoded normals and gradient magnitudes.
int GetEncodedNormalIndex(int x_index, int y_index, int z_index)
int GetEncodedNormalIndex(vtkIdType xyz_index)
Get the encoded normal at an x,y,z location in the volume.
void ComputeCircleLimits(int size)
virtual void UpdateNormals(void)=0
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void SetInputData(vtkImageData *)
Set/Get the scalar input for which the normals will be calculated.
void ReportReferences(vtkGarbageCollector *) override
void SetDirectionEncoder(vtkDirectionEncoder *direnc)
Set / Get the direction encoder used to encode normal directions to fit within two bytes.
void SetZeroNormalThreshold(float v)
Set / Get the ZeroNormalThreshold - this defines the minimum magnitude of a gradient that is consider...
unsigned char * GetGradientMagnitudes(void)
Get the gradient magnitudes.
unsigned short * GetEncodedNormals(void)
Get the encoded normals.
Detect and break reference loops.
topologically and geometrically regular array of data
Definition: vtkImageData.h:46
a simple class to control print indentation
Definition: vtkIndent.h:40
A class for performing multithreaded execution.
abstract base class for most VTK objects
Definition: vtkObject.h:60
record modification and/or execution time
Definition: vtkTimeStamp.h:36
@ size
Definition: vtkX3D.h:253
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
int vtkIdType
Definition: vtkType.h:287