@@ -50,11 +50,11 @@ void AbstractDrawablePolyhedralMesh<Mesh>::init_drawable_stuff()
5050 drawlist_in.draw_mode = DRAW_TRIS | DRAW_TRI_SMOOTH | DRAW_TRI_FACECOLOR | DRAW_SEGS ;
5151 drawlist_out.draw_mode = DRAW_TRIS | DRAW_TRI_SMOOTH | DRAW_TRI_FACECOLOR | DRAW_SEGS ;
5252 drawlist_marked.draw_mode = DRAW_TRIS | DRAW_SEGS ;
53- drawlist_marked.seg_width = 3 ;
54- marked_edge_color = Color::RED ();
5553 marked_face_color = Color::BLUE ();
56- AO_alpha = 1.0 ;
57-
54+ AO_alpha = 1 .f ;
55+ show_marked_edges = true ;
56+ marked_edges.use_gl_lines = true ;
57+ marked_edges.thickness = 3 .f ;
5858 updateGL ();
5959}
6060
@@ -70,6 +70,7 @@ void AbstractDrawablePolyhedralMesh<Mesh>::draw(const float) const
7070 render (drawlist_in );
7171 render (drawlist_out);
7272 render (drawlist_marked);
73+ if (show_marked_edges) marked_edges.draw ();
7374 glPopMatrix ();
7475}
7576
@@ -94,9 +95,6 @@ void AbstractDrawablePolyhedralMesh<Mesh>::updateGL_marked()
9495 drawlist_marked.tri_coords .clear ();
9596 drawlist_marked.tri_v_norms .clear ();
9697 drawlist_marked.tri_v_colors .clear ();
97- drawlist_marked.segs .clear ();
98- drawlist_marked.seg_coords .clear ();
99- drawlist_marked.seg_colors .clear ();
10098
10199 for (uint fid=0 ; fid<this ->num_faces (); ++fid)
102100 {
@@ -160,28 +158,8 @@ void AbstractDrawablePolyhedralMesh<Mesh>::updateGL_marked()
160158 // This allows to hide marked elements with the slicer...
161159 // if(!this->edge_is_visible(eid)) continue;
162160
163- vec3d vid0 = this ->edge_vert (eid,0 );
164- vec3d vid1 = this ->edge_vert (eid,1 );
165-
166- uint base_addr = uint (drawlist_marked.seg_coords .size ()/3 );
167- drawlist_marked.segs .push_back (base_addr );
168- drawlist_marked.segs .push_back (base_addr + 1 );
169-
170- drawlist_marked.seg_coords .push_back (float (vid0.x ()));
171- drawlist_marked.seg_coords .push_back (float (vid0.y ()));
172- drawlist_marked.seg_coords .push_back (float (vid0.z ()));
173- drawlist_marked.seg_coords .push_back (float (vid1.x ()));
174- drawlist_marked.seg_coords .push_back (float (vid1.y ()));
175- drawlist_marked.seg_coords .push_back (float (vid1.z ()));
176-
177- drawlist_marked.seg_colors .push_back (marked_edge_color.r );
178- drawlist_marked.seg_colors .push_back (marked_edge_color.g );
179- drawlist_marked.seg_colors .push_back (marked_edge_color.b );
180- drawlist_marked.seg_colors .push_back (marked_edge_color.a );
181- drawlist_marked.seg_colors .push_back (marked_edge_color.r );
182- drawlist_marked.seg_colors .push_back (marked_edge_color.g );
183- drawlist_marked.seg_colors .push_back (marked_edge_color.b );
184- drawlist_marked.seg_colors .push_back (marked_edge_color.a );
161+ marked_edges.push_seg (this ->edge_vert (eid,0 ),
162+ this ->edge_vert (eid,1 ));
185163 }
186164}
187165
@@ -979,10 +957,11 @@ void AbstractDrawablePolyhedralMesh<Mesh>::show_in_wireframe_transparency(const
979957
980958template <class Mesh >
981959CINO_INLINE
982- void AbstractDrawablePolyhedralMesh<Mesh>::show_marked_edge(const bool b)
960+ void AbstractDrawablePolyhedralMesh<Mesh>::show_marked_edge(const bool b, const bool fancy )
983961{
984- if (b) drawlist_marked.draw_mode |= DRAW_SEGS ;
985- else drawlist_marked.draw_mode &= ~DRAW_SEGS ;
962+ show_marked_edges = b;
963+ marked_edges.use_gl_lines = !fancy;
964+ marked_edges.draw_joint_spheres = fancy;
986965}
987966
988967// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -991,8 +970,7 @@ template<class Mesh>
991970CINO_INLINE
992971void AbstractDrawablePolyhedralMesh<Mesh>::show_marked_edge_color(const Color & c)
993972{
994- marked_edge_color = c;
995- updateGL_marked ();
973+ marked_edges.default_color = c;
996974}
997975
998976// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -1001,7 +979,7 @@ template<class Mesh>
1001979CINO_INLINE
1002980void AbstractDrawablePolyhedralMesh<Mesh>::show_marked_edge_width(const float width)
1003981{
1004- drawlist_marked. seg_width = width;
982+ marked_edges. thickness = width;
1005983}
1006984
1007985// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -1010,8 +988,7 @@ template<class Mesh>
1010988CINO_INLINE
1011989void AbstractDrawablePolyhedralMesh<Mesh>::show_marked_edge_transparency(const float alpha)
1012990{
1013- marked_edge_color.a = alpha;
1014- updateGL_marked ();
991+ marked_edges.default_color .a = alpha;
1015992}
1016993
1017994// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
0 commit comments