Developer documentation | Axl-2.5.1

axlAbstractData.cpp
Go to the documentation of this file.
1 /* axlAbstractData.h ---
2  *
3  * Author: Bernard Mourrain
4  * Copyright (C) 2011 - Bernard Mourrain, Inria.
5  * Created: Tue Nov 11 16:58:59 2011 (+0100)
6  * Version: $Id$
7  * Last-Updated: Mon Dec 6 15:32:45 2010 (+0100)
8  * By: Meriadeg Perrinel
9  * Update #: 22
10  */
11 
12 /* Commentary:
13  *
14  */
15 
16 /* Change log:
17  *
18  */
19 
20 #include "axlAbstractData.h"
21 #include "axlAbstractField.h"
22 #include "axlMesh.h"
23 #include "axlDataDynamic.h"
24 #include <dtkCoreSupport/dtkGlobal.h>
25 
26 #include <QtCore>
27 #include <QtGui>
28 
29 class axlAbstractDataPrivate
30 {
31 public:
32  QColor color;
33  double opacity;
34  double size;
35  QString shader;
36  bool editable;
37  bool updateView = 1;
38 
39 public:
40  QList<axlAbstractField *> fields;
41  axlMesh *mesh;
42 };
43 
44 axlAbstractData::axlAbstractData(axlAbstractData *parent) : dtkAbstractData(parent), d(new axlAbstractDataPrivate)
45 {
46  setColor(Qt::gray);
47  setOpacity(1.0);
48  setSize(0.005);
49  setShader("");
50  setEditable(true);
51  d->mesh = NULL;
52 }
53 
54 axlAbstractData::axlAbstractData(const axlAbstractData &data): dtkAbstractData(), d(new axlAbstractDataPrivate){
55  d->color = data.color();
56  d->opacity = data.opacity();
57  d->size = data.size();
58  d->shader = data.shader();
59  //const bool edit = data.editable();
60  //setEditable(edit);
61  //setMesh(data.mesh());
62  setEditable(true);
63  d->mesh = NULL;
64 }
65 
67 {
68  delete d;
69  d = NULL;
70 }
71 
72 const QColor& axlAbstractData::color(void) const
73 {
74  return d->color;
75 }
76 
77 void axlAbstractData::setColor(const QColor& color)
78 {
79  d->color = color;
80 }
81 
82 void axlAbstractData::setColor(double r, double g, double b)
83 {
84  d->color.setRgbF(r,g,b);
85 }
86 
87 const double& axlAbstractData::opacity(void) const
88 {
89  return d->opacity;
90 }
91 
92 void axlAbstractData::setOpacity(const double& opacity)
93 {
94  d->opacity = opacity;
95 }
96 
97 const double& axlAbstractData::size(void) const
98 {
99  return d->size;
100 }
101 
102 void axlAbstractData::setSize(const double& size)
103 {
104  d->size = size;
105 }
106 
108 {
109  return d->updateView;
110 }
111 
112 void axlAbstractData::setUpdateView(bool updateView)
113 {
114  d->updateView = updateView;
115 }
116 
117 const QString& axlAbstractData::shader(void) const
118 {
119  return d->shader;
120 }
121 
122 const bool& axlAbstractData::editable(void)
123 {
124  return d->editable;
125 }
126 
127 void axlAbstractData::setShader(const QString& shader)
128 {
129  d->shader = shader;
130 }
131 
133 {
134  d->editable = edit;
135 }
136 
137 
139 
143  return d->mesh;
144 }
145 
146 
148 
152  d->mesh = mesh;
153 }
154 
155 
157 
161 {
162  d->fields.append(field);
163  field->setParent(this);
164 }
165 
166 
168 
171 bool axlAbstractData::updateFieldList(QString nameField){
172 
173  bool fieldWithSameNameExit = false;
174  foreach(axlAbstractField *field, this->fields() )
175  if(field->name() == nameField)
176  fieldWithSameNameExit = true;
177 
178  return fieldWithSameNameExit;
179 }
180 
181 
184 
187 QString axlAbstractData::changeFieldName(QString nameField){
188 
189  int size = this->fields().size();
190  int numberOccurence = 0;
191  QString identity = nameField;
192  for(int indice = 0;indice < size; indice++){
193  if(this->fields().at(indice)->objectName() == nameField){
194  nameField.clear();
195  nameField = identity;
196  nameField.append(QString::number(numberOccurence));
197  numberOccurence++;
198  }
199  }
200 
201  return nameField;
202 }
203 
204 QList<axlAbstractField *> axlAbstractData::fields(void)
205 {
206  return d->fields;
207 }
208 
210 {
211  emit modifiedField();
212 }
213 
215 {
216  emit modifiedGeometry();
217 }
218 
220 {
221  emit modifiedProperty();
222 }
223 
225 {
226  emit modifiedStructure();
227 }
228 
230 
234 {
235  QVariantList list;
236 
237  return list;
238 }
239 
241 
244 int axlAbstractData::convertQVariantToData(const QVariantList& data){
245  return 0;
246 }
247 
248 // /////////////////////////////////////////////////////////////////
249 // axlAbstractData documentation
250 // /////////////////////////////////////////////////////////////////
251 
void touchGeometry(void)
const QColor & color(void) const
virtual void touchField(void)
void setMesh(axlMesh *mesh)
Set a corresponding mesh for that object.
void setUpdateView(bool updateView)
bool updateFieldList(QString nameField)
Check if a field with the same name is already applied on the object.
void modifiedStructure(void)
void setShader(const QString &shader)
const QString & shader(void) const
QString changeFieldName(QString fieldName)
const bool & editable(void)
axlMesh * mesh(void)
Return the mesh of that object is computed.
void setEditable(bool edit)
virtual int convertQVariantToData(const QVariantList &data)
Modify properties and geometry variables of the axlAbstractData. Return 1 if the modification was suc...
void modifiedGeometry(void)
void modifiedProperty(void)
void touchProperty(void)
virtual QVariantList convertDataToQVariant(void) const
Convert an axlAbstractData into a QVariantList that specifies all properties of the axlAbstractData...
const double & opacity(void) const
const bool & updateView(void)
Class axlAbstractField defines an API for arrays of numeric data.
void setOpacity(const double &opacity)
const double & size(void) const
virtual ~axlAbstractData(void)
void addField(axlAbstractField *field)
Add a field to the field list of the object.
void touchStructure(void)
QList< axlAbstractField * > fields(void)
void setSize(const double &size)
void setColor(double r, double g, double b)
axlAbstractData(axlAbstractData *parent=NULL)
Class axlAbstractData defines an API for all type of axel data.
void modifiedField(void)
Class axlMesh defines a piecewise-linear 3D object.
Definition: axlMesh.h:41