VR-Forces 4.1.1 Class Documentation
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 
11 
12 #include <boost/tuple/tuple_comparison.hpp>
13 
14 #include <map>
15 
16 namespace makArchives
17 {
19  namespace oldRecords
20  {
24  {
25  public:
26  double myX;
27  double myY;
28  double myZ;
29 
30  protected:
31 
32  friend class boost::serialization::access;
33 
37  template <typename Archive>
38  void serialize(Archive & ar, const unsigned int version)
39  {
40  ar & BOOST_SERIALIZATION_NVP(myX);
41  ar & BOOST_SERIALIZATION_NVP(myY);
42  ar & BOOST_SERIALIZATION_NVP(myZ);
43  }
44  };
45 
49  {
50  public:
51  float myR;
52  float myG;
53  float myB;
54  float myA;
55 
56  protected:
57 
58  friend class boost::serialization::access;
59 
63  template <typename Archive>
64  void serialize(Archive & ar, const unsigned int version)
65  {
66  ar & BOOST_SERIALIZATION_NVP(myR);
67  ar & BOOST_SERIALIZATION_NVP(myG);
68  ar & BOOST_SERIALIZATION_NVP(myB);
69  ar & BOOST_SERIALIZATION_NVP(myA);
70  }
71  };
72 
76  {
77  public:
80  virtual ~DtVisualAttributeInterface();
81 
82  virtual std::string classType() const = 0;
83 
84  virtual void write(boost::archive::xml_oarchive& out, const unsigned int) = 0;
85  virtual void read(boost::archive::xml_iarchive& in, const unsigned int) = 0;
86 
87  protected:
88  friend class boost::serialization::access;
89 
90  template <typename Archive>
91  void serialize(Archive & ar, const unsigned int version)
92  {
93  if (Archive::is_loading::value)
94  {
95  read(*(boost::archive::xml_iarchive*)&ar,version);
96  }
97  else
98  {
99  write(*(boost::archive::xml_oarchive*)&ar,version);
100  }
101  }
102  };
103 
106  typedef DtVisualAttributeInterface* (*DtVisualAttributeCreatorFcn)();
107 
109  {
110  public:
112  virtual ~DtVisualAttributeFactory();
113 
114  public:
115  static bool addAttributeCreator(const std::string& name, DtVisualAttributeCreatorFcn f);
116  static DtVisualAttributeInterface* createAttribute(const std::string& name);
117  };
118 
120  // @{
121 
124  template <typename Type>
126  {
127  public:
130  {
131  }
132 
135  , myValue(orig.myValue)
136  {
137  }
138 
140  {
141  if (this != &rhs)
142  {
143  myValue = rhs.myValue;
144  }
145 
146  return *this;
147  }
148 
150  {
151  }
152 
153  Type myValue;
154 
155  protected:
156 
158 
159  virtual void write(boost::archive::xml_oarchive& out, const unsigned int version)
160  {
161  out & BOOST_SERIALIZATION_NVP(myValue);
162  }
163 
164  virtual void read(boost::archive::xml_iarchive& in, const unsigned int version)
165  {
166  in & BOOST_SERIALIZATION_NVP(myValue);
167  }
168  };
169 
171  typedef std::map<std::string, DtVisualAttributeCreatorFcn > DtVisualAttributeCreatorMap;
172 
175 
177  #define REGISTER_VISUAL_ATTRIBUTE(Attribute) static bool Attribute##_Registered = \
178  DtVisualAttributeFactory::addAttributeCreator(Attribute::theClassType(), &Attribute::create);
179 
183  #define DEFINE_VISUAL_ATTRIBUTE(ATTRIBUTE, VALUETYPE, DEFAULTVALUE)\
184  class DT_DLL_MAKARCHIVES ATTRIBUTE : public DtVisualAttribute<VALUETYPE>\
185  {\
186  public:\
187  ATTRIBUTE() { myValue = DEFAULTVALUE ; }\
188  ATTRIBUTE(const ATTRIBUTE& s) : DtVisualAttribute<VALUETYPE>(s) {}\
189  virtual ~ATTRIBUTE() {}\
190  static std::string theClassType() { return #ATTRIBUTE ; }\
191  virtual std::string classType() const { return theClassType();}\
192  static DtVisualAttributeInterface* create() { return new ATTRIBUTE(); }\
193  };
194 
198  {
199  public:
200  typedef std::map<std::string, DtVisualAttributeInterface*> DtVisualAttributeMap;
201 
202  protected:
203  friend class boost::serialization::access;
204 
205  template <typename Archive>
206  void serialize(Archive & ar, const unsigned int version)
207  {
208  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionName);
209 
210  if (Archive::is_loading::value)
211  {
212  int size;
213  std::string classType;
214  std::string name;
215 
216  ar & BOOST_SERIALIZATION_NVP(size);
217 
218  for (int i = 0; i < size; i++)
219  {
220  ar & BOOST_SERIALIZATION_NVP(name);
221  ar & BOOST_SERIALIZATION_NVP(classType);
224 
225  if (iface)
226  {
227  DtVisualAttributeInterface& visualDefinition = *iface;
228  ar & BOOST_SERIALIZATION_NVP(visualDefinition);
229  myAttributes[name] = iface;
230  }
231  }
232 
233  }
234  else
235  {
236  int size = myAttributes.size();
237  ar & BOOST_SERIALIZATION_NVP(size);
238  DtVisualAttributeMap::const_iterator iter = myAttributes.begin();
239 
240  while (iter != myAttributes.end())
241  {
242  std::string name = iter->first;
243 
244  ar & BOOST_SERIALIZATION_NVP(name);
245  std::string classType = iter->second->classType();
246  ar & BOOST_SERIALIZATION_NVP(classType);
247 
248  DtVisualAttributeInterface& visualDefinition = *iter->second;
249  ar & BOOST_SERIALIZATION_NVP(visualDefinition);
250 
251  ++iter;
252  }
253  }
254  }
255 
256  public:
259  };
260 
264  {
265  public:
266  typedef std::map<std::string, makArchives::oldRecords::DtVisualDefinition> DtVisualDefinitionMap;
267 
268  protected:
269  friend class boost::serialization::access;
270 
271  template <typename Archive>
272  void serialize(Archive & ar, const unsigned int version)
273  {
274  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionSetName);
275  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitions);
276  }
277 
278  public:
281  };
282 
286  {
287  public:
288  typedef std::map<int, makArchives::oldRecords::DtVisualDefinitionSet> VisualDefinitionSetMap;
289 
290  protected:
291  friend class boost::serialization::access;
292 
293  template<class Archive>
294  void serialize(Archive & ar, const unsigned int version)
295  {
296  ar & BOOST_SERIALIZATION_NVP(myVisualDefinitionSets);
297  }
298 
299  public:
301  };
302 
306  {
307  public:
308  typedef std::map<std::string, makArchives::oldRecords::DtElementDefinitionNode> DtNodeChildren;
309 
310  protected:
311  friend class boost::serialization::access;
312 
313  template<class Archive>
314  void serialize(Archive & ar, const unsigned int version)
315  {
316  ar & BOOST_SERIALIZATION_NVP(myRoot);
317  ar & BOOST_SERIALIZATION_NVP(myChildren);
318  }
319 
320  public:
323  };
324 
328  {
329  public:
330  typedef std::map<std::string, makArchives::oldRecords::DtElementDefinitionNode> ElementDefinitionRoots;
331 
332  protected:
333  friend class boost::serialization::access;
334 
335  template<class Archive>
336  void serialize(Archive & ar, const unsigned int version)
337  {
338  ar & BOOST_SERIALIZATION_NVP(myHierarchy);
339  }
340 
341  public:
343  };
344 
345  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeBool, bool, false)
346  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeInteger, int, 0)
347  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeFontGlyph, unsigned int, 0)
348  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeString, std::string, std::string(""))
349  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeEnumeration, std::string, std::string(""))
350  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeFilename, std::string, std::string(""))
351  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeStringVector, std::vector<std::string>, std::vector<std::string>())
352  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeColor, DtVisualColor, DtVisualColor())
353  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeVector, Dt3Tuple, Dt3Tuple())
354  DEFINE_VISUAL_ATTRIBUTE(DtVisualAttributeDouble, double, 0.0)
355 
356  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeBool)
357  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeInteger)
358  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeFontGlyph)
359  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeString)
360  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeEnumeration)
361  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeFilename)
362  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeStringVector)
363  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeColor)
364  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeVector)
365  REGISTER_VISUAL_ATTRIBUTE(DtVisualAttributeDouble)
366 
367  }
368 }
369 
370 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinitionHierarchy, 1);
371 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinitionNode, 1);
372 BOOST_CLASS_VERSION(makArchives::oldRecords::DtElementDefinition, 1);
373 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualDefinitionSet, 1);
374 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualDefinition, 1);
375 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeBool, 1)
376 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeColor, 1)
377 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeDouble, 1)
378 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeInteger, 1)
379 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeFontGlyph, 1)
380 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeString, 1)
381 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeEnumeration, 1)
382 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeFilename, 1)
383 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeStringVector, 1)
384 BOOST_CLASS_VERSION(makArchives::oldRecords::DtVisualAttributeVector, 1)
385 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)