Moogli
 All Classes
Compartment.hpp
1 #ifndef _COMPARTMENT_HPP_
2 #define _COMPARTMENT_HPP_
3 
4 #include "utility/libraries.hpp"
5 #include "utility/constants.hpp"
6 #include "core/Voxel.hpp"
7 
8 class Neuron; // forward declaration to avoid cyclic dependency issues
9 
10 class Compartment
11 {
12 public:
13  string id;
14  Neuron * neuron;
15  osg::ref_ptr<osg::Switch> node;
16  osg::ref_ptr<osg::Geode> voxel_group_node;
17  std::vector<Voxel *> voxel_seq;
18  std::unordered_map<string, Voxel *> voxel_map;
19 
20  Compartment(const char * id);
21 
22  ~Compartment();
23 
24  const char *
25  get_id();
26 
27  void
28  set_neuron(Neuron * Neuron);
29 
30  Neuron *
31  get_neuron();
32 
33  void
34  hide();
35 
36  void
37  show();
38 
39  bool
40  is_visible();
41 
42  unsigned int
43  size();
44 
45  unsigned int
46  add_geometry( PyObject * distal
47  , PyObject * proximal = Py_None
48  , PyObject * parent = Py_None
49  );
50 
51  unsigned int
52  add_voxel(Voxel * voxel);
53 
54  unsigned int
55  remove_voxel(Voxel * voxel);
56 
57  void
58  show_geometry(unsigned int geometry_index, bool hide_others);
59 
60  void
61  hide_geometry(unsigned int geometry_index);
62 
63  void
64  show_all_geometries();
65 
66  void
67  hide_all_geometries();
68 
69  void
70  set_color(PyObject * color);
71 
72  bool
73  set_colors(PyObject * colors);
74 };
75 
76 #endif /* _COMPARTMENT_HPP_ */