Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
omni::visual::Light Struct Reference

A light with position and phong shader attributes. More...

#include <Light.h>

Inheritance diagram for omni::visual::Light:
Inheritance graph
[legend]
Collaboration diagram for omni::visual::Light:
Collaboration graph
[legend]

Public Member Functions

 Light (const Tracker &_tracker=Tracker(), qreal const &_intensity=1.0)
 
 Light (const Tracker &_tracker, const QColor &_ambient, const QColor &_diffuse, const QColor &_specular, const qreal &_intensity=1.0)
 
void setup (GLuint _index=GL_LIGHT0)
 Setup light in OpenGL. More...
 
QColor ambient () const
 Return color for ambient. More...
 
void setAmbient (QColor)
 Set new ambient color. More...
 
QColor diffuse () const
 Return diffuse color. More...
 
void setDiffuse (QColor)
 Set new diffuse color. More...
 
QColor specular () const
 Return specular color. More...
 
void setSpecular (QColor)
 Set new specular color. More...
 
qreal intensity () const
 Return intensity value. More...
 
void setIntensity (qreal)
 Set new intensity value. More...
 
void fromStream (QDataStream &)
 Deserialize from stream. More...
 
void toStream (QDataStream &) const
 Serialize to stream. More...
 
- Public Member Functions inherited from omni::visual::Tracker
 Tracker ()
 
 Tracker (const QVector3D &_center, const PolarVec &_direction)
 
void track (float _longitude, float _latitude, float _radius)
 
QVector3D eye () const
 get tracker position More...
 
void setEye (const QVector3D &_pos)
 Set eye position. More...
 
void setCenter (QVector3D const &)
 Set center position. More...
 
QVector3D & center ()
 Return center position. More...
 
QVector3D const & center () const
 Return center position (const version) More...
 
void setDirection (PolarVec const &)
 Set direction from polar vector. More...
 
void setDistance (float _t)
 Set direction with a certain distance. More...
 
PolarVec & direction ()
 Return direction as polar vector. More...
 
PolarVec const & direction () const
 Return direction as polar vector (const version) More...
 
void limitDistance (float _minDist, float _maxDist)
 Keep distance in limits. More...
 

Private Types

typedef std::array< GLfloat, 4 > param_type
 

Private Member Functions

param_type colorParam (QColor) const
 
param_type eye4 () const
 

Private Attributes

QColor ambient_
 
QColor diffuse_
 
QColor specular_
 
qreal intensity_
 

Friends

bool operator== (Light const &, Light const &)
 Test for equality. ScreenSetup is ignored. More...
 

Detailed Description

A light with position and phong shader attributes.

Member Typedef Documentation

typedef std::array<GLfloat, 4> omni::visual::Light::param_type
private

Constructor & Destructor Documentation

omni::visual::Light::Light ( const Tracker _tracker = Tracker(),
qreal const &  _intensity = 1.0 
)
46  :
47  Tracker(_tracker),
48  ambient_("#111111"),
49  diffuse_("#FFFFFF"),
50  specular_("#FFFFFF"),
51  intensity_(_intensity)
52  {}
QColor ambient_
Definition: Light.h:86
QColor diffuse_
Definition: Light.h:86
Tracker()
Definition: Tracker.cpp:27
QColor specular_
Definition: Light.h:86
qreal intensity_
Definition: Light.h:87
omni::visual::Light::Light ( const Tracker _tracker,
const QColor &  _ambient,
const QColor &  _diffuse,
const QColor &  _specular,
const qreal &  _intensity = 1.0 
)
59  :
60  Tracker(_tracker),
61  ambient_(_ambient),
62  diffuse_(_diffuse),
63  specular_(_specular),
64  intensity_(_intensity)
65  {}
QColor ambient_
Definition: Light.h:86
QColor diffuse_
Definition: Light.h:86
Tracker()
Definition: Tracker.cpp:27
QColor specular_
Definition: Light.h:86
qreal intensity_
Definition: Light.h:87

Member Function Documentation

QColor omni::visual::Light::ambient ( ) const

Return color for ambient.

83  {
84  return ambient_;
85  }
QColor ambient_
Definition: Light.h:86
Light::param_type omni::visual::Light::colorParam ( QColor  _color) const
private
123  {
124  return param_type({
125  GLfloat(_color.redF() * intensity_),
126  GLfloat(_color.greenF() * intensity_),
127  GLfloat(_color.blueF() * intensity_),
128  GLfloat(1.0)
129  });
130  }
std::array< GLfloat, 4 > param_type
Definition: Light.h:82
qreal intensity_
Definition: Light.h:87
QColor omni::visual::Light::diffuse ( ) const

Return diffuse color.

93  {
94  return diffuse_;
95  }
QColor diffuse_
Definition: Light.h:86
Light::param_type omni::visual::Light::eye4 ( ) const
private
133  {
134  auto e = eye();
135 
136  return param_type({ e.x(), e.y(), e.z(), GLfloat(1.0) });
137  }
QVector3D eye() const
get tracker position
Definition: Tracker.cpp:44
std::array< GLfloat, 4 > param_type
Definition: Light.h:82
void omni::visual::Light::fromStream ( QDataStream &  _is)
virtual

Deserialize from stream.

Reimplemented from omni::visual::Tracker.

140  {
141  Tracker::fromStream(_is);
142  _is >> ambient_ >> diffuse_ >> specular_ >> intensity_;
143  }
QColor ambient_
Definition: Light.h:86
QColor diffuse_
Definition: Light.h:86
virtual void fromStream(QDataStream &)
Deserialize from stream.
Definition: Tracker.cpp:101
QColor specular_
Definition: Light.h:86
qreal intensity_
Definition: Light.h:87
qreal omni::visual::Light::intensity ( ) const

Return intensity value.

113  {
114  return intensity_;
115  }
qreal intensity_
Definition: Light.h:87
void omni::visual::Light::setAmbient ( QColor  _ambient)

Set new ambient color.

88  {
89  ambient_ = _ambient;
90  }
QColor ambient_
Definition: Light.h:86
void omni::visual::Light::setDiffuse ( QColor  _diffuse)

Set new diffuse color.

98  {
99  diffuse_ = _diffuse;
100  }
QColor diffuse_
Definition: Light.h:86
void omni::visual::Light::setIntensity ( qreal  _intensity)

Set new intensity value.

118  {
119  intensity_ = _intensity;
120  }
qreal intensity_
Definition: Light.h:87
void omni::visual::Light::setSpecular ( QColor  _specular)

Set new specular color.

108  {
109  specular_ = _specular;
110  }
QColor specular_
Definition: Light.h:86
void omni::visual::Light::setup ( GLuint  _index = GL_LIGHT0)

Setup light in OpenGL.

68  {
69  // light and material
70  withCurrentContext([&](QOpenGLFunctions& _)
71  {
72  _.glEnable(GL_LIGHTING);
73  _.glEnable(GL_COLOR_MATERIAL);
74  glLightfv(_index, GL_DIFFUSE, colorParam(diffuse()).data());
75  glLightfv(_index, GL_POSITION, eye4().data());
76  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, colorParam(ambient()).data());
77  glShadeModel(GL_SMOOTH);
78  _.glEnable(_index);
79  });
80  }
void withCurrentContext(ContextFunctor f)
Do OpenGL operations with current context, if it exists.
Definition: ContextSwitch.cpp:45
param_type eye4() const
Definition: Light.cpp:132
QColor diffuse() const
Return diffuse color.
Definition: Light.cpp:92
QColor ambient() const
Return color for ambient.
Definition: Light.cpp:82
param_type colorParam(QColor) const
Definition: Light.cpp:122
QColor omni::visual::Light::specular ( ) const

Return specular color.

103  {
104  return specular_;
105  }
QColor specular_
Definition: Light.h:86
void omni::visual::Light::toStream ( QDataStream &  _os) const
virtual

Serialize to stream.

Reimplemented from omni::visual::Tracker.

146  {
147  Tracker::toStream(_os);
148  _os << ambient_ << diffuse_ << specular_ << intensity_;
149  }
QColor ambient_
Definition: Light.h:86
QColor diffuse_
Definition: Light.h:86
virtual void toStream(QDataStream &) const
Serialize to stream.
Definition: Tracker.cpp:110
QColor specular_
Definition: Light.h:86
qreal intensity_
Definition: Light.h:87

Friends And Related Function Documentation

bool operator== ( Light const &  _lhs,
Light const &  _rhs 
)
friend

Test for equality. ScreenSetup is ignored.

152  {
153  return
158  }
QColor ambient_
Definition: Light.h:86
QColor diffuse_
Definition: Light.h:86
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
QColor specular_
Definition: Light.h:86
qreal intensity_
Definition: Light.h:87

Field Documentation

QColor omni::visual::Light::ambient_
private
QColor omni::visual::Light::diffuse_
private
qreal omni::visual::Light::intensity_
private
QColor omni::visual::Light::specular_
private

The documentation for this struct was generated from the following files: