VTK
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:
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,
51  int y0, int y1, int z0, int z1);
52  void AddExtentSource(int id, int priority, int* extent);
53  void RemoveExtentSource(int id);
54  void RemoveAllExtentSources();
56 
58 
62  void AddExtent(int x0, int x1, int y0, int y1, int z0, int z1);
63  void AddExtent(int* extent);
65 
72  int ComputeSubExtents();
73 
79  int GetNumberOfSubExtents();
80 
82 
88  int* GetSubExtent(int index) VTK_SIZEHINT(6);
89  void GetSubExtent(int index, int* extent);
91 
97  int GetSubExtentSource(int index);
98 
100 
107  vtkGetMacro(PointMode, vtkTypeBool);
108  vtkSetMacro(PointMode, vtkTypeBool);
109  vtkBooleanMacro(PointMode, vtkTypeBool);
111 
112 protected:
114  ~vtkExtentSplitter() override;
115 
116  // Internal utility methods.
117  void SplitExtent(int* extent, int* subextent);
118  int IntersectExtents(const int* extent1, const int* extent2, int* result);
119  int Min(int a, int b);
120  int Max(int a, int b);
121 
122  // Internal implementation data.
123  vtkExtentSplitterInternals* Internal;
124 
125  // On if reading only all points (but not always all cells) is
126  // necessary. Used for reading volumes of planar slices storing
127  // only point data.
129 
130 private:
131  vtkExtentSplitter(const vtkExtentSplitter&) = delete;
132  void operator=(const vtkExtentSplitter&) = delete;
133 };
134 
135 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:59
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:39
#define VTK_SIZEHINT(...)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkExtentSplitterInternals * Internal