Developer documentation | Axl-2.5.1

axlSurfaceRevolutionParametricWriter.cpp
Go to the documentation of this file.
1 //Author: Hung NGUYEN 9:17 AM 20/05/2014
2 
4 
6 
7 #include <dtkCoreSupport/dtkAbstractData.h>
8 #include <dtkCoreSupport/dtkAbstractDataFactory.h>
9 
10 #include <QColor>
11 
14 
15  this->setObjectName(this->description());
16 }
17 
19 }
20 
22  return "axlSurfaceRevolutionParametricWriter";
23 }
24 
26  return "axlSurfaceRevolutionParametricWriter";
27 }
28 
30  return QStringList() << "axlSurfaceRevolutionParametric";
31 }
32 
34  return dtkAbstractDataFactory::instance()->registerDataWriterType("axlSurfaceRevolutionParametricWriter", QStringList(), createaxlSurfaceRevolutionParametricWriter);
35 }
36 
37 bool axlSurfaceRevolutionParametricWriter::accept(dtkAbstractData *data) {
38  axlSurfaceRevolutionParametric *surfaceRevolution = dynamic_cast<axlSurfaceRevolutionParametric*>(data);
39  if(surfaceRevolution)
40  return true;
41 
42  return false;
43 }
44 
45 bool axlSurfaceRevolutionParametricWriter::reject(dtkAbstractData *data) {
46  return !this->accept(data);
47 }
48 
49 QDomElement axlSurfaceRevolutionParametricWriter::write(QDomDocument *doc, dtkAbstractData *data) {
51 
53  QDomElement surElement = doc->createElement("surface_revolution_parametric");
54  surElement.setAttribute("name", surRev->name());
55 
57  surElement.setAttribute("size", QString::number(surRev->size()));
58 
60  QColor qcolor = surRev->color();
61  QString color ;
62  QTextStream(&color) << QString::number(qcolor.red()) << " "
63  << QString::number(qcolor.green()) << " "
64  << QString::number(qcolor.blue()) << " "
65  << QString::number(surRev->opacity());
66  surElement.setAttribute("color", color);
67 
69  QString shader = surRev->shader();
70  QFileInfo shaderFileInfo(shader);
71  surElement.setAttribute("shader", shaderFileInfo.fileName());
72 
73  // Write axe
74  QDomElement axeElement = doc->createElement("axe");
75  axlLine* axe = surRev->getAxe();
76  axlAbstractDataWriter* axeWriter = dynamic_cast<axlAbstractDataWriter*>(dtkAbstractDataFactory::instance()->writer("axlLineWriter"));
77  QDomElement lineElement = axeWriter->write(doc, axe);
78  axeElement.appendChild(lineElement);
79  surElement.appendChild(axeElement);
80 
81  //Write curve
82  QDomElement curveElement = doc->createElement("curve");
83  axlAbstractCurve* curve = surRev->getCurve();
84  QString curveWriterTag = curve->identifier()+"Writer";
85  axlAbstractDataWriter* curveWriter = dynamic_cast<axlAbstractDataWriter*>(dtkAbstractDataFactory::instance()->writer(curveWriterTag));
86  QDomElement subCurveElement = curveWriter->write(doc, curve);
87  curveElement.appendChild(subCurveElement);
88  curveElement.setAttribute("type",curve->identifier());
89  surElement.appendChild(curveElement);
90 
91  //Write Angle
92  QDomElement angleElement = doc->createElement("angle");
93  double startAngle = surRev->getStartAngle();
94  double endAngle = surRev->getEndAngle();
95  angleElement.setAttribute("start_angle",startAngle);
96  angleElement.setAttribute("end_angle",endAngle);
97  surElement.appendChild(angleElement);
98 
99  //return
100 
101  return surElement;
102 
103 }
104 
105 QDomElement axlSurfaceRevolutionParametricWriter::elementByWriter(axlAbstractDataWriter *axl_writer, QDomDocument *doc, dtkAbstractData *data) {
106  QDomElement element;
107 
108  if(!axl_writer)
109  return element;
110 
111  if(!axl_writer->accept(data))
112  return element;
113 
114  element = axl_writer->write(doc, data);
115 
116  return element;
117 }
118 
119 dtkAbstractDataWriter *createaxlSurfaceRevolutionParametricWriter(void) {
121 }
Class axlLine defines 3D lines.
Definition: axlLine.h:35
virtual bool accept(dtkAbstractData *data)=0
dtkAbstractDataWriter * createaxlSurfaceRevolutionParametricWriter(void)
QDomElement write(QDomDocument *doc, dtkAbstractData *data)
virtual QDomElement write(QDomDocument *doc, dtkAbstractData *data)=0