00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkActor.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00034 #ifndef __vtkActor_h 00035 #define __vtkActor_h 00036 00037 #include "vtkProp3D.h" 00038 00039 class vtkRenderer; 00040 class vtkPropCollection; 00041 class vtkActorCollection; 00042 class vtkTexture; 00043 class vtkMapper; 00044 class vtkProperty; 00045 00046 class VTK_RENDERING_EXPORT vtkActor : public vtkProp3D 00047 { 00048 public: 00049 vtkTypeRevisionMacro(vtkActor,vtkProp3D); 00050 void PrintSelf(ostream& os, vtkIndent indent); 00051 00055 static vtkActor *New(); 00056 00060 virtual void GetActors(vtkPropCollection *); 00061 00063 00064 virtual int RenderOpaqueGeometry(vtkViewport *viewport); 00065 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport); 00067 00069 virtual int HasTranslucentPolygonalGeometry(); 00070 00076 virtual void Render(vtkRenderer *, vtkMapper *) {} 00077 00079 void ShallowCopy(vtkProp *prop); 00080 00084 void ReleaseGraphicsResources(vtkWindow *); 00085 00087 00092 void SetProperty(vtkProperty *lut); 00093 vtkProperty *GetProperty(); 00095 00099 virtual vtkProperty* MakeProperty(); 00100 00102 00106 void SetBackfaceProperty(vtkProperty *lut); 00107 vtkGetObjectMacro(BackfaceProperty,vtkProperty); 00109 00111 00114 virtual void SetTexture(vtkTexture*); 00115 vtkGetObjectMacro(Texture,vtkTexture); 00117 00122 virtual void SetMapper(vtkMapper *); 00123 00125 00126 vtkGetObjectMacro(Mapper,vtkMapper); 00128 00130 00133 void GetBounds(double bounds[6]) {this->vtkProp3D::GetBounds( bounds );} 00134 double *GetBounds(); 00136 00143 virtual void ApplyProperties() {} 00144 00146 unsigned long int GetMTime(); 00147 00152 virtual unsigned long GetRedrawMTime(); 00153 00155 00159 VTK_LEGACY(virtual void InitPartTraversal()); 00160 VTK_LEGACY(virtual vtkActor *GetNextPart()); 00161 VTK_LEGACY(virtual int GetNumberOfParts()); 00163 00168 virtual bool GetSupportsSelection(); 00169 00170 protected: 00171 vtkActor(); 00172 ~vtkActor(); 00173 00174 vtkProperty *Property; 00175 vtkProperty *BackfaceProperty; 00176 vtkTexture *Texture; 00177 vtkMapper *Mapper; 00178 00179 // is this actor opaque 00180 int GetIsOpaque(); 00181 00182 // Bounds are cached in an actor - the MapperBounds are also cache to 00183 // help know when the Bounds need to be recomputed. 00184 double MapperBounds[6]; 00185 vtkTimeStamp BoundsMTime; 00186 00187 private: 00188 vtkActor(const vtkActor&); // Not implemented. 00189 void operator=(const vtkActor&); // Not implemented. 00190 }; 00191 00192 #endif 00193