00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00050
#ifndef __vtkLight_h
00051
#define __vtkLight_h
00052
00053
#include "vtkObject.h"
00054
00055
00056
class vtkRenderer;
00057
class vtkMatrix4x4;
00058
00059 #define VTK_LIGHT_TYPE_HEADLIGHT 1
00060 #define VTK_LIGHT_TYPE_CAMERA_LIGHT 2
00061 #define VTK_LIGHT_TYPE_SCENE_LIGHT 3
00062
00063 class VTK_RENDERING_EXPORT vtkLight :
public vtkObject
00064 {
00065
public:
00066 vtkTypeRevisionMacro(vtkLight,
vtkObject);
00067
void PrintSelf(ostream& os,
vtkIndent indent);
00068
00072
static vtkLight *
New();
00073
00078 virtual void Render(
vtkRenderer *,
int) {};
00079
00081
00082 vtkSetVector3Macro(Color,
float);
00083 vtkGetVectorMacro(Color,
float,3);
00085
00087
00091 vtkSetVector3Macro(Position,
float);
00092 vtkGetVectorMacro(Position,
float,3);
00093 void SetPosition(
double *a) {this->SetPosition(
00094 static_cast<float>(a[0]),
00095 static_cast<float>(a[1]),
00096 static_cast<float>(a[2]));};
00098
00100
00105 vtkSetVector3Macro(FocalPoint,
float);
00106 vtkGetVectorMacro(FocalPoint,
float,3);
00107 void SetFocalPoint(
double *a) {this->SetFocalPoint(
00108 static_cast<float>(a[0]),
00109 static_cast<float>(a[1]),
00110 static_cast<float>(a[2]));};
00112
00114
00115 vtkSetMacro(Intensity,
float);
00116 vtkGetMacro(Intensity,
float);
00118
00120
00121 vtkSetMacro(Switch,
int);
00122 vtkGetMacro(Switch,
int);
00123 vtkBooleanMacro(Switch,
int);
00125
00127
00128 vtkSetMacro(Positional,
int);
00129 vtkGetMacro(Positional,
int);
00130 vtkBooleanMacro(Positional,
int);
00132
00134
00135 vtkSetMacro(Exponent,
float);
00136 vtkGetMacro(Exponent,
float);
00138
00140
00143 vtkSetMacro(ConeAngle,
float);
00144 vtkGetMacro(ConeAngle,
float);
00146
00148
00150 vtkSetVector3Macro(AttenuationValues,
float);
00151 vtkGetVectorMacro(AttenuationValues,
float,3);
00153
00155
00158
virtual void SetTransformMatrix(
vtkMatrix4x4*);
00159 vtkGetObjectMacro(TransformMatrix,
vtkMatrix4x4);
00161
00163
00165
void GetTransformedPosition(
float &a0,
float &a1,
float &a2);
00166
void GetTransformedPosition(
float a[3]);
00167
float *GetTransformedPosition();
00169
00171
00173
void GetTransformedFocalPoint(
float &a0,
float &a1,
float &a2);
00174
void GetTransformedFocalPoint(
float a[3]);
00175
float *GetTransformedFocalPoint();
00177
00179
00183
void SetDirectionAngle(
float elevation,
float azimuth);
00184 void SetDirectionAngle(
float ang[2]) { this->SetDirectionAngle(ang[0], ang[1]); };
00186
00188
void DeepCopy(vtkLight *light);
00189
00191
00202 vtkSetMacro(LightType,
int);
00203 vtkGetMacro(LightType,
int);
00204 void SetLightTypeToHeadlight()
00205 {this->SetLightType(
VTK_LIGHT_TYPE_HEADLIGHT);}
00206 void SetLightTypeToSceneLight()
00207 {
00208 this->SetTransformMatrix(NULL);
00209 this->SetLightType(
VTK_LIGHT_TYPE_SCENE_LIGHT);
00210 }
00211 void SetLightTypeToCameraLight()
00212 {this->SetLightType(
VTK_LIGHT_TYPE_CAMERA_LIGHT);}
00214
00216
00217
int LightTypeIsHeadlight();
00218
int LightTypeIsSceneLight();
00219
int LightTypeIsCameraLight();
00221
00222
void ReadSelf(istream& is);
00223
void WriteSelf(ostream& os);
00224
00225
protected:
00226 vtkLight();
00227 ~vtkLight();
00228
00229 float FocalPoint[3];
00230 float Position[3];
00231 float Intensity;
00232 float Color[3];
00233 int Switch;
00234 int Positional;
00235 float Exponent;
00236 float ConeAngle;
00237 float AttenuationValues[3];
00238 vtkMatrix4x4 *TransformMatrix;
00239 float TransformedFocalPointReturn[3];
00240 float TransformedPositionReturn[3];
00241 int LightType;
00242
private:
00243 vtkLight(
const vtkLight&);
00244
void operator=(
const vtkLight&);
00245 };
00246
00247
#endif