VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtVisualizerDefinitionRecord.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2011 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
10 
11 #include <boost/tuple/tuple_comparison.hpp>
12 
13 #include <map>
14 
15 namespace makArchives
16 {
18  namespace oldRecords
19  {
23  {
24  public:
25  double myX;
26  double myY;
27  double myZ;
28 
29  protected:
30 
31  friend class boost::serialization::access;
32 
36  template <typename Archive>
37  void serialize(Archive & ar, const unsigned int version)
38  {
39  ar & BOOST_SERIALIZATION_NVP(myX);
40  ar & BOOST_SERIALIZATION_NVP(myY);
41  ar & BOOST_SERIALIZATION_NVP(myZ);
42  }
43  };
44 
48  {
49  public:
50  float myR;
51  float myG;
52  float myB;
53  float myA;
54 
55  protected:
56 
57  friend class boost::serialization::access;
58 
62  template <typename Archive>
63  void serialize(Archive & ar, const unsigned int version)
64  {
65  ar & BOOST_SERIALIZATION_NVP(myR);
66  ar & BOOST_SERIALIZATION_NVP(myG);
67  ar & BOOST_SERIALIZATION_NVP(myB);
68  ar & BOOST_SERIALIZATION_NVP(myA);
69  }
70  };
71 
75  {
76  public:
79  virtual ~DtVisualAttributeInterface();
80 
81  virtual std::string classType() const = 0;
82 
83  virtual void write(boost::archive::xml_oarchive& out, const unsigned int) = 0;
84  virtual void read(boost::archive::xml_iarchive& in, const unsigned int) = 0;
85 
86  protected:
87  friend class boost::serialization::access;
88 
89  template <typename Archive>
90  void serialize(Archive & ar, const unsigned int version)
91  {
92  if (Archive::is_loading::value)
93  {
94  read(*(boost::archive::xml_iarchive*)&ar,version);
95  }
96  else
97  {
98  write(*(boost::archive::xml_oarchive*)&ar,version);
99  }
100  }
101  };
102 
105  typedef DtVisualAttributeInterface* (*DtVisualAttributeCreatorFcn)();
106 
108  {
109  public:
111  virtual ~DtVisualAttributeFactory();
112 
113  public:
114  static bool addAttributeCreator(const std::string& name, DtVisualAttributeCreatorFcn f);
115  static DtVisualAttributeInterface* createAttribute(const std::string& name);
116  };
117 
119  // @{
120 
123  template <typename Type>
125  {
126  public:
129  {
130  }
131 
134  , myValue(orig.myValue)
135  {
136  }
137 
139  {
140  if (this != &rhs)
141  {
142  myValue = rhs.myValue;
143  }
144 
145  return *this;
146  }
147 
149  {
150  }
151 
152  Type myValue;
153 
154  protected:
155 
157 
158  virtual void write(boost::archive::xml_oarchive& out, const unsigned int version)
159  {
160  out & BOOST_SERIALIZATION_NVP(myValue);
161  }
162 
163  virtual void read(boost::archive::xml_iarchive& in, const unsigned int version)
164  {
165  in & BOOST_SERIALIZATION_NVP(myValue);
166  }
167  };
168 
170  typedef std::map<std::string, DtVisualAttributeCreatorFcn > DtVisualAttributeCreatorMap;
171 
174 
176  #define REGISTER_VISUAL_ATTRIBUTE(Attribute) static bool Attribute##_Registered = \
177  DtVisualAttributeFactory::addAttributeCreator(Attribute::theClassType(), &Attribute::create);
178 
182  #define DEFINE_VISUAL_ATTRIBUTE(ATTRIBUTE, VALUETYPE, DEFAULTVALUE)\
183  class DT_DLL_MAKARCHIVES ATTRIBUTE : public DtVisualAttribute<VALUETYPE>\
184  {\
185  public:\
186  ATTRIBUTE() { myValue = DEFAULTVALUE ; }\
187  ATTRIBUTE(const ATTRIBUTE& s) : DtVisualAttribute<VALUETYPE>(s) {}\
188  virtual ~ATTRIBUTE() {}\
189  static std::string theClassType() { return #ATTRIBUTE ; }\
190  virtual std::string classType() const { return theClassType();}\
191  static DtVisualAttributeInterface* create() { return new ATTRIBUTE(); }\
192  };
193 
197  {
198  public:
199  typedef std::map<std::string, DtVisualAttributeInterface*> DtVisualAttributeMap;
200 
201  protected:
202  friend class boost::serialization::access;
203 
204  template <typename Archive>
205  void serialize(Archive & ar, const unsigned int version)
206  {
207  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionName);
208 
209  if (Archive::is_loading::value)
210  {
211  int size = 0;
212  std::string classType;
213  std::string name;
214 
215  ar & BOOST_SERIALIZATION_NVP(size);
216 
217  for (int i = 0; i < size; i++)
218  {
219  ar & BOOST_SERIALIZATION_NVP(name);
220  ar & BOOST_SERIALIZATION_NVP(classType);
223 
224  if (iface)
225  {
226  DtVisualAttributeInterface& visualDefinition = *iface;
227  ar & BOOST_SERIALIZATION_NVP(visualDefinition);
228  myAttributes[name] = iface;
229  }
230  }
231 
232  }
233  else
234  {
235  int size = myAttributes.size();
236  ar & BOOST_SERIALIZATION_NVP(size);
237  DtVisualAttributeMap::const_iterator iter = myAttributes.begin();
238 
239  while (iter != myAttributes.end())
240  {
241  std::string name = iter->first;
242 
243  ar & BOOST_SERIALIZATION_NVP(name);
244  std::string classType = iter->second->classType();
245  ar & BOOST_SERIALIZATION_NVP(classType);
246 
247  DtVisualAttributeInterface& visualDefinition = *iter->second;
248  ar & BOOST_SERIALIZATION_NVP(visualDefinition);
249 
250  ++iter;
251  }
252  }
253  }
254 
255  public:
258  };
259 
263  {
264  public:
265  typedef std::map<std::string, makArchives::oldRecords::DtVisualDefinition> DtVisualDefinitionMap;
266 
267  protected:
268  friend class boost::serialization::access;
269 
270  template <typename Archive>
271  void serialize(Archive & ar, const unsigned int version)
272  {
273  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionSetName);
274  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitions);
275  }
276 
277  public:
280  };
281 
285  {
286  public:
287  typedef std::map<int, makArchives::oldRecords::DtVisualDefinitionSet> VisualDefinitionSetMap;
288 
289  protected:
290  friend class boost::serialization::access;
291 
292  template<class Archive>
293  void serialize(Archive & ar, const unsigned int version)
294  {
295  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionSets);
296  }
297 
298  public:
300  };
301 
305  {
306  public:
307  typedef std::map<std::string, makArchives::oldRecords::DtElementDefinitionNode> DtNodeChildren;
308 
309  protected:
310  friend class boost::serialization::access;
311 
312  template<class Archive>
313  void serialize(Archive & ar, const unsigned int version)
314  {
315  ar & BOOST_SERIALIZATION_NVP(myRoot);
316  ar & BOOST_SERIALIZATION_NVP(myChildren);
317  }
318 
319  public:
322  };
323 
327  {
328  public:
329  typedef std::map<std::string, makArchives::oldRecords::DtElementDefinitionNode> ElementDefinitionRoots;
330 
331  protected:
332  friend class boost::serialization::access;
333 
334  template<class Archive>
335  void serialize(Archive & ar, const unsigned int version)
336  {
337  ar & BOOST_SERIALIZATION_NVP(myHierarchy);
338  }
339 
340  public:
342  };
343 
344  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeBool, bool, false)
345  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeInteger, int, 0)
346  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeFontGlyph, unsigned int, 0)
347  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeString, std::string, std::string(""))
348  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeEnumeration, std::string, std::string(""))
349  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeFilename, std::string, std::string(""))
350  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeStringVector, std::vector<std::string>, std::vector<std::string>())
351  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeColor, DtVisualColor, DtVisualColor())
352  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeVector, Dt3Tuple, Dt3Tuple())
353  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeDouble, double, 0.0)
354 
355  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeBool)
356  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeInteger)
357  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeFontGlyph)
358  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeString)
359  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeEnumeration)
360  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeFilename)
361  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeStringVector)
362  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeColor)
363  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeVector)
364  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeDouble)
365 
366  }
367 }
368 
369 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinitionHierarchy, 1);
370 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinitionNode, 1);
371 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinition, 1);
372 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualDefinitionSet, 1);
373 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualDefinition, 1);
374 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeBool, 1)
375 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeColor, 1)
376 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeDouble, 1)
377 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeInteger, 1)
378 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeFontGlyph, 1)
379 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeString, 1)
380 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeEnumeration, 1)
381 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeFilename, 1)
382 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeStringVector, 1)
383 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeVector, 1)
384 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)