VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rangeRingVisualizer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2013 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
15 #include <vrvUtil/DtUnicode.h>
17 #include <vrfGuiCore/DtAttachableUpdaterWithLevelOrientationAgent.hpp>
19 #include <matrix/vlVector.h>
21 #include <vrfutil/rwUUID.h>
22 
23 #include <boost/signals2.hpp>
24 
25 namespace makVrf
26 {
27  #define DtRangeRingKey(name, index)( DtString(name) + DtString("_") + DtString(index))
28 
29  class DtCommonStateListenerExtensions;
30 
34  {
35  protected:
36  enum ShowFlags
37  {
38  ShowNone = 0,
39  ShowAll = 0x00000001,
40  ShowPhysicalFootprintOnly = 0x00000002
41  };
42 
44  {
46  virtual ~RingStructDrawingData() {};
47  };
48 
49  struct RingStruct
50  {
51  RingStruct() : myExtensionIndex(0), myVisible(true), myRange(0.), myDrawingData(0)
52  {
53  myColor[0] = myColor[1] = myColor[2] = myColor[3] = 0.;
54  };
55 
56  virtual ~RingStruct() {};
57 
58  int myExtensionIndex;
59  bool myVisible;
60  std::vector<double> myWedgeSizes;
61  float myColor[4];
62  double myRange;
65  std::string myKey;
66 
68  };
69 
70  public:
71 
74  makVrv::DtStateListener& listener, makVrv::DtSceneObjectAgent*, makVrv::DtModelSetId modelSet );
75 
77  virtual ~DtRangeRingVisualizer();
78 
79  //initialize method called in the creator class
80  virtual void initialize_settings();
81 
82  virtual void setModelDefinitionForAgents();
83 
84  //override of parent method - destroys all subordinate visualizers if turned off
85  virtual void implementVisibility(bool visible) override;
86 
87  virtual void destroyModelAgents() override;
88 
89  protected:
90  virtual std::string rangeRingKey(const DtRangeItem& rangeItem, int extensionIndex) const;
91  virtual void initialize() override;
92 
93  virtual void getColor(unsigned int color, float& r, float& g, float& b, float& a) const;
94 
95  virtual void createModelAgents();
96 
97  virtual void tryToDraw();
98 
99  virtual void updateRangeRingsCount(ShowFlags flags = ShowAll);
100 
102  virtual void setRangeRingsScale(float);
103 
105  virtual void updateRangeRingInformation(RingStruct&);
106  virtual void updateRangeRingsInformation();
107 
108  virtual void setRangeRingsGeometry();
109  virtual void setRangeRingsColors();
110 
111  virtual void slot_entityRangeRingsEnabled(const DtUUID&, int setting);
112  virtual void slot_selectionDisplayAvailableChangedFor(int setting);
113 
115  virtual void slot_setSelected(bool) override;
116  virtual void displayScaleChanged(double oldScale, double newScale);
117 
118  protected:
120 
122  virtual void updateScaleOfRings() = 0;
123 
124  //Creates a new set of ring visualizers, populates a struct and adds it to myRangeRings
125  virtual void createRing(const DtRangeItem&, int extensionIndex) = 0;
126 
127  //After a ring is created, update the ring with options specific to this visualizer
128  virtual void updateRingOptions(RingStruct&) = 0;
129 
131  virtual void destroyOuterRing(RingStruct&) = 0;
132 
134  virtual void setRangeRingGeometry(RingStruct&) = 0;
135 
137  virtual void setRangeRingColors(RingStruct&) = 0;
138 
139  protected:
140  typedef std::map<std::string, RingStruct> RangeRings;
142 
144  float myScale;
145 
147 
148  typedef std::map<double, std::set<std::string> > RangeRingRanges;
150 
151  typedef std::map<int, makVrv::DtUnicode> LabelText;
153 
155  boost::signals2::scoped_connection myTurnOffIfSelectedConnection;
156  };
157 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtCommonStateListenerExtensions * myExtensions
Definition: rangeRingVisualizer.h:143
RingStruct()
Definition: rangeRingVisualizer.h:51
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
A visualizer for displaying range rings.
Definition: rangeRingVisualizer.h:33
bool myVisible
Definition: rangeRingVisualizer.h:59
RangeRings myRangeRings
Definition: rangeRingVisualizer.h:141
Definition: rangeRingVisualizer.h:49
std::map< std::string, RingStruct > RangeRings
Definition: rangeRingVisualizer.h:140
Contains the DtUnitConverterCollection class declaration.
Contains the DtUUID class declaration.
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
std::vector< double > myWedgeSizes
Definition: rangeRingVisualizer.h:60
Definition: entityStateListenerExtensions.h:36
std::string myKey
Definition: rangeRingVisualizer.h:65
std::map< int, makVrv::DtUnicode > LabelText
Definition: rangeRingVisualizer.h:151
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
Definition: rangeItem.h:149
bool mySettingsInitialized
Definition: rangeRingVisualizer.h:154
boost::signals2::scoped_connection myTurnOffIfSelectedConnection
Definition: rangeRingVisualizer.h:155
makVrv::DtUnicode myLabelText
Definition: rangeRingVisualizer.h:63
Contains makVrv:DtStateVisualizer class.
ShowFlags
Definition: rangeRingVisualizer.h:36
double myRange
Definition: rangeRingVisualizer.h:62
std::map< double, std::set< std::string > > RangeRingRanges
Definition: rangeRingVisualizer.h:148
virtual ~RingStruct()
Definition: rangeRingVisualizer.h:56
RingStructDrawingData * myDrawingData
Definition: rangeRingVisualizer.h:67
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:30
bool myEntityRangeRingsEnabled
Definition: rangeRingVisualizer.h:146
Base class to provide boost signal/slot management.
DtVector myOffsetPosition
Definition: rangeRingVisualizer.h:64
virtual ~RingStructDrawingData()
Definition: rangeRingVisualizer.h:46
DtModelSetId
Definition: DtModelSetEnums.h:19
LabelText myLabelText
Definition: rangeRingVisualizer.h:152
Definition: rangeRingVisualizer.h:43
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
RingStructDrawingData()
Definition: rangeRingVisualizer.h:45
float myScale
Definition: rangeRingVisualizer.h:144
RangeRingRanges myRangeRingRanges
Definition: rangeRingVisualizer.h:149

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)