Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes
omni::mapping::Interface Class Referenceabstract

Mapping interface with one or several inputs and shader Holds inputs and shader. More...

#include <Interface.h>

Inheritance diagram for omni::mapping::Interface:
Inheritance graph
[legend]
Collaboration diagram for omni::mapping::Interface:
Collaboration graph
[legend]

Public Member Functions

 Interface ()
 
virtual ~Interface ()
 
void initialize ()
 Initialized OpenGL shader. More...
 
virtual void bind ()
 Bind shaders and set uniforms. More...
 
void bind (input::Interface const *, OutputMode, bool _grayscale)
 
void bind (input::Interface const *, float _transparency)
 
void release ()
 Release shader. More...
 
bool flipHorizontal () const
 Flip horizontally. More...
 
void setFlipHorizontal (bool)
 Flip horizontally. More...
 
bool flipVertical () const
 Flip vertically. More...
 
void setFlipVertical (bool)
 Flip vertically. More...
 
virtual bool isUVW () const
 Flag which tells if this mapping uses UVW texture coordinates (true by default) . More...
 
virtual QWidget * widget ()=0
 Return pointer to parameter widget. More...
 
void draw () const
 Abstract method for visualing. More...
 
virtual void draw (float _opacity) const
 Draw mapping with opacity. More...
 
virtual void update ()
 Update mapping visualizer. More...
 
AffineTransform const & transform () const
 Return const ref to affine transform. More...
 
AffineTransform & transform ()
 Return ref to affine transform. More...
 
void setTransform (AffineTransform const &_transform)
 Set new affine transform. More...
 
virtual QMatrix4x4 matrix () const
 Return matrix of transform. More...
 
bool isBoundToCanvas () const
 If true, mapping transform is attached to canvas transform Is true by default. More...
 
void setBoundToCanvas (bool)
 Set whether mapping transform is attached to canvas transform. More...
 
virtual void toPropertyMap (PropertyMap &) const
 Write mapping to stream. More...
 
virtual void fromPropertyMap (PropertyMap const &)
 Read mapping from stream. More...
 
visual::Scene const * scene () const
 The scene this canvas belongs to. More...
 
void setScene (visual::Scene const *)
 Set the scene this canvas belongs to. Is set automatically when a canvas is added to a session. More...
 
- Public Member Functions inherited from omni::TypeIdInterface
virtual ~TypeIdInterface ()
 
virtual Id getTypeId () const =0
 Returns type id of object. More...
 
virtual void registerInFactory () const =0
 Register the inherited class in factory. More...
 

Static Public Member Functions

static IdSet getUVWMappings ()
 Static function to retrieve all registered mappings that support UVW. More...
 
static IdSet getPlanarMappings ()
 Static function to retrieve all registered mappings that dont. More...
 

Protected Attributes

std::unique_ptr
< QOpenGLShaderProgram > 
shader_
 

Private Member Functions

virtual QString vertexShaderSourceCode () const
 Returns vertex shader source code Is taken from file :/shaders/mapping/common.vert by default) More...
 
virtual QString fragmentShaderSourceCode () const
 Returns fragment shader source code Is taken from file :/shaders/mapping/$MAPPING_TYPEID by default) More...
 

Private Attributes

AffineTransform transform_
 
bool boundToCanvas_ = true
 
bool flipHorizontal_ = false
 
bool flipVertical_ = false
 
visual::Scene const * scene_ = nullptr
 

Additional Inherited Members

- Static Protected Member Functions inherited from omni::visual::Interface
static void vertex3 (QVector3D const &)
 glVertex3f from QVector3D More...
 
static void visualLine (QVector3D const &_from, QVector3D const &_to)
 Draws a line. More...
 
static void color (QColor _color, float _alpha=1.0)
 glColor4f from QColor More...
 

Detailed Description

Mapping interface with one or several inputs and shader Holds inputs and shader.

Constructor & Destructor Documentation

omni::mapping::Interface::Interface ( )
31  {
32  // Disable scaling and translation by default
33  transform_.setTranslationEnabled(false);
34  transform_.setScaleEnabled(false);
35  }
AffineTransform transform_
Definition: Interface.h:165
omni::mapping::Interface::~Interface ( )
virtual

Reimplemented from omni::visual::Interface.

38  {}

Member Function Documentation

void omni::mapping::Interface::bind ( )
virtual

Bind shaders and set uniforms.

51  {
52  if (!shader_) initialize();
53 
54  if (shader_)
55  {
56  shader_->bind();
57  shader_->setUniformValue("flip_horizontal", flipHorizontal_);
58  shader_->setUniformValue("flip_vertical", flipVertical_);
59 
60  if (isUVW()) {
61  float _size = scene_ ? scene_->size() : 1.0;
62  shader_->setUniformValue("bound_to_canvas", boundToCanvas_);
63  shader_->setUniformValue("matrix", matrix());
64  shader_->setUniformValue("offset", _size*matrix().column(3).toVector3D());
65  }
66  }
67  }
void initialize()
Initialized OpenGL shader.
Definition: Interface.cpp:40
visual::Scene const * scene_
Definition: Interface.h:170
bool flipVertical_
Definition: Interface.h:168
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: Interface.h:151
bool boundToCanvas_
Definition: Interface.h:166
bool flipHorizontal_
Definition: Interface.h:167
virtual QMatrix4x4 matrix() const
Return matrix of transform.
Definition: Interface.cpp:186
float size() const
Scene size (min, max dimensions)
Definition: Scene.cpp:50
virtual bool isUVW() const
Flag which tells if this mapping uses UVW texture coordinates (true by default) . ...
Definition: Interface.h:90
void omni::mapping::Interface::bind ( input::Interface const *  _input,
OutputMode  _outputMode,
bool  _grayscale 
)
78  {
79  bind();
80  if (shader_)
81  {
82  shader_->setUniformValue("output_mode",
84  _outputMode));
85 
86  shader_->setUniformValue("texture", 0);
87  shader_->setUniformValue("texture_size",QVector2D(_input->width(),_input->height()));
88  shader_->setUniformValue("gray_output", _grayscale);
89  shader_->setUniformValue("transparency",GLfloat(1.0));
90  }
91  }
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: Interface.h:151
auto enumToInt(ENUM const &_v) -> typename std::underlying_type< ENUM >::type
Converts an enum class to integer.
Definition: util.h:105
virtual void bind()
Bind shaders and set uniforms.
Definition: Interface.cpp:51
void omni::mapping::Interface::bind ( input::Interface const *  _input,
float  _transparency 
)
93  {
94  bind();
95  if (shader_)
96  {
97  shader_->setUniformValue("output_mode",
99  shader_->setUniformValue("texture", 0);
100  shader_->setUniformValue("texture_size",QVector2D(_input->width(),_input->height()));
101  shader_->setUniformValue("gray_output", false);
102  shader_->setUniformValue("transparency",_transparency);
103  }
104  }
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: Interface.h:151
auto enumToInt(ENUM const &_v) -> typename std::underlying_type< ENUM >::type
Converts an enum class to integer.
Definition: util.h:105
virtual void bind()
Bind shaders and set uniforms.
Definition: Interface.cpp:51
void omni::mapping::Interface::draw ( ) const
inlinevirtual

Abstract method for visualing.

Implements omni::visual::Interface.

106  {
107  draw(1.0);
108  }
void draw() const
Abstract method for visualing.
Definition: Interface.h:106
virtual void omni::mapping::Interface::draw ( float  _opacity) const
inlinevirtual

Draw mapping with opacity.

111 {}
bool omni::mapping::Interface::flipHorizontal ( ) const

Flip horizontally.

112  {
113  return flipHorizontal_;
114  }
bool flipHorizontal_
Definition: Interface.h:167
bool omni::mapping::Interface::flipVertical ( ) const

Flip vertically.

122  {
123  return flipVertical_;
124  }
bool flipVertical_
Definition: Interface.h:168
QString omni::mapping::Interface::fragmentShaderSourceCode ( ) const
privatevirtual

Returns fragment shader source code Is taken from file :/shaders/mapping/$MAPPING_TYPEID by default)

196  {
197  return
198  visual::ShaderCompiler::compile(":/shaders/mapping/Template.frag") +
200  ":/shaders/mapping/") + getTypeId().str() +
201  ".frag");
202  }
virtual Id getTypeId() const =0
Returns type id of object.
static QString compile(QString const &_sourceFile)
Definition: Shader.cpp:75
void omni::mapping::Interface::fromPropertyMap ( PropertyMap const &  _map)
virtual

Read mapping from stream.

213  {
214  _map.get("transform",transform_)
215  .get("boundToCanvas",boundToCanvas_)
216  .get("flipHorizontal",flipHorizontal_)
217  .get("flipVertical",flipVertical_);
218  }
bool flipVertical_
Definition: Interface.h:168
bool boundToCanvas_
Definition: Interface.h:166
bool flipHorizontal_
Definition: Interface.h:167
AffineTransform transform_
Definition: Interface.h:165
IdSet omni::mapping::Interface::getPlanarMappings ( )
static

Static function to retrieve all registered mappings that dont.

146  {
147  IdSet _ids;
148 
149  for (auto& _mappingId : Factory::classes())
150  {
151  auto& _id = _mappingId.first;
152  std::unique_ptr<Mapping> _mapping(Factory::create(_id));
153 
154  if (!_mapping->isUVW()) _ids.insert(_id);
155  }
156  return _ids;
157  }
std::set< Id > IdSet
Id set typedef.
Definition: Id.h:83
static interface_type * create(const key_type &_key, const ARGS &..._args)
Instantiates an object of the class by id and constructor arguments.
Definition: factory.hpp:101
static class_map_type const & classes()
Gives readonly access to registered classes.
Definition: factory.hpp:108
IdSet omni::mapping::Interface::getUVWMappings ( )
static

Static function to retrieve all registered mappings that support UVW.

132  {
133  IdSet _ids;
134 
135  for (auto& _mappingId : Factory::classes())
136  {
137  auto& _id = _mappingId.first;
138  std::unique_ptr<Mapping> _mapping(Factory::create(_id));
139 
140  if (_mapping->isUVW()) _ids.insert(_id);
141  }
142  return _ids;
143  }
std::set< Id > IdSet
Id set typedef.
Definition: Id.h:83
static interface_type * create(const key_type &_key, const ARGS &..._args)
Instantiates an object of the class by id and constructor arguments.
Definition: factory.hpp:101
static class_map_type const & classes()
Gives readonly access to registered classes.
Definition: factory.hpp:108
void omni::mapping::Interface::initialize ( )

Initialized OpenGL shader.

Make shader

41  {
42  /// Make shader
43  shader_.reset(new QOpenGLShaderProgram());
44  shader_->addShaderFromSourceCode(QOpenGLShader::Vertex,
46  shader_->addShaderFromSourceCode(QOpenGLShader::Fragment,
48  shader_->link();
49  }
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: Interface.h:151
virtual QString fragmentShaderSourceCode() const
Returns fragment shader source code Is taken from file :/shaders/mapping/$MAPPING_TYPEID by default)...
Definition: Interface.cpp:195
virtual QString vertexShaderSourceCode() const
Returns vertex shader source code Is taken from file :/shaders/mapping/common.vert by default) ...
Definition: Interface.cpp:190
bool omni::mapping::Interface::isBoundToCanvas ( ) const

If true, mapping transform is attached to canvas transform Is true by default.

177  {
178  return boundToCanvas_;
179  }
bool boundToCanvas_
Definition: Interface.h:166
virtual bool omni::mapping::Interface::isUVW ( ) const
inlinevirtual

Flag which tells if this mapping uses UVW texture coordinates (true by default) .

91  {
92  return true;
93  }
QMatrix4x4 omni::mapping::Interface::matrix ( ) const
virtual

Return matrix of transform.

186  {
187  return transform_.matrix();
188  }
AffineTransform transform_
Definition: Interface.h:165
void omni::mapping::Interface::release ( )

Release shader.

107  {
108  if (shader_) shader_->release();
109  }
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: Interface.h:151
visual::Scene const * omni::mapping::Interface::scene ( ) const

The scene this canvas belongs to.

69  {
70  return scene_;
71  }
visual::Scene const * scene_
Definition: Interface.h:170
void omni::mapping::Interface::setBoundToCanvas ( bool  _boundToCanvas)

Set whether mapping transform is attached to canvas transform.

182  {
183  boundToCanvas_ = _boundToCanvas;
184  }
bool boundToCanvas_
Definition: Interface.h:166
void omni::mapping::Interface::setFlipHorizontal ( bool  _flipHorizontal)

Flip horizontally.

117  {
118  flipHorizontal_ = _flipHorizontal;
119  }
bool flipHorizontal_
Definition: Interface.h:167
void omni::mapping::Interface::setFlipVertical ( bool  _flipVertical)

Flip vertically.

127  {
128  flipVertical_ = _flipVertical;
129  }
bool flipVertical_
Definition: Interface.h:168
void omni::mapping::Interface::setScene ( visual::Scene const *  )

Set the scene this canvas belongs to. Is set automatically when a canvas is added to a session.

void omni::mapping::Interface::setTransform ( AffineTransform const &  _transform)

Set new affine transform.

170  {
171  transform_ = _transform;
172  }
AffineTransform transform_
Definition: Interface.h:165
void omni::mapping::Interface::toPropertyMap ( PropertyMap &  _map) const
virtual

Write mapping to stream.

205  {
206  _map("transform",transform_)
207  ("boundToCanvas",boundToCanvas_)
208  ("flipHorizontal",flipHorizontal_)
209  ("flipVertical",flipVertical_);
210  }
bool flipVertical_
Definition: Interface.h:168
bool boundToCanvas_
Definition: Interface.h:166
bool flipHorizontal_
Definition: Interface.h:167
AffineTransform transform_
Definition: Interface.h:165
AffineTransform const & omni::mapping::Interface::transform ( ) const

Return const ref to affine transform.

160  {
161  return transform_;
162  }
AffineTransform transform_
Definition: Interface.h:165
AffineTransform & omni::mapping::Interface::transform ( )

Return ref to affine transform.

165  {
166  return transform_;
167  }
AffineTransform transform_
Definition: Interface.h:165
virtual void omni::mapping::Interface::update ( )
inlinevirtual

Update mapping visualizer.

Reimplemented from omni::visual::Interface.

114 {}
QString omni::mapping::Interface::vertexShaderSourceCode ( ) const
privatevirtual

Returns vertex shader source code Is taken from file :/shaders/mapping/common.vert by default)

191  {
192  return visual::ShaderCompiler::compile(":/shaders/mapping/common.vert");
193  }
static QString compile(QString const &_sourceFile)
Definition: Shader.cpp:75
virtual QWidget* omni::mapping::Interface::widget ( )
pure virtual

Return pointer to parameter widget.

Field Documentation

bool omni::mapping::Interface::boundToCanvas_ = true
private
bool omni::mapping::Interface::flipHorizontal_ = false
private
bool omni::mapping::Interface::flipVertical_ = false
private
visual::Scene const* omni::mapping::Interface::scene_ = nullptr
private
std::unique_ptr<QOpenGLShaderProgram> omni::mapping::Interface::shader_
protected
AffineTransform omni::mapping::Interface::transform_
private

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