00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00052 #ifndef __vtkProperty_h
00053 #define __vtkProperty_h
00054
00055 #include "vtkObject.h"
00056
00057
00058 #define VTK_FLAT 0
00059 #define VTK_GOURAUD 1
00060 #define VTK_PHONG 2
00061
00062
00063 #define VTK_POINTS 0
00064 #define VTK_WIREFRAME 1
00065 #define VTK_SURFACE 2
00066
00067 class vtkRenderer;
00068 class vtkActor;
00069
00070 class VTK_RENDERING_EXPORT vtkProperty : public vtkObject
00071 {
00072 public:
00073 vtkTypeRevisionMacro(vtkProperty,vtkObject);
00074 void PrintSelf(ostream& os, vtkIndent indent);
00075
00081 static vtkProperty *New();
00082
00084 void DeepCopy(vtkProperty *p);
00085
00091 virtual void Render(vtkActor *,vtkRenderer *) {};
00092
00098 virtual void BackfaceRender(vtkActor *,vtkRenderer *) {};
00099
00101
00102 vtkSetClampMacro(Interpolation,int,VTK_FLAT,VTK_PHONG);
00103 vtkGetMacro(Interpolation,int);
00104 void SetInterpolationToFlat() {this->SetInterpolation(VTK_FLAT);};
00105 void SetInterpolationToGouraud() {this->SetInterpolation(VTK_GOURAUD);};
00106 void SetInterpolationToPhong() {this->SetInterpolation(VTK_PHONG);};
00107 char *GetInterpolationAsString();
00109
00111
00112 vtkSetClampMacro(Representation,int,VTK_POINTS,VTK_SURFACE);
00113 vtkGetMacro(Representation,int);
00114 void SetRepresentationToPoints() {this->SetRepresentation(VTK_POINTS);};
00115 void SetRepresentationToWireframe() {
00116 this->SetRepresentation(VTK_WIREFRAME);};
00117 void SetRepresentationToSurface() {this->SetRepresentation(VTK_SURFACE);};
00118 char *GetRepresentationAsString();
00120
00122
00125 void SetColor(float r,float g,float b);
00126 void SetColor(float a[3]) { this->SetColor(a[0], a[1], a[2]); };
00127 float *GetColor();
00128 void GetColor(float rgb[3]);
00130
00132
00133 vtkSetClampMacro(Ambient,float,0.0f,1.0f);
00134 vtkGetMacro(Ambient,float);
00136
00138
00139 vtkSetClampMacro(Diffuse,float,0.0f,1.0f);
00140 vtkGetMacro(Diffuse,float);
00142
00144
00145 vtkSetClampMacro(Specular,float,0.0f,1.0f);
00146 vtkGetMacro(Specular,float);
00148
00150
00151 vtkSetClampMacro(SpecularPower,float,0.0f,100.0f);
00152 vtkGetMacro(SpecularPower,float);
00154
00156
00158 vtkSetClampMacro(Opacity,float,0.0f,1.0f);
00159 vtkGetMacro(Opacity,float);
00161
00163
00167 vtkSetVector3Macro(AmbientColor,float);
00168 vtkGetVectorMacro(AmbientColor,float,3);
00170
00172
00173 vtkSetVector3Macro(DiffuseColor,float);
00174 vtkGetVectorMacro(DiffuseColor,float,3);
00176
00178
00179 vtkSetVector3Macro(SpecularColor,float);
00180 vtkGetVectorMacro(SpecularColor,float,3);
00182
00184
00187 vtkGetMacro(EdgeVisibility,int);
00188 vtkSetMacro(EdgeVisibility,int);
00189 vtkBooleanMacro(EdgeVisibility,int);
00191
00193
00194 vtkSetVector3Macro(EdgeColor,float);
00195 vtkGetVectorMacro(EdgeColor,float,3);
00197
00199
00201 vtkSetClampMacro(LineWidth,float,0,VTK_LARGE_FLOAT);
00202 vtkGetMacro(LineWidth,float);
00204
00206
00209 vtkSetMacro(LineStipplePattern,int);
00210 vtkGetMacro(LineStipplePattern,int);
00212
00214
00217 vtkSetClampMacro(LineStippleRepeatFactor,int,1,VTK_LARGE_INTEGER);
00218 vtkGetMacro(LineStippleRepeatFactor,int);
00220
00222
00224 vtkSetClampMacro(PointSize,float,0,VTK_LARGE_FLOAT);
00225 vtkGetMacro(PointSize,float);
00227
00229
00232 vtkGetMacro(BackfaceCulling,int);
00233 vtkSetMacro(BackfaceCulling,int);
00234 vtkBooleanMacro(BackfaceCulling,int);
00236
00238
00241 vtkGetMacro(FrontfaceCulling,int);
00242 vtkSetMacro(FrontfaceCulling,int);
00243 vtkBooleanMacro(FrontfaceCulling,int);
00245
00246 protected:
00247 vtkProperty();
00248 ~vtkProperty() {};
00249
00250 float Color[3];
00251 float AmbientColor[3];
00252 float DiffuseColor[3];
00253 float SpecularColor[3];
00254 float EdgeColor[3];
00255 float Ambient;
00256 float Diffuse;
00257 float Specular;
00258 float SpecularPower;
00259 float Opacity;
00260 float PointSize;
00261 float LineWidth;
00262 int LineStipplePattern;
00263 int LineStippleRepeatFactor;
00264 int Interpolation;
00265 int Representation;
00266 int EdgeVisibility;
00267 int BackfaceCulling;
00268 int FrontfaceCulling;
00269 private:
00270 vtkProperty(const vtkProperty&);
00271 void operator=(const vtkProperty&);
00272 };
00273
00275 inline char *vtkProperty::GetInterpolationAsString(void)
00276 {
00277 if ( this->Interpolation == VTK_FLAT )
00278 {
00279 return (char *)"Flat";
00280 }
00281 else if ( this->Interpolation == VTK_GOURAUD )
00282 {
00283 return (char *)"Gouraud";
00284 }
00285 else
00286 {
00287 return (char *)"Phong";
00288 }
00289 }
00290
00291
00293 inline char *vtkProperty::GetRepresentationAsString(void)
00294 {
00295 if ( this->Representation == VTK_POINTS )
00296 {
00297 return (char *)"Points";
00298 }
00299 else if ( this->Representation == VTK_WIREFRAME )
00300 {
00301 return (char *)"Wireframe";
00302 }
00303 else
00304 {
00305 return (char *)"Surface";
00306 }
00307 }
00308
00309
00310
00311 #endif