Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Slots | Signals | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
omni::ui::InputPreview Class Reference

GLView for visualizing an input. More...

#include <InputPreview.h>

Inheritance diagram for omni::ui::InputPreview:
Inheritance graph
[legend]
Collaboration diagram for omni::ui::InputPreview:
Collaboration graph
[legend]

Public Slots

void setBorder (float)
 Set relative border distance. More...
 
- Public Slots inherited from omni::ui::GLView
void triggerUpdate ()
 
void paintGLDone ()
 

Signals

void inputChanged ()
 

Public Member Functions

 InputPreview (QWidget *=nullptr)
 
 InputPreview (input::Interface *_input, QWidget *=nullptr)
 
 ~InputPreview ()
 
float border () const
 Return relative border value. More...
 
input::Interfaceinput ()
 Return pointer to input. More...
 
input::Interface const * input () const
 Return pointer to input (const version) More...
 
void setInput (input::Interface *)
 Set pointer to input. More...
 
QPointF screenPos (QPointF const &_pos) const
 Transforms mouse position on widget to normalized position on input Position in range (0.0,0.0) and (1.0,1.0) More...
 
- Public Member Functions inherited from omni::ui::GLView
 GLView (QWidget *_parent=nullptr)
 
virtual ~GLView ()
 
float aspect () const
 Return aspect ratio of widget. More...
 
QPointF mousePosition () const
 Return mouse position. More...
 
bool initialized () const
 Return boolean value if widget has been initialized. More...
 
float updateFrequency () const
 Return update frequency. More...
 
void setUpdateFrequency (float _updateFrequency)
 Return update frequency. More...
 

Protected Member Functions

void paintGL ()
 Paint GL routine. More...
 
void showEvent (QShowEvent *)
 
- Protected Member Functions inherited from omni::ui::GLView
void initializeGL ()
 Initialize OpenGL contents. More...
 
virtual void resizeGL (int _w, int _h)
 Resize GL and viewport. More...
 
virtual void mousePressEvent (QMouseEvent *)
 Mouse press event sets mouse position. More...
 
void timerEvent (QTimerEvent *)
 
void paintGLReady ()
 

Private Member Functions

QRectF viewRect () const
 Return view rect. More...
 
bool initialize ()
 Pure virtual function to initialize GL contents. More...
 

Private Attributes

float border_ = 0.0
 Relative border. More...
 
std::unique_ptr
< QOpenGLShaderProgram > 
shader_
 
input::Interfaceinput_ = nullptr
 

Additional Inherited Members

- Protected Attributes inherited from omni::ui::GLView
bool updateTriggered_ = false
 
QPointF mousePosition_
 Mouse position stored. More...
 

Detailed Description

GLView for visualizing an input.

Constructor & Destructor Documentation

omni::ui::InputPreview::InputPreview ( QWidget *  _parent = nullptr)
31  :
32  GLView(_parent)
33  {
34  setUpdateFrequency(25.0);
35  }
void setUpdateFrequency(float _updateFrequency)
Return update frequency.
Definition: GLView.cpp:62
GLView(QWidget *_parent=nullptr)
Definition: GLView.cpp:35
omni::ui::InputPreview::InputPreview ( input::Interface _input,
QWidget *  _parent = nullptr 
)
37  :
38  GLView(_parent),
39  input_(_input) {
40  input_->update();
41  setUpdateFrequency(25.0);
42  }
input::Interface * input_
Definition: InputPreview.h:77
void setUpdateFrequency(float _updateFrequency)
Return update frequency.
Definition: GLView.cpp:62
GLView(QWidget *_parent=nullptr)
Definition: GLView.cpp:35
virtual void update()
Update interface.
Definition: Interface.h:80
omni::ui::InputPreview::~InputPreview ( )
45  {}

Member Function Documentation

float omni::ui::InputPreview::border ( ) const

Return relative border value.

48  {
49  return border_;
50  }
float border_
Relative border.
Definition: InputPreview.h:74
bool omni::ui::InputPreview::initialize ( )
privatevirtual

Pure virtual function to initialize GL contents.

Implements omni::ui::GLView.

82  {
83  makeCurrent();
84  return context() != nullptr;
85  }
input::Interface * omni::ui::InputPreview::input ( )

Return pointer to input.

59  {
60  return input_;
61  }
input::Interface * input_
Definition: InputPreview.h:77
input::Interface const * omni::ui::InputPreview::input ( ) const

Return pointer to input (const version)

72  {
73  return input_;
74  }
input::Interface * input_
Definition: InputPreview.h:77
void omni::ui::InputPreview::inputChanged ( )
signal
void omni::ui::InputPreview::paintGL ( )
protectedvirtual

Paint GL routine.

Setup orthogonal projection

Reimplemented from omni::ui::GLView.

103  {
104  if (!input() || !isVisible()) return;
105 
106  makeCurrent();
107 
108  if (!shader_) {
109  primaryContextSwitch([&](QOpenGLFunctions& _) {
110  visual::initShader(shader_,"textureRect");
111  });
112  }
113 
114  withCurrentContext([this](QOpenGLFunctions& _)
115  {
116  _.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
117  auto _rect = viewRect();
118 
119  visual::viewport(this);
120 
121  /// Setup orthogonal projection
122  glMatrixMode(GL_PROJECTION);
123  {
124  glLoadIdentity();
125  QMatrix4x4 _m;
126  _m.ortho(_rect.left(), _rect.right(), _rect.top(), _rect.bottom(), -1.0,
127  1.0);
128  glMultMatrixf(_m.constData());
129  }
130 
131  glMatrixMode(GL_MODELVIEW);
132  glLoadIdentity();
133 
134  shader_->bind();
135  _.glBindTexture(GL_TEXTURE_RECTANGLE, input_->textureId());
137  _.glBindTexture(GL_TEXTURE_RECTANGLE, 0);
138  shader_->release();
139  });
140 
141  paintGLDone();
142  }
virtual GLuint textureId() const =0
An input must return an OpenGL texture ID.
void initShader(QOpenGLShaderProgram &_s, const char *_filename)
Initialize shader: load from file and compile.
Definition: Shader.cpp:27
input::Interface * input_
Definition: InputPreview.h:77
void withCurrentContext(ContextFunctor f)
Do OpenGL operations with current context, if it exists.
Definition: ContextSwitch.cpp:45
QRectF viewRect() const
Return view rect.
Definition: InputPreview.cpp:87
static void draw(float _left=-0.5, float _right=0.5, float _top=0.5, float _bottom=-0.5)
Draw rectangle from border coordinates.
Definition: Rectangle.cpp:28
std::unique_ptr< QOpenGLShaderProgram > shader_
Definition: InputPreview.h:76
void paintGLDone()
Definition: GLView.h:61
void primaryContextSwitch(ContextFunctor f)
Switch to primary context to create OpenGL objects like textures etc.
Definition: ContextSwitch.cpp:40
virtual QSize size() const =0
An input must return width and height information.
void viewport(WIDGET *_widget)
Set viewport for widget.
Definition: util.h:131
input::Interface * input()
Return pointer to input.
Definition: InputPreview.cpp:58
QPointF omni::ui::InputPreview::screenPos ( QPointF const &  _pos) const

Transforms mouse position on widget to normalized position on input Position in range (0.0,0.0) and (1.0,1.0)

96  {
97  QRectF && _rect = viewRect();
98  QPointF _p = QPointF(_pos.x() / width(), _pos.y() / height());
99  return QPointF(_p.x() * _rect.width(), -_p.y() * _rect.height());
100  }
QRectF viewRect() const
Return view rect.
Definition: InputPreview.cpp:87
void omni::ui::InputPreview::setBorder ( float  _border)
slot

Set relative border distance.

53  {
54  border_ = _border;
55  update();
56  }
float border_
Relative border.
Definition: InputPreview.h:74
void omni::ui::InputPreview::setInput ( input::Interface _input)

Set pointer to input.

76  {
77  input_ = _input;
78  makeCurrent();
79  }
input::Interface * input_
Definition: InputPreview.h:77
void omni::ui::InputPreview::showEvent ( QShowEvent *  )
protected
63  {
64  if (!input()) return;
65 
66  input_->update();
67  update();
68  makeCurrent();
69  }
input::Interface * input_
Definition: InputPreview.h:77
input::Interface * input()
Return pointer to input.
Definition: InputPreview.cpp:58
virtual void update()
Update interface.
Definition: Interface.h:80
QRectF omni::ui::InputPreview::viewRect ( ) const
private

Return view rect.

88  {
89  if (!input()) return QRectF(0.0, 0.0, 1.0, 1.0);
90 
91  return visual::util::viewRect(input()->width(), input()->height(),
92  width(), height(), border_);
93  }
float border_
Relative border.
Definition: InputPreview.h:74
QRectF viewRect(int _imageWidth, int _imageHeight, int _canvasWidth, int _canvasHeight, float _border)
Calculate view rectangle on 2D OpenGL surface.
Definition: util.cpp:60
input::Interface * input()
Return pointer to input.
Definition: InputPreview.cpp:58

Field Documentation

float omni::ui::InputPreview::border_ = 0.0
private

Relative border.

input::Interface* omni::ui::InputPreview::input_ = nullptr
private
std::unique_ptr<QOpenGLShaderProgram> omni::ui::InputPreview::shader_
private

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