Equalizer  1.10.1
Parallel Rendering Framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
qt/window.h
1 
2 /* Copyright (c) 2014-2015, Daniel Nachbaur <danielnachbaur@gmail.com>
3  * Stefan.Eilemann@epfl.ch
4  * Juan Hernando <jhernando@fi.upm.es>
5  *
6  * This library is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Lesser General Public License version 2.1 as published
8  * by the Free Software Foundation.
9  *
10  * This library is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13  * details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 #ifndef EQ_QT_WINDOW_H
21 #define EQ_QT_WINDOW_H
22 
23 #include <eq/qt/types.h>
24 #include <eq/glWindow.h> // base class
25 #include <QObject> // base class
26 
27 namespace eq
28 {
29 namespace qt
30 {
31 namespace detail { class Window; }
32 
34 class WindowIF : public GLWindow
35 {
36 public:
37  WindowIF( NotifierInterface& parent,
38  const WindowSettings& settings ) : GLWindow( parent, settings ) {}
39  virtual ~WindowIF() {}
40 
41 # pragma clang diagnostic push
42 # pragma clang diagnostic ignored "-Woverloaded-virtual"
43 
44  virtual bool processEvent( const WindowEvent& event ) = 0;
45 # pragma clang diagnostic pop
46 };
47 
49 class Window : public QObject, public WindowIF
50 {
51  Q_OBJECT
52 
53 public:
69  EQ_API Window( NotifierInterface& parent, const WindowSettings& settings,
70  detail::Window* impl );
71 
73  EQ_API ~Window() final;
74 
86  EQ_API bool configInit() override;
87 
89  EQ_API void configExit() override;
90 
92 
99  EQ_API QOpenGLContext* getContext() const;
100 
104  EQ_API void makeCurrent( const bool cache = true ) const override;
105 
107  EQ_API void doneCurrent() const override;
108 
110  EQ_API void swapBuffers() override;
111 
113  EQ_API void joinNVSwapBarrier( const uint32_t group,
114  const uint32_t barrier ) override;
115 
117  EQ_API void leaveNVSwapBarrier();
118 
120  EQ_API bool processEvent( const WindowEvent& event ) override;
122 
134  EQ_API QObject* getEventProcessor();
135 
137  void moveContextToThread( QThread* thread );
138 
139 signals:
140  void destroyImpl( detail::Window* );
141 
142 private:
143  detail::Window* const _impl;
144  static detail::Window* createImpl( const WindowSettings&, QThread* );
145  friend class WindowFactory;
146 };
147 }
148 }
149 #endif // EQ_QT_WINDOW_H
EQ_API ~Window() final
Destruct this Qt window.
EQ_API void doneCurrent() const override
EQ_API void swapBuffers() override
EQ_API bool processEvent(const WindowEvent &event) override
EQ_API void leaveNVSwapBarrier()
Implementation untested for Qt.
EQ_API void makeCurrent(const bool cache=true) const override
EQ_API void configExit() override
virtual bool processEvent(const WindowEvent &event)=0
Process the given event.
EQ_API bool configInit() override
Initialize this window for the Qt window system.
A set of settings to setup an eq::SystemWindow.
The interface defining the minimum functionality for a Qt window.
Definition: qt/window.h:34
Equalizer default implementation of a Qt window.
Definition: qt/window.h:49
EQ_API void joinNVSwapBarrier(const uint32_t group, const uint32_t barrier) override
Implementation untested for Qt.
EQ_API GLWindow(NotifierInterface &parent, const WindowSettings &settings)
Construct a new OpenGL window.
A system window for OpenGL rendering.
Definition: glWindow.h:36
EQ_API QOpenGLContext * getContext() const
The context won't be ready to be used until configInit is called.
A base class for notifying errors and events.
void moveContextToThread(QThread *thread)
Move OpenGLContext object to given thread.
A window-system event for a qt::WindowIF.
EQ_API QObject * getEventProcessor()
Use this object to make Qt events reach eq::Config when using this window for offscreen rendering wit...
EQ_API Window(NotifierInterface &parent, const WindowSettings &settings, detail::Window *impl)
Create a new window using Qt.