VR-Forces 5.0.1 Developer's Guide
 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) 2022 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 <unordered_map>
20 #include <set>
21 
22 namespace makVrv
23 {
24  class DtOsgRenderer;
25  class DtOsgOverlayResourceProvider;
26  class DtChannelManager;
27  class DtChannel;
28  class DtOverlayRenderer;
29  class DtWidgetPicker;
30  class DtFontManager;
31  class DtWindow;
32  class DtGlDeleteObjectManager;
33  class DtPickableOverlay;
34 
38  {
39  public:
42 
44  virtual ~DtOsgOverlayManager();
45 
47  DtOsgOverlayManager() = delete;
49  DtOsgOverlayManager(const DtOsgOverlayManager& rhs) = delete;
51  DtOsgOverlayManager& operator=(const DtOsgOverlayManager& rhs) = delete;
52  public:
54  inline DtDe& de()
55  {
56  return myDe;
57  }
58 
60  virtual void render(DtChannel* channel, bool projectedGeocentricEffect,
61  float projectedGeocentricAlpha,
62  double* position, double altitude, double* matrix, double* projectionMatrix, double viewportSize[2]) override;
63 
65  virtual void releaseResources() override;
66 
68  virtual void enableOverlayOnChannel(unsigned int layerId, bool enabled,
69  DtChannel& channel) override;
70 
74  virtual bool handleMouseEvent(const DtMouseEvent& ev, DtChannel& channel) override;
75 
77  virtual void destroyOverlayLayer(unsigned int layerId) override;
78 
80  virtual bool overlayLayerIsVisible(unsigned int layerId) const override;
81 
85  virtual void setOverlayLayerVisibility(unsigned int layerId, bool visible) override;
86 
90  virtual bool processWidgetEvent( DtElementID id, const DtMouseEvent &ev,
91  DtChannel& channel );
92 
93 
95  virtual DtOsgOverlayResourceProvider* resourceProvider();
96 
98  virtual DtOverlayRenderer& overlayRenderer(unsigned int layerId);
99 
102  virtual DtOverlayRenderer& overlayRenderer(DtChannel* channel);
103  virtual DtOverlayRenderer& overlayRenderer3D(DtChannel* channel);
104  virtual DtOverlayRenderer& overlayRenderer2DNormalized( DtChannel* channel );
105  static DtOverlayRenderer* overlayRenderer2DNormalized( DtDe& de, std::string displayName,
106  std::string windowName, std::string channelName );
107 
110  virtual DtOverlayRenderer& overlayRenderer(DtChannel* channel, int modelSet);
111 
115  virtual void enableModelSetOnChannel(int modelSet, bool enabled,
116  DtChannel& channel);
117 
119  virtual DtWidgetPicker& widgetPicker(unsigned int layerId);
120 
123  virtual DtWidgetPicker& widgetPicker(DtChannel* channel);
124  virtual DtWidgetPicker& widgetPicker3D(DtChannel* channel);
125  virtual DtWidgetPicker& widgetPicker2DNormalized(DtChannel* channel);
126  static DtWidgetPicker* widgetPicker2DNormalized( DtDe& de, std::string displayName,
127  std::string windowName, std::string channelName );
128 
130  virtual DtWidgetPicker& widgetPicker(DtChannel* channel, int modelSet);
131 
133  virtual bool somethingToRender(DtChannel* channel) const;
134 
135  protected:
136 
137  virtual void handleIfActiveContextChanged(DtChannel& currentChannel);
138 
140  virtual void slot_channelToBeDestroyed(DtChannel*);
141 
144  virtual unsigned int allocateChannelSpecificLayerId();
145  virtual void deallocateChannelSpecificLayerId(unsigned int layerId);
146 
147  typedef std::unordered_map<DtChannel*, unsigned int>
149 
150  //Map that maps from channel to supported model set renderer, the sets should be in order.
151  typedef std::unordered_map<DtChannel*, std::map<int, unsigned int> >
153 
154  virtual void destroyChannelSpecificOverlayLayer(
155  ChannelSpecificOverlayMap &map, DtChannel* channel );
156 
158  virtual DtOverlayRenderer& overlayRenderer( ChannelSpecificOverlayMap &map,
159  DtChannel* channel );
160 
163  virtual DtWidgetPicker& widgetPicker( ChannelSpecificOverlayMap &map,
164  DtChannel* channel );
165 
168  virtual void destroyChannelModelSetOverlayLayers(DtChannel*);
169 
170  protected:
171 
172  typedef std::unordered_map<unsigned int,DtPickableOverlay*> OverlayMap;
173 
174  //Map, the sets should be in order.
175  typedef std::unordered_map<DtChannel*, std::set<unsigned int> >
177 
178  // Some customers have the data in a different directory
179  // keep the set data path around so the tactical graphics
180  // can load their shaders from the right path
181  static std::string myDataPath;
182 
191  bool myChannelSpecificLayerIdUsageList[
192  Channel_SpecificEnd - Channel_SpecificStart + 1 ];
194 
195  osg::observer_ptr<const osg::GraphicsContext> myLastGraphicsContext;
197  };
198 
201  {
203  virtual DtOverlayManager* create(DtDe& de);
204  };
205 }
std::unordered_map< DtChannel *, unsigned int > ChannelSpecificOverlayMap
Definition: DtOsgOverlayManager.h:148
The OSG overlay manager managers 2D graphical overlays.
Definition: DtOsgOverlayManager.h:37
Creator class for the DtOsgOverlayManager instance.
Definition: DtOsgOverlayManager.h:200
static std::string myDataPath
Definition: DtOsgOverlayManager.h:181
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::observer_ptr< const osg::GraphicsContext > myLastGraphicsContext
Definition: DtOsgOverlayManager.h:195
ChannelSpecificOverlayMap myChannelSpecific2DOverlayMap
Definition: DtOsgOverlayManager.h:187
ChannelSpecificOverlayMap myChannelSpecific2DNormalizedOverlayMap
Definition: DtOsgOverlayManager.h:190
ChannelModelSetOverlayMap myChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:188
DtGlDeleteObjectManager & myGlDeleteObjectManager
Definition: DtOsgOverlayManager.h:196
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
OverlayMap myOverlays
Definition: DtOsgOverlayManager.h:185
The abstract Channel Class.
Definition: DtChannel.h:35
Contains makVrv::DtOverlayManager class.
std::unordered_map< DtChannel *, std::set< unsigned int > > ChannelOverlayMap
Definition: DtOsgOverlayManager.h:176
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Creator class.
Definition: DtOverlayManager.h:105
Abstract base class for managing the overlays.
Definition: DtOverlayManager.h:25
ChannelOverlayMap myChannelOverlayMap
Definition: DtOsgOverlayManager.h:186
DtOsgOverlayResourceProvider * myProvider
Definition: DtOsgOverlayManager.h:193
Base class to provide boost signal/slot management.
Manager to delete GLBuffer in the main thread.
Definition: DtGlDeleteObjectManager.h:44
DtSignalConnectionManager myConnections
Definition: DtOsgOverlayManager.h:184
DtDe & myDe
Definition: DtOsgOverlayManager.h:183
Contains makVrv::DtUniqueID type.
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
The Osg specific implementation of the overlay resource provider.
Definition: DtOsgOverlayResourceProvider.h:25
DtDe & de()
get the DtDe
Definition: DtOsgOverlayManager.h:54
std::unordered_map< DtChannel *, std::map< int, unsigned int > > ChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:152
ChannelSpecificOverlayMap myChannelSpecific3DOverlayMap
Definition: DtOsgOverlayManager.h:189
std::unordered_map< unsigned int, DtPickableOverlay * > OverlayMap
Definition: DtOsgOverlayManager.h:172
The picker class which allocates and does picking operations on widgets.
Definition: DtWidgetPicker.h:45
The DtOverlayRenderer implements the overlay concept. An overlay is a 2D scene that is drawn on top o...
Definition: DtOverlayRenderer.h:41

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)