diff options
author | Marius Kintel <marius@kintel.net> | 2011-11-28 00:00:21 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-11-28 00:00:21 (GMT) |
commit | 01f1a2f9cfeab276e5e0b51f47a72c9019478f7f (patch) | |
tree | da8f1206b69107071ea53f1bff69b599dd153123 /src/dxftess-cgal.cc | |
parent | a4aabf724143b09175d5e6f2587a32b7c6175a49 (diff) |
Removed some more Qt dependencies
Diffstat (limited to 'src/dxftess-cgal.cc')
-rw-r--r-- | src/dxftess-cgal.cc | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/dxftess-cgal.cc b/src/dxftess-cgal.cc index a587987..cf5b75d 100644 --- a/src/dxftess-cgal.cc +++ b/src/dxftess-cgal.cc @@ -25,6 +25,8 @@ typedef CDT::Point CDTPoint; #include <CGAL/Mesh_2/Face_badness.h> +#include <boost/unordered_map.hpp> + template <class T> class DummyCriteria { public: typedef double Quality; @@ -51,7 +53,7 @@ struct point_info_t double x, y; int pathidx, pointidx; int max_pointidx_in_path; - QList<int> triangles; + std::vector<int> triangles; struct point_info_t *neigh_next; struct point_info_t *neigh_prev; @@ -61,10 +63,11 @@ struct point_info_t point_info_t() : x(0), y(0), pathidx(-1), pointidx(-1), max_pointidx_in_path(-1) { } }; -typedef QPair<point_info_t*,point_info_t*> edge_t; +typedef std::pair<point_info_t*,point_info_t*> edge_t; -void mark_inner_outer(QList<struct triangle> &tri, Grid2d<point_info_t> &point_info, - QHash<edge_t,int> &edge_to_triangle, QHash<edge_t,int> &edge_to_path, int idx, bool inner) +void mark_inner_outer(std::vector<struct triangle> &tri, Grid2d<point_info_t> &point_info, + boost::unordered_map<edge_t,int> &edge_to_triangle, + boost::unordered_map<edge_t,int> &edge_to_path, int idx, bool inner) { if (tri[idx].is_marked) return; @@ -85,8 +88,8 @@ void mark_inner_outer(QList<struct triangle> &tri, Grid2d<point_info_t> &point_i }; for (int i = 0; i < 3; i++) { - if (edge_to_triangle.contains(edges[i])) { - bool next_inner = edge_to_path.contains(edges[i]) ? !inner : inner; + if (edge_to_triangle.find(edges[i]) != edge_to_triangle.end()) { + bool next_inner = (edge_to_path.find(edges[i]) != edge_to_path.end()) ? !inner : inner; mark_inner_outer(tri, point_info, edge_to_triangle, edge_to_path, edge_to_triangle[edges[i]], next_inner); } @@ -97,10 +100,10 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr { CDT cdt; - QList<struct triangle> tri; + std::vector<struct triangle> tri; Grid2d<point_info_t> point_info(GRID_FINE); - QHash<edge_t,int> edge_to_triangle; - QHash<edge_t,int> edge_to_path; + boost::unordered_map<edge_t,int> edge_to_triangle; + boost::unordered_map<edge_t,int> edge_to_path; CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION); try { @@ -177,14 +180,14 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr continue; int idx = tri.size(); - tri.append(triangle()); + tri.push_back(triangle()); point_info_t *pi[3]; for (int i=0; i<3; i++) { double px = iter->vertex(i)->point()[0]; double py = iter->vertex(i)->point()[1]; pi[i] = &point_info.align(px, py); - pi[i]->triangles.append(idx); + pi[i]->triangles.push_back(idx); tri[idx].p[i].x = px; tri[idx].p[i].y = py; } @@ -200,7 +203,7 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr double far_left_x = 0; struct point_info_t *far_left_p = NULL; - for (int i = 0; i < tri.size(); i++) + for (size_t i = 0; i < tri.size(); i++) { if (tri[i].is_marked) continue; @@ -219,7 +222,7 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr break; // find one inner triangle and run recursive marking - for (int i = 0; i < far_left_p->triangles.size(); i++) + for (size_t i = 0; i < far_left_p->triangles.size(); i++) { int idx = far_left_p->triangles[i]; @@ -273,7 +276,7 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr // far left point is in the middle of a vertical segment // -> it is ok to use any unmarked triangle connected to this point - for (int i = 0; i < far_left_p->triangles.size(); i++) + for (size_t i = 0; i < far_left_p->triangles.size(); i++) { int idx = far_left_p->triangles[i]; @@ -288,7 +291,7 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr } // add all inner triangles to target polyset - for(int i = 0; i < tri.size(); i++) + for(size_t i = 0; i < tri.size(); i++) { if (!tri[i].is_inner) continue; |