OpendTect  6.6
ui3dviewerbody.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: K. Tingdahl
8  Date: Dec 2011
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uiobjbody.h"
15 
16 #include "mousecursor.h"
17 #include "refcount.h"
18 #include "visosg.h"
19 #include "uieventfilter.h"
20 
21 class QGestureEvent;
22 
23 namespace visBase
24 {
25  class Axes;
26  class Camera;
27  class PolygonSelection;
28  class Scene;
29  class SceneColTab;
30  class Transformation;
31  class ThumbWheel;
32  class DataObjectGroup;
33 }
34 
35 
36 namespace osgViewer { class CompositeViewer; class View; class GraphicsWindow; }
37 namespace osgGeo { class TrackballManipulator; }
38 
39 class ui3DViewer;
40 class TrackBallManipulatorMessenger;
41 class KeyBindMan;
43 class SwapCallback;
44 
45 namespace osg
46 {
47  class Group;
48  class GraphicsContext;
49  class Camera;
50  class MatrixTransform;
51  class Projection;
52  class Vec3f;
53  class Viewport;
54 }
55 
56 namespace osgViewer { class View; }
57 
59 
60 mClass(uiOSG) ui3DViewerBody : public uiObjectBody
61 {
62  friend class TrackBallManipulatorMessenger;
63 
64 public:
66  virtual ~ui3DViewerBody();
67 
68  void viewAll(bool animate);
69 
70  void setSceneID(int);
71  visBase::Scene* getScene() { return scene_; }
72  const visBase::Scene* getScene() const { return scene_; }
73 
74  bool serializeScene(const char*) const;
75 
76  void setBackgroundColor(const Color&);
79 
80  float getMouseWheelZoomFactor() const;
84 
87 
88  void setHomePos(const IOPar&);
90 
92  bool isCameraPerspective() const;
93  bool isCameraOrthographic() const;
94 
95  void align();
96  void viewPlaneX();
97  void viewPlaneY();
98  void viewPlaneZ();
99  void viewPlaneInl();
100  void viewPlaneCrl();
101  void viewPlaneN();
102  void viewPlaneYZ();
103 
104  void uiRotate(float angle,bool horizontal);
105  void uiZoom(float rel,const osg::Vec3f* dir=0);
106  void setCameraZoom(float val);
107  float getCameraZoom() const;
108 
109  //Not sure were to put these
110  bool isViewMode() const;
111  virtual void setViewMode(bool viewmode,bool trigger);
112 
114  visBase::Camera* getVisCamera() { return camera_; }
115 
116  virtual void reSizeEvent(CallBacker*);
118 
119  enum WheelMode { Never, Always, OnHover };
122 
124  bool isAnimationEnabled() const;
125  void showRotAxis(bool);
126  bool isAxisShown() const;
127  void setAnnotColor(const Color&);
131 
132  void toHomePos();
133  void saveHomePos();
134  bool isHomePosEmpty() { return homepos_.isEmpty(); }
135  void fillCameraPos(IOPar&) const;
136  bool useCameraPos(const IOPar&);
137  const osgViewer::View* getOsgViewerMainView() const { return view_; }
138  const osgViewer::View* getOsgViewerHudView() const { return hudview_; }
139  void setScenesPixelDensity(float dpi);
140 
141  enum StereoType { None, RedCyan, QuadBuffer };
142 
145  void setStereoOffset(float);
146  float getStereoOffset() const;
147 
148  void setMapView(bool yn);
149  bool isMapView() const { return mapview_; }
150 
151  KeyBindMan& keyBindMan() { return keybindman_; }
152 
154 
155 protected:
156  void enableDragging( bool yn );
157 
158  enum ViewModeCursor { RotateCursor, PanCursor, ZoomCursor,
159  HoverCursor };
161 
162  virtual void updateActModeCursor();
165 
167  float dh,float dv,float df);
168  void setupTouch();
169  void setupHUD();
170  void setupView();
173  void handleGestureEvent(QGestureEvent*);
174  static osgViewer::CompositeViewer* getCompositeViewer();
175  osgGeo::TrackballManipulator* getCameraManipulator() const;
176 
177 
178  virtual osgViewer::GraphicsWindow& getGraphicsWindow() = 0;
179  virtual osg::GraphicsContext* getGraphicsContext() = 0;
180 
182 
184 
185  osg::Camera* getOsgCamera();
186  const osg::Camera* getOsgCamera() const;
187  void setCameraPos(const osg::Vec3f&,
188  const osg::Vec3f&,bool);
189 
192  const visBase::ThumbWheel* tw=0);
193 
196 
203 
205  osgViewer::CompositeViewer* compositeviewer_;
206  osgViewer::View* view_;
207  osg::Viewport* viewport_;
210 
211  osgViewer::View* hudview_;
214 
219  TrackBallManipulatorMessenger* manipmessenger_;
220 
222 
225 
227 
228  bool mapview_;
229 };
230 
ui3DViewerBody::polygonselection_
RefMan< visBase::PolygonSelection > polygonselection_
Definition: ui3dviewerbody.h:218
ui3DViewerBody::viewAll
void viewAll(bool animate)
visosg.h
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
ui3DViewerBody::getCameraZoom
float getCameraZoom() const
ui3DViewerBody::view_
osgViewer::View * view_
Definition: ui3dviewerbody.h:206
ui3DViewerBody::ViewModeCursor
ViewModeCursor
Definition: ui3dviewerbody.h:158
ui3DViewerBody::~ui3DViewerBody
virtual ~ui3DViewerBody()
ui3DViewerBody::enableThumbWheelHandling
void enableThumbWheelHandling(bool yn, const visBase::ThumbWheel *tw=0)
ui3DViewerBody::requestRedraw
void requestRedraw()
ui3DViewerBody::ui3DViewerBody
ui3DViewerBody(ui3DViewer &, uiParent *)
ui3DViewerBody::toggleViewMode
void toggleViewMode(CallBacker *)
ui3DViewerBody::hudview_
osgViewer::View * hudview_
Definition: ui3dviewerbody.h:211
ui3DViewerBody::uiZoom
void uiZoom(float rel, const osg::Vec3f *dir=0)
ui3DViewerBody::getOsgViewerMainView
const osgViewer::View * getOsgViewerMainView() const
Definition: ui3dviewerbody.h:137
ui3DViewerBody::getReversedMouseWheelDirection
bool getReversedMouseWheelDirection() const
ui3DViewerBody::toggleCameraType
void toggleCameraType()
ui3DViewerBody::WheelMode
WheelMode
Definition: ui3dviewerbody.h:119
ui3DViewerBody::uiRotate
void uiRotate(float angle, bool horizontal)
ui3DViewerBody::setHomePos
void setHomePos(const IOPar &)
visBase
Definition: visannot.h:43
ui3DViewerBody::setWheelDisplayMode
void setWheelDisplayMode(WheelMode)
ui3DViewerBody::getWheelDisplayMode
WheelMode getWheelDisplayMode() const
ui3DViewerBody::horthumbwheel_
RefMan< visBase::ThumbWheel > horthumbwheel_
Definition: ui3dviewerbody.h:199
ui3DViewerBody::getViewportSizePixels
Geom::Size2D< int > getViewportSizePixels() const
ui3DViewerBody::scene_
RefMan< visBase::Scene > scene_
Definition: ui3dviewerbody.h:198
ui3DViewerBody::viewPlaneN
void viewPlaneN()
osg
Open Scene Graph.
Definition: visannot.h:29
ui3DViewerBody::mapview_
bool mapview_
Definition: ui3dviewerbody.h:228
ui3DViewerBody::setBackgroundColor
void setBackgroundColor(const Color &)
ui3DViewerBody::setAnnotationFont
void setAnnotationFont(const FontData &)
ui3DViewerBody::getPolygonSelector
visBase::PolygonSelection * getPolygonSelector()
ui3DViewerBody::visscenecoltab_
RefMan< visBase::SceneColTab > visscenecoltab_
Definition: ui3dviewerbody.h:224
ui3DViewerBody::axes_
RefMan< visBase::Axes > axes_
Definition: ui3dviewerbody.h:217
uiEventFilter
is a class that is able to recieve events from Qt and trigger an OD-style notification/callback.
Definition: uieventfilter.h:28
ui3DViewerBody::notifyManipulatorMovement
void notifyManipulatorMovement(float dh, float dv, float df)
visBase::ThumbWheel
Definition: visthumbwheel.h:28
ui3DViewerBody::setupTouch
void setupTouch()
ui3DViewerBody::viewport_
osg::Viewport * viewport_
Definition: ui3dviewerbody.h:207
ui3DViewerBody::getCompositeViewer
static osgViewer::CompositeViewer * getCompositeViewer()
ui3DViewer
Definition: ui3dviewer.h:29
ui3DViewerBody::thumbWheelRotationCB
void thumbWheelRotationCB(CallBacker *)
ui3DViewerBody::isAxisShown
bool isAxisShown() const
visBase::SceneColTab
Definition: visscenecoltab.h:30
ui3DViewerBody::setScenesPixelDensity
void setScenesPixelDensity(float dpi)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
ui3DViewerBody::getOsgCamera
osg::Camera * getOsgCamera()
ui3DViewerBody::eventfilter_
uiEventFilter eventfilter_
Definition: ui3dviewerbody.h:215
ui3DViewerBody::setStereoOffset
void setStereoOffset(float)
ui3DViewerBody::getScene
const visBase::Scene * getScene() const
Definition: ui3dviewerbody.h:72
ui3DViewerBody::setCameraPos
void setCameraPos(const osg::Vec3f &, const osg::Vec3f &, bool)
ui3DViewerBody::homepos_
IOPar homepos_
Definition: ui3dviewerbody.h:223
ui3DViewerBody::stereooffset_
float stereooffset_
Definition: ui3dviewerbody.h:209
mousecursor.h
ui3DViewerBody::viewPlaneX
void viewPlaneX()
ui3DViewerBody::handleGestureEvent
void handleGestureEvent(QGestureEvent *)
ui3DViewerBody::setupHUD
void setupHUD()
ui3DViewerBody::hudscene_
RefMan< visBase::DataObjectGroup > hudscene_
Definition: ui3dviewerbody.h:213
ui3DViewerBody::verthumbwheel_
RefMan< visBase::ThumbWheel > verthumbwheel_
Definition: ui3dviewerbody.h:200
ui3DViewerBody::setAnimationEnabled
void setAnimationEnabled(bool)
ui3DViewerBody::setCameraZoom
void setCameraZoom(float val)
ui3DViewerBody::setMapView
void setMapView(bool yn)
ui3DViewerBody::viewPlaneZ
void viewPlaneZ()
ui3DViewerBody::ZoomCursor
@ ZoomCursor
Definition: ui3dviewerbody.h:158
ui3DViewerBody::isCameraPerspective
bool isCameraPerspective() const
ui3DViewerBody::printpar_
IOPar & printpar_
Definition: ui3dviewerbody.h:195
ui3DViewerBody::isAnimationEnabled
bool isAnimationEnabled() const
ui3DViewerBody::StereoType
StereoType
Definition: ui3dviewerbody.h:141
ui3DViewerBody::enableDragging
void enableDragging(bool yn)
ui3DViewerBody::updateActModeCursor
virtual void updateActModeCursor()
uieventfilter.h
ui3DViewerBody::serializeScene
bool serializeScene(const char *) const
visBase::PolygonSelection
Definition: vispolygonselection.h:40
ui3DViewerBody::compositeviewer_
osgViewer::CompositeViewer * compositeviewer_
Definition: ui3dviewerbody.h:205
ui3DViewerBody::manipmessenger_
TrackBallManipulatorMessenger * manipmessenger_
Definition: ui3dviewerbody.h:219
ui3DViewerBody::wheeldisplaymode_
int wheeldisplaymode_
Definition: ui3dviewerbody.h:202
mClass
#define mClass(module)
Definition: commondefs.h:181
ui3DViewerBody::setupView
void setupView()
SwapCallback
Class for a swap callback. This class triggers on the second render that the context is up an running...
Definition: swapbuffercallback.h:27
ui3DViewerBody::setStereoType
bool setStereoType(StereoType)
ui3DViewerBody::getScene
visBase::Scene * getScene()
Definition: ui3dviewerbody.h:71
ui3DViewerBody::offscreenrenderhudswitch_
osg::Switch * offscreenrenderhudswitch_
Definition: ui3dviewerbody.h:212
ui3DViewerBody::getCameraManipulator
osgGeo::TrackballManipulator * getCameraManipulator() const
ui3DViewerBody::viewPlaneY
void viewPlaneY()
KeyBindMan
Manages keybindings.
Definition: keybindings.h:75
ui3DViewerBody::keybindman_
KeyBindMan & keybindman_
Definition: ui3dviewerbody.h:226
ui3DViewerBody::keyBindMan
KeyBindMan & keyBindMan()
Definition: ui3dviewerbody.h:151
ui3DViewerBody::setSceneID
void setSceneID(int)
ui3DViewerBody::getGraphicsWindow
virtual osgViewer::GraphicsWindow & getGraphicsWindow()=0
ui3DViewerBody::getSceneColTab
visBase::SceneColTab * getSceneColTab()
ui3DViewerBody::setAnnotColor
void setAnnotColor(const Color &)
ui3DViewerBody::setReversedMouseWheelDirection
void setReversedMouseWheelDirection(bool)
ui3DViewerBody::getOsgCamera
const osg::Camera * getOsgCamera() const
ui3DViewerBody::useCameraPos
bool useCameraPos(const IOPar &)
ui3DViewerBody::offscreenrenderswitch_
osg::Switch * offscreenrenderswitch_
Definition: ui3dviewerbody.h:204
ui3DViewerBody::saveHomePos
void saveHomePos()
ui3DViewerBody::setViewModeCursor
virtual void setViewModeCursor(ViewModeCursor)
ui3DViewerBody::toHomePos
void toHomePos()
ui3DViewerBody::fillCameraPos
void fillCameraPos(IOPar &) const
ui3DViewerBody::getVisCamera
visBase::Camera * getVisCamera()
Definition: ui3dviewerbody.h:114
ui3DViewerBody::handle_
ui3DViewer & handle_
Definition: ui3dviewerbody.h:194
Network::None
@ None
Definition: networkcommon.h:33
ui3DViewerBody::getGraphicsContext
virtual osg::GraphicsContext * getGraphicsContext()=0
ui3DViewerBody::stereotype_
StereoType stereotype_
Definition: ui3dviewerbody.h:208
ui3DViewerBody::viewPlaneYZ
void viewPlaneYZ()
uiObject
The base class for most UI elements.
Definition: uiobj.h:38
ui3DViewerBody::getOsgViewerHudView
const osgViewer::View * getOsgViewerHudView() const
Definition: ui3dviewerbody.h:138
ui3DViewerBody::actmodecursor_
MouseCursor actmodecursor_
Definition: ui3dviewerbody.h:164
ui3DViewerBody
Baseclass for different body implementation (direct & indirect) of OSG.
Definition: ui3dviewerbody.h:61
ui3DViewerBody::getStereoType
StereoType getStereoType() const
ui3DViewerBody::getCameraPosition
Coord3 getCameraPosition() const
ui3DViewerBody::viewPlaneInl
void viewPlaneInl()
osgGeo
A collection of geoscientific extensions to OpenSceneGraph.
Definition: visannot.h:38
ui3DViewerBody::getStereoOffset
float getStereoOffset() const
ui3DViewerBody::qtEventCB
void qtEventCB(CallBacker *)
ui3DViewerBody::distancethumbwheel_
RefMan< visBase::ThumbWheel > distancethumbwheel_
Definition: ui3dviewerbody.h:201
MouseCursor
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file....
Definition: mousecursor.h:26
visBase::Camera
keep osg camera status and render info
Definition: viscamera.h:30
Geom::Size2D< int >
ui3DViewerBody::mouseCursorChg
void mouseCursorChg(CallBacker *)
ui3DViewerBody::uiObjHandle
uiObject & uiObjHandle()
refcount.h
ui3DViewerBody::setMouseWheelZoomFactor
void setMouseWheelZoomFactor(float)
ui3DViewerBody::showRotAxis
void showRotAxis(bool)
ui3DViewerBody::swapcallback_
SwapCallback * swapcallback_
Definition: ui3dviewerbody.h:221
uiParent
Definition: uiparent.h:26
FontData
Data needed to make an actual font.
Definition: fontdata.h:20
uiMouseEventBlockerByGestures
Definition: uimouseeventblockerbygesture.h:27
ui3DViewerBody::isMapView
bool isMapView() const
Definition: ui3dviewerbody.h:149
ui3DViewerBody::setViewMode
virtual void setViewMode(bool viewmode, bool trigger)
ui3DViewerBody::mouseeventblocker_
uiMouseEventBlockerByGestures & mouseeventblocker_
Definition: ui3dviewerbody.h:216
ui3DViewerBody::resetToHomePosition
void resetToHomePosition()
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
ui3DViewerBody::getMouseWheelZoomFactor
float getMouseWheelZoomFactor() const
ui3DViewerBody::removeSwapCallback
void removeSwapCallback(CallBacker *)
ui3DViewerBody::reSizeEvent
virtual void reSizeEvent(CallBacker *)
ui3DViewerBody::align
void align()
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
osgViewer
Definition: visdata.h:25
ui3DViewerBody::isHomePosEmpty
bool isHomePosEmpty()
Definition: ui3dviewerbody.h:134
ui3DViewerBody::isViewMode
bool isViewMode() const
ui3DViewerBody::setFocusCB
void setFocusCB(CallBacker *)
ui3DViewerBody::isCameraOrthographic
bool isCameraOrthographic() const
ui3DViewerBody::getBackgroundColor
Color getBackgroundColor() const
visBase::Scene
Scene manages all DataObjects and has some managing functions such as the selection management and va...
Definition: visscene.h:40
RefMan< visBase::Camera >
ui3DViewerBody::camera_
RefMan< visBase::Camera > camera_
Definition: ui3dviewerbody.h:197
ui3DViewerBody::viewPlaneCrl
void viewPlaneCrl()
uiobjbody.h

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021