OpenCMISS-Zinc C++ API Documentation
 All Classes Namespaces Files Functions Typedefs Enumerations Enumerator Pages
scene.hpp
Go to the documentation of this file.
1 
4 /* OpenCMISS-Zinc Library
5 *
6 * This Source Code Form is subject to the terms of the Mozilla Public
7 * License, v. 2.0. If a copy of the MPL was not distributed with this
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 #ifndef CMZN_SCENE_HPP__
10 #define CMZN_SCENE_HPP__
11 
12 #include "opencmiss/zinc/scene.h"
13 #include "opencmiss/zinc/field.hpp"
14 #include "opencmiss/zinc/graphics.hpp"
15 #include "opencmiss/zinc/light.hpp"
16 #include "opencmiss/zinc/region.hpp"
17 #include "opencmiss/zinc/scenefilter.hpp"
18 #include "opencmiss/zinc/selection.hpp"
19 #include "opencmiss/zinc/spectrum.hpp"
20 #include "opencmiss/zinc/timekeeper.hpp"
21 
22 namespace OpenCMISS
23 {
24 namespace Zinc
25 {
26 
27 class StreaminformationScene;
28 class Sceneviewermodule;
29 class Scenepicker;
30 
37 class Scene
38 {
39 
40 protected:
41  cmzn_scene_id id;
42 
43 public:
44 
45  Scene() : id(0)
46  { }
47 
48  // takes ownership of C handle, responsibility for destroying it
49  explicit Scene(cmzn_scene_id scene_id) : id(scene_id)
50  { }
51 
52  Scene(const Scene& scene) : id(cmzn_scene_access(scene.id))
53  { }
54 
55  Scene& operator=(const Scene& scene)
56  {
57  cmzn_scene_id temp_id = cmzn_scene_access(scene.id);
58  if (0 != id)
59  {
60  cmzn_scene_destroy(&id);
61  }
62  id = temp_id;
63  return *this;
64  }
65 
66  ~Scene()
67  {
68  if (0 != id)
69  {
70  cmzn_scene_destroy(&id);
71  }
72  }
73 
79  bool isValid() const
80  {
81  return (0 != id);
82  }
83 
89  cmzn_scene_id getId() const
90  {
91  return id;
92  }
93 
104  {
105  return cmzn_scene_begin_change(id);
106  }
107 
117  int endChange()
118  {
119  return cmzn_scene_end_change(id);
120  }
121 
147  int convertToPointCloud(const Scenefilter& filter, const Nodeset& nodeset,
148  const Field& coordinateField, double lineDensity, double lineDensityScaleFactor,
149  double surfaceDensity, double surfaceDensityScaleFactor)
150  {
151  return cmzn_scene_convert_to_point_cloud(id, filter.getId(),
152  nodeset.getId(), coordinateField.getId(),
153  lineDensity, lineDensityScaleFactor,
154  surfaceDensity, surfaceDensityScaleFactor);
155  }
156 
171  int convertPointsToNodes(const Scenefilter& filter, const Nodeset& nodeset,
172  const Field& coordinateField)
173  {
174  return cmzn_scene_convert_points_to_nodes(id, filter.getId(),
175  nodeset.getId(), coordinateField.getId());
176  }
177 
185  {
186  return Graphics(cmzn_scene_create_graphics(id,
187  static_cast<cmzn_graphics_type>(graphicsType)));
188  }
189 
198  {
199  return GraphicsContours(cmzn_scene_create_graphics_contours(id));
200  }
201 
209  {
210  return GraphicsLines(cmzn_scene_create_graphics_lines(id));
211  }
212 
222  {
223  return GraphicsPoints(cmzn_scene_create_graphics_points(id));
224  }
225 
232  {
233  return GraphicsStreamlines(cmzn_scene_create_graphics_streamlines(id));
234  }
235 
243  {
244  return GraphicsSurfaces(cmzn_scene_create_graphics_surfaces(id));
245  }
246 
256  {
257  return Selectionnotifier(cmzn_scene_create_selectionnotifier(id));
258  }
259 
278  Graphics findGraphicsByName(const char *name)
279  {
280  return Graphics(cmzn_scene_find_graphics_by_name(id, name));
281  }
282 
289  {
290  return Graphics(cmzn_scene_get_first_graphics(id));
291  }
292 
299  Graphics getNextGraphics(const Graphics& refGraphics)
300  {
301  return Graphics(cmzn_scene_get_next_graphics(id, refGraphics.getId()));
302  }
303 
311  {
312  return Graphics(cmzn_scene_get_previous_graphics(id, refGraphics.getId()));
313  }
314 
321  {
322  return cmzn_scene_get_number_of_graphics(id);
323  }
324 
330  inline Region getRegion() const
331  {
332  return Region(cmzn_scene_get_region(id));
333  }
334 
341  {
342  return Fontmodule(cmzn_scene_get_fontmodule(id));
343  }
344 
353  {
354  return Glyphmodule(cmzn_scene_get_glyphmodule(id));
355  }
356 
365  {
366  return Lightmodule(cmzn_scene_get_lightmodule(id));
367  }
368 
378  {
379  return Materialmodule(cmzn_scene_get_materialmodule(id));
380  }
381 
389  {
390  return Scenefiltermodule(cmzn_scene_get_scenefiltermodule(id));
391  }
392 
400 
408  {
409  return Spectrummodule(cmzn_scene_get_spectrummodule(id));
410  }
411 
419  {
420  return Tessellationmodule(cmzn_scene_get_tessellationmodule(id));
421  }
422 
430  {
431  return Timekeepermodule(cmzn_scene_get_timekeepermodule(id));
432  }
433 
440  {
441  return Field(cmzn_scene_get_selection_field(id));
442  }
443 
454  int setSelectionField(const Field& selectionField)
455  {
456  return cmzn_scene_set_selection_field(id, selectionField.getId());
457  }
458 
479  int getSpectrumDataRange(const Scenefilter& filter, const Spectrum& spectrum,
480  int valuesCount, double *minimumValuesOut, double *maximumValuesOut)
481  {
482  return cmzn_scene_get_spectrum_data_range(id, filter.getId(),
483  spectrum.getId(), valuesCount, minimumValuesOut, maximumValuesOut);
484  }
485 
492  {
493  return cmzn_scene_get_visibility_flag(id);
494  }
495 
503  int setVisibilityFlag(bool visibilityFlag)
504  {
505  return cmzn_scene_set_visibility_flag(id, visibilityFlag);
506  }
507 
519  int moveGraphicsBefore(const Graphics& graphics, const Graphics& refGraphics)
520  {
521  return cmzn_scene_move_graphics_before(id, graphics.getId(), refGraphics.getId());
522  }
523 
530  {
531  return cmzn_scene_remove_all_graphics(id);
532  }
533 
540  int removeGraphics(const Graphics& graphics)
541  {
542  return cmzn_scene_remove_graphics(id, graphics.getId());
543  }
544 
552  {
553  return cmzn_scene_write_description(id);
554  }
555 
565  int readDescription(const char *description, bool overwrite)
566  {
567  return cmzn_scene_read_description(id, description, overwrite);
568  }
569 
577 
588  inline int write(const StreaminformationScene& streaminformationScene);
589 
599  inline int read(const StreaminformationScene& streaminformationScene);
600 
608 
609 };
610 
611 inline bool operator==(const Scene& a, const Scene& b)
612 {
613  return a.getId() == b.getId();
614 }
615 
617 {
618  return Scene(cmzn_region_get_scene(id));
619 }
620 
622 {
623  return Scene(cmzn_graphics_get_scene(id));
624 }
625 
626 inline int Spectrum::autorange(const Scene &scene, const Scenefilter &scenefilter)
627 {
628  return cmzn_spectrum_autorange(id, scene.getId(), scenefilter.getId());
629 }
630 
631 } // namespace Zinc
632 }
633 
634 #endif
Graphics getFirstGraphics()
Definition: scene.hpp:288
int autorange(const Scene &scene, const Scenefilter &scenefilter)
Definition: scene.hpp:626
Graphics getNextGraphics(const Graphics &refGraphics)
Definition: scene.hpp:299
cmzn_scenefilter_id getId() const
Definition: scenefilter.hpp:86
Lines visualise 1-D elements in the model.
Definition: graphics.hpp:848
int setVisibilityFlag(bool visibilityFlag)
Definition: scene.hpp:503
Materialmodule getMaterialmodule()
Definition: scene.hpp:377
Utility object for picking graphics and model objects.
Definition: scenepicker.hpp:32
int endChange()
Definition: scene.hpp:117
Module managing all light objects.
Definition: light.hpp:484
int removeGraphics(const Graphics &graphics)
Definition: scene.hpp:540
Surfaces visualise 2-D elements in the model.
Definition: graphics.hpp:1067
Scenepicker createScenepicker()
Definition: scenepicker.hpp:248
Glyphmodule getGlyphmodule()
Definition: scene.hpp:352
Base field type: an abstraction of a mathematical field.
Definition: field.hpp:50
Graphics createGraphics(Graphics::Type graphicsType)
Definition: scene.hpp:184
int readDescription(const char *description, bool overwrite)
Definition: scene.hpp:565
Module managing all fonts.
Definition: font.hpp:273
cmzn_nodeset_id getId() const
Definition: node.hpp:515
bool isValid() const
Definition: scene.hpp:79
Container/manager for graphics visualising a region.
Definition: scene.hpp:37
int getSpectrumDataRange(const Scenefilter &filter, const Spectrum &spectrum, int valuesCount, double *minimumValuesOut, double *maximumValuesOut)
Definition: scene.hpp:479
Points graphics visualise discrete locations in the model.
Definition: graphics.hpp:875
Lightmodule getLightmodule()
Definition: scene.hpp:364
Tessellationmodule getTessellationmodule()
Definition: scene.hpp:418
char * writeDescription()
Definition: scene.hpp:551
Manages individual user notification of changes to the selection group.
Definition: selection.hpp:158
A hierarchical block/namespace owning domains and fields.
Definition: region.hpp:33
int setSelectionField(const Field &selectionField)
Definition: scene.hpp:454
Base graphics type: produces 3-D graphics visualising domains and fields.
Definition: graphics.hpp:45
cmzn_spectrum_id getId() const
Definition: spectrum.hpp:741
Module managing all scene filters.
Definition: scenefilter.hpp:313
GraphicsPoints createGraphicsPoints()
Definition: scene.hpp:221
A scene-specific stream information object.
Definition: streamscene.hpp:31
int convertToPointCloud(const Scenefilter &filter, const Nodeset &nodeset, const Field &coordinateField, double lineDensity, double lineDensityScaleFactor, double surfaceDensity, double surfaceDensityScaleFactor)
Definition: scene.hpp:147
cmzn_field_id getId() const
Definition: field.hpp:102
bool getVisibilityFlag()
Definition: scene.hpp:491
GraphicsLines createGraphicsLines()
Definition: scene.hpp:208
Module object for creating and managing scene viewers.
Definition: sceneviewer.hpp:1234
Field getSelectionField()
Definition: scene.hpp:439
GraphicsContours createGraphicsContours()
Definition: scene.hpp:197
cmzn_scene_id getId() const
Definition: scene.hpp:89
int read(const StreaminformationScene &streaminformationScene)
Definition: streamscene.hpp:324
GraphicsStreamlines createGraphicsStreamlines()
Definition: scene.hpp:231
Module managing all spectrums.
Definition: spectrum.hpp:1037
Module managing all materials.
Definition: material.hpp:350
Zinc Spectrum maps values of graphics data fields to colours.
Definition: spectrum.hpp:656
Scene getScene()
Definition: scene.hpp:616
Module managing all glyphs.
Definition: glyph.hpp:714
int moveGraphicsBefore(const Graphics &graphics, const Graphics &refGraphics)
Definition: scene.hpp:519
Sceneviewermodule getSceneviewermodule()
Definition: sceneviewer.hpp:1341
int write(const StreaminformationScene &streaminformationScene)
Definition: streamscene.hpp:319
Scenefiltermodule getScenefiltermodule()
Definition: scene.hpp:388
Graphics findGraphicsByName(const char *name)
Definition: scene.hpp:278
Fontmodule getFontmodule()
Definition: scene.hpp:340
Module managing all tessellation objects.
Definition: tessellation.hpp:354
Streamlines visualise the path of a fluid particle tracking along a vector field. ...
Definition: graphics.hpp:904
Spectrummodule getSpectrummodule()
Definition: scene.hpp:407
int removeAllGraphics()
Definition: scene.hpp:529
Module for finding and managing timekeepers.
Definition: timekeeper.hpp:222
int convertPointsToNodes(const Scenefilter &filter, const Nodeset &nodeset, const Field &coordinateField)
Definition: scene.hpp:171
Type
Definition: graphics.hpp:131
StreaminformationScene createStreaminformationScene()
Definition: streamscene.hpp:313
Scene filters determines which graphics are drawn.
Definition: scenefilter.hpp:33
Timekeepermodule getTimekeepermodule()
Definition: scene.hpp:429
int beginChange()
Definition: scene.hpp:103
The contours derived graphics type.
Definition: graphics.hpp:708
Scene getScene()
Definition: scene.hpp:621
cmzn_graphics_id getId() const
Definition: graphics.hpp:153
Region getRegion() const
Definition: scene.hpp:330
Graphics getPreviousGraphics(const Graphics &refGraphics)
Definition: scene.hpp:310
Selectionnotifier createSelectionnotifier()
Definition: scene.hpp:255
int getNumberOfGraphics()
Definition: scene.hpp:320
A set of nodes or points.
Definition: node.hpp:462
GraphicsSurfaces createGraphicsSurfaces()
Definition: scene.hpp:242