BinToColorXML.cxx
Go to the documentation of this file.
1 
12 // for dll interface warning
13 #ifdef _MSC_VER
14 #include "msdevstudio/MSconfig.h"
15 #endif
16 
17 #include "BinToColorXML.h"
18 
19 #include "XmlController.h"
20 #include "XmlDocument.h"
21 #include "XmlElement.h"
22 
23 #include "colorreps/BinToColor.h"
25 
26 #include <cassert>
27 
28 using std::list;
29 using std::string;
30 using std::vector;
31 
32 namespace hippodraw {
33 
35  : BaseXML ( "BinToColor", controller ),
36  m_ctrlpt ( "CtrlPt" ),
37  m_point ( "point" )
38 {
39 }
40 
42 {
44  tag -> setAttribute ( m_type, btc.name () );
45  bool yes = btc.hasControlPoints ();
46  if ( yes ) {
47  const vector < double > & points = btc.getControlPoints ();
48  unsigned int size = points.size ();
49  for ( unsigned int i = 0; i < size; i++ ) {
50  XmlElement * element
52  element -> setAttribute ( m_point, points [ i ] );
53  tag -> appendChild ( *element );
54  delete element;
55  }
56  }
57 
58  return tag;
59 }
60 
62 {
63  string type;
64  bool ok = element -> attribute ( m_type, type );
65  assert ( ok );
66  BinToColor * btc = 0;
68  try {
69  btc = factory -> create ( type );
70  }
71  catch ( const FactoryException & ) {
72  btc = factory -> create ( "Rainbow" ); // default
73  }
74 
75  ok = btc -> hasControlPoints ();
76  if ( ok ) {
77  vector < double > points;
78  list < XmlElement * > nodelist;
79  element -> fillNodeList ( m_ctrlpt, nodelist );
80  list < XmlElement * > :: const_iterator first = nodelist.begin();
81  while ( first != nodelist.end() ) {
82  XmlElement * pt_element = *first++;
83  double point;
84  ok = pt_element -> attribute ( m_point, point );
85  points.push_back ( point );
86  }
87  btc -> setControlPoints ( points );
88  }
89 
90  return btc;
91 }
92 
93 } // namespace hippodraw
94 

Generated for HippoDraw Class Library by doxygen