Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BasicSCProperties.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2014 UJF-Grenoble 1, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 
26 #ifndef BASICSCPROPERTIES_H
27 #define BASICSCPROPERTIES_H
28 
29 #include "Properties.h"
30 #include "RenderingMode.h"
42 class BasicSCProperties : public Properties {
43 
44 public:
47  enum Color {
49  RED,
54  };
55 
58  alloc();
59  setColor(c);
61  };
62 
63  BasicSCProperties(PhysicalModel * p, xmlNodePtr node);
64  BasicSCProperties(PhysicalModel *p, const Color c, const std::string n) : Properties(p, n) {
65  alloc();
66  setColor(c);
68  };
69 
71  BasicSCProperties(PhysicalModel *p, const double * rgb) : Properties(p) {
72  alloc();
73  setRGB(rgb);
74  setAlpha(1.0);
76  };
77 
78  BasicSCProperties(PhysicalModel *p, const double * rgb, const std::string n) : Properties(p, n) {
79  alloc();
80  setRGB(rgb);
81  setAlpha(1.0);
83  };
84 
86  BasicSCProperties(PhysicalModel *p, const double r, const double g, const double b) : Properties(p) {
87  alloc();
88  setRGB(r, g, b);
89  setAlpha(1.0);
91  };
92 
93  BasicSCProperties(PhysicalModel *p, const double r, const double g, const double b, const std::string n) : Properties(p, n) {
94  alloc();
95  setRGB(r, g, b);
96  setAlpha(1.0);
98  };
99 
102  alloc();
103  setColor(DEFAULT);
105  }
106 
107  ;
108  BasicSCProperties(PhysicalModel *p, const std::string n) : Properties(p, n) {
109  alloc();
110  setColor(DEFAULT);
112  };
113 
114  virtual ~BasicSCProperties() {
115  delete [] colorRGBA;
116  };
117 
118  double getRed() const;
119  double getGreen() const;
120  double getBlue() const;
121  double getAlpha() const;
122  double * getRGB() const;
123  double * getRGBA() const;
124  Color getColor() const;
125 
126  void setRed(const double r);
127  void setGreen(const double g);
128  void setBlue(const double b);
129  void setAlpha(const double a);
130  void setRGB(const double * rgb);
131  void setRGB(const double r, const double g, const double b);
132  void setRGBA(const double r, const double g, const double b, const double a);
133  void setRGBA(const double * rgba);
134  void setColor(Color c);
135 
136  void setMode(const RenderingMode::Mode);
138  bool isVisible(const RenderingMode::Mode mode) const;
139  void setVisible(const RenderingMode::Mode, const bool);
140 
142  std::string getModeString() const;
143 
148  virtual void xmlPrint(std::ostream &) = 0;
149 
150 protected:
152  void beginXML(std::ostream &);
154  void endXML(std::ostream &);
155 
156 private:
157  double *colorRGBA;
158  void alloc();
161 };
162 
163 // inlines
164 inline double BasicSCProperties::getRed() const {
165  return colorRGBA[0];
166 }
167 
168 inline double BasicSCProperties::getGreen() const {
169  return colorRGBA[1];
170 }
171 
172 inline double BasicSCProperties::getBlue() const {
173  return colorRGBA[2];
174 }
175 
176 inline double BasicSCProperties::getAlpha() const {
177  return colorRGBA[3];
178 }
179 
180 inline double * BasicSCProperties::getRGB() const {
181  return colorRGBA;
182 }
183 
184 inline double * BasicSCProperties::getRGBA() const {
185  return colorRGBA;
186 }
187 
189  return color;
190 }
191 
192 // TODO : a test for the color, if a composant is changed it might still be something we know
193 // so color = OTHER is a bit presumptuous
194 inline void BasicSCProperties::setRed(const double r) {
195  colorRGBA[0] = r;
196  color = OTHER;
197 }
198 
199 inline void BasicSCProperties::setGreen(const double g) {
200  colorRGBA[1] = g;
201  color = OTHER;
202 }
203 
204 inline void BasicSCProperties::setBlue(const double b) {
205  colorRGBA[2] = b;
206  color = OTHER;
207 }
208 
209 inline void BasicSCProperties::setAlpha(const double a) {
210  colorRGBA[3] = a;
211  color = OTHER;
212 }
213 
214 inline void BasicSCProperties::setRGB(const double r, const double g, const double b) {
215  setRed(r);
216  setGreen(g);
217  setBlue(b);
218  color = OTHER;
219 }
220 
221 inline void BasicSCProperties::setRGB(const double * rgb) {
222  setRGB(rgb[0], rgb[1], rgb[2]);
223  color = OTHER;
224 }
225 
226 inline void BasicSCProperties::setRGBA(const double r, const double g, const double b, const double a) {
227  setRed(r);
228  setGreen(g);
229  setBlue(b);
230  setAlpha(a);
231  color = OTHER;
232 }
233 
234 inline void BasicSCProperties::setRGBA(const double *rgba) {
235  setRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
236  color = OTHER;
237 }
238 
240  switch (c) {
241 
242  case RED:
243  setRGBA(1.0, 0.0, 0.0, 1.0);
244  break;
245 
246  case GREEN:
247  setRGBA(0.0, 1.0, 0.0, 1.0);
248  break;
249 
250  case BLUE:
251  setRGBA(0.0, 0.0, 1.0, 1.0);
252  break;
253 
254  default: // DEFAULT:or GRAY:or OTHER
255  setRGBA(0.8, 0.8, 0.8, 1.0);
256  break;
257  }
258 
259  color = c;
260 }
261 
263  colorRGBA = new double[4];
264 }
265 
267  mode.setMode(m);
268 }
269 
271  return mode.getMode();
272 }
273 
274 inline std::string BasicSCProperties::getModeString() const {
275  return mode.getModeString();
276 }
277 
279  return mode.isVisible(m);
280 }
281 
282 inline void BasicSCProperties::setVisible(const RenderingMode::Mode m, const bool b) {
283  this->mode.setVisible(m, b);
284 }
285 
286 // write the default xml properties (beginning)
287 inline void BasicSCProperties::beginXML(std::ostream & o) {
288  // print the name if there is one
289  if (getName() != "")
290  o << " name=\"" << getName().c_str() << "\"";
291 
292  // the mode property (if different than default)
293  if (mode.getMode() != RenderingMode::NONE) {
294  o << " mode=\"" << mode.getModeString() << "\"";
295  }
296 }
297 
298 // write the default xml properties (end)
299 inline void BasicSCProperties::endXML(std::ostream &) {
300  // nothing to be done
301 }
302 
303 
304 #endif
void setVisible(const RenderingMode::Mode, const bool)
Definition: BasicSCProperties.h:282
void setGreen(const double g)
Definition: BasicSCProperties.h:199
BasicSCProperties(PhysicalModel *p)
defaultcolor is gray
Definition: BasicSCProperties.h:101
Color color
Definition: BasicSCProperties.h:159
Definition: BasicSCProperties.h:53
void setMode(const RenderingMode::Mode)
Definition: BasicSCProperties.h:266
Color getColor() const
Definition: BasicSCProperties.h:188
virtual ~BasicSCProperties()
Definition: BasicSCProperties.h:114
bool isVisible(const RenderingMode::Mode mode) const
Definition: BasicSCProperties.h:278
void setRGB(const double *rgb)
Definition: BasicSCProperties.h:221
std::string getName() const
get the name (be careful, this method DOES NOT return a copy, so you got the direct ptr to the name!!...
Definition: Properties.h:230
void setRed(const double r)
Definition: BasicSCProperties.h:194
full complete flashy red
Definition: BasicSCProperties.h:49
void setBlue(const double b)
Definition: BasicSCProperties.h:204
BasicSCProperties(PhysicalModel *p, const double r, const double g, const double b)
use 3 floats to set the color
Definition: BasicSCProperties.h:86
Describes the properties common to all structures and components.
Definition: Properties.h:57
Definition: BasicSCProperties.h:50
void setColor(Color c)
Definition: BasicSCProperties.h:239
BasicSCProperties(PhysicalModel *p, const Color c, const std::string n)
Definition: BasicSCProperties.h:64
double getRed() const
Definition: BasicSCProperties.h:164
Mode
This is a duplicate of RenderingMode Mode....
Definition: RenderingMode.h:40
std::string getModeString() const
get the string equivalent to the enum rendering mode
Definition: BasicSCProperties.h:274
Color
Default color settings.
Definition: BasicSCProperties.h:47
virtual void xmlPrint(std::ostream &)=0
print to an output stream in "pseaudo" XML format.
double getBlue() const
Definition: BasicSCProperties.h:172
A special class to manage the basic structural component properties.
Definition: BasicSCProperties.h:42
RenderingMode::Mode getMode() const
Definition: BasicSCProperties.h:270
Definition: RenderingMode.h:45
BasicSCProperties(PhysicalModel *p, const Color c)
use a Color constant to set the color
Definition: BasicSCProperties.h:57
RenderingMode mode
Definition: BasicSCProperties.h:160
Definition: BasicSCProperties.h:51
BasicSCProperties(PhysicalModel *p, const double *rgb, const std::string n)
Definition: BasicSCProperties.h:78
void alloc()
Definition: BasicSCProperties.h:262
Definition: BasicSCProperties.h:48
std::string getModeString() const
get the string equivalent to the enum rendering mode
Definition: RenderingMode.h:206
void endXML(std::ostream &)
write the default xml properties (end)
Definition: BasicSCProperties.h:299
This is the main class of this project.
Definition: PhysicalModel.h:74
double * getRGB() const
Definition: BasicSCProperties.h:180
RenderingMode::Mode getMode() const
get current mode
Definition: RenderingMode.h:173
double getGreen() const
Definition: BasicSCProperties.h:168
double getAlpha() const
Definition: BasicSCProperties.h:176
void setMode(const Mode mode)
set a vizualisation mode
Definition: RenderingMode.h:137
Definition: BasicSCProperties.h:52
BasicSCProperties(PhysicalModel *p, const double r, const double g, const double b, const std::string n)
Definition: BasicSCProperties.h:93
void setAlpha(const double a)
Definition: BasicSCProperties.h:209
Definition: RenderingMode.h:41
BasicSCProperties(PhysicalModel *p, const double *rgb)
use a double[3] array to set the color
Definition: BasicSCProperties.h:71
Handle rendering options (surface and wireframe) of an Object3D.
Definition: RenderingMode.h:37
double * getRGBA() const
Definition: BasicSCProperties.h:184
double * colorRGBA
Definition: BasicSCProperties.h:157
void setVisible(const Mode mode, const bool value)
Set a rendering mode visible or not.
Definition: RenderingMode.h:69
BasicSCProperties(PhysicalModel *p, const std::string n)
Definition: BasicSCProperties.h:108
void setRGBA(const double r, const double g, const double b, const double a)
Definition: BasicSCProperties.h:226
bool isVisible(const Mode mode) const
Return if a rendering mode is currently visible or not.
Definition: RenderingMode.h:101
void beginXML(std::ostream &)
write the default xml properties (beginning)
Definition: BasicSCProperties.h:287