VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
copyObject.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
13 
14 #pragma once
15 
16 #include <vrfGuiCore/vrfGuiCore.h>
20 #include <vrfutil/rwUUID.h>
21 
22 #include <vrvCore/DtUniqueID.h>
24 
25 #include <matrix/vlVector.h>
26 #include <matrix/geodeticCoord.h>
27 
28 namespace makVrv
29 {
30  class DtDe;
31 }
32 
33 namespace makVrf
34 {
35  class DtStateData;
36  class DtGuiLocalObject;
37 
39 
41  {
42  public:
44  DtStreamString(const std::string&);
45  DtStreamString(std::string*);
46  DtStreamString(int size, const char* buf);
47 
48  virtual void write(std::ostringstream&) const;
49  virtual void read(std::istringstream&);
50 
51  const std::string& value() const
52  {
53  return myValue;
54  }
55 
56  protected:
57  std::string myValue;
58  std::string* myInput;
59  };
60 
61  DT_DLL_VRFGUICORE std::ostringstream& operator<<(std::ostringstream&, const DtStreamString&);
62  DT_DLL_VRFGUICORE std::istringstream& operator>>(std::istringstream&, DtStreamString&);
63 
64  DT_DLL_VRFGUICORE std::ostringstream& operator<<(std::ostringstream&, const DtVector&);
65  DT_DLL_VRFGUICORE std::istringstream& operator>>(std::istringstream&, DtVector&);
66 
68 
69  template <typename Type>
71  {
72  public:
74  : myValue(t)
75  , myInput(0)
76  {
77  }
78 
79  DtStreamNumber(Type* t)
80  : myInput(t)
81  {
82  }
83 
84  void write(std::ostringstream& s) const
85  {
86  s << myValue << " ";
87  }
88 
89  void read(std::istringstream& s)
90  {
91  s >> myValue;
92  s.ignore();
93 
94  if (myInput)
95  {
96  *myInput = myValue;
97  }
98  }
99 
100  Type value() const
101  {
102  return myValue;
103  }
104 
105  protected:
106  Type myValue;
107  Type* myInput;
108  };
109 
110  template <typename Type> std::ostringstream& operator<<(std::ostringstream& s, const DtStreamNumber<Type>& num)
111  {
112  num.write(s);
113 
114  return s;
115  }
116 
117  template <typename Type> std::istringstream& operator>>(std::istringstream& s, DtStreamNumber<Type>& num)
118  {
119  num.read(s);
120 
121  return s;
122  }
123 
125  {
126  typedef std::vector<DtGeodeticCoord> CopyOffsets;
127 
128  public:
130  virtual ~DtCopyObject();
131 
132  public:
134  {
135  DtPasteNewName = 0x00000001,
136  DtPasteAppearance = 0x00000002,
137  DtPasteHeading = 0x00000004,
138  DtPasteEngagement = 0x00000008,
139  DtPastePlan = 0x00000010,
140  DtPasteAboveSeaLevel = 0x00000020,
141  DtPasteAboveTerrain = 0x00000040,
142  DtPasteFormation = 0x00000080,
143  DtPasteStateProperties = 0x00000100,
144 
145  DtAllPasteFlags = DtPasteNewName | DtPasteAppearance | DtPasteHeading | DtPasteEngagement | DtPastePlan |
146  DtPasteAboveTerrain | DtPasteStateProperties
147  };
148 
149  public:
151  virtual void copy(makVrv::DtUniqueID);
152 
155  virtual void read(const std::string& buf);
156 
157  std::shared_ptr<DtGuiLocalObject> readableStateData() { return myReadableStateData; };
158 
160  virtual void cancel();
161 
162  const std::string& name() const
163  {
164  return myName;
165  }
166 
167  const DtUUID& uuid() const
168  {
169  return myUUID;
170  }
171 
173  virtual std::string copyPendingMessage() const;
174 
176  virtual std::string pastePendingMessage() const;
177 
179  virtual void setAltitudeClampType(DtAltitudeClampType);
180  DtAltitudeClampType altitudeClampType() const;
181 
182  void setType(int t)
183  {
184  myType = t;
185  }
186 
187  int type() const
188  {
189  return myType;
190  }
191 
192  void setBuffer(const std::string& b)
193  {
194  myBuffer = b;
195  }
196 
197  const std::string& buffer() const
198  {
199  return myBuffer;
200  }
201 
204  {
205  return 0;
206  }
207 
209  virtual bool preserveOffsets() const;
210 
213  virtual void multipleObjectsPasting();
214 
215  protected:
218  virtual void write(std::ostringstream& str, DtSimObjectReference);
219 
221  virtual void writePlanData(std::ostringstream& str, DtSimObjectReference);
222 
225  virtual void createReadableStateData(std::istringstream&);
226 
229  virtual void readAdditionalData(std::istringstream& str);
230 
232  virtual void readPlanData(std::istringstream& str);
233 
235  virtual void checkCopyComplete();
236 
239  virtual bool copyOperationsPending() const;
240 
242  virtual void copyComplete();
243 
245  virtual bool cancelComplete() const;
246 
247  public:
252  virtual void paste(const DtVector&, int flags = DtAllPasteFlags);
253 
255  virtual DtGeodeticCoord center() const;
256  virtual DtVector localCenter() const;
257  virtual DtGeodeticCoord calculateCenter() const;
258 
261  virtual DtVector origin() const;
262 
264  virtual DtVector pasteOrigin() const;
265 
268  virtual void setGeometricCenter(const DtGeodeticCoord&);
269 
270  const DtGeodeticCoord& geometricCenter() const;
271 
273  virtual void createFacade(const DtGeodeticCoord& origin);
274 
276  virtual void setOrigin(const DtGeodeticCoord&);
277 
278  protected:
280  virtual void readComplete(std::istringstream& str);
281 
284  virtual void checkPasteComplete();
285 
287  virtual bool pasteComplete() const;
288 
291  virtual void createObject(const DtVector&);
292 
294  virtual int generateRequestId();
295 
297  virtual double groundHeight(const DtVector& currentLocal) const;
298 
301  virtual void setupOffsets(const DtGeodeticCoord&);
302 
304  virtual DtVector offsetLocation(int, const DtVector& loc) const;
305 
310  virtual DtGeodeticCoord calculateOffsetPoint(const DtGeodeticCoord& start, const DtGeodeticCoord& end,
311  double& altAboveTerrain, double& altAboveSeaLevel) const;
312 
314  virtual DtVector localLocation(const DtGeodeticCoord&, int) const;
315 
316  virtual void createLocalDataCopy(DtSimObjectReference);
317 
318  public:
319  boost::signals2::signal<void (DtCopyObject*)> signal_copyCancelled;
320  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copied;
321  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copyOperationPending;
322 
323  boost::signals2::signal<void (DtCopyObject*)> signal_pasted;
324  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_pasteOperationPending;
325  boost::signals2::signal<void (DtCopyObject*)> signal_pasteCancelled;
326 
327  protected:
329  std::ostringstream myOutput;
330  std::string myName;
332 
333  std::shared_ptr<DtGuiLocalObject> myReadableStateData;
334 
335  mutable DtGeodeticCoord myCenter;
336 
338 
339  typedef std::vector<double> HeightOffsets;
340 
343 
345  DtReferenceEllipsoid myReferenceEllipsoid;
346 
347  int myType;
348  std::string myBuffer;
349 
350  DtGeodeticCoord myGeometricCenter;
351 
352  bool myIsLocal;
354 
355  bool myUpdated;
356  };
357 
361  {
362  public:
363  virtual DtCopyObject* create(makVrv::DtDe&) = 0;
364  };
365 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
HeightOffsets myAltitudeAboveTerrain
Definition: copyObject.h:341
DtAltitudeClampType myAltitudeClampType
Definition: copyObject.h:344
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_pasteOperationPending
Definition: copyObject.h:324
DtReferenceEllipsoid myReferenceEllipsoid
Definition: copyObject.h:345
voidpf uLong int origin
Definition: ioapi.h:42
void read(std::istringstream &s)
Definition: copyObject.h:89
int type() const
Definition: copyObject.h:187
Helper class to archive string objects from string stream and back.
Definition: copyObject.h:40
bool myUpdated
Definition: copyObject.h:355
DtUUID myUUID
Definition: copyObject.h:353
voidpf void uLong size
Definition: ioapi.h:39
Creator used to create copy classes. Subclass to implement create() method to return object used for ...
Definition: copyObject.h:360
virtual DtVrfObjectFacadeInterface * facade() const
Returns the facade.
Definition: copyObject.h:203
Contains the DtUUID class declaration.
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copyOperationPending
Definition: copyObject.h:321
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
voidpf void * buf
Definition: ioapi.h:39
std::vector< DtGeodeticCoord > CopyOffsets
Definition: copyObject.h:126
makVrv::DtDe & myDe
Definition: copyObject.h:328
DtGeodeticCoord myCenter
Definition: copyObject.h:335
boost::signals2::signal< void(DtCopyObject *)> signal_pasted
Definition: copyObject.h:323
std::vector< double > HeightOffsets
Definition: copyObject.h:339
Type * myInput
Definition: copyObject.h:107
DT_DLL_VRFGUICORE std::ostringstream & operator<<(std::ostringstream &, const DtStreamString &)
boost::signals2::signal< void(DtCopyObject *)> signal_copyCancelled
Definition: copyObject.h:319
void setType(int t)
Definition: copyObject.h:182
std::ostringstream myOutput
Definition: copyObject.h:329
std::string myBuffer
Definition: copyObject.h:348
DtStreamNumber(Type t)
Definition: copyObject.h:73
const std::string & name() const
Definition: copyObject.h:162
Definition: vrfObjectFacadeInterface.h:53
const DtUUID & uuid() const
Definition: copyObject.h:167
Type value() const
Definition: copyObject.h:100
const std::string & value() const
Definition: copyObject.h:51
const std::string & buffer() const
Definition: copyObject.h:197
int myPasteFlags
Definition: copyObject.h:331
std::string myName
Definition: copyObject.h:330
Definition: copyObject.h:124
Helper class to archive number objects from string stream and back.
Definition: copyObject.h:70
HeightOffsets myAltitudeAboveSeaLevel
Definition: copyObject.h:342
std::shared_ptr< DtGuiLocalObject > myReadableStateData
Definition: copyObject.h:333
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
DtPasteFlags
Definition: copyObject.h:133
Type myValue
Definition: copyObject.h:106
bool myIsLocal
Definition: copyObject.h:352
Base class to provide boost signal/slot management.
Contains makVrv::DtUniqueID type.
DtGeodeticCoord myGeometricCenter
Definition: copyObject.h:350
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:76
DT_DLL_VRFGUICORE std::istringstream & operator>>(std::istringstream &, DtStreamString &)
CopyOffsets myOffsets
Definition: copyObject.h:337
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copied
Definition: copyObject.h:320
std::string * myInput
Definition: copyObject.h:58
std::string myValue
Definition: copyObject.h:57
int myType
Definition: copyObject.h:347
std::shared_ptr< DtGuiLocalObject > readableStateData()
Definition: copyObject.h:157
boost::signals2::signal< void(DtCopyObject *)> signal_pasteCancelled
Definition: copyObject.h:325
void setBuffer(const std::string &b)
Definition: copyObject.h:192
DtStreamNumber(Type *t)
Definition: copyObject.h:79
void write(std::ostringstream &s) const
Definition: copyObject.h:84
DtAltitudeClampType
Definition: vrfObjectFacadeInterface.h:43

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)