VTK  9.0.1
vtkExtentSplitter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkExtentSplitter.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 =========================================================================*/
29 #ifndef vtkExtentSplitter_h
30 #define vtkExtentSplitter_h
31 
32 #include "vtkCommonExecutionModelModule.h" // For export macro
33 #include "vtkObject.h"
34 
35 class vtkExtentSplitterInternals;
36 
37 class VTKCOMMONEXECUTIONMODEL_EXPORT vtkExtentSplitter : public vtkObject
38 {
39 public:
40  vtkTypeMacro(vtkExtentSplitter, vtkObject);
41  void PrintSelf(ostream& os, vtkIndent indent) override;
42  static vtkExtentSplitter* New();
43 
45 
50  void AddExtentSource(int id, int priority, int x0, int x1, int y0, int y1, int z0, int z1);
51  void AddExtentSource(int id, int priority, int* extent);
52  void RemoveExtentSource(int id);
53  void RemoveAllExtentSources();
55 
57 
61  void AddExtent(int x0, int x1, int y0, int y1, int z0, int z1);
62  void AddExtent(int* extent);
64 
71  int ComputeSubExtents();
72 
78  int GetNumberOfSubExtents();
79 
81 
87  int* GetSubExtent(int index) VTK_SIZEHINT(6);
88  void GetSubExtent(int index, int* extent);
90 
96  int GetSubExtentSource(int index);
97 
99 
106  vtkGetMacro(PointMode, vtkTypeBool);
107  vtkSetMacro(PointMode, vtkTypeBool);
108  vtkBooleanMacro(PointMode, vtkTypeBool);
110 
111 protected:
113  ~vtkExtentSplitter() override;
114 
115  // Internal utility methods.
116  void SplitExtent(int* extent, int* subextent);
117  int IntersectExtents(const int* extent1, const int* extent2, int* result);
118  int Min(int a, int b);
119  int Max(int a, int b);
120 
121  // Internal implementation data.
122  vtkExtentSplitterInternals* Internal;
123 
124  // On if reading only all points (but not always all cells) is
125  // necessary. Used for reading volumes of planar slices storing
126  // only point data.
128 
129 private:
130  vtkExtentSplitter(const vtkExtentSplitter&) = delete;
131  void operator=(const vtkExtentSplitter&) = delete;
132 };
133 
134 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:62
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int vtkTypeBool
Definition: vtkABI.h:69
Split an extent across other extents.
a simple class to control print indentation
Definition: vtkIndent.h:33
#define VTK_SIZEHINT(...)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkExtentSplitterInternals * Internal