Main Page Class Hierarchy Alphabetical List Compound List File List Compound 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   /*! WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE
    00154       THESE METHODS OUTSIDE OF THE RENDERING PROCESS All concrete
    00155       subclasses must be able to render themselves. There are three key
    00156       render methods in vtk and they correspond to three different points
    00157       in the rendering cycle. Any given prop may implement one or more of
    00158       these methods. The first method is intended for rendering all opaque
    00159       geometry. The second method is intended for rendering all translucent
    00160       geometry. Most volume rendering mappers draw their results during
    00161       this second method. The last method is to render any 2D annotation or
    00162       overlays. Each of these methods return an integer value indicating
    00163       whether or not this render method was applied to this data. */
    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