From 75613e73484fbb84ce64ea01ca4e5a5d8c69b6ec Mon Sep 17 00:00:00 2001 From: Thomas Sailer Date: Mar 04 2013 16:17:26 +0000 Subject: work around API changes of polyclipping 5.1 --- 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::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::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::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