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

dox/Rendering/vtkProperty.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkProperty.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 =========================================================================*/ 00040 #ifndef __vtkProperty_h 00041 #define __vtkProperty_h 00042 00043 #include "vtkObject.h" 00044 00045 // shading models 00046 #define VTK_FLAT 0 00047 #define VTK_GOURAUD 1 00048 #define VTK_PHONG 2 00049 00050 // representation models 00051 #define VTK_POINTS 0 00052 #define VTK_WIREFRAME 1 00053 #define VTK_SURFACE 2 00054 00055 class vtkRenderer; 00056 class vtkActor; 00057 00058 class VTK_RENDERING_EXPORT vtkProperty : public vtkObject 00059 { 00060 public: 00061 vtkTypeRevisionMacro(vtkProperty,vtkObject); 00062 void PrintSelf(ostream& os, vtkIndent indent); 00063 00069 static vtkProperty *New(); 00070 00072 void DeepCopy(vtkProperty *p); 00073 00079 virtual void Render(vtkActor *,vtkRenderer *) {}; 00080 00086 virtual void BackfaceRender(vtkActor *,vtkRenderer *) {}; 00087 00089 00090 vtkSetClampMacro(Interpolation,int,VTK_FLAT,VTK_PHONG); 00091 vtkGetMacro(Interpolation,int); 00092 void SetInterpolationToFlat() {this->SetInterpolation(VTK_FLAT);}; 00093 void SetInterpolationToGouraud() {this->SetInterpolation(VTK_GOURAUD);}; 00094 void SetInterpolationToPhong() {this->SetInterpolation(VTK_PHONG);}; 00095 char *GetInterpolationAsString(); 00097 00099 00100 vtkSetClampMacro(Representation,int,VTK_POINTS,VTK_SURFACE); 00101 vtkGetMacro(Representation,int); 00102 void SetRepresentationToPoints() {this->SetRepresentation(VTK_POINTS);}; 00103 void SetRepresentationToWireframe() { 00104 this->SetRepresentation(VTK_WIREFRAME);}; 00105 void SetRepresentationToSurface() {this->SetRepresentation(VTK_SURFACE);}; 00106 char *GetRepresentationAsString(); 00108 00110 00113 void SetColor(float r,float g,float b); 00114 void SetColor(float a[3]) { this->SetColor(a[0], a[1], a[2]); }; 00115 float *GetColor(); 00116 void GetColor(float rgb[3]); 00118 00120 00121 vtkSetClampMacro(Ambient,float,0.0f,1.0f); 00122 vtkGetMacro(Ambient,float); 00124 00126 00127 vtkSetClampMacro(Diffuse,float,0.0f,1.0f); 00128 vtkGetMacro(Diffuse,float); 00130 00132 00133 vtkSetClampMacro(Specular,float,0.0f,1.0f); 00134 vtkGetMacro(Specular,float); 00136 00138 00139 vtkSetClampMacro(SpecularPower,float,0.0f,100.0f); 00140 vtkGetMacro(SpecularPower,float); 00142 00144 00146 vtkSetClampMacro(Opacity,float,0.0f,1.0f); 00147 vtkGetMacro(Opacity,float); 00149 00151 00155 vtkSetVector3Macro(AmbientColor,float); 00156 vtkGetVectorMacro(AmbientColor,float,3); 00158 00160 00161 vtkSetVector3Macro(DiffuseColor,float); 00162 vtkGetVectorMacro(DiffuseColor,float,3); 00164 00166 00167 vtkSetVector3Macro(SpecularColor,float); 00168 vtkGetVectorMacro(SpecularColor,float,3); 00170 00172 00175 vtkGetMacro(EdgeVisibility,int); 00176 vtkSetMacro(EdgeVisibility,int); 00177 vtkBooleanMacro(EdgeVisibility,int); 00179 00181 00182 vtkSetVector3Macro(EdgeColor,float); 00183 vtkGetVectorMacro(EdgeColor,float,3); 00185 00187 00189 vtkSetClampMacro(LineWidth,float,0,VTK_LARGE_FLOAT); 00190 vtkGetMacro(LineWidth,float); 00192 00194 00197 vtkSetMacro(LineStipplePattern,int); 00198 vtkGetMacro(LineStipplePattern,int); 00200 00202 00205 vtkSetClampMacro(LineStippleRepeatFactor,int,1,VTK_LARGE_INTEGER); 00206 vtkGetMacro(LineStippleRepeatFactor,int); 00208 00210 00212 vtkSetClampMacro(PointSize,float,0,VTK_LARGE_FLOAT); 00213 vtkGetMacro(PointSize,float); 00215 00217 00220 vtkGetMacro(BackfaceCulling,int); 00221 vtkSetMacro(BackfaceCulling,int); 00222 vtkBooleanMacro(BackfaceCulling,int); 00224 00226 00229 vtkGetMacro(FrontfaceCulling,int); 00230 vtkSetMacro(FrontfaceCulling,int); 00231 vtkBooleanMacro(FrontfaceCulling,int); 00233 00234 protected: 00235 vtkProperty(); 00236 ~vtkProperty() {}; 00237 00238 float Color[3]; 00239 float AmbientColor[3]; 00240 float DiffuseColor[3]; 00241 float SpecularColor[3]; 00242 float EdgeColor[3]; 00243 float Ambient; 00244 float Diffuse; 00245 float Specular; 00246 float SpecularPower; 00247 float Opacity; 00248 float PointSize; 00249 float LineWidth; 00250 int LineStipplePattern; 00251 int LineStippleRepeatFactor; 00252 int Interpolation; 00253 int Representation; 00254 int EdgeVisibility; 00255 int BackfaceCulling; 00256 int FrontfaceCulling; 00257 private: 00258 vtkProperty(const vtkProperty&); // Not implemented. 00259 void operator=(const vtkProperty&); // Not implemented. 00260 }; 00261 00263 inline char *vtkProperty::GetInterpolationAsString(void) 00264 { 00265 if ( this->Interpolation == VTK_FLAT ) 00266 { 00267 return (char *)"Flat"; 00268 } 00269 else if ( this->Interpolation == VTK_GOURAUD ) 00270 { 00271 return (char *)"Gouraud"; 00272 } 00273 else 00274 { 00275 return (char *)"Phong"; 00276 } 00277 } 00278 00279 00281 inline char *vtkProperty::GetRepresentationAsString(void) 00282 { 00283 if ( this->Representation == VTK_POINTS ) 00284 { 00285 return (char *)"Points"; 00286 } 00287 else if ( this->Representation == VTK_WIREFRAME ) 00288 { 00289 return (char *)"Wireframe"; 00290 } 00291 else 00292 { 00293 return (char *)"Surface"; 00294 } 00295 } 00296 00297 00298 00299 #endif