mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
206 lines
6.5 KiB
C++
206 lines
6.5 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkExternalLight.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkExternalLight - a virtual light object for tweaking existing lights
|
|
// in an external 3D rendering context
|
|
//
|
|
// .SECTION Description
|
|
// vtkExternalLight is a virtual light object for tweaking existing lights in
|
|
// an external 3D rendering context. It provides a mechanism to adjust and
|
|
// control parameters of existing lights in an external OpenGL context.
|
|
//
|
|
// It provides methods to locate and point the light,
|
|
// and set its brightness and color. In addition to the
|
|
// basic infinite distance point light source attributes, you can also specify
|
|
// the light attenuation values and cone angle. These attributes are only used
|
|
// if the light is a positional light.
|
|
//
|
|
// By default, vtkExternalLight overrides specific light parameters as set by
|
|
// the user. Setting the #ReplaceMode to ALL_PARAMS, will set all
|
|
// the light parameter values to the ones set in vtkExternalLight.
|
|
//
|
|
// .SECTION Caveats
|
|
// Use the vtkExternalLight object to tweak parameters of lights created in the
|
|
// external context. This class does NOT create new lights in the scene.
|
|
//
|
|
// .SECTION Example
|
|
// Usage example for vtkExternalLight in conjunction with
|
|
// vtkExternalOpenGLRenderer and \ref ExternalVTKWidget
|
|
// \code{.cpp}
|
|
// vtkNew<vtkExternalLight> exLight;
|
|
// exLight->SetLightIndex(GL_LIGHT0); // GL_LIGHT0 identifies the external light
|
|
// exLight->SetDiffuseColor(1.0, 0.0, 0.0); // Changing diffuse color
|
|
// vtkNew<ExternalVTKWidget> exWidget;
|
|
// vtkExternalOpenGLRenderer* ren = vtkExternalOpenGLRenderer::SafeDownCast(exWidget->AddRenderer());
|
|
// ren->AddExternalLight(exLight.GetPointer());
|
|
// \endcode
|
|
//
|
|
// .SECTION see also
|
|
// vtkExternalOpenGLRenderer \ref ExternalVTKWidget
|
|
|
|
#ifndef vtkExternalLight_h
|
|
#define vtkExternalLight_h
|
|
|
|
#include "vtkRenderingExternalModule.h" // For export macro
|
|
#include "vtkLight.h"
|
|
|
|
class VTKRENDERINGEXTERNAL_EXPORT vtkExternalLight : public vtkLight
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkExternalLight, vtkLight);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Create an external light object with the focal point at the origin and its
|
|
// position set to (0,0,1). The light is a Headlight, its color is white
|
|
// (black ambient, white diffuse, white specular),
|
|
// intensity=1, the light is turned on, positional lighting is off,
|
|
// ConeAngle=30, AttenuationValues=(1,0,0), Exponent=1 and the
|
|
// TransformMatrix is NULL. The light index is GL_LIGHT0, which means the
|
|
// existing light with index GL_LIGHT0 will be affected by this light.
|
|
static vtkExternalLight *New();
|
|
|
|
enum ReplaceModes
|
|
{
|
|
INDIVIDUAL_PARAMS = 0, // default
|
|
ALL_PARAMS = 1
|
|
};
|
|
|
|
// Description:
|
|
// Set/Get light index
|
|
// This should be the OpenGL light identifier. (e.g.: GL_LIGHT0)
|
|
// (Default: GL_LIGHT0)
|
|
vtkSetMacro(LightIndex, int);
|
|
vtkGetMacro(LightIndex, int);
|
|
|
|
// Description:
|
|
// Set/Get replace mode
|
|
// This determines how this ExternalLight will be used to tweak parameters on
|
|
// an existing light in the rendering context.
|
|
// (Default: INDIVIDUAL_PARAMS)
|
|
//
|
|
// \li \c vtkExternalLight::INDIVIDUAL_PARAMS : Replace parameters
|
|
// specifically set by the user by calling the parameter
|
|
// Set method. (e.g. SetDiffuseColor())
|
|
//
|
|
// \li \c vtkExternalLight::ALL_PARAMS : Replace all
|
|
// parameters of the light with the parameters in vtkExternalLight object.
|
|
vtkSetMacro(ReplaceMode, int);
|
|
vtkGetMacro(ReplaceMode, int);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetPosition(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetFocalPoint(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetAmbientColor(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetDiffuseColor(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetSpecularColor(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetIntensity(double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetConeAngle(double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetAttenuationValues(double, double, double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetExponent(double);
|
|
|
|
// Description:
|
|
// Override Set method to keep a record of changed value
|
|
void SetPositional(int);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(PositionSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(FocalPointSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(AmbientColorSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(DiffuseColorSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(SpecularColorSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(IntensitySet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(ConeAngleSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(AttenuationValuesSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(ExponentSet, bool);
|
|
|
|
// Description:
|
|
// Check whether value set by user
|
|
vtkGetMacro(PositionalSet, bool);
|
|
|
|
protected:
|
|
vtkExternalLight();
|
|
~vtkExternalLight();
|
|
|
|
int LightIndex;
|
|
int ReplaceMode;
|
|
|
|
bool PositionSet;
|
|
bool FocalPointSet;
|
|
bool AmbientColorSet;
|
|
bool DiffuseColorSet;
|
|
bool SpecularColorSet;
|
|
bool IntensitySet;
|
|
bool ConeAngleSet;
|
|
bool AttenuationValuesSet;
|
|
bool ExponentSet;
|
|
bool PositionalSet;
|
|
|
|
private:
|
|
vtkExternalLight(const vtkExternalLight&); // Not implemented
|
|
void operator=(const vtkExternalLight&); // Not implemented
|
|
};
|
|
|
|
#endif // vtkExternalLight_h
|