Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Common/vtkProp.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkProp.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00049 #ifndef __vtkProp_h
00050 #define __vtkProp_h
00051 
00052 #include "vtkObject.h"
00053 
00054 class vtkAssemblyPath;
00055 class vtkAssemblyPaths;
00056 class vtkMatrix4x4;
00057 class vtkPropCollection;
00058 class vtkViewport;
00059 class vtkWindow;
00060 
00061 class VTK_COMMON_EXPORT vtkProp : public vtkObject
00062 {
00063 public:
00064   vtkTypeRevisionMacro(vtkProp,vtkObject);
00065   void PrintSelf(ostream& os, vtkIndent indent);
00066 
00068 
00071   virtual void GetActors(vtkPropCollection *) {}
00072   virtual void GetActors2D(vtkPropCollection *) {}
00073   virtual void GetVolumes(vtkPropCollection *) {}
00075 
00077 
00078   vtkSetMacro(Visibility, int);
00079   vtkGetMacro(Visibility, int);
00080   vtkBooleanMacro(Visibility, int);
00082 
00084 
00086   vtkSetMacro(Pickable,int);
00087   vtkGetMacro(Pickable,int);
00088   vtkBooleanMacro(Pickable,int);
00090 
00092 
00094   void SetPickMethod(void (*f)(void *), void *arg);
00095   void SetPickMethodArgDelete(void (*f)(void *));
00097 
00099   virtual void Pick();
00100 
00102 
00108   vtkSetMacro(Dragable,int);
00109   vtkGetMacro(Dragable,int);
00110   vtkBooleanMacro(Dragable,int);
00112 
00117   virtual unsigned long GetRedrawMTime() {return this->GetMTime();}
00118   
00121   virtual float *GetBounds() {return NULL;}
00122 
00124   virtual void ShallowCopy(vtkProp *prop);
00125 
00127 
00138   virtual void InitPathTraversal();
00139   virtual vtkAssemblyPath *GetNextPath();
00140   virtual int GetNumberOfPaths() {return 1;}
00142 
00144 
00147   virtual void PokeMatrix(vtkMatrix4x4 *vtkNotUsed(matrix)) {}
00148   virtual vtkMatrix4x4 *GetMatrix() {return NULL;}
00150 
00151 //BTX  
00153 
00164   virtual int RenderOpaqueGeometry(      vtkViewport *) { return 0; }
00165   virtual int RenderTranslucentGeometry( vtkViewport *) { return 0; }
00166   virtual int RenderOverlay(             vtkViewport *) { return 0; }
00168 
00173   virtual void ReleaseGraphicsResources(vtkWindow *) {}
00174 
00176 
00186   virtual float GetEstimatedRenderTime( vtkViewport * )
00187     { return this->EstimatedRenderTime; }
00188   virtual float GetEstimatedRenderTime(){ return this->EstimatedRenderTime; }
00190   
00192 
00196   virtual void SetEstimatedRenderTime(float t) 
00197     {this->EstimatedRenderTime = t; this->SavedEstimatedRenderTime = t;}
00199     
00201 
00206   virtual void RestoreEstimatedRenderTime()
00207     { this->EstimatedRenderTime = this->SavedEstimatedRenderTime; }
00209   
00210   
00212 
00222   virtual void AddEstimatedRenderTime(float t, vtkViewport *vtkNotUsed(vp))
00223     {this->EstimatedRenderTime+=t;}
00225 
00227 
00234   virtual void SetAllocatedRenderTime(float t, vtkViewport *vtkNotUsed(v)) 
00235     {
00236     this->AllocatedRenderTime = t;
00237     this->SavedEstimatedRenderTime = this->EstimatedRenderTime;
00238     this->EstimatedRenderTime = 0.0;
00239     }
00241 
00243 
00245   vtkGetMacro(AllocatedRenderTime, float);
00247 
00249 
00253   void SetRenderTimeMultiplier( float t ) { this->RenderTimeMultiplier = t; }
00254   vtkGetMacro(RenderTimeMultiplier, float);
00256 
00260   virtual void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path);
00261 
00263 
00264   vtkGetMacro(NumberOfConsumers,int);
00266   
00268 
00269   void AddConsumer(vtkObject *c);
00270   void RemoveConsumer(vtkObject *c);
00271   vtkObject *GetConsumer(int i);
00272   int IsConsumer(vtkObject *c);
00274 
00275 //ETX
00276 
00277 protected:
00278   vtkProp();
00279   ~vtkProp();
00280 
00281   int Visibility;
00282   int Pickable;
00283   unsigned long PickTag;
00284   int Dragable;
00285 
00286   float AllocatedRenderTime;
00287   float EstimatedRenderTime;
00288   float SavedEstimatedRenderTime;
00289   float RenderTimeMultiplier;
00290 
00291   // how many consumers does this object have
00292   int NumberOfConsumers;
00293   vtkObject **Consumers;
00294 
00295   // support multi-part props and access to paths of prop
00296   // stuff that follows is used to build the assembly hierarchy
00297   vtkAssemblyPaths *Paths;
00298   
00299 private:
00300   vtkProp(const vtkProp&);  // Not implemented.
00301   void operator=(const vtkProp&);  // Not implemented.
00302 };
00303 
00304 #endif
00305 
00306