Computer Assited Medical Intervention Tool Kit  version 4.0
Geometry.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2016 Univ. Grenoble Alpes, 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 GEOMETRY_H
27 #define GEOMETRY_H
28 
29 // -- Core stuff
30 #include "CamiTKAPI.h"
31 #include "InterfaceGeometry.h"
32 
33 #include <QMap>
34 
35 //-- VTK Classes
36 class vtkPointSet;
37 class vtkAlgorithmOutput;
38 class vtkDataSetMapper;
39 class vtkActor;
40 class vtkProp;
41 class vtkTexture;
42 class vtkGlyph3D;
43 class vtkTransform;
44 class vtkTubeFilter;
45 class vtkCastToConcrete;
46 class vtkTextMapper;
47 class vtkSphereSource;
48 class vtkTransformFilter;
49 
50 namespace camitk {
127 
128 public:
140  Geometry(QString label, vtkSmartPointer<vtkPointSet> pointSet, const InterfaceGeometry::RenderingModes mode = InterfaceGeometry::Surface);
141 
143  virtual ~Geometry();
144 
146  virtual const QString getLabel() const {
147  return label;
148  }
149 
151  virtual void setLabel(QString newName) {
152  label = newName;
153  updateLabel();
154  }
155 
160  virtual vtkSmartPointer<vtkPointSet> getPointSet() {
163  return pointSet;
164  }
165 
167  virtual void setPointSet(vtkSmartPointer<vtkPointSet> ds);
168 
170  virtual void setMeshWorldTransform(vtkSmartPointer<vtkTransform>);
171 
173  virtual vtkSmartPointer<vtkAlgorithmOutput> getDataPort() const {
174  return dataOutput;
175  }
176 
178  virtual void setDataConnection(vtkSmartPointer<vtkAlgorithmOutput>);
179 
181  virtual void setPointData(vtkSmartPointer<vtkDataArray>);
182 
187  virtual vtkSmartPointer<vtkActor> getActor(const RenderingModes);
188 
190  virtual vtkSmartPointer<vtkProp> getProp(const QString &);
191 
193  virtual unsigned int getNumberOfProp() const;
194 
196  virtual vtkSmartPointer<vtkProp> getProp(unsigned int);
197 
201  virtual bool addProp(const QString &, vtkSmartPointer<vtkProp>);
202 
206  virtual bool removeProp(const QString &);
207 
209  virtual void setTexture(vtkSmartPointer<vtkTexture> texture);
210 
212  virtual void pointPicked(vtkIdType, bool) {};
213 
215  virtual void cellPicked(vtkIdType, bool) {};
216 
218 
221 
223  virtual void getBounds(double *bounds);
224 
226  virtual double getBoundingRadius();
227 
229  virtual void setPointPosition(const unsigned int orderNumber, const double x, const double y, const double z);
230 
232 
233 
236 
238  virtual void setRenderingModes(const RenderingModes rMode) {
239  renderingModes = rMode;
240  }
241 
243  virtual const RenderingModes getRenderingModes() const {
244  return renderingModes;
245  }
246 
248  virtual void setEnhancedModes(const EnhancedModes );
249 
251  virtual const EnhancedModes getEnhancedModes() const {
252  return enhancedModes;
253  }
254 
256  virtual void setActorColor(const RenderingModes, double*);
257 
259  virtual void setActorColor(const RenderingModes, const double, const double, const double);
260 
262  virtual void getActorColor(const RenderingModes, double*);
263 
265  virtual void setColor(const double, const double, const double);
266 
268  virtual void setColor(const double, const double, const double, const double);
269 
271  virtual void setActorOpacity(const RenderingModes, const double);
272 
274  virtual double getActorOpacity(const RenderingModes) const;
275 
277  virtual void setOpacity(const double);
278 
280  virtual void setMapperScalarRange(double min, double max);
281 
283  virtual void setGlyphType(const GlyphTypes type, const double size = 0.0);
284 
286  virtual void setLinesAsTubes(bool tubes = false);
287 
289 
290 
291 private:
292 
295  vtkSmartPointer<vtkPointSet> pointSet;
298 
300  vtkSmartPointer<vtkAlgorithmOutput> dataOutput;
301 
303  vtkSmartPointer<vtkAlgorithmOutput> customPipelineOutput;
304 
306  vtkSmartPointer<vtkCastToConcrete> concreteData;
307 
309  vtkSmartPointer<vtkDataSetMapper> mapper;
310 
312  QMap<QString, vtkSmartPointer<vtkProp> > extraProp;
313 
315  vtkSmartPointer<vtkTextMapper> labelActorMapper;
316 
318  vtkSmartPointer<vtkActor> surfaceActor;
319 
321  vtkSmartPointer<vtkActor> wireframeActor;
322 
324  vtkSmartPointer<vtkActor> pointsActor;
325 
327  vtkSmartPointer<vtkTexture> texture;
328 
330  vtkSmartPointer<vtkTubeFilter> tube;
331 
333  vtkSmartPointer<vtkTransformFilter> worldTransformFilter;
334 
336 
340  InterfaceGeometry::RenderingModes renderingModes;
341 
343  InterfaceGeometry::EnhancedModes enhancedModes;
344 
346  double alphaShaded;
347 
349  QString label;
350 
352  double glyphSize;
353 
355  void buildLabel();
356 
358  void updateLabel();
359 
361  void buildGlyph(const GlyphTypes type);
362 
364  vtkSmartPointer<vtkSphereSource> sphereGeom;
366 
370  double surfaceColor[4];
372  double wireframeColor[4];
373  double pointsColor[4];
375 
381  double oldPointsColor[4];
383 protected:
384  vtkSmartPointer< vtkPointSet > New();
385 };
386 
387 
388 
389 }
390 
391 #endif
InterfaceGeometry::RenderingModes renderingModes
Definition: Geometry.h:340
vtkSmartPointer< vtkSphereSource > sphereGeom
the sphere glyph
Definition: Geometry.h:364
vtkSmartPointer< vtkActor > pointsActor
the point actor that manages the representation as a set of points
Definition: Geometry.h:324
vtkSmartPointer< vtkTubeFilter > tube
the tube filter (creates tubes insead of lines)
Definition: Geometry.h:330
virtual const QString getLabel() const
get the label of this Geometry instance
Definition: Geometry.h:146
double oldAlphaSurface
Definition: Geometry.h:378
virtual void pointPicked(vtkIdType, bool)
a vtkPoint of the structured was picked (to be reimplemented in a Component inherited class if needed...
Definition: Geometry.h:212
virtual vtkSmartPointer< vtkAlgorithmOutput > getDataPort() const
get the custom algorithm pipeline input.
Definition: Geometry.h:173
QMap< QString, vtkSmartPointer< vtkProp > > extraProp
The additional map for prop (include at least "label" and "glyph".
Definition: Geometry.h:312
virtual const EnhancedModes getEnhancedModes() const
get the current enhanced mode
Definition: Geometry.h:251
Definition: Action.cpp:40
virtual void cellPicked(vtkIdType, bool)
a vtkCell of the structured was picked (to be reimplemented in a Component inherited class if needed)...
Definition: Geometry.h:215
double glyphSize
current size of glyph (0.0 means no glyph)
Definition: Geometry.h:352
vtkSmartPointer< vtkAlgorithmOutput > dataOutput
to be able to set external custom pipeline
Definition: Geometry.h:300
#define CAMITK_API
Definition: CamiTKAPI.h:49
double oldAlphaWireframe
Definition: Geometry.h:379
vtkSmartPointer< vtkDataSetMapper > mapper
the VTK mapper
Definition: Geometry.h:309
InterfaceGeometry::EnhancedModes enhancedModes
Enhanced mode options (the way actors are rendered: normal, hidden, highlighted, shaded) ...
Definition: Geometry.h:343
vtkSmartPointer< vtkAlgorithmOutput > customPipelineOutput
the external custom pipeline output (equals to dataOuput if no custom pipeline plugged) ...
Definition: Geometry.h:303
the surface is visible
Definition: InterfaceGeometry.h:67
vtkSmartPointer< vtkCastToConcrete > concreteData
the filter to convert the DataSet to get a correct vtkPipeline output port
Definition: Geometry.h:306
double alphaShaded
Opacity value when this object must be shaded.
Definition: Geometry.h:346
virtual void setLabel(QString newName)
set the label of this Geometry instance
Definition: Geometry.h:151
vtkSmartPointer< vtkTexture > texture
texture of this object.
Definition: Geometry.h:327
vtkSmartPointer< vtkActor > surfaceActor
the surface actor that manages the surfacic representation
Definition: Geometry.h:318
A 3D representation of a vtkPointSet to be displayed in a InteractiveViewer, this class implements th...
Definition: Geometry.h:126
virtual const RenderingModes getRenderingModes() const
Return if the actor associated to a rendering mode is currently visible or not.
Definition: Geometry.h:243
vtkSmartPointer< vtkTextMapper > labelActorMapper
the mapper to create the text
Definition: Geometry.h:315
This class describes what are the methods to implement for a Geometry (rendering parameters, input/output, filters, picking parameters...)
Definition: InterfaceGeometry.h:61
virtual void setRenderingModes(const RenderingModes rMode)
Set the actor associated to a rendering mode visible or not.
Definition: Geometry.h:238
double oldAlphaPoints
Definition: Geometry.h:380
vtkSmartPointer< vtkActor > wireframeActor
the wireframe actor that manages the representation as wireframe
Definition: Geometry.h:321
vtkSmartPointer< vtkTransformFilter > worldTransformFilter
the transform filter to place the mesh correctly with respect to its Frame
Definition: Geometry.h:333
QString label
the label
Definition: Geometry.h:349