qt_ogre_render_window.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 #ifndef QT_OGRE_RENDER_WINDOW_OGRE_RENDER_WINDOW_H_
30 #define QT_OGRE_RENDER_WINDOW_OGRE_RENDER_WINDOW_H_
31 
32 #include <boost/function.hpp>
33 
34 #include "render_widget.h"
35 
36 #include <OgreColourValue.h>
37 #include <OgreRenderTargetListener.h>
38 
39 namespace Ogre
40 {
41 class Root;
42 class RenderWindow;
43 class Viewport;
44 class Camera;
45 }
46 
47 namespace rviz
48 {
49 
55 class QtOgreRenderWindow : public RenderWidget, public Ogre::RenderTargetListener {
56 public:
60  QtOgreRenderWindow( QWidget* parent = 0 );
61 
63  virtual ~QtOgreRenderWindow();
64 
69  virtual void setPreRenderCallback( boost::function<void ()> func );
74  virtual void setPostRenderCallback( boost::function<void ()> func );
75 
80  virtual QSize sizeHint () const { return QSize( 320, 240 ); }
81 
88  Ogre::Viewport* getViewport() const;
89 
92  void setCamera( Ogre::Camera* camera );
93 
94  Ogre::Camera* getCamera() const { return camera_; }
95 
100  void setOrthoScale( float scale );
101 
106  bool enableStereo(bool enable);
107 
109  void setupStereo();
110 
111  void setAutoRender(bool auto_render) { auto_render_ = auto_render; }
112 
115  void setOverlaysEnabled( bool overlays_enabled );
116  void setBackgroundColor( Ogre::ColourValue color );
117 
118 protected:
119  virtual void paintEvent( QPaintEvent* e );
120  virtual void resizeEvent( QResizeEvent* event );
121 
122  // When stereo is enabled, these are called before/after rendering each
123  // viewport.
124  virtual void preViewportUpdate(const Ogre::RenderTargetViewportEvent& evt);
125  virtual void postViewportUpdate(const Ogre::RenderTargetViewportEvent& evt);
126 
130  void setCameraAspectRatio();
131 
136  void prepareStereoViewport(Ogre::Viewport*);
137 
138 
139  Ogre::Viewport* viewport_;
140 
141  Ogre::Root* ogre_root_;
142 
143  boost::function<void ()> pre_render_callback_;
144  boost::function<void ()> post_render_callback_;
145 
148 
149  Ogre::Camera* camera_;
151  Ogre::ColourValue background_color_;
152 
153  // stereo rendering
154  bool stereo_enabled_; // true if we were asked to render stereo
155  bool rendering_stereo_; // true if we are actually rendering stereo
156  Ogre::Camera* left_camera_;
157  Ogre::Camera* right_camera_;
158  Ogre::Viewport* right_viewport_;
159 };
160 
161 } // namespace rviz
162 
163 #endif // QT_OGRE_RENDER_WINDOW_OGRE_RENDER_WINDOW_H_
boost::function< void()> pre_render_callback_
Functor which is called before each render.
void setAutoRender(bool auto_render)
virtual QSize sizeHint() const
boost::function< void()> post_render_callback_
Functor which is called after each render.
Ogre::ColourValue background_color_
Ogre::Camera * getCamera() const


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Wed Aug 28 2019 04:01:51