Developer documentation | Axl-2.5.1

axlSphereWriter.cpp
Go to the documentation of this file.
1 /* axlSphereWriter.cpp ---
2  *
3  * Author: Meriadeg Perrinel
4  * Copyright (C) 2008-2011 - Meriadeg Perrinel, Inria.
5  * Created: Wed Sep 21 11:36:52 2011 (+0200)
6  * Version: $Id$
7  * Last-Updated: Wed Sep 21 12:11:29 2011 (+0200)
8  * By: Meriadeg Perrinel
9  * Update #: 88
10  */
11 
12 /* Commentary:
13  *
14  */
15 
16 /* Change log:
17  *
18  */
19 
20 #include "axlSphereWriter.h"
21 
22 #include <axlCore/axlSphere.h>
24 
25 #include <dtkCoreSupport/dtkAbstractData.h>
26 #include <dtkCoreSupport/dtkAbstractDataFactory.h>
28 
29 // /////////////////////////////////////////////////////////////////
30 // axlSphereWriter
31 // /////////////////////////////////////////////////////////////////
32 
34 {
35  this->setObjectName(this->description());
36 }
37 
39 {
40 
41 }
42 
43 QString axlSphereWriter::identifier(void) const
44 {
45  return "axlSphereWriter";
46 }
47 
48 QString axlSphereWriter::description(void) const
49 {
50  return "axlSphereWriter";
51 }
52 
53 QStringList axlSphereWriter::handled(void) const
54 {
55  return QStringList() << "axlSphere";
56 }
57 
59 {
60  return dtkAbstractDataFactory::instance()->registerDataWriterType("axlSphereWriter", QStringList(), createaxlSphereWriter);
61 }
62 
63 bool axlSphereWriter::accept(dtkAbstractData *data)
64 {
65  axlSphere *sphere = dynamic_cast<axlSphere *>(data);
66  if(sphere)
67  return true;
68 
69  return false;
70 }
71 
72 bool axlSphereWriter::reject(dtkAbstractData *data)
73 {
74  return !this->accept(data);
75 }
76 
77 QDomElement axlSphereWriter::write(QDomDocument *doc, dtkAbstractData *data)
78 {
79  axlSphere *sphere = dynamic_cast<axlSphere *>(data);
80 
82  QDomElement sphereElement = doc->createElement("sphere");
83  sphereElement.setAttribute("name",sphere->name());
84 
85 
87  sphereElement.setAttribute("size", QString::number(sphere->size()));
88 
89 
90 
92  QColor qcolor = sphere->color();
93  QString color ;
94  QTextStream(&color) << QString::number(qcolor.red()) << " "
95  << QString::number(qcolor.green()) << " "
96  << QString::number(qcolor.blue()) << " "
97  << QString::number(sphere->opacity());
98  sphereElement.setAttribute("color", color);
99 
101  QString shader = sphere->shader();
102  QFileInfo shaderFileInfo(shader);
103  sphereElement.setAttribute("shader", shaderFileInfo.fileName());
104 
105  //Write sphere
106  //center
107  QDomElement center = doc->createElement("center");
108  QString centerStr;
109  QTextStream(&centerStr) << QString::number(sphere->x()) << " "<< QString::number(sphere->y()) << " "<< QString::number(sphere->z());
110  QDomText centerDomText = doc->createTextNode(centerStr);
111  center.appendChild(centerDomText);
112 
113  sphereElement.appendChild(center);
114 
115  QDomElement radius = doc->createElement("radius");
116  QString radiusStr;
117  QTextStream(&radiusStr) << QString::number(sphere->radius());
118  QDomText radiusDomText = doc->createTextNode(radiusStr);
119  radius.appendChild(radiusDomText);
120 
121  sphereElement.appendChild(radius);
122 
123  //Write fields if exist.
124  if(!sphere->fields().isEmpty()){
125  foreach(axlAbstractField *field, sphere->fields()){
127  QDomElement fieldElement = field_writer->write(doc, field);
128  sphereElement.appendChild(fieldElement);
129  }
130  }
131 
132 
133  return sphereElement;
134 }
135 
136 
137 QDomElement axlSphereWriter::elementByWriter(axlAbstractDataWriter *axl_writer, QDomDocument *doc, dtkAbstractData *data)
138 {
139  QDomElement element;
140 
141  if(!axl_writer)
142  return element;
143 
144  if(!axl_writer->accept(data))
145  return element;
146 
147  element = axl_writer->write(doc, data);
148 
149  return element;
150 }
151 
152 dtkAbstractDataWriter *createaxlSphereWriter(void)
153 {
154  return new axlSphereWriter;
155 }
double radius
Definition: axlSphere.h:36
static bool registered(void)
double x(void) const
Returns x-coordinate of this sphere.
Definition: axlSphere.cpp:234
virtual bool accept(dtkAbstractData *data)=0
dtkAbstractDataWriter * createaxlSphereWriter(void)
double z(void) const
Returns z-coordinate of this sphere.
Definition: axlSphere.cpp:252
static axlFieldWritersFactory * instance(void)
QString identifier(void) const
virtual QString identifier(void) const
bool accept(dtkAbstractData *data)
QString description(void) const
QDomElement write(QDomDocument *doc, dtkAbstractData *data)
Class axlSphere defines 3D spheres.
Definition: axlSphere.h:33
dtkAbstractDataWriter * create(const QString &interface_name)
Class axlAbstractField defines an API for arrays of numeric data.
bool reject(dtkAbstractData *data)
double y(void) const
Returns y-coordinate of this sphere.
Definition: axlSphere.cpp:243
QList< axlAbstractField * > fields(void)
virtual QDomElement write(QDomDocument *doc, dtkAbstractData *data)=0
QStringList handled(void) const