Developer documentation | Axl-2.5.1

axlFieldParametricCurveTangentVectorReader.cpp
Go to the documentation of this file.
1 /* axlFieldParametricCurveTangentVectorReader.cpp ---
2  *
3  * Author: Anais Ducoffe
4  * Copyright (C) 2013 - Anais Ducoffe, Inria.
5  */
6 
7 /* Commentary:
8  *
9  */
10 
11 /* Change log:
12  *
13  */
14 
16 #include "axlReader.h"
17 
20 #include <axlCore/axlInteger.h>
21 #include <axlCore/axlDouble.h>
22 
23 #include <dtkCoreSupport/dtkAbstractData.h>
24 #include <dtkCoreSupport/dtkAbstractDataFactory.h>
25 #include <dtkCoreSupport/dtkAbstractProcessFactory.h>
26 
27 // /////////////////////////////////////////////////////////////////
28 // axlFieldParametricCurveTangentVectorReader
29 // /////////////////////////////////////////////////////////////////
30 
32 {
33  this->setObjectName(this->description());
34 }
35 
37 {
38 
39 }
40 
42 {
43  return "axlFieldParametricCurveTangentVectorReader";
44 }
45 
47 {
48  return "axlFieldParametricCurveTangentVectorReader";
49 }
50 
52 {
53  return QStringList() << "axlFieldParametricCurveTangentVector";
54 }
55 
57 {
58  return dtkAbstractDataFactory::instance()->registerDataReaderType("axlFieldParametricCurveTangentVectorReader", QStringList(), createaxlFieldParametricCurveTangentVectorReader);
59 }
60 
62 {
63  QDomElement element = node.toElement();
64 
65  if(element.tagName() != "field")
66  return false;
67 
68  return true;
69 }
70 
72 {
73  return !this->accept(node);
74 }
75 
76 
77 //read only one special field :axlFieldParametricCurveTangentVector.
79 {
80 
81  QDomElement element = node.toElement();
83 
84  // field type : the type corresponds to the identifier, use factory to initialize field.
85  QString type = element.attribute("type");
86  if(!type.isEmpty())
87  {
88  field = dynamic_cast<axlFieldParametricCurveTangentVector *>(dtkAbstractDataFactory::instance()->create(type));
89  }
90 
92  QString name = element.attribute("name");
93  if(!name.isEmpty())
94  {
95  field->setObjectName(name);
96  }
97 
98  field->update();
99  return field;
100 
101 
102 }
103 
104 dtkAbstractData *axlFieldParametricCurveTangentVectorReader::dataByReader(axlAbstractDataReader *axl_reader, const QDomNode& node)
105 {
106  if(!axl_reader)
107  return NULL;
108 
109  if(!axl_reader->accept(node))
110  return NULL;
111 
112  axl_reader->dtkAbstractDataReader::read(this->file());
113 
114  if(dtkAbstractData *data = axl_reader->read(node))
115  return data;
116 
117 
118  return NULL;
119 }
120 
121 
122 
124 {
126 }
127 
128 
virtual axlAbstractData * read(const QDomNode &node)=0
Class axlFieldParametricCurveTangentVector defines an API for field which owns a BSpline Surface as a...
virtual bool accept(const QDomNode &node)=0
dtkAbstractData * dataByReader(axlAbstractDataReader *axl_reader, const QDomNode &node)
dtkAbstractDataReader * createaxlFieldParametricCurveTangentVectorReader(void)
Class axlAbstractData defines an API for all type of axel data.