VTK
vtkLightKit.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLightKit.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
97 #ifndef vtkLightKit_h
98 #define vtkLightKit_h
99 
100 #include "vtkRenderingCoreModule.h" // For export macro
101 #include "vtkObject.h"
102 
103 class vtkLight;
105 class vtkRenderer;
106 
108 {
109 public:
110  static vtkLightKit *New();
112  void PrintSelf(ostream& os, vtkIndent indent);
113 
114  //BTX
119  THeadLight
120  };
121 
129  KHRatio
130  };
131 
132  //ETX
133 
135 
138  vtkSetMacro(KeyLightIntensity, double);
139  vtkGetMacro(KeyLightIntensity, double);
141 
143 
151  vtkSetClampMacro(KeyToFillRatio, double, 0.5, VTK_DOUBLE_MAX);
152  vtkGetMacro(KeyToFillRatio, double);
154 
156 
165  vtkSetClampMacro(KeyToHeadRatio, double, 0.5, VTK_DOUBLE_MAX);
166  vtkGetMacro(KeyToHeadRatio, double);
168 
170 
175  vtkSetClampMacro(KeyToBackRatio, double, 0.5, VTK_DOUBLE_MAX);
176  vtkGetMacro(KeyToBackRatio, double);
178 
180 
189  vtkSetMacro(KeyLightWarmth, double);
190  vtkGetMacro(KeyLightWarmth, double);
192 
193  vtkSetMacro(FillLightWarmth, double);
194  vtkGetMacro(FillLightWarmth, double);
195 
196  vtkSetMacro(HeadLightWarmth, double);
197  vtkGetMacro(HeadLightWarmth, double);
198 
199  vtkSetMacro(BackLightWarmth, double);
200  vtkGetMacro(BackLightWarmth, double);
201 
203 
204  vtkGetVectorMacro(KeyLightColor, double, 3);
205  vtkGetVectorMacro(FillLightColor, double, 3);
206  vtkGetVectorMacro(HeadLightColor, double, 3);
207  vtkGetVectorMacro(BackLightColor, double, 3);
209 
211 
214  vtkBooleanMacro(MaintainLuminance, int);
215  vtkGetMacro(MaintainLuminance, int);
216  vtkSetMacro(MaintainLuminance, int);
218 
220 
231  void SetKeyLightAngle(double elevation, double azimuth);
232  void SetKeyLightAngle(double angle[2])
233  { this->SetKeyLightAngle(angle[0], angle[1]); }
235 
236  void SetKeyLightElevation(double x)
237  { this->SetKeyLightAngle(x, this->KeyLightAngle[1]); }
238 
239  void SetKeyLightAzimuth(double x)
240  { this->SetKeyLightAngle(this->KeyLightAngle[0], x); }
241 
242  vtkGetVectorMacro(KeyLightAngle, double, 2);
244  { double ang[2]; this->GetKeyLightAngle(ang); return ang[0]; }
245 
247  { double ang[2]; this->GetKeyLightAngle(ang); return ang[1]; }
248 
249  void SetFillLightAngle(double elevation, double azimuth);
250  void SetFillLightAngle(double angle[2])
251  { this->SetFillLightAngle(angle[0], angle[1]); }
252 
254  { this->SetFillLightAngle(x, this->FillLightAngle[1]); }
255 
256  void SetFillLightAzimuth(double x)
257  { this->SetFillLightAngle(this->FillLightAngle[0], x); }
258 
259  vtkGetVectorMacro(FillLightAngle, double, 2);
261  double ang[2]; this->GetFillLightAngle(ang); return ang[0]; }
262 
264  { double ang[2]; this->GetFillLightAngle(ang); return ang[1]; }
265 
266  void SetBackLightAngle(double elevation, double azimuth);
267  void SetBackLightAngle(double angle[2])
268  { this->SetBackLightAngle(angle[0], angle[1]); }
269 
271  { this->SetBackLightAngle(x, this->BackLightAngle[1]); }
272 
273  void SetBackLightAzimuth(double x)
274  { this->SetBackLightAngle(this->BackLightAngle[0], x); }
275 
276  vtkGetVectorMacro(BackLightAngle, double, 2);
278  { double ang[2]; this->GetBackLightAngle(ang); return ang[0]; }
279 
281  { double ang[2]; this->GetBackLightAngle(ang); return ang[1]; }
282 
284 
289 
290  void DeepCopy(vtkLightKit *kit);
291 
292  void Modified();
293  void Update();
294 
296  static const char *GetStringFromType(int type);
297 
299  static const char *GetStringFromSubType(int type);
300 
304  static const char *GetShortStringFromSubType(int subtype);
305 
309 
310 protected:
313 
314  void WarmthToRGBI(double w, double rgb[3], double& i);
315  void WarmthToRGB(double w, double rgb[3]);
317  double WarmthToIntensity(double w);
318 
319 
324 
327  double KeyLightAngle[2];
328  double KeyLightColor[3];
329 
332  double FillLightAngle[2];
333  double FillLightColor[3];
334 
336  double BackLightColor[3];
337 
340 
341  double BackLightAngle[2];
342 
345  double HeadLightColor[3];
346 
348 
349  vtkPiecewiseFunction *WarmthFunction[4]; // r, g, b, perceptual length
350 
351 private:
352  vtkLightKit(const vtkLightKit&); // Not implemented.
353  void operator=(const vtkLightKit&); // Not implemented.
354 };
355 
356 #endif
vtkLightKit::SetFillLightAngle
void SetFillLightAngle(double angle[2])
Definition: vtkLightKit.h:250
vtkLightKit::HeadLight
vtkLight * HeadLight
Definition: vtkLightKit.h:343
vtkLightKit::KeyToHeadRatio
double KeyToHeadRatio
Definition: vtkLightKit.h:322
vtkLightKit::KeyToFillRatio
double KeyToFillRatio
Definition: vtkLightKit.h:321
vtkLight
a virtual light for 3D rendering
Definition: vtkLight.h:61
vtkLightKit::KBRatio
@ KBRatio
Definition: vtkLightKit.h:128
vtkLightKit::SetBackLightAngle
void SetBackLightAngle(double elevation, double azimuth)
vtkLightKit::KeyToBackRatio
double KeyToBackRatio
Definition: vtkLightKit.h:323
vtkLightKit::FillLightWarmth
double FillLightWarmth
Definition: vtkLightKit.h:331
vtkLightKit::SetFillLightAzimuth
void SetFillLightAzimuth(double x)
Definition: vtkLightKit.h:256
vtkLightKit::BackLight0
vtkLight * BackLight0
Definition: vtkLightKit.h:338
vtkLightKit::GetBackLightAzimuth
double GetBackLightAzimuth()
Definition: vtkLightKit.h:280
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkLightKit::KeyLightIntensity
double KeyLightIntensity
Definition: vtkLightKit.h:320
vtkLightKit::GetFillLightAzimuth
double GetFillLightAzimuth()
Definition: vtkLightKit.h:263
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkLightKit::WarmthToIntensity
double WarmthToIntensity(double w)
vtkLightKit::SetBackLightElevation
void SetBackLightElevation(double x)
Definition: vtkLightKit.h:270
vtkLightKit::FillLight
vtkLight * FillLight
Definition: vtkLightKit.h:330
vtkLightKit::KFRatio
@ KFRatio
Definition: vtkLightKit.h:127
vtkGetVectorMacro
#define vtkGetVectorMacro(name, type, count)
Definition: vtkSetGet.h:424
vtkLightKit::KeyLightWarmth
double KeyLightWarmth
Definition: vtkLightKit.h:326
vtkLightKit::SetBackLightAzimuth
void SetBackLightAzimuth(double x)
Definition: vtkLightKit.h:273
vtkLightKit::AddLightsToRenderer
void AddLightsToRenderer(vtkRenderer *renderer)
vtkLightKit::GetSubType
static LightKitSubType GetSubType(LightKitType type, int i)
vtkLightKit::vtkLightKit
vtkLightKit()
vtkLightKit::WarmthToRGB
void WarmthToRGB(double w, double rgb[3])
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkLightKit::LightKitSubType
LightKitSubType
Definition: vtkLightKit.h:122
vtkLightKit::TBackLight
@ TBackLight
Definition: vtkLightKit.h:118
vtkLightKit::GetStringFromType
static const char * GetStringFromType(int type)
vtkLightKit::TFillLight
@ TFillLight
Definition: vtkLightKit.h:117
vtkLightKit::KeyLight
vtkLight * KeyLight
Definition: vtkLightKit.h:325
vtkLightKit::Intensity
@ Intensity
Definition: vtkLightKit.h:124
vtkLightKit::TKeyLight
@ TKeyLight
Definition: vtkLightKit.h:116
vtkLightKit::SetKeyLightAngle
void SetKeyLightAngle(double angle[2])
Definition: vtkLightKit.h:232
vtkLightKit::GetBackLightElevation
double GetBackLightElevation()
Definition: vtkLightKit.h:277
vtkLightKit::BackLight1
vtkLight * BackLight1
Definition: vtkLightKit.h:339
vtkLightKit::Warmth
@ Warmth
Definition: vtkLightKit.h:123
vtkLightKit::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkRenderingCoreModule.h
vtkLightKit::GetShortStringFromSubType
static const char * GetShortStringFromSubType(int subtype)
vtkLightKit::MaintainLuminance
int MaintainLuminance
Definition: vtkLightKit.h:347
vtkLightKit::DeepCopy
void DeepCopy(vtkLightKit *kit)
vtkLightKit::New
static vtkLightKit * New()
vtkLightKit::SetFillLightElevation
void SetFillLightElevation(double x)
Definition: vtkLightKit.h:253
vtkLightKit::RemoveLightsFromRenderer
void RemoveLightsFromRenderer(vtkRenderer *renderer)
vtkLightKit::SetBackLightAngle
void SetBackLightAngle(double angle[2])
Definition: vtkLightKit.h:267
vtkLightKit::Elevation
@ Elevation
Definition: vtkLightKit.h:125
vtkLightKit::GetKeyLightAzimuth
double GetKeyLightAzimuth()
Definition: vtkLightKit.h:246
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkObject.h
vtkLightKit::SetFillLightAngle
void SetFillLightAngle(double elevation, double azimuth)
vtkPiecewiseFunction
Defines a 1D piecewise function.
Definition: vtkPiecewiseFunction.h:51
vtkLightKit::GetKeyLightElevation
double GetKeyLightElevation()
Definition: vtkLightKit.h:243
vtkLightKit::SetKeyLightElevation
void SetKeyLightElevation(double x)
Definition: vtkLightKit.h:236
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkLightKit::SetKeyLightAzimuth
void SetKeyLightAzimuth(double x)
Definition: vtkLightKit.h:239
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkLightKit::InitializeWarmthFunctions
void InitializeWarmthFunctions()
vtkLightKit::Modified
void Modified()
vtkLightKit::LightKitType
LightKitType
Definition: vtkLightKit.h:115
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkLightKit::Update
void Update()
vtkLightKit::BackLightWarmth
double BackLightWarmth
Definition: vtkLightKit.h:335
vtkgl::angle
GLfloat angle
Definition: vtkgl.h:18174
vtkLightKit::WarmthToRGBI
void WarmthToRGBI(double w, double rgb[3], double &i)
VTKRENDERINGCORE_EXPORT
#define VTKRENDERINGCORE_EXPORT
Definition: vtkRenderingCoreModule.h:15
vtkLightKit::SetKeyLightAngle
void SetKeyLightAngle(double elevation, double azimuth)
vtkgl::w
GLubyte GLubyte GLubyte GLubyte w
Definition: vtkgl.h:12054
vtkLightKit::~vtkLightKit
~vtkLightKit()
vtkLightKit::GetStringFromSubType
static const char * GetStringFromSubType(int type)
vtkLightKit::HeadLightWarmth
double HeadLightWarmth
Definition: vtkLightKit.h:344
vtkgl::type
GLuint GLuint GLsizei GLenum type
Definition: vtkgl.h:11315
vtkLightKit::GetFillLightElevation
double GetFillLightElevation()
Definition: vtkLightKit.h:260
VTK_DOUBLE_MAX
#define VTK_DOUBLE_MAX
Definition: vtkType.h:142
vtkLightKit::Azimuth
@ Azimuth
Definition: vtkLightKit.h:126
vtkLightKit
a simple but quality lighting kit
Definition: vtkLightKit.h:108