00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkActor.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 =========================================================================*/ 00054 #ifndef __vtkActor_h 00055 #define __vtkActor_h 00056 00057 #include "vtkProp3D.h" 00058 00059 class vtkRenderer; 00060 class vtkPropCollection; 00061 class vtkActorCollection; 00062 class vtkTexture; 00063 class vtkMapper; 00064 class vtkProperty; 00065 00066 class VTK_RENDERING_EXPORT vtkActor : public vtkProp3D 00067 { 00068 public: 00069 vtkTypeRevisionMacro(vtkActor,vtkProp3D); 00070 void PrintSelf(ostream& os, vtkIndent indent); 00071 00075 static vtkActor *New(); 00076 00080 virtual void GetActors(vtkPropCollection *); 00081 00083 00084 virtual int RenderOpaqueGeometry(vtkViewport *viewport); 00085 virtual int RenderTranslucentGeometry(vtkViewport *viewport); 00087 00093 virtual void Render(vtkRenderer *, vtkMapper *) {}; 00094 00096 void ShallowCopy(vtkProp *prop); 00097 00101 void ReleaseGraphicsResources(vtkWindow *); 00102 00104 00109 void SetProperty(vtkProperty *lut); 00110 vtkProperty *GetProperty(); 00112 00116 virtual vtkProperty* MakeProperty(); 00117 00119 00123 void SetBackfaceProperty(vtkProperty *lut); 00124 vtkProperty *GetBackfaceProperty(); 00126 00128 00131 virtual void SetTexture(vtkTexture*); 00132 vtkGetObjectMacro(Texture,vtkTexture); 00134 00139 virtual void SetMapper(vtkMapper *); 00140 00142 00143 vtkGetObjectMacro(Mapper,vtkMapper); 00145 00147 00150 void GetBounds(float bounds[6]) {this->vtkProp3D::GetBounds( bounds );}; 00151 float *GetBounds(); 00153 00160 virtual void ApplyProperties() {return;}; 00161 00163 unsigned long int GetMTime(); 00164 00169 virtual unsigned long GetRedrawMTime(); 00170 00172 00176 virtual void InitPartTraversal(); 00177 virtual vtkActor *GetNextPart(); 00178 virtual int GetNumberOfParts(); 00180 00181 protected: 00182 vtkActor(); 00183 ~vtkActor(); 00184 00185 vtkProperty *Property; 00186 vtkProperty *BackfaceProperty; 00187 vtkTexture *Texture; 00188 vtkMapper *Mapper; 00189 00190 // is this actor opaque 00191 int GetIsOpaque(); 00192 00193 // Bounds are cached in an actor - the MapperBounds are also cache to 00194 // help know when the Bounds need to be recomputed. 00195 float MapperBounds[6]; 00196 vtkTimeStamp BoundsMTime; 00197 00198 private: 00199 vtkActor(const vtkActor&); // Not implemented. 00200 void operator=(const vtkActor&); // Not implemented. 00201 }; 00202 00203 #endif 00204