/* [<][>][^][v][top][bottom][index][help] */
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_ */