VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgOverlayManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvOsg/vrvOsg.h>
13 #include <vrvCore/DtUniqueID.h>
15 
16 #include <osg/observer_ptr>
17 #include <osg/GraphicsContext>
18 
19 #include <boost/unordered_map.hpp>
20 #include <set>
21 
22 
23 namespace makVrv
24 {
25 
26  class DtOsgRenderer;
27  class DtOsgOverlayResourceProvider;
28  class DtChannelManager;
29  class DtChannel;
30  class DtOverlayRenderer;
31  class DtWidgetPicker;
32  class DtFontManager;
33  class DtWindow;
34  class DtGLDeleteObjectManager;
35 
39  {
40  public:
41 
44 
46  virtual ~DtOsgOverlayManager();
47 
48  inline DtDe& de()
49  {
50  return myDe;
51  }
52 
56  virtual bool handleMouseEvent(const DtMouseEvent& ev, DtChannel& channel);
57 
61  bool processWidgetEvent( DtElementID id, const DtMouseEvent &ev,
62  DtChannel& channel );
63 
65  virtual void render(DtChannel* channel, bool projectedGeocentricEffect,
66  float projectedGeocentricAlpha,
67  double* position, double* matrix, double* projectionMatrix, double viewportSize[2]);
68 
70  virtual void releaseResources();
71 
73  virtual DtOsgOverlayResourceProvider* resourceProvider();
74 
76  DtOverlayRenderer& overlayRenderer(unsigned int layerId);
77 
80  DtOverlayRenderer& overlayRenderer(DtChannel* channel);
81  DtOverlayRenderer& overlayRenderer3D(DtChannel* channel);
82 
85  DtOverlayRenderer& overlayRenderer(DtChannel* channel, int modelSet);
86 
88  virtual void enableOverlayOnChannel(unsigned int layerId, bool enabled,
89  DtChannel& channel);
90 
94  virtual void enableModelSetOnChannel(int modelSet, bool enabled,
95  DtChannel& channel);
96 
98  DtWidgetPicker& widgetPicker(unsigned int layerId);
99 
102  DtWidgetPicker& widgetPicker(DtChannel* channel);
103  DtWidgetPicker& widgetPicker3D(DtChannel* channel);
104 
106  DtWidgetPicker& widgetPicker(DtChannel* channel, int modelSet);
107 
109  virtual void destroyOverlayLayer(unsigned int layerId);
110 
112  virtual bool overlayLayerIsVisible(unsigned int layerId) const;
113 
117  virtual void setOverlayLayerVisibility(unsigned int layerId, bool visible);
118  protected:
119 
120  virtual void handleIfActiveContextChanged(DtChannel& currentChannel);
121 
122  typedef boost::unordered_map<DtChannel*, unsigned int>
124 
125  //Map that maps from channel to supported model set renderer, the sets should be in order.
126  typedef boost::unordered_map<DtChannel*, std::map<int, unsigned int> >
128 
130  virtual void slot_channelToBeDestroyed(DtChannel*);
131 
134  unsigned int allocateChannelSpecificLayerId();
135  void deallocateChannelSpecificLayerId(unsigned int layerId);
136 
137  void destroyChannelSpecificOverlayLayer(
138  ChannelSpecificOverlayMap &map, DtChannel* channel );
139 
141  DtOverlayRenderer& overlayRenderer( ChannelSpecificOverlayMap &map,
142  DtChannel* channel );
143 
146  DtWidgetPicker& widgetPicker( ChannelSpecificOverlayMap &map,
147  DtChannel* channel );
148 
151  virtual void destroyChannelModelSetOverlayLayers(DtChannel*);
152 
153  protected:
154 
156  {
157  public:
159  virtual ~DtPickableOverlay();
160 
161  DtOverlayRenderer& getOrCreateRenderer(
162  DtOsgOverlayResourceProvider* provider);
163  DtWidgetPicker& getOrCreatePicker(
164  DtOsgOverlayResourceProvider* provider);
165  DtOverlayRenderer* findRenderer();
166  DtWidgetPicker* findPicker();
167 
168  protected:
171 
172  };
173 
174  typedef boost::unordered_map<unsigned int,DtPickableOverlay*> OverlayMap;
175 
176  //Map, the sets should be in order.
177  typedef boost::unordered_map<DtChannel*, std::set<unsigned int> >
179 
180  // Some customers have the data in a different directory
181  // keep the set data path around so the tactical graphics
182  // can load their shaders from the right path
183  static std::string myDataPath;
184 
192  bool myChannelSpecificLayerIdUsageList[
193  Channel_SpecificEnd - Channel_SpecificStart + 1 ];
195 
196  osg::observer_ptr<const osg::GraphicsContext> myLastGraphicsContext;
198  };
199 
202  {
204  virtual DtOverlayManager* create(DtDe& de);
205  };
206 }
The OSG overlay manager managers 2D graphical overlays.
Definition: DtOsgOverlayManager.h:38
Manager to delete GLBuffer in the main thread.
Definition: DtGlDeleteObjectManager.h:33
DtOverlayRenderer * myRenderer
Definition: DtOsgOverlayManager.h:169
Creator class for the DtOsgOverlayManager instance.
Definition: DtOsgOverlayManager.h:201
static std::string myDataPath
Definition: DtOsgOverlayManager.h:183
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::observer_ptr< const osg::GraphicsContext > myLastGraphicsContext
Definition: DtOsgOverlayManager.h:196
boost::unordered_map< unsigned int, DtPickableOverlay * > OverlayMap
Definition: DtOsgOverlayManager.h:174
ChannelSpecificOverlayMap myChannelSpecific2DOverlayMap
Definition: DtOsgOverlayManager.h:189
ChannelModelSetOverlayMap myChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:190
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:22
DtGLDeleteObjectManager & myGLManager
Definition: DtOsgOverlayManager.h:197
OverlayMap myOverlays
Definition: DtOsgOverlayManager.h:187
The abstract Channel Class.
Definition: DtChannel.h:29
Definition: DtOsgOverlayManager.h:155
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
Creator class.
Definition: DtOverlayManager.h:96
Abstract base class for managing the overlays.
Definition: DtOverlayManager.h:28
ChannelOverlayMap myChannelOverlayMap
Definition: DtOsgOverlayManager.h:188
DtOsgOverlayResourceProvider * myProvider
Definition: DtOsgOverlayManager.h:194
boost::unordered_map< DtChannel *, std::set< unsigned int > > ChannelOverlayMap
Definition: DtOsgOverlayManager.h:178
Base class to provide boost signal/slot management.
DtSignalConnectionManager myConnections
Definition: DtOsgOverlayManager.h:186
boost::unordered_map< DtChannel *, unsigned int > ChannelSpecificOverlayMap
Definition: DtOsgOverlayManager.h:123
boost::unordered_map< DtChannel *, std::map< int, unsigned int > > ChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:127
DtDe & myDe
Definition: DtOsgOverlayManager.h:185
Contains makVrv::DtUniqueID type.
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
The Osg specific implementation of the overlay resource provider.
Definition: DtOsgOverlayResourceProvider.h:29
DtDe & de()
Definition: DtOsgOverlayManager.h:48
DtWidgetPicker * myPicker
Definition: DtOsgOverlayManager.h:170
ChannelSpecificOverlayMap myChannelSpecific3DOverlayMap
Definition: DtOsgOverlayManager.h:191
The picker class which allocates and does picking operatings on widgets.
Definition: DtWidgetPicker.h:32
The DtOverlayRenderer implements the overlay concept.
Definition: DtOverlayRenderer.h:23

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)