]> Creatis software - bbtkGEditor.git/blob - lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBoxModel.cxx
c7b2c0caa47cf23b1483173f07f1a6680c9ee728
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsKernelEditorGraphic / GBoxModel.cxx
1 /*=========================================================================                                                                               
2 Program:   bbtk
3 Module:    $RCSfile$
4 Language:  C++
5 Date:      $Date$
6 Version:   $Revision$
7 =========================================================================*/
8
9 /* ---------------------------------------------------------------------
10
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
13 *
14 *  This software is governed by the CeCILL-B license under French law and 
15 *  abiding by the rules of distribution of free software. You can  use, 
16 *  modify and/ or redistribute the software under the terms of the CeCILL-B 
17 *  license as circulated by CEA, CNRS and INRIA at the following URL 
18 *  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
19 *  or in the file LICENSE.txt.
20 *
21 *  As a counterpart to the access to the source code and  rights to copy,
22 *  modify and redistribute granted by the license, users are provided only
23 *  with a limited warranty  and the software's author,  the holder of the
24 *  economic rights,  and the successive licensors  have only  limited
25 *  liability. 
26 *
27 *  The fact that you are presently reading this means that you have had
28 *  knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */                                                                         
30
31 /**
32 *  \file 
33 *  \brief Class bbtk::GBox 
34 */
35
36
37 #include "GBoxModel.h"
38
39 namespace bbtk
40 {
41         //=========================================================================
42
43         GBoxModel::GBoxModel()
44         {               
45         }
46
47         //=========================================================================
48
49         GBoxModel::~GBoxModel()
50         {
51         }
52
53         //=========================================================================
54
55         void GBoxModel::setInicPoint(double& x, double& y, double& z)
56         {
57                 GObjectModel::setInicPoint(x,y,z);
58
59                 double xFin=x+BOX_WIDTH,yFin=y-BOX_HEIGHT;
60                 setFinalPoint(xFin,yFin,z);
61         }
62
63         //=========================================================================
64
65         void GBoxModel::addInputPort(GPortModel *inputport)
66         {
67                 _inputs.push_back(inputport);
68         }
69
70         //=========================================================================
71
72         void GBoxModel::addOutputPort(GPortModel *outputport)
73         {
74                 _outputs.push_back(outputport);
75         }
76
77         //=========================================================================
78
79         int GBoxModel::getNumInputPorts()
80         {
81                 return _inputs.size();
82         }
83
84         //=========================================================================
85
86         int GBoxModel::getNumOutputPorts()
87         {
88                 return _outputs.size();
89         }
90
91         //=========================================================================
92
93         void GBoxModel::move(double xx,double yy,double zz)
94         {
95                 setInicPoint(xx,yy,zz);
96
97                 //Refresh inputs position
98                 int i;
99                 for(i=0;i<(int)_inputs.size();i++)
100                 {
101                         _inputs[i]->updatePortPosition();
102                 }
103                 
104                 //Refresh outputs position
105                 for(i=0;i<(int)_outputs.size();i++)
106                 {
107                         _outputs[i]->updatePortPosition();
108                 }
109
110         }
111         
112         //=========================================================================
113         
114         std::string GBoxModel::getStatusText()
115         {
116                 std::string temp = "";
117                 
118                 return temp;
119         }
120
121         //=========================================================================
122
123         std::vector<GPortModel*> GBoxModel::getInputPorts()
124         {
125                 return _inputs;
126         }
127
128         //=========================================================================
129
130         std::vector<GPortModel*> GBoxModel::getOutputPorts()
131         {
132                 return _outputs;
133         }
134
135         //=========================================================================     
136
137         void GBoxModel::save(std::string &content)
138         {
139                 content+="\n";
140         }
141         
142
143         //=========================================================================
144
145         GPortModel* GBoxModel::getInputPort(std::string name)
146         {
147                 for(int i = 0; i<(int)_inputs.size();i++)
148                 {
149                         if(_inputs[i]->getBBTKName()==name)
150                         {
151                                 return _inputs[i];
152                         }
153                 }
154                 return NULL;
155         }
156
157         //=========================================================================
158         
159         GPortModel* GBoxModel::getOutputPort(std::string name)
160         {
161                 for(int i = 0; i<(int)_outputs.size();i++)
162                 {
163                         if(_outputs[i]->getBBTKName()==name)
164                         {
165                                 return _outputs[i];
166                         }
167                 }
168                 return NULL;
169         }
170
171         //=========================================================================
172
173         GPortModel* GBoxModel::getInputPort(int pos)
174         {
175                 return _inputs[pos];
176         }
177
178         //=========================================================================
179         
180         GPortModel* GBoxModel::getOutputPort(int pos)
181         {
182                 return _outputs[pos];
183         }
184
185         //=========================================================================
186
187         void GBoxModel::updatePorts()
188         {
189                 for(int i = 0; i<(int)_inputs.size();i++)
190                 {       
191                         _inputs[i]->updatePortPosition();
192                         _inputs[i]->notifyObservers(_objectId);
193                 }
194
195                 for(int i = 0; i<_outputs.size();i++)
196                 {
197                         _outputs[i]->updatePortPosition();
198                         _outputs[i]->notifyObservers(_objectId);
199                 }
200         }
201
202         void GBoxModel::addColons(std::string &text)
203         {
204                 std::string character("&&2P&&");                                
205                 size_t pos;
206                 pos = text.find(character);
207                 while(pos != std::string::npos)
208                 {
209                 //We replace the character "&&2P&&" with ":" for all the string
210                         text.replace(pos, character.length(),":");
211                         pos = text.find(character, pos);
212                 }
213         }
214
215         void GBoxModel::removeColons(std::string &text)
216         {
217                 std::string character(":");                             
218                 size_t pos;
219                 pos = text.find(character);
220                 while(pos != std::string::npos)
221                 {
222                         //We replace the character ":" with "&&2P&&" for all the string
223                         text.replace(pos, character.length(),"&&2P&&");
224                         pos = text.find(character, pos);
225                         }
226         }
227
228         //=========================================================================
229
230
231 }  // EO namespace bbtk
232
233 // EOF
234