VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDataObjectGenerator.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00035 #ifndef __vtkDataObjectGenerator_h 00036 #define __vtkDataObjectGenerator_h 00037 00038 #include "vtkDataObjectAlgorithm.h" 00039 00040 class vtkInternalStructureCache; 00041 00042 class VTK_GRAPHICS_EXPORT vtkDataObjectGenerator 00043 : public vtkDataObjectAlgorithm 00044 { 00045 public: 00046 static vtkDataObjectGenerator *New(); 00047 vtkTypeRevisionMacro(vtkDataObjectGenerator,vtkDataObjectAlgorithm); 00048 void PrintSelf(ostream &os, vtkIndent indent); 00049 00051 00052 vtkSetStringMacro(Program); 00053 vtkGetStringMacro(Program); 00055 00056 protected: 00057 vtkDataObjectGenerator(); 00058 ~vtkDataObjectGenerator(); 00059 00060 virtual int RequestData(vtkInformation *req, 00061 vtkInformationVector **inV, 00062 vtkInformationVector *outV); 00063 virtual int RequestDataObject(vtkInformation *req, 00064 vtkInformationVector **inV, 00065 vtkInformationVector *outV); 00066 virtual int RequestInformation(vtkInformation *req, 00067 vtkInformationVector **inV, 00068 vtkInformationVector *outV); 00069 virtual int RequestUpdateExtent(vtkInformation *req, 00070 vtkInformationVector **inV, 00071 vtkInformationVector *outV); 00072 00073 //the string to parse to create a structure 00074 char *Program; 00075 //a record of the structure 00076 vtkInternalStructureCache *Structure; 00077 00078 //Helper for RequestDataObject 00079 vtkDataObject * 00080 CreateOutputDataObjects(vtkInternalStructureCache *structure); 00081 //Helper for RequestData 00082 vtkDataObject * 00083 FillOutputDataObjects(vtkInternalStructureCache *structure, 00084 int level, 00085 int stripe=0); 00086 00087 //to determine which composite data stripe to fill in 00088 vtkIdType Rank; 00089 vtkIdType Processors; 00090 00091 //create the templated atomic data sets 00092 void MakeImageData1(vtkDataSet *ds); 00093 void MakeUniformGrid1(vtkDataSet *ds); 00094 void MakeRectilinearGrid1(vtkDataSet *ds); 00095 void MakeStructuredGrid1(vtkDataSet *ds); 00096 void MakePolyData1(vtkDataSet *ds); 00097 void MakeUnstructuredGrid1(vtkDataSet *ds); 00098 00099 //used to spatially separate sub data sets within composites 00100 double XOffset; //increases for each dataset index 00101 double YOffset; //increases for each sub data set 00102 double ZOffset; //increases for each group index 00103 00104 //used to filling in point and cell values with unique Ids 00105 vtkIdType CellIdCounter; 00106 vtkIdType PointIdCounter; 00107 00108 //assign point and cell values to each point and cell 00109 void MakeValues(vtkDataSet *ds); 00110 00111 private: 00112 vtkDataObjectGenerator(const vtkDataObjectGenerator&); // Not implemented. 00113 void operator=(const vtkDataObjectGenerator&); // Not implemented. 00114 }; 00115 00116 #endif