vtkPGenericIOMultiBlockReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPGenericIOMultiBlockReader.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  =========================================================================*/
22 #ifndef vtkPGenericIOMultiBlockReader_h
23 #define vtkPGenericIOMultiBlockReader_h
24 
26 #include "vtkPVVTKExtensionsCosmoToolsModule.h" // For export macro
27 
28 #include <set> // For std::set
29 
30 class vtkCallbackCommand;
33 class vtkStringArray;
34 class vtkIdList;
37 
38 // GenericIO forward declarations
39 namespace gio
40 {
41 class GenericIOReader;
42 }
43 
44 class VTKPVVTKEXTENSIONSCOSMOTOOLS_EXPORT vtkPGenericIOMultiBlockReader
46 {
47 public:
48  enum IOType
49  {
51  IOTYPEPOSIX
52  };
53 
55  {
57  RCB
58  };
59 
60  static vtkPGenericIOMultiBlockReader* New();
62  void PrintSelf(ostream& os, vtkIndent indent) override;
63 
65 
68  vtkSetStringMacro(XAxisVariableName) vtkGetStringMacro(XAxisVariableName)
70 
72 
75  vtkSetStringMacro(YAxisVariableName) vtkGetStringMacro(YAxisVariableName)
77 
79 
82  vtkSetStringMacro(ZAxisVariableName) vtkGetStringMacro(ZAxisVariableName)
84 
86 
89  vtkSetStringMacro(FileName) vtkGetStringMacro(FileName)
91 
93 
96  vtkSetMacro(GenericIOType, int) vtkGetMacro(GenericIOType, int)
98 
100 
104  vtkSetMacro(BlockAssignment, int) vtkGetMacro(BlockAssignment, int)
106 
108 
112  vtkGetObjectMacro(ArrayList, vtkStringArray)
114 
116 
120  vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection)
122 
124 
128  vtkGetMacro(Controller, vtkMultiProcessController*)
129  vtkSetMacro(Controller, vtkMultiProcessController*)
131 
135  int GetNumberOfPointArrays();
136 
140  const char* GetPointArrayName(int i);
141 
145  int GetPointArrayStatus(const char* name);
146 
150  void SetPointArrayStatus(const char* name, int status);
151 
153 
158  vtkSetStringMacro(HaloIdVariableName) vtkGetStringMacro(HaloIdVariableName)
160 
167  vtkIdType GetRequestedHaloId(vtkIdType i);
168 
175  vtkIdType GetNumberOfRequestedHaloIds();
176 
184  void SetNumberOfRequestedHaloIds(vtkIdType numIds);
185 
192  void AddRequestedHaloId(vtkIdType haloId);
193 
200  void ClearRequestedHaloIds();
201 
208  void SetRequestedHaloId(vtkIdType i, vtkIdType haloId);
209 
210 protected:
213 
218 
219  char* FileName;
222 
224 
226 
231 
232  gio::GenericIOReader* Reader;
233 
234  gio::GenericIOReader* GetInternalReader();
235 
236  bool ReaderParametersChanged();
237 
238  void LoadMetaData();
239 
240  void LoadRawVariableDataForBlock(const std::string& varName, int blockId);
241 
242  void LoadRawDataForBlock(int blockId);
243 
244  void GetPointFromRawData(int xType, void* xBuffer, int yType, void* yBuffer, int zType,
245  void* zBuffer, vtkIdType id, double point[3]);
246 
247  void LoadCoordinatesForBlock(
248  vtkUnstructuredGrid* grid, std::set<vtkIdType>& pointsInSelectedHalos, int blockId);
249 
250  void LoadDataArraysForBlock(
251  vtkUnstructuredGrid* grid, const std::set<vtkIdType>& pointsInSelectedHalos, int blockId);
252 
253  vtkUnstructuredGrid* LoadBlock(int blockId);
254 
258  static void SelectionModifiedCallback(
259  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
260 
261  // Pipeline methods
262  virtual int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
263  virtual int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
264 
265 private:
267  void operator=(const vtkPGenericIOMultiBlockReader&) = delete;
268  // Internal helper class
269  class vtkGenericIOMultiBlockMetaData;
270  vtkGenericIOMultiBlockMetaData* MetaData;
271 };
272 
273 #endif
int vtkIdType
Creates a vtkMultiBlockDataSet from a GenericIO file.