VTK  9.2.5
vtkSurfaceNets2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSurfaceNets2D.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 =========================================================================*/
122 #ifndef vtkSurfaceNets2D_h
123 #define vtkSurfaceNets2D_h
124 
125 #include "vtkConstrainedSmoothingFilter.h" // Perform mesh smoothing
126 #include "vtkContourValues.h" // Needed for direct access to ContourValues
127 #include "vtkFiltersCoreModule.h" // For export macro
128 #include "vtkPolyData.h" // To support data caching
129 #include "vtkPolyDataAlgorithm.h"
130 
131 class vtkImageData;
132 
133 class VTKFILTERSCORE_EXPORT vtkSurfaceNets2D : public vtkPolyDataAlgorithm
134 {
135 public:
137 
142  void PrintSelf(ostream& os, vtkIndent indent) override;
144 
149  vtkMTimeType GetMTime() override;
150 
152 
162  void SetValue(int i, double value) { this->Labels->SetValue(i, value); }
163  void SetLabel(int i, double value) { this->Labels->SetValue(i, value); }
165 
167 
170  double GetValue(int i) { return this->Labels->GetValue(i); }
171  double GetLabel(int i) { return this->Labels->GetValue(i); }
173 
175 
179  double* GetValues() { return this->Labels->GetValues(); }
180  double* GetLabels() { return this->Labels->GetValues(); }
182 
184 
189  void GetValues(double* contourValues) { this->Labels->GetValues(contourValues); }
190  void GetLabels(double* contourValues) { this->Labels->GetValues(contourValues); }
192 
194 
201  void SetNumberOfLabels(int number) { this->Labels->SetNumberOfContours(number); }
202  void SetNumberOfContours(int number) { this->Labels->SetNumberOfContours(number); }
204 
206 
209  vtkIdType GetNumberOfLabels() { return this->Labels->GetNumberOfContours(); }
210  vtkIdType GetNumberOfContours() { return this->Labels->GetNumberOfContours(); }
212 
214 
218  void GenerateLabels(int numLabels, double range[2])
219  {
220  this->Labels->GenerateValues(numLabels, range);
221  }
222  void GenerateValues(int numContours, double range[2])
223  {
224  this->Labels->GenerateValues(numContours, range);
225  }
226  void GenerateLabels(int numLabels, double rangeStart, double rangeEnd)
227  {
228  this->Labels->GenerateValues(numLabels, rangeStart, rangeEnd);
229  }
230  void GenerateValues(int numContours, double rangeStart, double rangeEnd)
231  {
232  this->Labels->GenerateValues(numContours, rangeStart, rangeEnd);
233  }
235 
237 
245  vtkSetMacro(ComputeScalars, bool);
246  vtkGetMacro(ComputeScalars, bool);
247  vtkBooleanMacro(ComputeScalars, bool);
249 
251 
261  vtkSetMacro(BackgroundLabel, double);
262  vtkGetMacro(BackgroundLabel, double);
264 
266 
270  vtkSetMacro(ArrayComponent, int);
271  vtkGetMacro(ArrayComponent, int);
273 
275 
280  vtkSetMacro(Smoothing, bool);
281  vtkGetMacro(Smoothing, bool);
282  vtkBooleanMacro(Smoothing, bool);
284 
286 
295 
297 
307  vtkSetMacro(DataCaching, bool);
308  vtkGetMacro(DataCaching, bool);
309  vtkBooleanMacro(DataCaching, bool);
311 
312 protected:
314  ~vtkSurfaceNets2D() override = default;
315 
318 
323 
324  bool Smoothing;
326 
327  // Support data caching of the extracted surface nets. This is used to
328  // avoid repeated surface extraction when only smoothing filter
329  // parameters are modified.
334  bool IsCacheEmpty();
336 
337 private:
338  vtkSurfaceNets2D(const vtkSurfaceNets2D&) = delete;
339  void operator=(const vtkSurfaceNets2D&) = delete;
340 };
341 
342 #endif
object to represent cell connectivity
Definition: vtkCellArray.h:296
adjust point positions using constrained smoothing
topologically and geometrically regular array of data
Definition: vtkImageData.h:163
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:200
generate smoothed constours from segmented 2D image data (i.e., "label maps")
double * GetValues()
Get a pointer to an array of labels.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiation, printing, and type information.
static vtkSurfaceNets2D * New()
Standard methods for instantiation, printing, and type information.
void GenerateLabels(int numLabels, double rangeStart, double rangeEnd)
Generate numLabels equally spaced labels between the specified range.
void SetNumberOfLabels(int number)
Set the number of labels to place into the list.
vtkMTimeType GetMTime() override
The modified time is also a function of the label values and the smoothing filter.
vtkSmartPointer< vtkConstrainedSmoothingFilter > Smoother
vtkSmartPointer< vtkContourValues > Labels
vtkSmartPointer< vtkPolyData > GeometryCache
double * GetLabels()
Get a pointer to an array of labels.
void GetValues(double *contourValues)
Fill a supplied list with label values.
vtkTimeStamp SmoothingTime
void GenerateValues(int numContours, double range[2])
Generate numLabels equally spaced labels between the specified range.
void SetLabel(int i, double value)
Set a particular label value at label number i.
vtkGetSmartPointerMacro(Smoother, vtkConstrainedSmoothingFilter)
Get the instance of vtkConstrainedSmoothingFilter used to smooth the extracted surface net.
~vtkSurfaceNets2D() override=default
double GetLabel(int i)
Get the ith label value.
double GetValue(int i)
Get the ith label value.
void GenerateLabels(int numLabels, double range[2])
Generate numLabels equally spaced labels between the specified range.
void SetNumberOfContours(int number)
Set the number of labels to place into the list.
void GetLabels(double *contourValues)
Fill a supplied list with label values.
void CacheData(vtkPolyData *pd, vtkCellArray *ca)
void GenerateValues(int numContours, double rangeStart, double rangeEnd)
Generate numLabels equally spaced labels between the specified range.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkIdType GetNumberOfLabels()
Get the number of labels in the list of label values.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkIdType GetNumberOfContours()
Get the number of labels in the list of label values.
vtkSmartPointer< vtkCellArray > StencilsCache
void SetValue(int i, double value)
Set a particular label value at label number i.
record modification and/or execution time
Definition: vtkTimeStamp.h:55
@ info
Definition: vtkX3D.h:382
@ value
Definition: vtkX3D.h:226
@ port
Definition: vtkX3D.h:453
@ range
Definition: vtkX3D.h:244
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287