Common/vtkDataObject.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00034 #ifndef __vtkDataObject_h
00035 #define __vtkDataObject_h
00036
00037 #include "vtkObject.h"
00038
00039 class vtkFieldData;
00040 class vtkProcessObject;
00041 class vtkSource;
00042 class vtkExtentTranslator;
00043
00044 #define VTK_PIECES_EXTENT 0
00045 #define VTK_3D_EXTENT 1
00046
00047 class VTK_COMMON_EXPORT vtkDataObject : public vtkObject
00048 {
00049 public:
00050 static vtkDataObject *New();
00051
00052 vtkTypeRevisionMacro(vtkDataObject,vtkObject);
00053 void PrintSelf(ostream& os, vtkIndent indent);
00054
00056
00057 vtkGetObjectMacro(Source,vtkSource);
00058 void SetSource(vtkSource *s);
00060
00063 unsigned long int GetMTime();
00064
00065
00066
00067 virtual void Initialize();
00068
00073 void ReleaseData();
00074
00077 int ShouldIReleaseData();
00078
00080
00081 vtkGetMacro(DataReleased,int);
00083
00085
00087 vtkSetMacro(ReleaseDataFlag,int);
00088 vtkGetMacro(ReleaseDataFlag,int);
00089 vtkBooleanMacro(ReleaseDataFlag,int);
00091
00093
00095 static void SetGlobalReleaseDataFlag(int val);
00096 void GlobalReleaseDataFlagOn() {this->SetGlobalReleaseDataFlag(1);};
00097 void GlobalReleaseDataFlagOff() {this->SetGlobalReleaseDataFlag(0);};
00098 static int GetGlobalReleaseDataFlag();
00100
00102
00103 virtual void SetFieldData(vtkFieldData*);
00104 vtkGetObjectMacro(FieldData,vtkFieldData);
00106
00107
00108 virtual void UnRegister(vtkObjectBase *o);
00109
00113 virtual int GetNetReferenceCount() {return this->ReferenceCount;};
00114
00120 virtual void Update();
00121
00127 virtual void UpdateInformation();
00128
00133 virtual void PropagateUpdateExtent();
00134
00140 virtual void TriggerAsynchronousUpdate();
00141
00148 virtual void UpdateData();
00149
00155 virtual unsigned long GetEstimatedMemorySize();
00156
00158
00161 virtual void SetUpdateExtent(int vtkNotUsed(piece),int vtkNotUsed(numPieces),
00162 int vtkNotUsed(ghostLevel))
00163 {vtkErrorMacro("Subclass did not implement 'SetUpdateExtent'");}
00164 void SetUpdateExtent(int piece, int numPieces)
00165 {this->SetUpdateExtent(piece, numPieces, 0);}
00167
00169
00176 virtual void SetUpdateExtent(int x1, int x2, int y1, int y2, int z1, int z2);
00177 virtual void SetUpdateExtent( int ext[6] );
00178 vtkGetVector6Macro( UpdateExtent, int );
00180
00185 virtual int GetDataObjectType() {return VTK_DATA_OBJECT;}
00186
00189 unsigned long GetUpdateTime();
00190
00195 void SetUpdateExtentToWholeExtent();
00196
00197 void SetPipelineMTime(unsigned long time) {this->PipelineMTime = time; }
00198 vtkGetMacro(PipelineMTime, unsigned long);
00199
00205 virtual unsigned long GetActualMemorySize();
00206
00208 void CopyInformation( vtkDataObject *data );
00209
00211
00212 virtual void CopyTypeSpecificInformation( vtkDataObject *data )
00213 {this->CopyInformation( data );};
00215
00217
00219 void SetUpdatePiece(int piece);
00220 void SetUpdateNumberOfPieces(int num);
00221 vtkGetMacro( UpdatePiece, int );
00222 vtkGetMacro( UpdateNumberOfPieces, int );
00224
00226
00228 void SetUpdateGhostLevel(int level);
00229 vtkGetMacro(UpdateGhostLevel, int);
00231
00233
00238 void SetRequestExactExtent(int v);
00239 vtkGetMacro(RequestExactExtent, int);
00240 vtkBooleanMacro(RequestExactExtent, int);
00242
00244
00247 vtkSetVector6Macro( WholeExtent, int );
00248 vtkGetVector6Macro( WholeExtent, int );
00250
00252
00256 vtkSetMacro( MaximumNumberOfPieces, int );
00257 vtkGetMacro( MaximumNumberOfPieces, int );
00259
00263 void DataHasBeenGenerated();
00264
00268 virtual void PrepareForNewData() {this->Initialize();};
00269
00271
00273 virtual void ShallowCopy(vtkDataObject *src);
00274 virtual void DeepCopy(vtkDataObject *src);
00276
00278
00281 vtkSetMacro(Locality, double);
00282 vtkGetMacro(Locality, double);
00284
00286
00287 void SetExtentTranslator(vtkExtentTranslator *translator);
00288 vtkExtentTranslator *GetExtentTranslator();
00290
00292
00293 vtkGetMacro(NumberOfConsumers,int);
00295
00297
00298 void AddConsumer(vtkObject *c);
00299 void RemoveConsumer(vtkObject *c);
00300 vtkObject *GetConsumer(int i);
00301 int IsConsumer(vtkObject *c);
00303
00310 virtual int GetExtentType() { return VTK_PIECES_EXTENT; };
00311
00312 protected:
00313
00314 vtkDataObject();
00315 ~vtkDataObject();
00316
00317
00318 vtkFieldData *FieldData;
00319
00320
00321 vtkSource *Source;
00322
00323
00324 int DataReleased;
00325
00326
00327 int NumberOfConsumers;
00328 vtkObject **Consumers;
00329
00331 int UpdateExtentIsOutsideOfTheExtent();
00332
00340 virtual int VerifyUpdateExtent();
00341
00342
00343
00344
00345 int WholeExtent[6];
00346 int Extent[6];
00347 int UpdateExtent[6];
00348
00349 unsigned char UpdateExtentInitialized;
00350
00351 vtkExtentTranslator *ExtentTranslator;
00352
00353
00354 int NumberOfPieces;
00355 int Piece;
00356 int MaximumNumberOfPieces;
00357 int UpdateNumberOfPieces;
00358 int UpdatePiece;
00359
00360
00361
00362
00363
00364
00365
00366 int RequestExactExtent;
00367
00368
00369
00370 virtual void Crop();
00371
00372 int GhostLevel;
00373 int UpdateGhostLevel;
00374
00375
00376 int ReleaseDataFlag;
00377
00378
00379 vtkTimeStamp UpdateTime;
00380
00381
00382
00383 unsigned long PipelineMTime;
00384
00385
00386 int LastUpdateExtentWasOutsideOfTheExtent;
00387
00388
00389
00390
00391
00392
00393 double Locality;
00394
00395 private:
00396
00397 void InternalDataObjectCopy(vtkDataObject *src);
00398 private:
00399 vtkDataObject(const vtkDataObject&);
00400 void operator=(const vtkDataObject&);
00401 };
00402
00403 #endif
00404