dox/Common/vtkDataObject.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00038 #ifndef __vtkDataObject_h
00039 #define __vtkDataObject_h
00040
00041 #include "vtkObject.h"
00042
00043 class vtkFieldData;
00044 class vtkProcessObject;
00045 class vtkSource;
00046 class vtkExtentTranslator;
00047
00048 #define VTK_PIECES_EXTENT 0
00049 #define VTK_3D_EXTENT 1
00050
00051 class VTK_COMMON_EXPORT vtkDataObject : public vtkObject
00052 {
00053 public:
00054 static vtkDataObject *New();
00055
00056 vtkTypeRevisionMacro(vtkDataObject,vtkObject);
00057 void PrintSelf(ostream& os, vtkIndent indent);
00058
00059 #ifndef VTK_REMOVE_LEGACY_CODE
00060
00061 virtual vtkDataObject* MakeObject();
00062 #endif
00063
00065
00066 vtkGetObjectMacro(Source,vtkSource);
00067 void SetSource(vtkSource *s);
00069
00072 unsigned long int GetMTime();
00073
00074
00075
00076 virtual void Initialize();
00077
00082 void ReleaseData();
00083
00086 int ShouldIReleaseData();
00087
00089
00090 vtkGetMacro(DataReleased,int);
00092
00094
00096 vtkSetMacro(ReleaseDataFlag,int);
00097 vtkGetMacro(ReleaseDataFlag,int);
00098 vtkBooleanMacro(ReleaseDataFlag,int);
00100
00102
00104 static void SetGlobalReleaseDataFlag(int val);
00105 void GlobalReleaseDataFlagOn() {this->SetGlobalReleaseDataFlag(1);};
00106 void GlobalReleaseDataFlagOff() {this->SetGlobalReleaseDataFlag(0);};
00107 static int GetGlobalReleaseDataFlag();
00109
00111
00112 virtual void SetFieldData(vtkFieldData*);
00113 vtkGetObjectMacro(FieldData,vtkFieldData);
00115
00116
00117 virtual void UnRegister(vtkObjectBase *o);
00118
00122 virtual int GetNetReferenceCount() {return this->ReferenceCount;};
00123
00129 virtual void Update();
00130
00136 virtual void UpdateInformation();
00137
00142 virtual void PropagateUpdateExtent();
00143
00149 virtual void TriggerAsynchronousUpdate();
00150
00157 virtual void UpdateData();
00158
00164 virtual unsigned long GetEstimatedMemorySize();
00165
00167
00170 virtual void SetUpdateExtent(int vtkNotUsed(piece),int vtkNotUsed(numPieces),
00171 int vtkNotUsed(ghostLevel))
00172 {vtkErrorMacro("Subclass did not implement 'SetUpdateExtent'");}
00173 void SetUpdateExtent(int piece, int numPieces)
00174 {this->SetUpdateExtent(piece, numPieces, 0);}
00176
00178
00185 virtual void SetUpdateExtent(int x1, int x2, int y1, int y2, int z1, int z2);
00186 virtual void SetUpdateExtent( int ext[6] );
00187 vtkGetVector6Macro( UpdateExtent, int );
00189
00194 virtual int GetDataObjectType() {return VTK_DATA_OBJECT;}
00195
00198 unsigned long GetUpdateTime();
00199
00204 void SetUpdateExtentToWholeExtent();
00205
00206 void SetPipelineMTime(unsigned long time) {this->PipelineMTime = time; }
00207 vtkGetMacro(PipelineMTime, unsigned long);
00208
00214 virtual unsigned long GetActualMemorySize();
00215
00217 void CopyInformation( vtkDataObject *data );
00218
00220
00221 virtual void CopyTypeSpecificInformation( vtkDataObject *data )
00222 {this->CopyInformation( data );};
00224
00226
00228 void SetUpdatePiece(int piece);
00229 void SetUpdateNumberOfPieces(int num);
00230 vtkGetMacro( UpdatePiece, int );
00231 vtkGetMacro( UpdateNumberOfPieces, int );
00233
00235
00237 void SetUpdateGhostLevel(int level);
00238 vtkGetMacro(UpdateGhostLevel, int);
00240
00242
00247 void SetRequestExactExtent(int v);
00248 vtkGetMacro(RequestExactExtent, int);
00249 vtkBooleanMacro(RequestExactExtent, int);
00251
00253
00256 vtkSetVector6Macro( WholeExtent, int );
00257 vtkGetVector6Macro( WholeExtent, int );
00259
00261
00265 vtkSetMacro( MaximumNumberOfPieces, int );
00266 vtkGetMacro( MaximumNumberOfPieces, int );
00268
00272 void DataHasBeenGenerated();
00273
00277 virtual void PrepareForNewData() {this->Initialize();};
00278
00280
00282 virtual void ShallowCopy(vtkDataObject *src);
00283 virtual void DeepCopy(vtkDataObject *src);
00285
00287
00290 vtkSetMacro(Locality, float);
00291 vtkGetMacro(Locality, float);
00293
00295
00296 void SetExtentTranslator(vtkExtentTranslator *translator);
00297 vtkExtentTranslator *GetExtentTranslator();
00299
00301
00302 vtkGetMacro(NumberOfConsumers,int);
00304
00306
00307 void AddConsumer(vtkObject *c);
00308 void RemoveConsumer(vtkObject *c);
00309 vtkObject *GetConsumer(int i);
00310 int IsConsumer(vtkObject *c);
00312
00313
00314 protected:
00315
00316 vtkDataObject();
00317 ~vtkDataObject();
00318
00319
00320 vtkFieldData *FieldData;
00321
00322
00323 vtkSource *Source;
00324
00325
00326 int DataReleased;
00327
00328
00329 int NumberOfConsumers;
00330 vtkObject **Consumers;
00331
00333 int UpdateExtentIsOutsideOfTheExtent();
00334
00339 int UpdateExtentIsEmpty();
00340
00348 virtual int VerifyUpdateExtent();
00349
00350
00351
00352
00353
00354
00355
00356 virtual int GetExtentType() { return VTK_PIECES_EXTENT; };
00357
00358
00359
00360
00361 int WholeExtent[6];
00362 int Extent[6];
00363 int UpdateExtent[6];
00364
00365 unsigned char UpdateExtentInitialized;
00366
00367 vtkExtentTranslator *ExtentTranslator;
00368
00369
00370 int NumberOfPieces;
00371 int Piece;
00372 int MaximumNumberOfPieces;
00373 int UpdateNumberOfPieces;
00374 int UpdatePiece;
00375
00376
00377
00378
00379
00380
00381
00382 int RequestExactExtent;
00383
00384
00385
00386 virtual void Crop();
00387
00388 int GhostLevel;
00389 int UpdateGhostLevel;
00390
00391
00392 int ReleaseDataFlag;
00393
00394
00395 vtkTimeStamp UpdateTime;
00396
00397
00398
00399 unsigned long PipelineMTime;
00400
00401
00402 int LastUpdateExtentWasOutsideOfTheExtent;
00403
00404
00405
00406
00407
00408
00409 float Locality;
00410
00411 private:
00412
00413 void InternalDataObjectCopy(vtkDataObject *src);
00414 private:
00415 vtkDataObject(const vtkDataObject&);
00416 void operator=(const vtkDataObject&);
00417 };
00418
00419 #endif
00420