Developer documentation | Axl-2.5.1

axlFieldSpatialPointDistanceCreator.cpp
Go to the documentation of this file.
1 /* axlFieldSpatialPointDistanceCreator.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 
19 #include <axlCore/axlPoint.h>
21 #include <axlCore/axlDataDynamic.h>
22 
23 #include <dtkCoreSupport/dtkAbstractProcessFactory.h>
24 #include <dtkCoreSupport/dtkAbstractDataFactory.h>
25 #include <dtkCoreSupport/dtkGlobal.h>
26 #include <QtGui>
27 
28 class axlFieldSpatialPointDistanceCreatorPrivate
29 {
30 public:
31  axlAbstractData * input;
32  double x;
33  double y;
34  double z;
35 };
36 
38 {
39  d->input = NULL;
40  d->x = 0;
41  d->y = 0;
42  d->z = 0;
43 
44 }
45 
47 {
48  delete d;
49 
50  d = NULL;
51 }
52 
53 
54 void axlFieldSpatialPointDistanceCreator::setInput(dtkAbstractData *data, int channel)
55 {
56  if(axlAbstractData *axlData = dynamic_cast<axlAbstractData *>(data))
57  {
58  if(channel == 0){
59 
60  d->input = axlData;
61  }
62  }
63 
64 }
65 
67 {
68  if(channel == 0){
69  d->x = data;
70  }else if(channel == 1){
71  d->y = data;
72  }else if(channel == 2){
73  d->z = data;
74  }
75 }
76 
77 
78 
80 {
81 
82  if(!d->input){
83  return 0;
84  }
85 
86  //create field.
88  QString newName = d->input->changeFieldName(spatialField->objectName());
89  spatialField->setObjectName(newName);
90  d->input->addField(spatialField);
91 
92 
93 
94  if(spatialField == NULL) { // field not found !!
95  return 0;
96  }
97 
98  spatialField->setParameter(d->x,0);
99  spatialField->setParameter(d->y,1);
100  spatialField->setParameter(d->z,2);
101  spatialField->update();
102 
103 
104 
105  QList<axlAbstractData *>list;
106  list << d->input;
107  emit dataSetFieldsChanged(list, spatialField->objectName());
108 
109  return 1;
110 
111 }
112 
113 
115 {
116  return 0;
117 }
118 
119 
121 {
122  return "axlFieldSpatialPointDistanceCreator created fields for input dataset that evaluate the distance from data to a point in the 3D space";
123 }
124 
126 {
127  return "axlFieldSpatialPointDistanceCreator";
128 }
129 
130 // /////////////////////////////////////////////////////////////////
131 // Type instanciation
132 // /////////////////////////////////////////////////////////////////
133 
135 {
137 }
138 
dtkAbstractProcess * createaxlFieldSpatialPointDistanceCreator(void)
void setInput(dtkAbstractData *data, int channel=0)
void dataSetFieldsChanged(QList< axlAbstractData * > dataSet, QString fieldName)
Class axlFieldSpatialPointDistance defines an API for spatial field.
void setParameter(double data, int channel)
Sets the reference point.
Class axlAbstractData defines an API for all type of axel data.