VTK  9.7.1
vtkAdaptiveDataSetSurfaceFilter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
23 #ifndef vtkAdaptiveDataSetSurfaceFilter_h
24 #define vtkAdaptiveDataSetSurfaceFilter_h
25 
26 #include "vtkFiltersHybridModule.h" // For export macro
27 #include "vtkGeometryFilter.h"
28 
29 VTK_ABI_NAMESPACE_BEGIN
30 class vtkBitArray;
31 class vtkCamera;
32 class vtkHyperTreeGrid;
33 class vtkMatrix4x4;
34 class vtkRenderer;
35 
38 
39 class VTKFILTERSHYBRID_EXPORT vtkAdaptiveDataSetSurfaceFilter : public vtkGeometryFilter
40 {
41 public:
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
47 
50  void SetRenderer(vtkRenderer* ren);
51  vtkGetObjectMacro(Renderer, vtkRenderer);
53 
57  vtkMTimeType GetMTime() override;
58 
60 
65  vtkSetMacro(ViewPointDepend, bool);
66  vtkGetMacro(ViewPointDepend, bool);
68 
70 
75  vtkSetMacro(FixedLevelMax, int);
76  vtkGetMacro(FixedLevelMax, int);
78 
79 protected:
82 
83  int RequestData(vtkInformation* vtkNotUsed(request), vtkInformationVector** inputVector,
84  vtkInformationVector* outputVector) override;
85  int DataObjectExecute(vtkDataObject* input, vtkPolyData* output);
87 
88 private:
90  void operator=(const vtkAdaptiveDataSetSurfaceFilter&) = delete;
91 
92  enum class ShapeState : uint8_t;
93 
100  template <int N>
101  ShapeState IsShapeVisible(const std::array<std::array<double, 3>, N>& points, int level);
102 
106  void ProcessTrees(vtkHyperTreeGrid* input, vtkPolyData* output);
107 
111  void RecursivelyProcessTree1D(vtkHyperTreeGridNonOrientedGeometryCursor*, int);
112  void RecursivelyProcessTree2D(vtkHyperTreeGridNonOrientedGeometryCursor*, int);
113  void RecursivelyProcessTree3D(vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight*, int);
114 
118  void ProcessLeaf1D(vtkHyperTreeGridNonOrientedGeometryCursor*);
119 
123  void ProcessLeaf2D(vtkHyperTreeGridNonOrientedGeometryCursor*);
124 
128  void ProcessLeaf3D(vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight*);
129 
133  void AddFace(vtkIdType, const double*, const double*, int, unsigned int);
134 
135  vtkDataSetAttributes* InData = nullptr;
136  vtkDataSetAttributes* OutData = nullptr;
137 
141  unsigned int Dimension = 0;
142 
146  unsigned int Orientation = 0;
147 
151  vtkBitArray* Mask;
152 
156  vtkPoints* Points = nullptr;
157 
161  vtkCellArray* Cells = nullptr;
162 
166  vtkRenderer* Renderer = nullptr;
167 
171  unsigned int Axis1;
172 
176  unsigned int Axis2;
177 
181  int LastRendererSize[2] = { 0, 0 };
182 
186  bool ViewPointDepend = true;
187 
191  int FixedLevelMax = -1;
192 
196  bool IsParallel = false;
197 
201  int MaxLevel = VTK_INT_MAX;
202 
203  vtkSmartPointer<vtkMatrix4x4> ModelViewMatrix;
204  vtkSmartPointer<vtkMatrix4x4> ProjectionMatrix;
205 };
206 
207 VTK_ABI_NAMESPACE_END
208 #endif // vtkAdaptiveDataSetSurfaceFilter_h
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:31
static vtkGeometryFilter * New()
Standard methods for instantiation, type information, and printing.
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:318
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
#define VTK_INT_MAX
Definition: vtkType.h:192
abstract specification for renderers
Definition: vtkRenderer.h:63
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:71
Adaptively extract dataset surface.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
a simple class to control print indentation
Definition: vtkIndent.h:28
a virtual camera for 3D rendering
Definition: vtkCamera.h:41
virtual vtkMTimeType GetMTime()
Return this object's modified time.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
represent and manipulate attribute data in a dataset
A cell specified by degrees of freedom held in arrays.
object to represent cell connectivity
Definition: vtkCellArray.h:177
dynamic, self-adjusting array of bits
Definition: vtkBitArray.h:32
Store zero or more vtkInformation instances.
extract boundary geometry from dataset (or convert data to polygonal type)
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiation, type information, and printing.
general representation of visualization data
Definition: vtkDataObject.h:55
represent and manipulate 3D points
Definition: vtkPoints.h:30