Developer documentation | Axl-2.5.1

axlEllipsoidCreator.cpp
Go to the documentation of this file.
1 /* axlEllipsoidCreator.cpp ---
2  *
3  * Author: Anais Ducoffe
4  * Copyright (C) 2013, Anais Ducoffe, INRIA.
5  */
6 
7 /* Commentary:
8  */
9 
10 /* Change log:
11  *
12  */
13 #include "axlEllipsoidCreator.h"
14 #include <axlCore/axlPoint.h>
15 #include <axlCore/axlEllipsoid.h>
17 
18 #include <dtkCoreSupport/dtkAbstractProcessFactory.h>
19 
23 
24 class axlEllipsoidCreatorPrivate{
25 
26 public :
27  axlPoint *point1;
28  axlPoint *point2;
29  axlPoint *point3;
30  axlPoint *point4;
31  axlEllipsoid *output;
32 
33 
34 };
35 
39 axlEllipsoidCreator::axlEllipsoidCreator(QObject *parent) : axlAbstractCreatorProcess(), d(new axlEllipsoidCreatorPrivate){
40  d->point1 = NULL;
41  d->point2 = NULL;
42  d->point3 = NULL;
43  d->point4 = NULL;
44  d->output = NULL;
45 
46  dtkAbstractProcessFactory::instance()->registerProcessType("axlEllipsoidCreator", createaxlEllipsoidCreator);
47 
48 }
49 
51 
52  delete d;
53  d = NULL;
54 }
55 
56 
58  if(channel == 0){
59  return d->point1;
60  }else if(channel == 1){
61  return d->point2;
62  }
63  else if(channel == 2){
64  return d->point3;
65  }
66  else{
67  return d->point4;
68  }
69 }
70 
71 
73  if(d->output){
74  d->output = dynamic_cast<axlEllipsoid *>(process->output());
75  }
76 }
77 
79  return false;
80 }
81 
82 
83 dtkAbstractData *axlEllipsoidCreator::output(void){
84  return d->output;
85 }
86 
87 
88 void axlEllipsoidCreator::setInput(dtkAbstractData *newData, int channel){
89  if(dynamic_cast<axlPoint *>(newData)){
90  axlPoint *point = dynamic_cast<axlPoint *>(newData);
91  if(channel == 0){
92  d->point1 = point;
93  }else if(channel == 1){
94  d->point2 = point;
95  }
96  else if(channel == 2){
97  d->point3 = point;
98  }
99  else{
100  d->point4 = point;
101  }
102 
103  }
104 }
105 
106 
108 
109  if(d->output == NULL){
110  if(d->point1 && d->point2 && d->point3 && d->point4){
111  axlEllipsoid *newEllipsoid = new axlEllipsoid(d->point1, d->point2, d->point3, d->point4);
112  d->output = newEllipsoid;
113  return 1;
114  }else{
115  return 0;
116  }
117  }else{
118  if(d->point1 && d->point2 && d->point3 && d->point4){
119  d->output->setValues(d->point1, d->point2, d->point3, d->point4);
120  return 1;
121  }else{
122  return 0;
123  }
124 
125  }
126 
127 }
128 
130  return "create a ellipsoid with four points : \n the first one is the center, \n the three others determine its 3 axes";
131 }
132 
133 
135  return "axlEllipsoidCreator";
136 }
137 
138 
140  return dtkAbstractProcessFactory::instance()->registerProcessType("axlEllipsoidCreator", createaxlEllipsoidCreator);
141 }
142 
143 dtkAbstractProcess *createaxlEllipsoidCreator(void){
144  return new axlEllipsoidCreator;
145 }
Class axlPoint defines 3D points.
Definition: axlPoint.h:34
virtual ~axlEllipsoidCreator(void)
virtual QString description(void) const
virtual QString identifier(void) const
static bool registered(void)
virtual int update(void)
virtual axlAbstractData * getInput(int channel) const
void copyProcess(axlAbstractProcess *process)
virtual dtkAbstractData * output(void)
dtkAbstractProcess * createaxlEllipsoidCreator(void)
virtual void setInput(dtkAbstractData *newData, int channel)
Class axlEllipsoid defines 3D ellipsoids.
Definition: axlEllipsoid.h:35
axlEllipsoidCreator(QObject *parent=0)
Class axlAbstractData defines an API for all type of axel data.