VR-Forces 4.10 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  DtOverlayRenderer& overlayRenderer2DNormalized( DtChannel* channel );
83  static DtOverlayRenderer* overlayRenderer2DNormalized( DtDe& de, std::string displayName,
84  std::string windowName, std::string channelName );
85 
88  DtOverlayRenderer& overlayRenderer(DtChannel* channel, int modelSet);
89 
91  virtual void enableOverlayOnChannel(unsigned int layerId, bool enabled,
92  DtChannel& channel);
93 
97  virtual void enableModelSetOnChannel(int modelSet, bool enabled,
98  DtChannel& channel);
99 
101  DtWidgetPicker& widgetPicker(unsigned int layerId);
102 
105  DtWidgetPicker& widgetPicker(DtChannel* channel);
106  DtWidgetPicker& widgetPicker3D(DtChannel* channel);
107  DtWidgetPicker& widgetPicker2DNormalized(DtChannel* channel);
108  static DtWidgetPicker* widgetPicker2DNormalized( DtDe& de, std::string displayName,
109  std::string windowName, std::string channelName );
110 
112  DtWidgetPicker& widgetPicker(DtChannel* channel, int modelSet);
113 
115  virtual void destroyOverlayLayer(unsigned int layerId);
116 
118  virtual bool overlayLayerIsVisible(unsigned int layerId) const;
119 
123  virtual void setOverlayLayerVisibility(unsigned int layerId, bool visible);
124  protected:
125 
126  virtual void handleIfActiveContextChanged(DtChannel& currentChannel);
127 
128  typedef boost::unordered_map<DtChannel*, unsigned int>
130 
131  //Map that maps from channel to supported model set renderer, the sets should be in order.
132  typedef boost::unordered_map<DtChannel*, std::map<int, unsigned int> >
134 
136  virtual void slot_channelToBeDestroyed(DtChannel*);
137 
140  unsigned int allocateChannelSpecificLayerId();
141  void deallocateChannelSpecificLayerId(unsigned int layerId);
142 
143  void destroyChannelSpecificOverlayLayer(
144  ChannelSpecificOverlayMap &map, DtChannel* channel );
145 
147  DtOverlayRenderer& overlayRenderer( ChannelSpecificOverlayMap &map,
148  DtChannel* channel );
149 
152  DtWidgetPicker& widgetPicker( ChannelSpecificOverlayMap &map,
153  DtChannel* channel );
154 
157  virtual void destroyChannelModelSetOverlayLayers(DtChannel*);
158 
159  protected:
160 
162  {
163  public:
165  virtual ~DtPickableOverlay();
166 
167  DtOverlayRenderer& getOrCreateRenderer(
168  DtOsgOverlayResourceProvider* provider);
169  DtWidgetPicker& getOrCreatePicker(
170  DtOsgOverlayResourceProvider* provider);
171  DtOverlayRenderer* findRenderer();
172  DtWidgetPicker* findPicker();
173 
174  protected:
177 
178  };
179 
180  typedef boost::unordered_map<unsigned int,DtPickableOverlay*> OverlayMap;
181 
182  //Map, the sets should be in order.
183  typedef boost::unordered_map<DtChannel*, std::set<unsigned int> >
185 
186  // Some customers have the data in a different directory
187  // keep the set data path around so the tactical graphics
188  // can load their shaders from the right path
189  static std::string myDataPath;
190 
199  bool myChannelSpecificLayerIdUsageList[
200  Channel_SpecificEnd - Channel_SpecificStart + 1 ];
202 
203  osg::observer_ptr<const osg::GraphicsContext> myLastGraphicsContext;
205  };
206 
209  {
211  virtual DtOverlayManager* create(DtDe& de);
212  };
213 }
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:175
Creator class for the DtOsgOverlayManager instance.
Definition: DtOsgOverlayManager.h:208
static std::string myDataPath
Definition: DtOsgOverlayManager.h:189
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::observer_ptr< const osg::GraphicsContext > myLastGraphicsContext
Definition: DtOsgOverlayManager.h:203
boost::unordered_map< unsigned int, DtPickableOverlay * > OverlayMap
Definition: DtOsgOverlayManager.h:180
ChannelSpecificOverlayMap myChannelSpecific2DOverlayMap
Definition: DtOsgOverlayManager.h:195
ChannelSpecificOverlayMap myChannelSpecific2DNormalizedOverlayMap
Definition: DtOsgOverlayManager.h:198
ChannelModelSetOverlayMap myChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:196
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
DtGLDeleteObjectManager & myGLManager
Definition: DtOsgOverlayManager.h:204
OverlayMap myOverlays
Definition: DtOsgOverlayManager.h:193
The abstract Channel Class.
Definition: DtChannel.h:30
Definition: DtOsgOverlayManager.h:161
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Creator class.
Definition: DtOverlayManager.h:93
Abstract base class for managing the overlays.
Definition: DtOverlayManager.h:25
ChannelOverlayMap myChannelOverlayMap
Definition: DtOsgOverlayManager.h:194
DtOsgOverlayResourceProvider * myProvider
Definition: DtOsgOverlayManager.h:201
boost::unordered_map< DtChannel *, std::set< unsigned int > > ChannelOverlayMap
Definition: DtOsgOverlayManager.h:184
Base class to provide boost signal/slot management.
DtSignalConnectionManager myConnections
Definition: DtOsgOverlayManager.h:192
boost::unordered_map< DtChannel *, unsigned int > ChannelSpecificOverlayMap
Definition: DtOsgOverlayManager.h:129
boost::unordered_map< DtChannel *, std::map< int, unsigned int > > ChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:133
DtDe & myDe
Definition: DtOsgOverlayManager.h:191
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:26
DtDe & de()
Definition: DtOsgOverlayManager.h:48
DtWidgetPicker * myPicker
Definition: DtOsgOverlayManager.h:176
ChannelSpecificOverlayMap myChannelSpecific3DOverlayMap
Definition: DtOsgOverlayManager.h:197
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 Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)