diff options
Diffstat (limited to 'extern/carve/patches/strict_flags.patch')
-rw-r--r-- | extern/carve/patches/strict_flags.patch | 439 |
1 files changed, 0 insertions, 439 deletions
diff --git a/extern/carve/patches/strict_flags.patch b/extern/carve/patches/strict_flags.patch deleted file mode 100644 index a40eecb25a4..00000000000 --- a/extern/carve/patches/strict_flags.patch +++ /dev/null @@ -1,439 +0,0 @@ -diff -r e82d852e4fb0 lib/csg_collector.cpp ---- a/lib/csg_collector.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/csg_collector.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -21,6 +21,7 @@ - - #include <carve/csg.hpp> - #include <iostream> -+#include "csg_collector.hpp" - #include "intersect_debug.hpp" - - #if defined(CARVE_DEBUG_WRITE_PLY_DATA) -diff -r e82d852e4fb0 lib/face.cpp ---- a/lib/face.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/face.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -21,61 +21,69 @@ - - #include <carve/poly.hpp> - --double CALC_X(const carve::geom::plane<3> &p, double y, double z) { return -(p.d + p.N.y * y + p.N.z * z) / p.N.x; } --double CALC_Y(const carve::geom::plane<3> &p, double x, double z) { return -(p.d + p.N.x * x + p.N.z * z) / p.N.y; } --double CALC_Z(const carve::geom::plane<3> &p, double x, double y) { return -(p.d + p.N.x * x + p.N.y * y) / p.N.z; } -+namespace { -+ -+ double CALC_X(const carve::geom::plane<3> &p, double y, double z) { return -(p.d + p.N.y * y + p.N.z * z) / p.N.x; } -+ double CALC_Y(const carve::geom::plane<3> &p, double x, double z) { return -(p.d + p.N.x * x + p.N.z * z) / p.N.y; } -+ double CALC_Z(const carve::geom::plane<3> &p, double x, double y) { return -(p.d + p.N.x * x + p.N.y * y) / p.N.z; } -+ -+} // namespace - - namespace carve { - namespace poly { - -- carve::geom2d::P2 _project_1(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.z, v.y); -- } -+ namespace { - -- carve::geom2d::P2 _project_2(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.x, v.z); -- } -+ carve::geom2d::P2 _project_1(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.z, v.y); -+ } - -- carve::geom2d::P2 _project_3(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.y, v.x); -- } -+ carve::geom2d::P2 _project_2(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.x, v.z); -+ } - -- carve::geom2d::P2 _project_4(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.y, v.z); -- } -+ carve::geom2d::P2 _project_3(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.y, v.x); -+ } - -- carve::geom2d::P2 _project_5(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.z, v.x); -- } -+ carve::geom2d::P2 _project_4(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.y, v.z); -+ } - -- carve::geom2d::P2 _project_6(const carve::geom3d::Vector &v) { -- return carve::geom::VECTOR(v.x, v.y); -- } -+ carve::geom2d::P2 _project_5(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.z, v.x); -+ } - -+ carve::geom2d::P2 _project_6(const carve::geom3d::Vector &v) { -+ return carve::geom::VECTOR(v.x, v.y); -+ } - -- carve::geom3d::Vector _unproject_1(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(CALC_X(plane_eqn, p.y, p.x), p.y, p.x); -- } - -- carve::geom3d::Vector _unproject_2(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(p.x, CALC_Y(plane_eqn, p.x, p.y), p.y); -- } -+ carve::geom3d::Vector _unproject_1(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(CALC_X(plane_eqn, p.y, p.x), p.y, p.x); -+ } - -- carve::geom3d::Vector _unproject_3(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(p.y, p.x, CALC_Z(plane_eqn, p.y, p.x)); -- } -+ carve::geom3d::Vector _unproject_2(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(p.x, CALC_Y(plane_eqn, p.x, p.y), p.y); -+ } - -- carve::geom3d::Vector _unproject_4(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(CALC_X(plane_eqn, p.x, p.y), p.x, p.y); -- } -+ carve::geom3d::Vector _unproject_3(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(p.y, p.x, CALC_Z(plane_eqn, p.y, p.x)); -+ } - -- carve::geom3d::Vector _unproject_5(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(p.y, CALC_Y(plane_eqn, p.y, p.x), p.x); -- } -+ carve::geom3d::Vector _unproject_4(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(CALC_X(plane_eqn, p.x, p.y), p.x, p.y); -+ } - -- carve::geom3d::Vector _unproject_6(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -- return carve::geom::VECTOR(p.x, p.y, CALC_Z(plane_eqn, p.x, p.y)); -- } -+ carve::geom3d::Vector _unproject_5(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(p.y, CALC_Y(plane_eqn, p.y, p.x), p.x); -+ } -+ -+ carve::geom3d::Vector _unproject_6(const carve::geom2d::P2 &p, const carve::geom3d::Plane &plane_eqn) { -+ return carve::geom::VECTOR(p.x, p.y, CALC_Z(plane_eqn, p.x, p.y)); -+ } -+ -+ } // namespace - - static carve::geom2d::P2 (*project_tab[2][3])(const carve::geom3d::Vector &) = { - { &_project_1, &_project_2, &_project_3 }, -diff -r e82d852e4fb0 lib/geom2d.cpp ---- a/lib/geom2d.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/geom2d.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -157,9 +157,9 @@ - return pointInPoly(points, p2_adapt_ident(), p); - } - -- int lineSegmentPolyIntersections(const P2Vector &points, -- LineSegment2 line, -- std::vector<PolyIntersectionInfo> &out) { -+ static int lineSegmentPolyIntersections(const P2Vector &points, -+ LineSegment2 line, -+ std::vector<PolyIntersectionInfo> &out) { - int count = 0; - - if (line.v2 < line.v1) { line.flip(); } -@@ -239,9 +239,9 @@ - } - }; - -- int sortedLineSegmentPolyIntersections(const P2Vector &points, -- LineSegment2 line, -- std::vector<PolyIntersectionInfo> &out) { -+ static int sortedLineSegmentPolyIntersections(const P2Vector &points, -+ LineSegment2 line, -+ std::vector<PolyIntersectionInfo> &out) { - - bool swapped = line.v2 < line.v1; - -diff -r e82d852e4fb0 lib/intersect.cpp ---- a/lib/intersect.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/intersect.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -1378,9 +1378,9 @@ - * @param result_list - * @param shared_edge_ptr - */ --void returnSharedEdges(carve::csg::V2Set &shared_edges, -- std::list<carve::mesh::MeshSet<3> *> &result_list, -- carve::csg::V2Set *shared_edge_ptr) { -+static void returnSharedEdges(carve::csg::V2Set &shared_edges, -+ std::list<carve::mesh::MeshSet<3> *> &result_list, -+ carve::csg::V2Set *shared_edge_ptr) { - // need to convert shared edges to point into result - typedef std::map<carve::geom3d::Vector, carve::mesh::MeshSet<3>::vertex_t *> remap_type; - remap_type remap; -diff -r e82d852e4fb0 lib/intersect_face_division.cpp ---- a/lib/intersect_face_division.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/intersect_face_division.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -1455,7 +1455,7 @@ - std::vector<carve::mesh::MeshSet<3>::vertex_t *> base_loop; - std::list<std::vector<carve::mesh::MeshSet<3>::vertex_t *> > hole_loops; - -- bool face_edge_intersected = assembleBaseLoop(face, data, base_loop, hooks); -+ /*bool face_edge_intersected = */assembleBaseLoop(face, data, base_loop, hooks); - - detail::FV2SMap::const_iterator fse_iter = data.face_split_edges.find(face); - -diff -r e82d852e4fb0 lib/math.cpp ---- a/lib/math.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/math.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -42,20 +42,21 @@ - Root(double r, int m) : root(r), multiplicity(m) {} - }; - -- void cplx_sqrt(double re, double im, -- double &re_1, double &im_1, -- double &re_2, double &im_2) { -- if (re == 0.0 && im == 0.0) { -- re_1 = re_2 = re; -- im_1 = im_2 = im; -- } else { -- double d = sqrt(re * re + im * im); -- re_1 = sqrt((d + re) / 2.0); -- re_2 = re_1; -- im_1 = fabs(sqrt((d - re) / 2.0)); -- im_2 = -im_1; -+ namespace { -+ void cplx_sqrt(double re, double im, -+ double &re_1, double &im_1, -+ double &re_2, double &im_2) { -+ if (re == 0.0 && im == 0.0) { -+ re_1 = re_2 = re; -+ im_1 = im_2 = im; -+ } else { -+ double d = sqrt(re * re + im * im); -+ re_1 = sqrt((d + re) / 2.0); -+ re_2 = re_1; -+ im_1 = fabs(sqrt((d - re) / 2.0)); -+ im_2 = -im_1; -+ } - } -- } - - void cplx_cbrt(double re, double im, - double &re_1, double &im_1, -@@ -76,109 +77,110 @@ - } - } - -- void add_root(std::vector<Root> &roots, double root) { -- for (size_t i = 0; i < roots.size(); ++i) { -- if (roots[i].root == root) { -- roots[i].multiplicity++; -+ void add_root(std::vector<Root> &roots, double root) { -+ for (size_t i = 0; i < roots.size(); ++i) { -+ if (roots[i].root == root) { -+ roots[i].multiplicity++; -+ return; -+ } -+ } -+ roots.push_back(Root(root)); -+ } -+ -+ void linear_roots(double c1, double c0, std::vector<Root> &roots) { -+ roots.push_back(Root(c0 / c1)); -+ } -+ -+ void quadratic_roots(double c2, double c1, double c0, std::vector<Root> &roots) { -+ if (fabs(c2) < EPS) { -+ linear_roots(c1, c0, roots); - return; - } -- } -- roots.push_back(Root(root)); -- } - -- void linear_roots(double c1, double c0, std::vector<Root> &roots) { -- roots.push_back(Root(c0 / c1)); -- } -+ double p = 0.5 * c1 / c2; -+ double dis = p * p - c0 / c2; - -- void quadratic_roots(double c2, double c1, double c0, std::vector<Root> &roots) { -- if (fabs(c2) < EPS) { -- linear_roots(c1, c0, roots); -- return; -+ if (dis > 0.0) { -+ dis = sqrt(dis); -+ if (-p - dis != -p + dis) { -+ roots.push_back(Root(-p - dis)); -+ roots.push_back(Root(-p + dis)); -+ } else { -+ roots.push_back(Root(-p, 2)); -+ } -+ } - } - -- double p = 0.5 * c1 / c2; -- double dis = p * p - c0 / c2; -+ void cubic_roots(double c3, double c2, double c1, double c0, std::vector<Root> &roots) { -+ int n_sol = 0; -+ double _r[3]; - -- if (dis > 0.0) { -- dis = sqrt(dis); -- if (-p - dis != -p + dis) { -- roots.push_back(Root(-p - dis)); -- roots.push_back(Root(-p + dis)); -+ if (fabs(c3) < EPS) { -+ quadratic_roots(c2, c1, c0, roots); -+ return; -+ } -+ -+ if (fabs(c0) < EPS) { -+ quadratic_roots(c3, c2, c1, roots); -+ add_root(roots, 0.0); -+ return; -+ } -+ -+ double xN = -c2 / (3.0 * c3); -+ double yN = c0 + xN * (c1 + xN * (c2 + c3 * xN)); -+ -+ double delta_sq = (c2 * c2 - 3.0 * c3 * c1) / (9.0 * c3 * c3); -+ double h_sq = 4.0 / 9.0 * (c2 * c2 - 3.0 * c3 * c1) * (delta_sq * delta_sq); -+ double dis = yN * yN - h_sq; -+ -+ if (dis > EPS) { -+ // One real root, two complex roots. -+ -+ double dis_sqrt = sqrt(dis); -+ double r_p = yN - dis_sqrt; -+ double r_q = yN + dis_sqrt; -+ double p = cbrt(fabs(r_p)/(2.0 * c3)); -+ double q = cbrt(fabs(r_q)/(2.0 * c3)); -+ -+ if (r_p > 0.0) p = -p; -+ if (r_q > 0.0) q = -q; -+ -+ _r[0] = xN + p + q; -+ n_sol = 1; -+ -+ double re = xN - p * .5 - q * .5; -+ double im = p * M_SQRT_3_4 - q * M_SQRT_3_4; -+ -+ // root 2: xN + p * exp(M_2PI_3.i) + q * exp(-M_2PI_3.i); -+ // root 3: complex conjugate of root 2 -+ -+ if (im < EPS) { -+ _r[1] = _r[2] = re; -+ n_sol += 2; -+ } -+ } else if (dis < -EPS) { -+ // Three distinct real roots. -+ double theta = acos(-yN / sqrt(h_sq)) / 3.0; -+ double delta = sqrt(c2 * c2 - 3.0 * c3 * c1) / (3.0 * c3); -+ -+ _r[0] = xN + (2.0 * delta) * cos(theta); -+ _r[1] = xN + (2.0 * delta) * cos(M_2PI_3 - theta); -+ _r[2] = xN + (2.0 * delta) * cos(M_2PI_3 + theta); -+ n_sol = 3; - } else { -- roots.push_back(Root(-p, 2)); -+ // Three real roots (two or three equal). -+ double r = yN / (2.0 * c3); -+ double delta = cbrt(r); -+ -+ _r[0] = xN + delta; -+ _r[1] = xN + delta; -+ _r[2] = xN - 2.0 * delta; -+ n_sol = 3; - } -- } -- } - -- void cubic_roots(double c3, double c2, double c1, double c0, std::vector<Root> &roots) { -- int n_sol = 0; -- double _r[3]; -- -- if (fabs(c3) < EPS) { -- quadratic_roots(c2, c1, c0, roots); -- return; -- } -- -- if (fabs(c0) < EPS) { -- quadratic_roots(c3, c2, c1, roots); -- add_root(roots, 0.0); -- return; -- } -- -- double xN = -c2 / (3.0 * c3); -- double yN = c0 + xN * (c1 + xN * (c2 + c3 * xN)); -- -- double delta_sq = (c2 * c2 - 3.0 * c3 * c1) / (9.0 * c3 * c3); -- double h_sq = 4.0 / 9.0 * (c2 * c2 - 3.0 * c3 * c1) * (delta_sq * delta_sq); -- double dis = yN * yN - h_sq; -- -- if (dis > EPS) { -- // One real root, two complex roots. -- -- double dis_sqrt = sqrt(dis); -- double r_p = yN - dis_sqrt; -- double r_q = yN + dis_sqrt; -- double p = cbrt(fabs(r_p)/(2.0 * c3)); -- double q = cbrt(fabs(r_q)/(2.0 * c3)); -- -- if (r_p > 0.0) p = -p; -- if (r_q > 0.0) q = -q; -- -- _r[0] = xN + p + q; -- n_sol = 1; -- -- double re = xN - p * .5 - q * .5; -- double im = p * M_SQRT_3_4 - q * M_SQRT_3_4; -- -- // root 2: xN + p * exp(M_2PI_3.i) + q * exp(-M_2PI_3.i); -- // root 3: complex conjugate of root 2 -- -- if (im < EPS) { -- _r[1] = _r[2] = re; -- n_sol += 2; -+ for (int i=0; i < n_sol; i++) { -+ add_root(roots, _r[i]); - } -- } else if (dis < -EPS) { -- // Three distinct real roots. -- double theta = acos(-yN / sqrt(h_sq)) / 3.0; -- double delta = sqrt(c2 * c2 - 3.0 * c3 * c1) / (3.0 * c3); -- -- _r[0] = xN + (2.0 * delta) * cos(theta); -- _r[1] = xN + (2.0 * delta) * cos(M_2PI_3 - theta); -- _r[2] = xN + (2.0 * delta) * cos(M_2PI_3 + theta); -- n_sol = 3; -- } else { -- // Three real roots (two or three equal). -- double r = yN / (2.0 * c3); -- double delta = cbrt(r); -- -- _r[0] = xN + delta; -- _r[1] = xN + delta; -- _r[2] = xN - 2.0 * delta; -- n_sol = 3; -- } -- -- for (int i=0; i < n_sol; i++) { -- add_root(roots, _r[i]); - } - } - -diff -r e82d852e4fb0 lib/triangulator.cpp ---- a/lib/triangulator.cpp Wed Jan 15 13:16:14 2014 +1100 -+++ b/lib/triangulator.cpp Mon Jan 27 17:01:46 2014 +0600 -@@ -718,10 +718,10 @@ - - - --bool testCandidateAttachment(const std::vector<std::vector<carve::geom2d::P2> > &poly, -- std::vector<std::pair<size_t, size_t> > ¤t_f_loop, -- size_t curr, -- carve::geom2d::P2 hole_min) { -+static bool testCandidateAttachment(const std::vector<std::vector<carve::geom2d::P2> > &poly, -+ std::vector<std::pair<size_t, size_t> > ¤t_f_loop, -+ size_t curr, -+ carve::geom2d::P2 hole_min) { - const size_t SZ = current_f_loop.size(); - - if (!carve::geom2d::internalToAngle(pvert(poly, current_f_loop[(curr+1) % SZ]), |