VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOverlayPolygonModelInstance.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
17 
19 #include <vrvUtil/DtQuat.h>
20 
21 #include <vrvMath/DtVector4.h>
22 
23 #include <matrix/coordTransform.h>
24 
25 #include <vector>
26 
27 namespace osg
28 {
29  class Texture;
30 }
31 
32 namespace makVrv
33 {
34  class DtPolygonInterface;
35  class DtFilledPolygonInterface;
36  class DtOutlinedPolygonInterface;
37  class DtTexturedOutlinedPolygonInterface;
38  class DtDecalProjectorPolygonInterface;
39  class DtTextureInterface;
40  class DtQuadProxy;
41  class DtChannelManager;
42  class DtChannel;
43  class DtCoordinateSystem;
44  class DtTextureObject;
45  enum class DtModelSetId;
46 
54  {
55  public:
56 
57  struct VertexData
58  {
60  : my3DPos()
61  , my3DOffset()
62  {
63  my2DLength = 0.0f;
64  my2DOffset[0] = 0.0f;
65  my2DOffset[1] = 0.0f;
66  }
67 
70  float my2DLength;
71  float my2DOffset[2];
72  };
73 
74  using VertexList = std::vector<VertexData>;
75 
76  public:
77 
80 
83 
86 
89 
92 
93  public:
94 
97  virtual void setModelSet( DtModelSetId );
98 
100  virtual void setPosition( int vtx, const DtVector& position );
101 
103  virtual void setRotation(const DtQuat& quat);
104 
106  virtual void setOrigin(const DtVector&);
107 
110  virtual void setGroup( int );
111 
113  virtual DtVector origin() const;
114 
116  virtual void addPoint(const DtVector& point,int index);
117 
119  virtual void removePoint(int index);
120 
122  virtual void set2dOffset(int index, float x, float y);
123 
126  virtual void set3dDirection2dLength( int index, float x, float y, float z,
127  float len );
128 
130  virtual void setColor(float r,float g,float b,float a);
131 
136  virtual void setFillTexturePath(const std::string& texturePath);
137 
142  virtual void setOutlineTexture(const std::string& texturePath, int width=-1, int height = -1);
143 
145  virtual void setSolidFillCenter(bool);
146 
148  virtual void setStipplePattern(unsigned int stipplePattern);
149 
151  virtual void setWidth(float width);
152 
154  virtual void setEventWidth(float width);
155 
157  virtual void setVisible(bool isVisible);
158 
160  virtual void setPickable(bool enabled);
161 
163  virtual void setEventsEnabled(bool, unsigned long long userData);
164 
166  bool eventsEnabled() const;
167 
169  virtual void setFill(bool);
170 
172  virtual void setInsideColor( float r, float g, float b, float a );
173 
175  virtual void getInsideColor(float& r, float& g, float& b, float& a);
176 
178  virtual void setOutsideColor( float r, float g, float b, float a );
179 
181  virtual void getOutsideColor(float& r, float& g, float& b, float& a);
182 
184  virtual int pointCount() const;
185 
187  virtual DtVector point(int) const;
188 
190  virtual void setFillPattern(const std::vector<unsigned int>& pattern);
191 
197  virtual void setFillPatternFrequency(float frequency);
198 
200  virtual float fillPatternFrequency() const;
201 
203  virtual void setOutline(bool);
204 
206  virtual void setEnableDecalProjector(bool enable);
207 
209  virtual bool enableDecalProjector() const;
210 
213  virtual void setIsStippleUsedForFill(bool enable);
214 
217  virtual bool isStippleUsedForFill() const;
218 
222  virtual void setIsTextureFillFittedToAreaEnabled(bool isTextureFillFittedToAreaEnabled);
223 
227  virtual bool isTextureFillFittedToAreaEnabled() const;
228 
232  virtual void setChannelInstance(DtChannel*, DtModelSetId modelSet);
233 
235  virtual const VertexList& vertexList() const;
236 
238  virtual void setPoints(const std::vector<DtVector>& points);
239 
241  virtual void setVertexList(const VertexList&);
242 
244  virtual const std::vector<DtVector>& points() const;
245 
247  virtual void updateGeometry();
248 
249  protected:
250 
252  virtual void createPolygonIfNecessary();
253 
255  virtual void updateColors();
256 
259  virtual void computeTopoTransform(DtCoordTransform& geocToTopo,
260  DtVector& geocentricOrigin) const;
261 
264  virtual void updateTextureCoordinates(DtFilledPolygonInterface* polygon);
265 
267  virtual void translateAndUpdateVertex( unsigned int index, const VertexData& vert, DtPolygonInterface* polygon);
268 
270  virtual void channelUpdated(const DtTacticalGraphicModelUpdaterManager::ChannelUpdateData&);
271 
273  virtual std::vector<DtVector> topographicVertices() const;
274 
276  virtual void slot_coordinateSystemChanged();
277 
278  virtual void deletePolygons();
279 
280  protected:
281 
283 
285 
286  // Flat list of points. Valid after call to updateGeometry
288 
290  {
291  DtPolygonInterface* polygon = nullptr;
292 
293  DtFilledPolygonInterface* filledPolygonInterface = nullptr;
294  DtOutlinedPolygonInterface* outlinedPolygonInterface = nullptr;
295  DtTexturedOutlinedPolygonInterface* texturedOutlinedPolygonInterface = nullptr;
296  DtDecalProjectorPolygonInterface* decalProjecterPolygonInterface = nullptr;
297  };
298 
301 
304 
306 
307  bool myFilled;
309 
310  float myWidth;
313  unsigned int myStipplePattern;
315  unsigned long long myUserData;
316 
319  bool myOutline;
322 
325 
327  int myGroup;
328 
331  DtCoordinateSystem* myCoordinateSystem = nullptr;
332  };
333 
338  {
339  public:
340 
342  static void registerCreator(DtDe& de, DtModelInstanceCreator* creator);
343 
346 
349 
351  virtual DtModelInstance* create(DtDe& de);
352 
353  };
354 }
DtSignalConnectionManager myConnections
Definition: DtOverlayPolygonModelInstance.h:284
The base class for all model instances.
Definition: DtModelInstance.h:41
VertexList myVertices
Definition: DtOverlayPolygonModelInstance.h:282
A convex polygon drawn using lines.
Definition: DtOutlinedPolygonInterface.h:25
unsigned long long myUserData
Definition: DtOverlayPolygonModelInstance.h:315
A variable vertex convex filled 2D polygon.
Definition: DtFilledPolygonInterface.h:26
DtModelSetId myModelSet
Definition: DtOverlayPolygonModelInstance.h:314
bool myVisibleFlag
Definition: DtOverlayPolygonModelInstance.h:318
bool myIsTextureFillFittedToAreaEnabled
Definition: DtOverlayPolygonModelInstance.h:305
voidpf uLong int origin
Definition: ioapi.h:42
DtVector4< float > myOuterColor
Definition: DtOverlayPolygonModelInstance.h:312
float myWidth
Definition: DtOverlayPolygonModelInstance.h:310
Contains makVrv:DtTacticalGraphicModelUpdaterManager.
Definition: DtOverlayPolygonModelInstance.h:57
DtVector4< float > myInnerColor
Definition: DtOverlayPolygonModelInstance.h:311
Interface for a texture. Used to pass in a texture to vrvGraphics.
Definition: DtTextureInterface.h:24
bool myEventsEnabled
Definition: DtOverlayPolygonModelInstance.h:317
4 dimensional vector
An abstract interface for a polygon primitive.
Definition: DtPolygonInterface.h:21
bool myEnableDecalProjector
Definition: DtOverlayPolygonModelInstance.h:321
std::vector< DtVector > DtVerticesVector
Definition: DtTacticalGraphicUtilities.h:25
float my2DLength
Definition: DtOverlayPolygonModelInstance.h:70
DtPolygonWithInterfaces myPolygonOne
Definition: DtOverlayPolygonModelInstance.h:299
DtVector my3DOffset
Definition: DtOverlayPolygonModelInstance.h:69
DtVector my3DPos
Definition: DtOverlayPolygonModelInstance.h:68
int myGroup
Definition: DtOverlayPolygonModelInstance.h:327
The abstract Channel Class.
Definition: DtChannel.h:35
Structure used to supply data to callback. Provided as structure as contents could change over time...
Definition: DtTacticalGraphicModelUpdaterManager.h:37
DtTextureInterface * myOutlineTexture
Definition: DtOverlayPolygonModelInstance.h:303
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtPolygonWithInterfaces myPolygonTwo
Definition: DtOverlayPolygonModelInstance.h:300
The polymorphic creator for the DtModelInstance.
Definition: DtModelInstance.h:153
A Creator for the makVrv::DtOsgSimpleModelInstance class.
Definition: DtOverlayPolygonModelInstance.h:336
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
float myFillPatternFrequency
Definition: DtOverlayPolygonModelInstance.h:308
Contains makVrv::DtQuat class.
A convex polygon drawn using lines.
Definition: DtDecalProjectorPolygonInterface.h:25
bool mySolidFillCenter
Definition: DtOverlayPolygonModelInstance.h:320
unsigned int myStipplePattern
Definition: DtOverlayPolygonModelInstance.h:313
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
bool myOutline
Definition: DtOverlayPolygonModelInstance.h:319
Contains makVrv::DtModelInstance class.
Base class to provide boost signal/slot management.
std::vector< VertexData > VertexList
Definition: DtOverlayPolygonModelInstance.h:74
bool myFilled
Definition: DtOverlayPolygonModelInstance.h:307
DtVector myOrigin
Definition: DtOverlayPolygonModelInstance.h:323
Contains makVrv::DtTextProxyInterface class declaration.
VertexData()
Definition: DtOverlayPolygonModelInstance.h:59
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
A utility Quaternion class.
Definition: DtQuat.h:19
Draw a polygonal line with a texture.
Definition: DtTexturedOutlinedPolygonInterface.h:25
DtModelSetId
Definition: DtModelSetEnums.h:19
A model instance class which allows the drawing of a polygon (supporting textures) on an overlay...
Definition: DtOverlayPolygonModelInstance.h:53
DtChannel * myChannelInstance
Definition: DtOverlayPolygonModelInstance.h:326
DtQuat myRotation
Definition: DtOverlayPolygonModelInstance.h:324
DtTextureInterface * myFillTexture
Definition: DtOverlayPolygonModelInstance.h:302
Definition: DtOverlayPolygonModelInstance.h:289
vrvTacticalGraphicUtilities::DtVerticesVector myPoints
Definition: DtOverlayPolygonModelInstance.h:287
Contains DLL export macros.

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)