VR-Forces 4.8 Class Documentation
 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) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
7 #pragma once
9 #include <boost/unordered_map.hpp>
10 
11 namespace makVrv
12 {
13  class DtFrameBufferObject;
14  class DtLineRenderer;
15  class DtLineSegment;
16  class DtOverlayResourceProvider;
17  class DtPickableTriangle;
18  class DtPickableWidget;
19  class DtPixelBufferObject;
20  class DtQuad;
21  class DtQuadRenderer;
22  class DtTextureObject;
23  class DtTriangleProxy;
24  class DtTriangleRenderer;
25  class DtPickableWidget;
26  class DtPickableQuad;
27  class DtPickableLine;
28  class DtPickableTriangle;
29 
33  {
34  public:
35 
37  {
38  NO_EVENT = 0,
49  MOUSE_WHEEL
50  };
51 
53  {
55  int x;
56  int y;
57  int wheel;
58  };
59 
60 
61  friend class DtPickableWidget;
62  friend class DtPickableQuad;
63  friend class DtPickableLine;
64  friend class DtPickableTriangle;
65 
67  virtual ~DtWidgetPicker();
68 
70  unsigned int numberOfWidgets() const;
71 
74  void releaseResources(bool renderer);
75 
76  virtual DtFrameBufferObject* frameBufferObject(void);
77 
79  DtPickableQuad* allocatePickableQuad();
80 
82  DtPickableTriangle* allocatePickableTriangle();
83 
85  DtPickableLine* allocatePickableLine();
86 
89  void pick(const MousePickRecord& rec,int w, int h,
90  bool geocentric
91  , double cameraPosition[3]
92  , double cameraMatrix[16]);
93 
95  const DtPickableWidget* findWidgetFromLastPick() const;
96 
98  bool signalEvents();
99 
101  void clearEvents();
102 
104  boost::signal<void ()> signal_destroyed;
105 
106  protected:
107 
110  DtPickableWidget* calculateWidgetFromLastPick();
111 
112  void debugRender();
113 
115  DtQuad* allocateQuad();
116 
118  DtLineSegment* allocateLine();
119 
121  DtTriangleProxy* allocateTriangle();
122 
124  unsigned int widgetCreated(DtPickableWidget*);
125 
127  void widgetToBeDeleted(DtPickableWidget*);
128 
129  bool allocateResources();
130 
131  protected:
132 
140 
143 
146 
148 
149  typedef boost::unordered_map<unsigned int, DtPickableWidget*> WidgetIdMap;
151 
152  unsigned int myFreeId;
153 
154  };
155 }
156 
unsigned int myFreeId
Definition: DtWidgetPicker.h:152
An object which wraps an OpenGL pixel buffer object and allows for asynchronous downloads of texture ...
Definition: DtPixelBufferObject.h:18
bool myPendingEventFlag
Definition: DtWidgetPicker.h:144
MousePickType type
Definition: DtWidgetPicker.h:54
The DtPickableQuad is a pickable widget that matches the Quad interface.
Definition: DtPickableWidget.h:83
int wheel
Definition: DtWidgetPicker.h:57
DtPickableWidget * myMouseFocusWidget
Definition: DtWidgetPicker.h:147
Definition: DtWidgetPicker.h:40
int x
Definition: DtWidgetPicker.h:55
boost::unordered_map< unsigned int, DtPickableWidget * > WidgetIdMap
Definition: DtWidgetPicker.h:149
Definition: DtWidgetPicker.h:43
The DtPickableLine is a pickable widget that matches the TriangleProxy interface. ...
Definition: DtPickableWidget.h:168
A class which allocates and draws quads.
Definition: DtQuadRenderer.h:27
A non-visible interactive widget.
Definition: DtPickableWidget.h:27
DtTextureObject * mySampleTexture
Definition: DtWidgetPicker.h:136
DtOverlayResourceProvider & myProvider
Definition: DtWidgetPicker.h:133
Definition: DtWidgetPicker.h:41
DtLineRenderer * myLineRenderer
Definition: DtWidgetPicker.h:138
DtPixelBufferObject * myPixelBuffer
Definition: DtWidgetPicker.h:135
An object which wraps a OpenGL texture object.
Definition: DtTextureObject.h:18
The triangle renderer.
Definition: DtTriangleRenderer.h:29
The overlay resource provider class provies resources for overlay drawing classes.
Definition: DtOverlayResourceProvider.h:23
#define DT_DLL_VRVGRAPHICS
Contains DLL export macros.
Definition: vrvGraphics.h:19
A class which represents a single line segment.
Definition: DtLineSegment.h:21
A flyweight class for controlling a triangle owned by the triangle renderer.
Definition: DtTriangleRenderer.h:98
Definition: DtWidgetPicker.h:48
The DtPickableLine is a pickable widget that matches the LineSegment interface.
Definition: DtPickableWidget.h:123
An object which wraps an OpenGL frame buffer object and allows rendering To a texture.
Definition: DtFrameBufferObject.h:16
WidgetIdMap myWidgetIds
Definition: DtWidgetPicker.h:150
DtTriangleRenderer * myTriangleRenderer
Definition: DtWidgetPicker.h:139
Definition: DtWidgetPicker.h:42
Definition: DtWidgetPicker.h:52
boost::signal< void()> signal_destroyed
Boost signal sent during widget picker destruction. Called from destructor.
Definition: DtWidgetPicker.h:104
A single 2D quadrilateral.
Definition: DtQuad.h:24
Definition: DtWidgetPicker.h:45
MousePickRecord myPendingEvent
Definition: DtWidgetPicker.h:145
int y
Definition: DtWidgetPicker.h:56
Definition: DtWidgetPicker.h:39
A class responsible for rendering lines.
Definition: DtLineRenderer.h:25
Definition: DtWidgetPicker.h:46
int myDesiredWidth
Definition: DtWidgetPicker.h:141
DtFrameBufferObject * myFrameBuffer
Definition: DtWidgetPicker.h:134
DtQuadRenderer * myQuadRenderer
Definition: DtWidgetPicker.h:137
int myDesiredHeight
Definition: DtWidgetPicker.h:142
The picker class which allocates and does picking operatings on widgets.
Definition: DtWidgetPicker.h:32
MousePickType
Definition: DtWidgetPicker.h:36

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)