diff --git a/patches/CGAL-OGL_helper-colors.patch b/patches/CGAL-OGL_helper-colors.patch new file mode 100644 index 00000000..4c2f8c0c --- /dev/null +++ b/patches/CGAL-OGL_helper-colors.patch @@ -0,0 +1,80 @@ +--- OGL_helper.h 2011-09-29 23:02:04.000000000 +0200 ++++ ../src/OGL_helper.h 2011-09-29 23:01:27.000000000 +0200 +@@ -263,7 +263,7 @@ + enum { SNC_BOUNDARY, SNC_SKELETON }; + + class Polyhedron : public OGL_base_object { +- ++ protected: + std::list vertices_; + std::list edges_; + std::list halffacets_; +@@ -356,11 +356,17 @@ + Bbox_3 bbox() const { return bbox_; } + Bbox_3& bbox() { return bbox_; } + ++ virtual CGAL::Color getVertexColor(Vertex_iterator v) const ++ { ++ CGAL::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), ++ ct(CGAL_NEF3_UNMARKED_VERTEX_COLOR); // more blue-ish ++ CGAL::Color c = v->mark() ? ct : cf; ++ return c; ++ } ++ + void draw(Vertex_iterator v) const { + // CGAL_NEF_TRACEN("drawing vertex "<<*v); +- CGAL::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), +- ct(CGAL_NEF3_UNMARKED_VERTEX_COLOR); // more blue-ish +- CGAL::Color c = v->mark() ? ct : cf; ++ CGAL::Color c = getVertexColor(v); + glPointSize(10); + glColor3ub(c.red(), c.green(), c.blue()); + glBegin(GL_POINTS); +@@ -372,12 +378,18 @@ + glEnd(); + } + ++ virtual CGAL::Color getEdgeColor(Edge_iterator e) const ++ { ++ CGAL::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), ++ ct(CGAL_NEF3_UNMARKED_EDGE_COLOR); // more blue-ish ++ CGAL::Color c = e->mark() ? ct : cf; ++ return c; ++ } ++ + void draw(Edge_iterator e) const { + // CGAL_NEF_TRACEN("drawing edge "<<*e); + Double_point p = e->source(), q = e->target(); +- CGAL::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), +- ct(CGAL_NEF3_UNMARKED_EDGE_COLOR); // more blue-ish +- CGAL::Color c = e->mark() ? ct : cf; ++ CGAL::Color c = getEdgeColor(e); + glLineWidth(5); + glColor3ub(c.red(),c.green(),c.blue()); + glBegin(GL_LINE_STRIP); +@@ -386,6 +398,14 @@ + glEnd(); + } + ++ virtual CGAL::Color getFacetColor(Halffacet_iterator f) const ++ { ++ CGAL::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), ++ ct(CGAL_NEF3_UNMARKED_FACET_COLOR); // more blue-ish ++ CGAL::Color c = (f->mark() ? ct : cf); ++ return c; ++ } ++ + void draw(Halffacet_iterator f) const { + // CGAL_NEF_TRACEN("drawing facet "<<(f->debug(),"")); + GLUtesselator* tess_ = gluNewTess(); +@@ -403,9 +423,7 @@ + GLU_TESS_WINDING_POSITIVE); + + DFacet::Coord_const_iterator cit; +- CGAL::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), +- ct(CGAL_NEF3_UNMARKED_FACET_COLOR); // more blue-ish +- CGAL::Color c = (f->mark() ? ct : cf); ++ CGAL::Color c = getFacetColor(f); + glColor3ub(c.red(),c.green(),c.blue()); + gluTessBeginPolygon(tess_,f->normal()); + // CGAL_NEF_TRACEN(" "); diff --git a/patches/CGAL-OGL-Tess-Combine-Fix.patch b/patches/CGAL-OGL_helper-tesscombine.patch similarity index 69% rename from patches/CGAL-OGL-Tess-Combine-Fix.patch rename to patches/CGAL-OGL_helper-tesscombine.patch index 2a4ad1aa..792e1da1 100644 --- a/patches/CGAL-OGL-Tess-Combine-Fix.patch +++ b/patches/CGAL-OGL_helper-tesscombine.patch @@ -1,12 +1,11 @@ ---- CGAL-3.4/include/CGAL/Nef_3/OGL_helper.h -+++ CGAL-3.4/include/CGAL/Nef_3/OGL_helper.h -@@ -243,6 +243,23 @@ +--- ../../libraries/install/include/CGAL/Nef_3/OGL_helper.h 2010-06-09 21:00:52.000000000 +0200 ++++ OGL_helper.h 2011-09-29 23:09:47.000000000 +0200 +@@ -243,6 +243,22 @@ glVertex3dv(pc); } -+ inline void CGAL_GLU_TESS_CALLBACK combineCallback(GLdouble coords[3], GLvoid *d[4], GLfloat w[4], GLvoid **dataOut) -+ { -+ static std::list pcache; ++ inline void CGAL_GLU_TESS_CALLBACK combineCallback(GLdouble coords[3], GLvoid *[4], GLfloat [4], GLvoid **dataOut) ++ { static std::list pcache; + if (dataOut) { + GLdouble *n = new GLdouble[3]; + n[0] = coords[0]; @@ -24,7 +23,7 @@ enum { SNC_AXES}; enum { SNC_BOUNDARY, SNC_SKELETON }; -@@ -376,6 +393,8 @@ +@@ -376,6 +392,8 @@ GLUtesselator* tess_ = gluNewTess(); gluTessCallback(tess_, GLenum(GLU_TESS_VERTEX_DATA), (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &vertexCallback); @@ -33,11 +32,3 @@ gluTessCallback(tess_, GLenum(GLU_TESS_BEGIN), (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &beginCallback); gluTessCallback(tess_, GLenum(GLU_TESS_END), -@@ -410,6 +429,7 @@ - gluTessEndPolygon(tess_); - // CGAL_NEF_TRACEN("End Polygon"); - gluDeleteTess(tess_); -+ combineCallback(NULL, NULL, NULL, NULL); - } - - void construct_axes() const diff --git a/src/OGL_helper.h b/src/OGL_helper.h index 2764561e..40a3e357 100644 --- a/src/OGL_helper.h +++ b/src/OGL_helper.h @@ -11,7 +11,7 @@ // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // -// $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.7-branch/Nef_3/include/CGAL/Nef_3/OGL_helper.h $ +// $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/trunk/Nef_3/include/CGAL/Nef_3/OGL_helper.h $ // $Id: OGL_helper.h 56667 2010-06-09 07:37:13Z sloriot $ // // @@ -246,19 +246,20 @@ namespace OGL { inline void CGAL_GLU_TESS_CALLBACK combineCallback(GLdouble coords[3], GLvoid *[4], GLfloat [4], GLvoid **dataOut) { static std::list pcache; if (dataOut) { - GLdouble *n = new GLdouble[3]; - n[0] = coords[0]; - n[1] = coords[1]; - n[2] = coords[2]; - pcache.push_back(n); - *dataOut = n; + GLdouble *n = new GLdouble[3]; + n[0] = coords[0]; + n[1] = coords[1]; + n[2] = coords[2]; + pcache.push_back(n); + *dataOut = n; } else { - for (std::list::const_iterator i = pcache.begin(); i != pcache.end(); i++) - delete[] *i; - pcache.clear(); + for (std::list::const_iterator i = pcache.begin(); i != pcache.end(); i++) + delete[] *i; + pcache.clear(); } } + enum { SNC_AXES}; enum { SNC_BOUNDARY, SNC_SKELETON };