[vfrnav] work around API changes of polyclipping 5.1
sailer
sailer at fedoraproject.org
Mon Mar 4 16:17:55 UTC 2013
commit 75613e73484fbb84ce64ea01ca4e5a5d8c69b6ec
Author: Thomas Sailer <t.sailer at alumni.ethz.ch>
Date: Mon Mar 4 17:17:26 2013 +0100
work around API changes of polyclipping 5.1
vfrnav-clipper51.patch | 85 ++++++++++++++++++++++++++++++++++++++++++++++++
vfrnav.spec | 4 +-
2 files changed, 87 insertions(+), 2 deletions(-)
---
diff --git a/vfrnav-clipper51.patch b/vfrnav-clipper51.patch
new file mode 100644
index 0000000..6944ae9
--- /dev/null
+++ b/vfrnav-clipper51.patch
@@ -0,0 +1,85 @@
+--- src/geomgeos.cc.clipper 2013-03-04 16:38:26.385181723 +0100
++++ src/geomgeos.cc 2013-03-04 17:11:36.433503798 +0100
+@@ -80,21 +80,37 @@
+ return p;
+ }
+
+-PolygonHole from_clipper(const ClipperLib::ExPolygon& cp, const Point& offs)
++void from_clipper(MultiPolygonHole& ph, const ClipperLib::PolyNode& cp, const Point& offs)
+ {
+- PolygonHole p;
+- p.set_exterior(from_clipper(cp.outer, offs));
+- for (ClipperLib::Polygons::const_iterator i(cp.holes.begin()), e(cp.holes.end()); i != e; ++i)
+- p.add_interior(from_clipper(*i, offs));
++ if (!cp.Contour.size())
++ return;
++ if (cp.IsHole())
++ throw std::runtime_error("from_clipper: outer polygon is a hole!");
++ ph.push_back(PolygonHole());
++ PolygonHole& p(ph.back());
++ p.set_exterior(from_clipper(cp.Contour, offs));
++ for (std::vector<ClipperLib::PolyNode *>::const_iterator chi(cp.Childs.begin()), che(cp.Childs.end()); chi != che; ++chi) {
++ const ClipperLib::PolyNode& cpc(**chi);
++ if (!cpc.IsHole())
++ throw std::runtime_error("from_clipper: outer polygon is a child of an outer polygon");
++ p.add_interior(from_clipper(cpc.Contour, offs));
++ for (std::vector<ClipperLib::PolyNode *>::const_iterator cchi(cpc.Childs.begin()), cche(cpc.Childs.end()); cchi != cche; ++cchi) {
++ const ClipperLib::PolyNode& cpcc(**cchi);
++ from_clipper(ph, cpcc, offs);
++ }
++ }
+ p.normalize();
+- return p;
+ }
+
+-MultiPolygonHole from_clipper(const ClipperLib::ExPolygons& cp, const Point& offs)
++MultiPolygonHole from_clipper(const ClipperLib::PolyTree& cp, const Point& offs)
+ {
+ MultiPolygonHole p;
+- for (ClipperLib::ExPolygons::const_iterator i(cp.begin()), e(cp.end()); i != e; ++i)
+- p.push_back(from_clipper(*i, offs));
++ if (cp.Contour.size())
++ throw std::runtime_error("from_clipper: PolyTree has a contour!");
++ for (std::vector<ClipperLib::PolyNode *>::const_iterator chi(cp.Childs.begin()), che(cp.Childs.end()); chi != che; ++chi) {
++ const ClipperLib::PolyNode& cpc(**chi);
++ from_clipper(p, cpc, offs);
++ }
+ return p;
+ }
+
+@@ -113,7 +129,7 @@
+ offs.set_invalid();
+ ClipperLib::Clipper c;
+ c.AddPolygon(to_clipper(*this, offs), ClipperLib::ptSubject);
+- ClipperLib::ExPolygons sol;
++ ClipperLib::PolyTree sol;
+ c.Execute(ClipperLib::ctUnion, sol, ClipperLib::pftNonZero, ClipperLib::pftNonZero);
+ return from_clipper(sol, offs);
+ }
+@@ -151,7 +167,7 @@
+ to_clipper(cp, mp, offs);
+ c.AddPolygons(cp, ClipperLib::ptSubject);
+ }
+- ClipperLib::ExPolygons sol;
++ ClipperLib::PolyTree sol;
+ c.Execute(ClipperLib::ctUnion, sol, ClipperLib::pftNonZero, ClipperLib::pftNonZero);
+ MultiPolygonHole mp(from_clipper(sol, offs));
+ swap(mp);
+@@ -176,7 +192,7 @@
+ to_clipper(cp, mp, offs);
+ c.AddPolygons(cp, ClipperLib::ptClip);
+ }
+- ClipperLib::ExPolygons sol;
++ ClipperLib::PolyTree sol;
+ c.Execute(ClipperLib::ctDifference, sol, ClipperLib::pftNonZero, ClipperLib::pftNonZero);
+ MultiPolygonHole mp(from_clipper(sol, offs));
+ swap(mp);
+@@ -201,7 +217,7 @@
+ to_clipper(cp, mp, offs);
+ c.AddPolygons(cp, ClipperLib::ptClip);
+ }
+- ClipperLib::ExPolygons sol;
++ ClipperLib::PolyTree sol;
+ c.Execute(ClipperLib::ctIntersection, sol, ClipperLib::pftNonZero, ClipperLib::pftNonZero);
+ MultiPolygonHole mp(from_clipper(sol, offs));
+ swap(mp);
diff --git a/vfrnav.spec b/vfrnav.spec
index 248b0fe..ce9dc2d 100644
--- a/vfrnav.spec
+++ b/vfrnav.spec
@@ -7,7 +7,7 @@ Group: Applications/Productivity
License: GPLv2+
URL: http://www.baycom.org/~tom/vfrnav
Source0: http://download.gna.org/vfrnav/%{name}-%{version}.tar.gz
-Patch0: vfrnav-svg.patch
+Patch0: vfrnav-clipper51.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gtkmm30-devel
@@ -74,7 +74,7 @@ for the VFR navigation application.
%prep
%setup -q
-%patch0 -p0 -b .svg
+%patch0 -p0 -b .clipper51
autoheader
aclocal -I m4
autoconf
More information about the scm-commits
mailing list