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
omni::ui::SceneGLView Class Reference

An OpenGL view for visualizing the scene of a session. More...

#include <SceneGLView.h>

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

Public Slots

void changeZoom (int _value)
 
- Public Slots inherited from omni::ui::GLView
void triggerUpdate ()
 
void paintGLDone ()
 

Signals

void dataModelChanged ()
 

Public Member Functions

 SceneGLView (QWidget *_parent=nullptr)
 
 ~SceneGLView ()
 
- 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...
 
- Public Member Functions inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
 DataModel ()
 
void setDataModel (pointer_type _dataModel)
 Set new data model. More...
 
pointer_type dataModel ()
 Return pointer to data model. More...
 
const pointer_type dataModel () const
 Return pointer to data model (const version) More...
 
virtual void updateFrontend ()
 Push data to frontend widgets and all child widgets. More...
 
virtual void updateDataModel ()
 Update the data model interface. More...
 

Protected Member Functions

virtual void paintGL ()
 Paint GL routine. More...
 
virtual void wheelEvent (QWheelEvent *event)
 Change zoom on mouse wheel event. More...
 
virtual void keyPressEvent (QKeyEvent *event)
 
virtual void mouseMoveEvent (QMouseEvent *event)
 
virtual void showEvent (QShowEvent *event)
 
- 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 ()
 
- Protected Member Functions inherited from omni::ui::mixin::Locked
template<typename F >
void locked (F f)
 Lock widget and execute given functor. More...
 
bool isLocked () const
 Return true if widget is locked. More...
 

Private Member Functions

virtual void dataToFrontend ()
 Pure virtual method which determines how data model is represented in frontend. More...
 
virtual bool frontendToData ()
 Return true if data has changed by front end. More...
 
bool initialize ()
 Pure virtual function to initialize GL contents. More...
 

Additional Inherited Members

- Public Types inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
typedef DATAMODEL data_model_type
 Data type. More...
 
typedef DataModel
< data_model_type, SHARED > 
type
 This type. More...
 
typedef detail::PointerType
< data_model_type, SHARED > 
pointer_type_handler
 Pointer type handler. More...
 
typedef pointer_type_handler::type pointer_type
 Derived pointer type. More...
 
- Protected Attributes inherited from omni::ui::GLView
bool updateTriggered_ = false
 
QPointF mousePosition_
 Mouse position stored. More...
 

Detailed Description

An OpenGL view for visualizing the scene of a session.

Constructor & Destructor Documentation

omni::ui::SceneGLView::SceneGLView ( QWidget *  _parent = nullptr)
28  :
29  GLView(_parent)
30  {}
GLView(QWidget *_parent=nullptr)
Definition: GLView.cpp:35
omni::ui::SceneGLView::~SceneGLView ( )
33  {}

Member Function Documentation

void omni::ui::SceneGLView::changeZoom ( int  _value)
slot
147  {
148  if (!dataModel()) return;
149 
150  auto *_cam = dataModel()->scene().camera();
151 
152  if (!_cam) return;
153 
154  _cam->setDistance(_value / 5.0);
155  triggerUpdate();
156  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void triggerUpdate()
Definition: GLView.cpp:46
void omni::ui::SceneGLView::dataModelChanged ( )
signal
void omni::ui::SceneGLView::dataToFrontend ( )
privatevirtual

Pure virtual method which determines how data model is represented in frontend.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

159  {
160  makeCurrent();
161  }
virtual bool omni::ui::SceneGLView::frontendToData ( )
inlineprivatevirtual

Return true if data has changed by front end.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

59  {
60  return false;
61  }
bool omni::ui::SceneGLView::initialize ( )
privatevirtual

Pure virtual function to initialize GL contents.

Implements omni::ui::GLView.

36  {
37  dataModel()->makeVisualizer();
38  dataModel()->visualizer()->update();
39 
40  if (dataModel()->canvas()) {
41  dataModel()->canvas()->update();
42  }
43 
44  dataModel()->scene().updateGrid();
45  dataModel()->scene().updateLights();
46  return true;
47  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void omni::ui::SceneGLView::keyPressEvent ( QKeyEvent *  event)
protectedvirtual
119  {}
void omni::ui::SceneGLView::mouseMoveEvent ( QMouseEvent *  event)
protectedvirtual
122  {
123  if (!dataModel()) return;
124 
125  auto *_cam = dataModel()->scene().camera();
126 
127  if ((event->buttons() & Qt::LeftButton) && _cam)
128  {
129  if (event->modifiers() & Qt::ShiftModifier)
130  {
131  _cam->strafe((event->pos().x() - mousePosition().x()) / 20.0);
132  _cam->lift((event->pos().y() - mousePosition().y()) / 20.0);
133  }
134  else
135  {
136  if (!(event->modifiers() & Qt::ControlModifier)) _cam->track(
137  event->pos().x() - mousePosition().x(),
138  event->pos().y() - mousePosition().y(), 0);
139  }
140  }
141 
142  this->mousePosition_ = event->pos();
143  triggerUpdate();
144  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
QPointF mousePosition() const
Return mouse position.
Definition: GLView.cpp:85
QPointF mousePosition_
Mouse position stored.
Definition: GLView.h:86
void triggerUpdate()
Definition: GLView.cpp:46
void omni::ui::SceneGLView::paintGL ( )
protectedvirtual

Paint GL routine.

Draw auxiliary elements of canvas, like bounding boxes etc

Reimplemented from omni::ui::GLView.

63  {
64  if (!dataModel()) return;
65 
66  auto *_vizSession = dataModel()->visualizer();
67  if (!_vizSession) return;
68 
69  auto& _scene = dataModel()->scene();
70 
71  withCurrentContext([&](QOpenGLFunctions& _) {
72  _.glClear(
73  GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
74  visual::viewport(this);
75 
76  _vizSession->update();
77 
78  _scene.camera()->setup(aspect());
79 
80  glMatrixMode(GL_MODELVIEW);
81  glLoadIdentity();
82  _scene.updateLights();
83 
84  _.glEnable(GL_BLEND);
85  _.glEnable(GL_DEPTH_TEST);
86  _vizSession->drawCanvasFor3DView();
87 
88  _vizSession->drawProjectors(_scene.displayProjectors());
89  _vizSession->drawCanvasWithFrustumIntersections(_scene.
90  displayProjectedAreas());
91  _vizSession->drawProjectorHalos(_scene.displayProjectors());
92 
93  /// Draw auxiliary elements of canvas, like bounding boxes etc
94 
95  dataModel()->canvas()->drawAux();
96 
97  _scene.drawGrid();
98  });
99  paintGLDone();
100  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void withCurrentContext(ContextFunctor f)
Do OpenGL operations with current context, if it exists.
Definition: ContextSwitch.cpp:45
float aspect() const
Return aspect ratio of widget.
Definition: GLView.cpp:80
void paintGLDone()
Definition: GLView.h:61
void viewport(WIDGET *_widget)
Set viewport for widget.
Definition: util.h:131
void omni::ui::SceneGLView::showEvent ( QShowEvent *  event)
protectedvirtual
49  {
50  makeCurrent();
51  dataModel()->makeVisualizer();
52  dataModel()->visualizer()->update();
53 
54  if (dataModel()->canvas()) {
55  dataModel()->canvas()->update();
56  }
57 
58  dataModel()->scene().updateGrid();
59  dataModel()->scene().updateLights();
60  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void omni::ui::SceneGLView::wheelEvent ( QWheelEvent *  event)
protectedvirtual

Change zoom on mouse wheel event.

103  {
104  if (!dataModel()) return;
105 
106  auto *_cam = dataModel()->scene().camera();
107 
108  if (!_cam) return;
109 
110  float _r = event->delta() / 100.0;
111  _cam->track(0, 0, _r);
112 
113  auto _size = dataModel()->scene().size();
114  _cam->limitDistance(_size * 0.1, _size * 5.0);
115  triggerUpdate();
116  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void triggerUpdate()
Definition: GLView.cpp:46

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