VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOverlaySegmentedLineModelInstance.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 
14 
19 
20 #include <vrvMath/DtVector2.h>
21 #include <vrvMath/DtVector4.h>
22 
24 #include <vrvUtil/DtUnicode.h>
25 #include <vrvUtil/DtQuat.h>
26 
27 namespace makVrv
28 {
29  class DtSegmentedLineInterface;
30  class DtChannelManager;
31  class DtChannel;
32  class DtTextureInterface;
33 
38  {
39  public:
41  {
42  float width;
43  int group;
44  bool startArrow;
45  bool endArrow;
46  bool lightning;
47  unsigned int stipplePattern;
49  DtVector4<float> color[2];
50 
55  };
56 
58  typedef std::vector<SegmentAttributes> SegmentAttributesVector;
59 
60  typedef std::vector<DtVector> Points;
61 
62  public:
63 
66 
69 
70  private:
71 
74 
77 
80 
81  public:
82 
84  virtual void setPosition( int vtx, const DtVector& position );
85 
87  virtual DtVector position(int vtx = 0) const;
88 
90  virtual void removePosition( int vtx );
91 
93  virtual void setWidth(float width);
94 
96  virtual void setMeasurementTextFont(const std::string& fontFile, float pointSize);
97 
99  virtual void setMeasurementTextColor(float r, float g, float b, float a);
100 
102  virtual void setMeasurementTextBackgroundColor(float r, float g, float b, float a);
103 
105  virtual void setColor(float r, float g, float b, float a);
106 
107  virtual void setIsScreenSpaceBasedRenderingForMeasurementTextEnabled(bool);
108 
109  virtual void setAreSmartDistancesForMeasurementTextEnabled(bool);
110 
112  virtual void setMeasurementTextOffset(int x, int y);
113 
115  virtual void setStipplePattern( unsigned int pattern, int repeatFactor );
116 
119  virtual void setStyleSegments(const std::vector<double>& segmentPercentages);
120 
122  virtual void setSegmentColor(unsigned int segmentIndex,
123  float r, float g, float b, float a);
124 
126  virtual void setSegmentLightningStyle(unsigned int segmentIndex,
127  bool enableLightningStyle);
128 
130  virtual void setSegmentStartArrow(unsigned int segmentIndex,
131  bool enableArrow);
132 
134  virtual void setSegmentEndArrow(unsigned int segmentIndex,
135  bool enableArrow);
136 
139  virtual void setSegmentStipplePattern(unsigned int segmentIndex,
140  unsigned int stipplePattern, int repeatFactor);
141 
143  virtual void setSegmentWidth(unsigned int segmentIndex, double width);
144 
147  virtual void setSegmentStartColor( unsigned int segmentIndex, float r,
148  float g, float b, float a );
149 
152  virtual void setSegmentEndColor( unsigned int segmentIndex, float r,
153  float g, float b, float a );
154 
157  virtual void setModelSet( DtModelSetId modelSet );
158 
162  virtual bool realize(const DtModelDefinition& definition);
163 
165  virtual void setVisible(bool isVisible);
166 
168  virtual void setEventsEnabled( bool enabled, unsigned long long userData );
169 
171  virtual void setEventWidth(float width);
172 
174  virtual void update();
175 
178  // @{
179  virtual void setIsSuppressMagneticNorthNotationEnabled(bool isEnabled);
180  virtual bool isSuppressMagneticNorthNotationEnabled() const;
181  // @}
182 
185  // @{
186  virtual void setNorthUnit(DtSharedDisplayUnitsSettings::NorthUnits unit);
187  virtual DtSharedDisplayUnitsSettings::NorthUnits northUnit() const;
188  // @}
189 
192  // @{
193  virtual void setNorthUnitNotation(const DtUnicode& notation);
194  virtual DtUnicode northUnitNotation() const;
195  // @}
196 
199  // @{
200  virtual void setDistanceUnit(DtSharedDisplayUnitsSettings::DistanceUnits unit);
201  virtual DtSharedDisplayUnitsSettings::DistanceUnits distanceUnit() const;
202  // @}
203 
206  // @{
207  virtual void setDistanceUnitNotation(const DtUnicode& notation);
208  virtual DtUnicode distanceUnitNotation() const;
209  // @}
210 
213  // @{
214  virtual void setDistanceDecimals(unsigned int decimals);
215  virtual unsigned int distanceDecimals() const;
216  // @}
217 
220  // @{
221  virtual void setOrientationUnit(DtSharedDisplayUnitsSettings::OrientationUnits unit);
222  virtual DtSharedDisplayUnitsSettings::OrientationUnits orientationUnit() const;
223  // @}
224 
227  // @{
228  virtual void setOrientationUnitNotation(const DtUnicode& notation);
229  virtual DtUnicode orientationUnitNotation() const;
230  // @}
231 
234  // @{
235  virtual void setOrientationDecimals(unsigned int decimals);
236  virtual unsigned int orientationDecimals() const;
237  // @}
238 
240  virtual void setRotation(const DtQuat& quat);
241 
243  virtual void setArrowSize(double);
244 
246  virtual void setLineStyle(vrvTacticalGraphicUtilities::LineStyle);
247 
249  virtual void setArrowStyle(vrvTacticalGraphicUtilities::ArrowStyle);
250 
256  virtual void setTexture( std::string& textureFileName );
257 
260  virtual void setTexture( DtTextureInterface* textureInterface );
262 
264  virtual bool isTextured() const;
265 
268  virtual void setFixedWidthSizing(bool);
269 
272  virtual void setGroup( int );
273 
277  virtual void setChannelInstance(DtChannel*, DtModelSetId modelSet);
278 
280  virtual const std::vector<DtVector>& points() const;
281 
283  virtual void setPoints(const std::vector<DtVector>&);
284 
286  virtual const SegmentAttributesVector& segmentInformation() const;
287 
291  virtual void setSegmentInformation(const SegmentAttributesVector&);
292 
294  virtual void updateGeometry();
295 
300  virtual bool isMeasurementTextRenderingEnabled() const;
301  virtual void setIsMeasurementTextRenderingEnabled(bool isMeasurementTextRenderingEnabled);
302 
304  virtual void setOverlay(unsigned int overlayId);
305 
307  virtual void deleteSegmentLabels();
308 
309  protected:
311  virtual void updateSegmentsWithArrows(const std::vector<DtVector>& pts,
312  std::vector<DtVector>& drawPoints, std::vector<DtVector>& twodOffsets);
313 
314  protected:
315 
317  virtual void createLineIfNecessary();
318 
320  virtual void updateSegments();
321 
323  virtual void updateLabels();
324 
326  virtual void createSegmentLabels();
327 
329  virtual void updateGeometryForLineStyle();
330 
332  virtual void resizeSegmentAttributes( int size );
333 
335  virtual void set3DVertexPosition( unsigned int index, double x, double y,
336  double z );
337 
339  virtual void set3DPositionAux( double x, double y, double z,
340  float tempPackedCoords[4] );
341 
343  virtual void channelUpdated(const DtTacticalGraphicModelUpdaterManager::ChannelUpdateData&);
344 
346  void updatePointsForLineStyle(const std::vector<DtVector>&, std::vector<DtVector>& drawPoints,
347  std::vector<DtVector>& twodOffsets, std::vector<int>& segmentsToErase) const;
348 
350  virtual void slot_onCoordinateSystemChanged();
351 
352  protected:
354 
357 
358  // These are the points as set by the model
362 
366  bool myVisible;
367 
373 
379 
381  float myWidth;
382  unsigned int myStipplePattern;
384  std::vector<double> mySegmentPercentages;
386 
390 
393 
394  double myArrowSize;
396 
398 
401  std::vector<int> mySegmentsToErase;
402 
404  int myGroup;
405 
406  std::vector<DtQuadProxyInterface*> myLabelBackgrounds;
407  std::vector<DtTextProxyInterface*> myLabels;
408  unsigned int myOverlay;
409 
411 
415 
419 
422  };
423 }
DtSharedDisplayUnitsSettings::DistanceUnits myDistanceUnitToUse
Definition: DtOverlaySegmentedLineModelInstance.h:416
bool myIsScreenSpaceBasedRenderingForMeasurementTextEnabled
Definition: DtOverlaySegmentedLineModelInstance.h:370
Points myVertices
Definition: DtOverlaySegmentedLineModelInstance.h:360
The base class for all model instances.
Definition: DtModelInstance.h:41
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
std::vector< double > mySegmentPercentages
Definition: DtOverlaySegmentedLineModelInstance.h:384
DtVector4< float > myMeasurementTextBackgroundColor
Definition: DtOverlaySegmentedLineModelInstance.h:378
DtSharedDisplayUnitsSettings::NorthUnits myNorthToUse
Definition: DtOverlaySegmentedLineModelInstance.h:420
float width
Definition: DtOverlaySegmentedLineModelInstance.h:42
DtQuat myRotation
Definition: DtOverlaySegmentedLineModelInstance.h:392
double myArrowSize
Definition: DtOverlaySegmentedLineModelInstance.h:394
Points myPoints
Definition: DtOverlaySegmentedLineModelInstance.h:359
DtModelSetId myModelSet
Definition: DtOverlaySegmentedLineModelInstance.h:364
2 dimensional vector
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtVector4< float > myColor
Definition: DtOverlaySegmentedLineModelInstance.h:380
unsigned int myStipplePattern
Definition: DtOverlaySegmentedLineModelInstance.h:382
Model instance to draw a 3D line with styleable segments onto the 2D overlay.
Definition: DtOverlaySegmentedLineModelInstance.h:37
voidpf void uLong size
Definition: ioapi.h:39
float myEventWidth
Definition: DtOverlaySegmentedLineModelInstance.h:385
double myMinimumForMeasurementTextMaximumWorldWidth
Definition: DtOverlaySegmentedLineModelInstance.h:375
DtSignalConnectionManager myConnections
Definition: DtOverlaySegmentedLineModelInstance.h:355
bool myVisible
Definition: DtOverlaySegmentedLineModelInstance.h:366
NorthUnits
Enumeration of the different north units.
Definition: DtDisplayUnitsSettingsRecord.h:151
Contains makVrv:DtTacticalGraphicModelUpdaterManager.
Interface for a texture. Used to pass in a texture to vrvGraphics.
Definition: DtTextureInterface.h:24
bool myFixedWidthSizing
Definition: DtOverlaySegmentedLineModelInstance.h:400
DtTextureInterface * myTexture
Definition: DtOverlaySegmentedLineModelInstance.h:397
4 dimensional vector
int myMeasurementTextOffsetX
Definition: DtOverlaySegmentedLineModelInstance.h:371
LineStyle
Default line Styles.
Definition: DtTacticalGraphicUtilities.h:28
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
Contains makVrv::DtOsgModelInstance class.
vrvTacticalGraphicUtilities::LineStyle myLineStyle
Definition: DtOverlaySegmentedLineModelInstance.h:399
DistanceUnits
Enumeration of the different distance units.
Definition: DtDisplayUnitsSettingsRecord.h:57
DtVector myOrigin
Definition: DtOverlaySegmentedLineModelInstance.h:391
An interface for a convex polygon drawn using lines.
Definition: DtSegmentedLineInterface.h:25
Contains the DtSharedDisplayUnitsSettings class declaration.
The abstract Channel Class.
Definition: DtChannel.h:35
DtCoordinateSystem * myCoordinateSystem
Definition: DtOverlaySegmentedLineModelInstance.h:356
bool myGeometryDirty
Definition: DtOverlaySegmentedLineModelInstance.h:387
Structure used to supply data to callback. Provided as structure as contents could change over time...
Definition: DtTacticalGraphicModelUpdaterManager.h:37
int myMeasurementTextOffsetY
Definition: DtOverlaySegmentedLineModelInstance.h:372
bool endArrow
Definition: DtOverlaySegmentedLineModelInstance.h:45
unsigned int myDistanceDecimalsToUse
Definition: DtOverlaySegmentedLineModelInstance.h:418
int startArrowSegments
Definition: DtOverlaySegmentedLineModelInstance.h:54
vrvTacticalGraphicUtilities::ArrowStyle myArrowStyle
Definition: DtOverlaySegmentedLineModelInstance.h:395
bool myAreSmartDistancesForMeasurementTextEnabled
Definition: DtOverlaySegmentedLineModelInstance.h:369
ArrowStyle
Definition: DtTacticalGraphicUtilities.h:46
DtSharedDisplayUnitsSettings::OrientationUnits myOrientationUnitToUse
Definition: DtOverlaySegmentedLineModelInstance.h:412
DtUnicode myOrientationUnitNotation
Definition: DtOverlaySegmentedLineModelInstance.h:413
unsigned int myOverlay
Definition: DtOverlaySegmentedLineModelInstance.h:408
std::string myMeasurementTextFontFile
Definition: DtOverlaySegmentedLineModelInstance.h:374
bool startArrow
Definition: DtOverlaySegmentedLineModelInstance.h:44
std::vector< int > mySegmentsToErase
Definition: DtOverlaySegmentedLineModelInstance.h:401
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtQuat class.
Contains the makVrv::DtQuadProxyInterface class declaration.
bool myIsMeasurementTextRenderingEnabled
Definition: DtOverlaySegmentedLineModelInstance.h:368
Points my2DOffsets
Definition: DtOverlaySegmentedLineModelInstance.h:361
DtUnicode myNorthNotation
Definition: DtOverlaySegmentedLineModelInstance.h:421
int myStippleRepeat
Definition: DtOverlaySegmentedLineModelInstance.h:383
bool lightning
Definition: DtOverlaySegmentedLineModelInstance.h:46
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
int group
Definition: DtOverlaySegmentedLineModelInstance.h:43
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
OrientationUnits
Enumeration of the different orientation units.
Definition: DtDisplayUnitsSettingsRecord.h:102
unsigned int stipplePattern
Definition: DtOverlaySegmentedLineModelInstance.h:47
int myGroup
Definition: DtOverlaySegmentedLineModelInstance.h:404
std::vector< DtQuadProxyInterface * > myLabelBackgrounds
Definition: DtOverlaySegmentedLineModelInstance.h:406
int endArrowSegments
Number of start and end arrow segments. Calculated during geometry creation.
Definition: DtOverlaySegmentedLineModelInstance.h:53
std::vector< DtTextProxyInterface * > myLabels
Definition: DtOverlaySegmentedLineModelInstance.h:407
bool mySuppressMagneticNorthNotationEnabled
Definition: DtOverlaySegmentedLineModelInstance.h:410
unsigned int myOrientationDecimalsToUse
Definition: DtOverlaySegmentedLineModelInstance.h:414
Base class to provide boost signal/slot management.
float myMeasurementTextFontPointSize
Definition: DtOverlaySegmentedLineModelInstance.h:376
std::vector< SegmentAttributes > SegmentAttributesVector
Vector of segment information.
Definition: DtOverlaySegmentedLineModelInstance.h:58
Definition: DtOverlaySegmentedLineModelInstance.h:40
Contains makVrv::DtTextProxyInterface class declaration.
DtChannel * myChannelInstance
Definition: DtOverlaySegmentedLineModelInstance.h:403
std::vector< DtVector > Points
Definition: DtOverlaySegmentedLineModelInstance.h:60
DtVector4< float > myMeasurementTextColor
Definition: DtOverlaySegmentedLineModelInstance.h:377
bool myEventsEnabled
Definition: DtOverlaySegmentedLineModelInstance.h:389
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
DtSegmentedLineInterface * myLineInterface
Definition: DtOverlaySegmentedLineModelInstance.h:365
A utility Quaternion class.
Definition: DtQuat.h:19
bool mySegmentsDirty
Definition: DtOverlaySegmentedLineModelInstance.h:388
int stippleRepeat
Definition: DtOverlaySegmentedLineModelInstance.h:48
DtModelSetId
Definition: DtModelSetEnums.h:19
SegmentAttributesVector mySegmentAttributes
Definition: DtOverlaySegmentedLineModelInstance.h:363
float myWidth
Definition: DtOverlaySegmentedLineModelInstance.h:381
DtUniqueID mySceneObjectId
Definition: DtOverlaySegmentedLineModelInstance.h:353
DtUnicode myDistanceUnitNotation
Definition: DtOverlaySegmentedLineModelInstance.h:417

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)