Developer documentation | Axl-2.5.1

axlFieldParametricSurfaceNormalVectorReader.cpp
Go to the documentation of this file.
1 /* axlFieldParametricSurfaceNormalVectorReader.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 // axlFieldParametricSurfaceNormalVectorReader
29 // /////////////////////////////////////////////////////////////////
30 
32 {
33  this->setObjectName(this->description());
34 }
35 
37 {
38 
39 }
40 
42 {
43  return "axlFieldParametricSurfaceNormalVectorReader";
44 }
45 
47 {
48  return "axlFieldParametricSurfaceNormalVectorReader";
49 }
50 
52 {
53  return QStringList() << "axlFieldParametricNormalVector";
54 }
55 
57 {
58  return dtkAbstractDataFactory::instance()->registerDataReaderType("axlFieldParametricSurfaceNormalVectorReader", QStringList(), createaxlFieldParametricSurfaceNormalVectorReader);
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 :axlFieldParametricNormalVector.
79 {
80 
81  QDomElement element = node.toElement();
82  axlFieldParametricNormalVector *field = NULL;
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<axlFieldParametricNormalVector *>(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 *axlFieldParametricSurfaceNormalVectorReader::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 
dtkAbstractDataReader * createaxlFieldParametricSurfaceNormalVectorReader(void)
dtkAbstractData * dataByReader(axlAbstractDataReader *axl_reader, const QDomNode &node)
virtual axlAbstractData * read(const QDomNode &node)=0
Class axlFieldParametricNormalVector defines an API for field which owns a BSpline Surface as a funct...
virtual bool accept(const QDomNode &node)=0
Class axlAbstractData defines an API for all type of axel data.