VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtWidgetPicker.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
16 
17 #include <unordered_map>
18 
19 namespace makVrv
20 {
21  class DtDecalProjectorComponentInterface;
22  class DtFrameBufferObject;
23  class DtLineRenderer;
24  class DtLineSegment;
25  class DtOverlayResourceProvider;
26  class DtPickableTriangle;
27  class DtPickableWidget;
28  class DtPixelBufferObject;
29  class DtQuadProxy;
30  class DtQuadRenderer;
31  class DtTextureObject;
32  class DtTriangleProxy;
33  class DtTriangleRenderer;
34  class DtPickableWidget;
35  class DtPickableQuad;
36  class DtPickableLine;
37  class DtPickableTriangle;
38  class DtPickableDecalProjector;
39  class DtDe;
40  struct DtObserverRenderData;
41 
44 
46 
48  template <>
49  inline const char* creatorTypeName<DtWidgetPicker>(void) { return "DtWidgetPickerCreator"; }
50 
54  {
56 
57  public:
58 
60  {
61  NO_EVENT = 0,
72  MOUSE_WHEEL
73  };
74 
76  {
78  int x;
79  int y;
80  int wheel;
81 
82  // Additional hit information for a scene pick.
83  // sceneHit - true if a valid scene hit
84  // (sceneX, sceneY, sceneZ) - scene hit location
85  bool sceneHit = false;
86  double sceneX = 0;
87  double sceneY = 0;
88  double sceneZ = 0;
89  };
90 
91 
92  friend class DtPickableWidget;
93  friend class DtPickableQuad;
94  friend class DtPickableLine;
95  friend class DtPickableTriangle;
96 
97  public:
98 
100  virtual ~DtWidgetPicker();
101 
103  DtWidgetPicker() = delete;
105  DtWidgetPicker(const DtWidgetPicker& rhs) = delete;
107  DtWidgetPicker& operator=(const DtWidgetPicker& rhs) = delete;
108  public:
110  virtual unsigned int numberOfWidgets() const;
111 
114  virtual void releaseResources(bool renderer);
115 
116  virtual DtFrameBufferObject* frameBufferObject(void);
117 
119  virtual DtPickableQuad* allocatePickableQuad();
120 
122  virtual DtPickableTriangle* allocatePickableTriangle();
123 
125  virtual DtPickableLine* allocatePickableLine();
126 
128  virtual DtPickableDecalProjector* allocatePickableDecalProjector(
130 
134  virtual void registerPickableDecalProjector(DtPickableDecalProjector* widget);
135 
139  virtual void unregisterPickableDecalProjector(DtPickableDecalProjector* widget);
140 
144  virtual bool requiresScenePick() const;
145 
149  virtual void pick(const MousePickRecord& rec, bool geocentric
150  , double cameraPosition[3], const DtObserverRenderData& observerRenderData, double cameraMatrix[16]
151  , const int viewport[4]);
152 
154  virtual const DtPickableWidget* findWidgetFromLastPick() const;
155 
157  virtual bool signalEvents();
158 
160  virtual void clearEvents();
161 
163  boost::signalslib::signal<void ()> signal_destroyed;
164 
165  protected:
166 
170 
173  virtual DtPickableWidget* calculateWidgetFromLastPick();
174 
175  virtual void debugRender();
176 
178  virtual DtQuadProxy* allocateQuad();
179 
181  virtual DtLineSegment* allocateLine();
182 
184  virtual DtTriangleProxy* allocateTriangle();
185 
187  virtual unsigned int widgetCreated(DtPickableWidget*);
188 
190  virtual void widgetToBeDeleted(DtPickableWidget*);
191 
192  virtual bool allocateResources();
193 
194  protected:
195 
203  std::unordered_map<DtPickableDecalProjector*, unsigned int> myPickableDecalProjectors;
204 
207 
210 
212 
213  using WidgetIdMap = std::unordered_map<unsigned int, DtPickableWidget*>;
215 
216  unsigned int myFreeId;
218 
219  std::vector<unsigned int> myColorBuffer;
220  };
221 
222 }
223 
unsigned int myFreeId
Definition: DtWidgetPicker.h:216
An object which wraps an OpenGL pixel buffer object and allows for asynchronous downloads of texture ...
Definition: DtPixelBufferObject.h:16
bool myPendingEventFlag
Definition: DtWidgetPicker.h:208
MousePickType type
Definition: DtWidgetPicker.h:77
The DtPickableQuad is a pickable widget that matches the Quad interface.
Definition: DtPickableWidget.h:125
int wheel
Definition: DtWidgetPicker.h:80
DtPickableWidget * myMouseFocusWidget
Definition: DtWidgetPicker.h:211
Definition: DtWidgetPicker.h:63
int x
Definition: DtWidgetPicker.h:78
Definition: DtWidgetPicker.h:66
The DtPickableLine is a pickable widget that matches the TriangleProxy interface. ...
Definition: DtPickableWidget.h:302
A class which allocates and draws quads.
Definition: DtQuadRenderer.h:44
A non-visible interactive widget.
Definition: DtPickableWidget.h:40
DtDe & myDe
Definition: DtWidgetPicker.h:217
DtTextureObject * mySampleTexture
Definition: DtWidgetPicker.h:199
DtOverlayResourceProvider & myProvider
Definition: DtWidgetPicker.h:196
The DtPickableDecalProjector is a pickable widget used to pick a decal projector interface.
Definition: DtPickableWidget.h:362
Definition: DtWidgetPicker.h:64
DtLineRenderer * myLineRenderer
Definition: DtWidgetPicker.h:201
DtPixelBufferObject * myPixelBuffer
Definition: DtWidgetPicker.h:198
An object which wraps a OpenGL texture object.
Definition: DtTextureObject.h:15
std::vector< unsigned int > myColorBuffer
Definition: DtWidgetPicker.h:219
A class which represents a component for a decal projector.
Definition: DtDecalProjectorComponentInterface.h:43
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
The triangle renderer.
Definition: DtTriangleRenderer.h:47
The overlay resource provider class provides resources for overlay drawing classes.
Definition: DtOverlayResourceProvider.h:28
Contains makVrv::DtVirtualBaseClass class.
#define DT_DLL_VRVGRAPHICS
Contains DLL export macros.
Definition: vrvGraphics.h:19
A class which represents a single line segment.
Definition: DtLineSegment.h:23
A flyweight class for controlling a triangle owned by the triangle renderer.
Definition: DtTriangleRenderer.h:116
Definition: DtWidgetPicker.h:71
std::unordered_map< unsigned int, DtPickableWidget * > WidgetIdMap
Definition: DtWidgetPicker.h:213
The DtPickableLine is a pickable widget that matches the LineSegment interface.
Definition: DtPickableWidget.h:233
An object which wraps an OpenGL frame buffer object and allows rendering To a texture.
Definition: DtFrameBufferObject.h:17
const char * creatorTypeName< DtWidgetPicker >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtWidgetPicker.h:49
WidgetIdMap myWidgetIds
Definition: DtWidgetPicker.h:214
std::unordered_map< DtPickableDecalProjector *, unsigned int > myPickableDecalProjectors
Definition: DtWidgetPicker.h:203
DtTriangleRenderer * myTriangleRenderer
Definition: DtWidgetPicker.h:202
Definition: DtWidgetPicker.h:65
Definition: DtWidgetPicker.h:75
friend DtWidgetPickerCreator
Definition: DtWidgetPicker.h:55
A flyweight class for controlling a single quad owned by the DtQuadRenderer.
Definition: DtQuadProxy.h:26
DtVirtualBaseClassCreator< DtWidgetPicker, DtOverlayResourceProvider & > DtWidgetPickerCreator
Definition: DtWidgetPicker.h:43
Definition: DtWidgetPicker.h:68
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:72
MousePickRecord myPendingEvent
Definition: DtWidgetPicker.h:209
boost::signalslib::signal< void()> signal_destroyed
Boost signal sent during widget picker destruction. Called from destructor.
Definition: DtWidgetPicker.h:163
Definition: DtCommonRenderData.h:32
int y
Definition: DtWidgetPicker.h:79
Definition: DtWidgetPicker.h:62
A class responsible for rendering lines.
Definition: DtLineRenderer.h:49
Definition: DtWidgetPicker.h:69
int myDesiredWidth
Definition: DtWidgetPicker.h:205
DtFrameBufferObject * myFrameBuffer
Definition: DtWidgetPicker.h:197
DtQuadRenderer * myQuadRenderer
Definition: DtWidgetPicker.h:200
int myDesiredHeight
Definition: DtWidgetPicker.h:206
The picker class which allocates and does picking operations on widgets.
Definition: DtWidgetPicker.h:53
MousePickType
Definition: DtWidgetPicker.h:59

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)