summaryrefslogtreecommitdiff
path: root/libraries/agg/patches
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/agg/patches')
-rw-r--r--libraries/agg/patches/00001-agg-2.4-depends.patch48
-rw-r--r--libraries/agg/patches/00002-agg-2.5-pkgconfig.patch10
-rw-r--r--libraries/agg/patches/00003-agg-2.5-autotools.patch11
-rw-r--r--libraries/agg/patches/0001-Fix-non-terminating-loop-conditions-when-len-1.patch81
-rw-r--r--libraries/agg/patches/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch40
-rw-r--r--libraries/agg/patches/0003-Get-coordinates-from-previous-vertex-if-last-command.patch30
-rw-r--r--libraries/agg/patches/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch138
-rw-r--r--libraries/agg/patches/0005-Remove-VC-6-workaround.patch52
-rw-r--r--libraries/agg/patches/0006-Implement-grain-merge-blending-mode-GIMP.patch85
-rw-r--r--libraries/agg/patches/0007-Implement-grain-extract-blending-mode-GIMP.patch85
-rw-r--r--libraries/agg/patches/0008-Declare-multiplication-and-division-operators-as-con.patch36
-rw-r--r--libraries/agg/patches/0009-Add-a-static-identity-transformation.patch37
-rw-r--r--libraries/agg/patches/0010-Add-renderer_scanline_aa_alpha.patch193
-rw-r--r--libraries/agg/patches/0011-Avoid-division-by-zero-in-color-burn-mode.patch58
-rw-r--r--libraries/agg/patches/0012-Avoid-pixel-artifacts-when-compositing.patch26
-rw-r--r--libraries/agg/patches/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch93
-rw-r--r--libraries/agg/patches/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch30
-rw-r--r--libraries/agg/patches/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch24
-rw-r--r--libraries/agg/patches/01-disable-gpc.patch14
-rw-r--r--libraries/agg/patches/02-maintainer-mode.patch16
-rw-r--r--libraries/agg/patches/03-pkg-config-pic.patch13
-rw-r--r--libraries/agg/patches/04-no-rpath.patch13
-rw-r--r--libraries/agg/patches/05-no-agg_conv_gpc.h.patch25
-rw-r--r--libraries/agg/patches/07-autogen-noconfigure.patch15
-rw-r--r--libraries/agg/patches/08-fix-kfreebsd-ftbfs.patch18
-rw-r--r--libraries/agg/patches/09-fix-hurd-ftbfs.patch18
-rw-r--r--libraries/agg/patches/no-pre-c89.patch17
27 files changed, 149 insertions, 1077 deletions
diff --git a/libraries/agg/patches/00001-agg-2.4-depends.patch b/libraries/agg/patches/00001-agg-2.4-depends.patch
deleted file mode 100644
index 9d4f6e309d..0000000000
--- a/libraries/agg/patches/00001-agg-2.4-depends.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- agg-2.4.orig/font_freetype/Makefile.am 2005-10-18 11:45:40.000000000 +0100
-+++ agg-2.4/font_freetype/Makefile.am 2006-07-10 15:11:55.000000000 +0100
-@@ -4,8 +4,9 @@
- agginclude_HEADERS = agg_font_freetype.h
- lib_LTLIBRARIES = libaggfontfreetype.la
-
--libaggfontfreetype_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ @FREETYPE_LIBS@
-+libaggfontfreetype_la_LDFLAGS = -version-info @AGG_LIB_VERSION@
- libaggfontfreetype_la_SOURCES = agg_font_freetype.cpp
- libaggfontfreetype_la_CXXFLAGS = -I$(top_srcdir)/include @FREETYPE_CFLAGS@
-+libaggfontfreetype_la_LIBADD = ../src/libagg.la @FREETYPE_LIBS@
- endif
-
---- agg-2.4.orig/src/platform/sdl/Makefile.am 2005-10-17 23:49:35.000000000 +0100
-+++ agg-2.4/src/platform/sdl/Makefile.am 2006-07-10 15:11:55.000000000 +0100
-@@ -5,6 +5,6 @@
- libaggplatformsdl_la_LDFLAGS = -version-info @AGG_LIB_VERSION@
- libaggplatformsdl_la_SOURCES = agg_platform_support.cpp
- libaggplatformsdl_la_CXXFLAGS = -I$(top_srcdir)/include @SDL_CFLAGS@
--libaggplatformsdl_la_LIBADD = @SDL_LIBS@
-+libaggplatformsdl_la_LIBADD = ../../libagg.la @SDL_LIBS@
- endif
-
---- agg-2.5.orig/configure.in 2006-10-09 05:06:36.000000000 +0100
-+++ agg-2.5/configure.in 2007-01-07 14:07:39.000000000 +0000
-@@ -122,7 +122,8 @@
- fi
- AM_CONDITIONAL(ENABLE_X11,[test x$no_x = x -a xno != x$enable_platform -a x$win32_host != xyes])
- AC_SUBST(x_includes)
--AC_SUBST(x_libraries)
-+test -n "$x_libraries" && X_LDFLAGS="-L$x_libraries"
-+AC_SUBST(X_LDFLAGS)
- dnl ###############################################
-
- dnl Settung up library version
---- agg-2.5.orig/src/platform/X11/Makefile.am 2006-12-11 00:59:45.000000000 +0000
-+++ agg-2.5/src/platform/X11/Makefile.am 2007-01-07 14:07:39.000000000 +0000
-@@ -1,8 +1,8 @@
- if ENABLE_X11
- lib_LTLIBRARIES = libaggplatformX11.la
-
--libaggplatformX11_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ -L@x_libraries@
-+libaggplatformX11_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ @X_LDFLAGS@
- libaggplatformX11_la_SOURCES = agg_platform_support.cpp
- libaggplatformX11_la_CXXFLAGS = -I$(top_srcdir)/include -I@x_includes@
--libaggplatformX11_la_LIBADD = -lX11
-+libaggplatformX11_la_LIBADD = ../../libagg.la -lX11
- endif
diff --git a/libraries/agg/patches/00002-agg-2.5-pkgconfig.patch b/libraries/agg/patches/00002-agg-2.5-pkgconfig.patch
deleted file mode 100644
index a303bfb905..0000000000
--- a/libraries/agg/patches/00002-agg-2.5-pkgconfig.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- agg-2.5/libagg.pc.in.orig 2007-01-07 13:58:28.000000000 +0000
-+++ agg-2.5/libagg.pc.in 2007-01-07 14:02:40.000000000 +0000
-@@ -6,5 +6,6 @@
- Name: libagg
- Description: Anti Grain Geometry - A High Quality Rendering Engine for C++
- Version: @VERSION@
--Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg
-+Requires.private: freetype2
-+Libs: -L${libdir} -lagg
- Cflags: -I${includedir}
diff --git a/libraries/agg/patches/00003-agg-2.5-autotools.patch b/libraries/agg/patches/00003-agg-2.5-autotools.patch
deleted file mode 100644
index 94184dfe59..0000000000
--- a/libraries/agg/patches/00003-agg-2.5-autotools.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/configure.in~ 2013-02-22 09:30:00.000000000 -0600
-+++ a/configure.in 2013-02-22 09:30:49.030777571 -0600
-@@ -8,7 +8,7 @@
- AC_PROG_CC
- AC_PROG_CXX
- AC_ISC_POSIX
--AM_C_PROTOTYPES
-+#AM_C_PROTOTYPES
- if test "x$U" != "x"; then
- AC_MSG_ERROR(Compiler not ANSI compliant)
- fi
diff --git a/libraries/agg/patches/0001-Fix-non-terminating-loop-conditions-when-len-1.patch b/libraries/agg/patches/0001-Fix-non-terminating-loop-conditions-when-len-1.patch
deleted file mode 100644
index eaf0467fb8..0000000000
--- a/libraries/agg/patches/0001-Fix-non-terminating-loop-conditions-when-len-1.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From efd33aad5e69f36ab343b1f28839a55db4538104 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 10:55:37 +0100
-Subject: [PATCH 01/15] Fix non-terminating loop conditions when len=1
-
-- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
-+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
- {
- sx = (lp.x1 + sx) >> 1;
- sy = (lp.y1 + sy) >> 1;
- }
----
- include/agg_renderer_outline_aa.h | 8 ++++----
- include/agg_renderer_outline_image.h | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/include/agg_renderer_outline_aa.h b/include/agg_renderer_outline_aa.h
-index ce25a2e..cb2aa00 100644
---- a/include/agg_renderer_outline_aa.h
-+++ b/include/agg_renderer_outline_aa.h
-@@ -1659,7 +1659,7 @@ namespace agg
- }
- else
- {
-- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
-+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
- {
- sx = (lp.x1 + sx) >> 1;
- sy = (lp.y1 + sy) >> 1;
-@@ -1726,7 +1726,7 @@ namespace agg
- }
- else
- {
-- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
-+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
- {
- ex = (lp.x2 + ex) >> 1;
- ey = (lp.y2 + ey) >> 1;
-@@ -1798,7 +1798,7 @@ namespace agg
- }
- else
- {
-- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
-+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
- {
- sx = (lp.x1 + sx) >> 1;
- sy = (lp.y1 + sy) >> 1;
-@@ -1811,7 +1811,7 @@ namespace agg
- }
- else
- {
-- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
-+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
- {
- ex = (lp.x2 + ex) >> 1;
- ey = (lp.y2 + ey) >> 1;
-diff --git a/include/agg_renderer_outline_image.h b/include/agg_renderer_outline_image.h
-index fbfac10..66d2b9a 100644
---- a/include/agg_renderer_outline_image.h
-+++ b/include/agg_renderer_outline_image.h
-@@ -969,7 +969,7 @@ namespace agg
- }
- else
- {
-- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
-+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
- {
- sx = (lp.x1 + sx) >> 1;
- sy = (lp.y1 + sy) >> 1;
-@@ -982,7 +982,7 @@ namespace agg
- }
- else
- {
-- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
-+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
- {
- ex = (lp.x2 + ex) >> 1;
- ey = (lp.y2 + ey) >> 1;
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch b/libraries/agg/patches/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch
deleted file mode 100644
index 4fe74341ed..0000000000
--- a/libraries/agg/patches/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From e269fe9b62af6fe314cebe0ee7a6d6d1a4a84d1c Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 11:03:26 +0100
-Subject: [PATCH 02/15] Cure recursion by aborting if the co-ordinates are to
- big to handle
-
----
- include/agg_rasterizer_cells_aa.h | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/include/agg_rasterizer_cells_aa.h b/include/agg_rasterizer_cells_aa.h
-index d3bb138..3a616d9 100644
---- a/include/agg_rasterizer_cells_aa.h
-+++ b/include/agg_rasterizer_cells_aa.h
-@@ -40,7 +40,8 @@
- #define AGG_RASTERIZER_CELLS_AA_INCLUDED
-
- #include <string.h>
--#include <math.h>
-+#include <cstdlib>
-+#include <limits>
- #include "agg_math.h"
- #include "agg_array.h"
-
-@@ -333,6 +334,12 @@ namespace agg
- {
- int cx = (x1 + x2) >> 1;
- int cy = (y1 + y2) >> 1;
-+
-+ // Bail if values are so large they are likely to wrap
-+ if ((std::abs(x1) >= std::numeric_limits<int>::max()/2) || (std::abs(y1) >= std::numeric_limits<int>::max()/2) ||
-+ (std::abs(x2) >= std::numeric_limits<int>::max()/2) || (std::abs(y2) >= std::numeric_limits<int>::max()/2))
-+ return;
-+
- line(x1, y1, cx, cy);
- line(cx, cy, x2, y2);
- }
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0003-Get-coordinates-from-previous-vertex-if-last-command.patch b/libraries/agg/patches/0003-Get-coordinates-from-previous-vertex-if-last-command.patch
deleted file mode 100644
index b12684d18d..0000000000
--- a/libraries/agg/patches/0003-Get-coordinates-from-previous-vertex-if-last-command.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 032d5342430f4c5dfbc34a2817d67386a14fd51b Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 11:40:49 +0100
-Subject: [PATCH 03/15] Get coordinates from previous vertex if last command is
- path_cmd_end_poly
-
----
- include/agg_path_storage.h | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/include/agg_path_storage.h b/include/agg_path_storage.h
-index 7be7393..8922fc8 100644
---- a/include/agg_path_storage.h
-+++ b/include/agg_path_storage.h
-@@ -878,6 +878,12 @@ namespace agg
- *x += x2;
- *y += y2;
- }
-+ else if (!is_stop(m_vertices.last_command()) &&
-+ is_vertex(m_vertices.prev_vertex(&x2, &y2)))
-+ {
-+ *x += x2;
-+ *y += y2;
-+ }
- }
- }
-
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch b/libraries/agg/patches/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch
deleted file mode 100644
index 0cecaf7948..0000000000
--- a/libraries/agg/patches/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From b9c4b1c72b4ad6b24c37f402d3eec39ef393b0eb Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 14:17:43 +0100
-Subject: [PATCH 04/15] Make rasterizer_outline_aa ignore close_polygon when
- vertex count < 3
-
----
- include/agg_rasterizer_outline_aa.h | 107 ++++++++++++++++++------------------
- 1 file changed, 52 insertions(+), 55 deletions(-)
-
-diff --git a/include/agg_rasterizer_outline_aa.h b/include/agg_rasterizer_outline_aa.h
-index 4d6dd57..24301d5 100644
---- a/include/agg_rasterizer_outline_aa.h
-+++ b/include/agg_rasterizer_outline_aa.h
-@@ -333,68 +333,65 @@ namespace agg
- int y2;
- int lprev;
-
-- if(close_polygon)
-+ if(close_polygon && (m_src_vertices.size() >= 3))
- {
-- if(m_src_vertices.size() >= 3)
-+ dv.idx = 2;
-+
-+ v = &m_src_vertices[m_src_vertices.size() - 1];
-+ x1 = v->x;
-+ y1 = v->y;
-+ lprev = v->len;
-+
-+ v = &m_src_vertices[0];
-+ x2 = v->x;
-+ y2 = v->y;
-+ dv.lcurr = v->len;
-+ line_parameters prev(x1, y1, x2, y2, lprev);
-+
-+ v = &m_src_vertices[1];
-+ dv.x1 = v->x;
-+ dv.y1 = v->y;
-+ dv.lnext = v->len;
-+ dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
-+
-+ v = &m_src_vertices[dv.idx];
-+ dv.x2 = v->x;
-+ dv.y2 = v->y;
-+ dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
-+
-+ dv.xb1 = 0;
-+ dv.yb1 = 0;
-+ dv.xb2 = 0;
-+ dv.yb2 = 0;
-+
-+ switch(m_line_join)
- {
-- dv.idx = 2;
--
-- v = &m_src_vertices[m_src_vertices.size() - 1];
-- x1 = v->x;
-- y1 = v->y;
-- lprev = v->len;
--
-- v = &m_src_vertices[0];
-- x2 = v->x;
-- y2 = v->y;
-- dv.lcurr = v->len;
-- line_parameters prev(x1, y1, x2, y2, lprev);
--
-- v = &m_src_vertices[1];
-- dv.x1 = v->x;
-- dv.y1 = v->y;
-- dv.lnext = v->len;
-- dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
--
-- v = &m_src_vertices[dv.idx];
-- dv.x2 = v->x;
-- dv.y2 = v->y;
-- dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
--
-- dv.xb1 = 0;
-- dv.yb1 = 0;
-- dv.xb2 = 0;
-- dv.yb2 = 0;
--
-- switch(m_line_join)
-- {
-- case outline_no_join:
-- dv.flags = 3;
-- break;
-+ case outline_no_join:
-+ dv.flags = 3;
-+ break;
-
-- case outline_miter_join:
-- case outline_round_join:
-- dv.flags =
-- (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
-- ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
-- break;
-+ case outline_miter_join:
-+ case outline_round_join:
-+ dv.flags =
-+ (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
-+ ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
-+ break;
-
-- case outline_miter_accurate_join:
-- dv.flags = 0;
-- break;
-- }
-+ case outline_miter_accurate_join:
-+ dv.flags = 0;
-+ break;
-+ }
-
-- if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
-- {
-- bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
-- }
-+ if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
-+ {
-+ bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
-+ }
-
-- if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
-- {
-- bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
-- }
-- draw(dv, 0, m_src_vertices.size());
-+ if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
-+ {
-+ bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
- }
-+ draw(dv, 0, m_src_vertices.size());
- }
- else
- {
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0005-Remove-VC-6-workaround.patch b/libraries/agg/patches/0005-Remove-VC-6-workaround.patch
deleted file mode 100644
index f38f7c40d0..0000000000
--- a/libraries/agg/patches/0005-Remove-VC-6-workaround.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From b8c43fb0ba13af0cc2b1050f48f81d76d2fdf0c7 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 15:04:05 +0100
-Subject: [PATCH 05/15] Remove VC++ 6 workaround
-
----
- include/agg_renderer_scanline.h | 29 +----------------------------
- 1 file changed, 1 insertion(+), 28 deletions(-)
-
-diff --git a/include/agg_renderer_scanline.h b/include/agg_renderer_scanline.h
-index c3bb6f0..c27ca60 100644
---- a/include/agg_renderer_scanline.h
-+++ b/include/agg_renderer_scanline.h
-@@ -79,34 +79,7 @@ namespace agg
- sl.reset(ras.min_x(), ras.max_x());
- while(ras.sweep_scanline(sl))
- {
-- //render_scanline_aa_solid(sl, ren, ren_color);
--
-- // This code is equivalent to the above call (copy/paste).
-- // It's just a "manual" optimization for old compilers,
-- // like Microsoft Visual C++ v6.0
-- //-------------------------------
-- int y = sl.y();
-- unsigned num_spans = sl.num_spans();
-- typename Scanline::const_iterator span = sl.begin();
--
-- for(;;)
-- {
-- int x = span->x;
-- if(span->len > 0)
-- {
-- ren.blend_solid_hspan(x, y, (unsigned)span->len,
-- ren_color,
-- span->covers);
-- }
-- else
-- {
-- ren.blend_hline(x, y, (unsigned)(x - span->len - 1),
-- ren_color,
-- *(span->covers));
-- }
-- if(--num_spans == 0) break;
-- ++span;
-- }
-+ render_scanline_aa_solid(sl, ren, ren_color);
- }
- }
- }
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0006-Implement-grain-merge-blending-mode-GIMP.patch b/libraries/agg/patches/0006-Implement-grain-merge-blending-mode-GIMP.patch
deleted file mode 100644
index f1e465b4d3..0000000000
--- a/libraries/agg/patches/0006-Implement-grain-merge-blending-mode-GIMP.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 9422570f4e099a834fc43619f7b2a7eb6b442e25 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 15:31:01 +0100
-Subject: [PATCH 06/15] Implement grain-merge blending mode (GIMP)
-
----
- include/agg_pixfmt_rgba.h | 42 ++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 40 insertions(+), 2 deletions(-)
-
-diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
-index 79d10dc..f576ce4 100644
---- a/include/agg_pixfmt_rgba.h
-+++ b/include/agg_pixfmt_rgba.h
-@@ -1401,9 +1401,46 @@ namespace agg
- }
- };
-
-+ //================================================comp_op_rgba_grain_merge
-+ template <typename ColorT, typename Order> struct comp_op_rgba_grain_merge
-+ {
-+ typedef ColorT color_type;
-+ typedef Order order_type;
-+ typedef typename color_type::value_type value_type;
-+ typedef typename color_type::calc_type calc_type;
-+ typedef typename color_type::long_type long_type;
-+ enum base_scale_e
-+ {
-+ base_shift = color_type::base_shift,
-+ base_mask = color_type::base_mask
-+ };
-
-+ // E = I + M - 128
-+ static AGG_INLINE void blend_pix(value_type* p,
-+ unsigned sr, unsigned sg, unsigned sb,
-+ unsigned sa, unsigned cover)
-+ {
-
--
-+ if(cover < 255)
-+ {
-+ sr = (sr * cover + 255) >> 8;
-+ sg = (sg * cover + 255) >> 8;
-+ sb = (sb * cover + 255) >> 8;
-+ sa = (sa * cover + 255) >> 8;
-+ }
-+ if(sa)
-+ {
-+ calc_type da = p[Order::A];
-+ int dr = sr + p[Order::R] - 128;
-+ int dg = sg + p[Order::G] - 128;
-+ int db = sb + p[Order::B] - 128;
-+ p[Order::R] = (value_type)(dr < 0 ? 0 : (dr > 255 ? 255 : dr));
-+ p[Order::G] = (value_type)(dg < 0 ? 0 : (dg > 255 ? 255 : dg));
-+ p[Order::B] = (value_type)(db < 0 ? 0 : (db > 255 ? 255 : db));
-+ p[Order::A] = (value_type)(sa + da - ((sa * da + base_mask) >> base_shift));
-+ }
-+ }
-+ };
-
- //======================================================comp_op_table_rgba
- template<class ColorT, class Order> struct comp_op_table_rgba
-@@ -1451,6 +1488,7 @@ namespace agg
- comp_op_rgba_contrast <ColorT,Order>::blend_pix,
- comp_op_rgba_invert <ColorT,Order>::blend_pix,
- comp_op_rgba_invert_rgb <ColorT,Order>::blend_pix,
-+ comp_op_rgba_grain_merge<ColorT,Order>::blend_pix,
- 0
- };
-
-@@ -1486,6 +1524,7 @@ namespace agg
- comp_op_contrast, //----comp_op_contrast
- comp_op_invert, //----comp_op_invert
- comp_op_invert_rgb, //----comp_op_invert_rgb
-+ comp_op_grain_merge, //----comp_op_grain_merge
-
- end_of_comp_op_e
- };
-@@ -2908,4 +2947,3 @@ namespace agg
- }
-
- #endif
--
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0007-Implement-grain-extract-blending-mode-GIMP.patch b/libraries/agg/patches/0007-Implement-grain-extract-blending-mode-GIMP.patch
deleted file mode 100644
index cafb36eb03..0000000000
--- a/libraries/agg/patches/0007-Implement-grain-extract-blending-mode-GIMP.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From abd440342e166a90d08610bf5b31d2a8357eafbe Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 15:43:18 +0100
-Subject: [PATCH 07/15] Implement grain-extract blending mode (GIMP)
-
----
- include/agg_pixfmt_rgba.h | 48 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 48 insertions(+)
-
-diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
-index f576ce4..42f0a05 100644
---- a/include/agg_pixfmt_rgba.h
-+++ b/include/agg_pixfmt_rgba.h
-@@ -1442,6 +1442,52 @@ namespace agg
- }
- };
-
-+ //==============================================comp_op_rgba_grain_extract
-+ template <typename ColorT, typename Order> struct comp_op_rgba_grain_extract
-+ {
-+ typedef ColorT color_type;
-+ typedef Order order_type;
-+ typedef typename color_type::value_type value_type;
-+ typedef typename color_type::calc_type calc_type;
-+ typedef typename color_type::long_type long_type;
-+ enum base_scale_e
-+ {
-+ base_shift = color_type::base_shift,
-+ base_mask = color_type::base_mask
-+ };
-+
-+ // E = I - M + 128
-+ static AGG_INLINE void blend_pix(value_type* p,
-+ unsigned sr, unsigned sg, unsigned sb,
-+ unsigned sa, unsigned cover)
-+ {
-+ calc_type da = (p[Order::A] * sa + 255) >> 8;
-+
-+ int dr = p[Order::R] - sr + 128;
-+ int dg = p[Order::G] - sg + 128;
-+ int db = p[Order::B] - sb + 128;
-+
-+ dr = dr < 0 ? 0 : (dr > 255 ? 255 : dr);
-+ dg = dg < 0 ? 0 : (dg > 255 ? 255 : dg);
-+ db = db < 0 ? 0 : (db > 255 ? 255 : db);
-+
-+ p[Order::A] = da;
-+
-+ if(da < 255)
-+ {
-+ p[Order::R] = (dr * da + 255) >> 8;
-+ p[Order::G] = (dg * da + 255) >> 8;
-+ p[Order::B] = (db * da + 255) >> 8;
-+ }
-+ else
-+ {
-+ p[Order::R] = dr;
-+ p[Order::G] = dg;
-+ p[Order::B] = db;
-+ }
-+ }
-+ };
-+
- //======================================================comp_op_table_rgba
- template<class ColorT, class Order> struct comp_op_table_rgba
- {
-@@ -1489,6 +1535,7 @@ namespace agg
- comp_op_rgba_invert <ColorT,Order>::blend_pix,
- comp_op_rgba_invert_rgb <ColorT,Order>::blend_pix,
- comp_op_rgba_grain_merge<ColorT,Order>::blend_pix,
-+ comp_op_rgba_grain_extract<ColorT,Order>::blend_pix,
- 0
- };
-
-@@ -1525,6 +1572,7 @@ namespace agg
- comp_op_invert, //----comp_op_invert
- comp_op_invert_rgb, //----comp_op_invert_rgb
- comp_op_grain_merge, //----comp_op_grain_merge
-+ comp_op_grain_extract, //----comp_op_grain_extract
-
- end_of_comp_op_e
- };
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0008-Declare-multiplication-and-division-operators-as-con.patch b/libraries/agg/patches/0008-Declare-multiplication-and-division-operators-as-con.patch
deleted file mode 100644
index 0ed92ee6cf..0000000000
--- a/libraries/agg/patches/0008-Declare-multiplication-and-division-operators-as-con.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2688af280836b95908d3cfd6915510d55de673b8 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 16:15:01 +0100
-Subject: [PATCH 08/15] Declare multiplication and division operators as const
-
----
- include/agg_trans_affine.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/include/agg_trans_affine.h b/include/agg_trans_affine.h
-index a662099..2f602a0 100644
---- a/include/agg_trans_affine.h
-+++ b/include/agg_trans_affine.h
-@@ -216,15 +216,15 @@ namespace agg
- }
-
- // Multiply the matrix by another one and return
-- // the result in a separete matrix.
-- trans_affine operator * (const trans_affine& m)
-+ // the result in a separate matrix.
-+ trans_affine operator * (const trans_affine& m) const
- {
- return trans_affine(*this).multiply(m);
- }
-
- // Multiply the matrix by inverse of another one
-- // and return the result in a separete matrix.
-- trans_affine operator / (const trans_affine& m)
-+ // and return the result in a separate matrix.
-+ trans_affine operator / (const trans_affine& m) const
- {
- return trans_affine(*this).multiply_inv(m);
- }
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0009-Add-a-static-identity-transformation.patch b/libraries/agg/patches/0009-Add-a-static-identity-transformation.patch
deleted file mode 100644
index 01555cb3af..0000000000
--- a/libraries/agg/patches/0009-Add-a-static-identity-transformation.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From be9ed90897bc43b4547a3a1f8046827caaf13b4c Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 16:15:36 +0100
-Subject: [PATCH 09/15] Add a static identity transformation
-
----
- include/agg_trans_affine.h | 1 +
- src/agg_trans_affine.cpp | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/include/agg_trans_affine.h b/include/agg_trans_affine.h
-index 2f602a0..67fe5ca 100644
---- a/include/agg_trans_affine.h
-+++ b/include/agg_trans_affine.h
-@@ -92,6 +92,7 @@ namespace agg
- //----------------------------------------------------------------------
- struct trans_affine
- {
-+ static const trans_affine identity;
- double sx, shy, shx, sy, tx, ty;
-
- //------------------------------------------ Construction
-diff --git a/src/agg_trans_affine.cpp b/src/agg_trans_affine.cpp
-index aca18c2..b3d9bc0 100644
---- a/src/agg_trans_affine.cpp
-+++ b/src/agg_trans_affine.cpp
-@@ -28,6 +28,7 @@
-
- namespace agg
- {
-+ const trans_affine trans_affine::identity;
-
- //------------------------------------------------------------------------
- const trans_affine& trans_affine::parl_to_parl(const double* src,
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0010-Add-renderer_scanline_aa_alpha.patch b/libraries/agg/patches/0010-Add-renderer_scanline_aa_alpha.patch
deleted file mode 100644
index b0be2583fc..0000000000
--- a/libraries/agg/patches/0010-Add-renderer_scanline_aa_alpha.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From 749c8cd11e9e6f81e93ae5ce19258431722b6bdf Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 16:43:25 +0100
-Subject: [PATCH 10/15] Add renderer_scanline_aa_alpha
-
----
- include/agg_pixfmt_rgba.h | 24 +++++++++++++-
- include/agg_renderer_base.h | 28 ++++++++++++++++
- include/agg_renderer_scanline.h | 71 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 122 insertions(+), 1 deletion(-)
-
-diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
-index 42f0a05..6c4bc37 100644
---- a/include/agg_pixfmt_rgba.h
-+++ b/include/agg_pixfmt_rgba.h
-@@ -2247,7 +2247,6 @@ namespace agg
- }
-
-
--
- //--------------------------------------------------------------------
- void blend_color_vspan(int x, int y,
- unsigned len,
-@@ -2751,6 +2750,29 @@ namespace agg
- }
-
- //--------------------------------------------------------------------
-+ void blend_color_hspan_alpha(int x, int y, unsigned len,
-+ const color_type* colors,
-+ value_type alpha,
-+ const int8u* covers,
-+ int8u cover)
-+ {
-+ value_type* p = (value_type*)m_rbuf->row_ptr(x, y, len) + (x << 2);
-+ do
-+ {
-+ blender_type::blend_pix(m_comp_op,
-+ p,
-+ (colors->r * alpha + 255) >> 8,
-+ (colors->g * alpha + 255) >> 8,
-+ (colors->b * alpha + 255) >> 8,
-+ (colors->a * alpha + 255) >> 8,
-+ covers ? *covers++ : cover);
-+ p += 4;
-+ ++colors;
-+ }
-+ while(--len);
-+ }
-+
-+ //--------------------------------------------------------------------
- void blend_color_vspan(int x, int y, unsigned len,
- const color_type* colors,
- const int8u* covers,
-diff --git a/include/agg_renderer_base.h b/include/agg_renderer_base.h
-index 1808944..25f07c3 100644
---- a/include/agg_renderer_base.h
-+++ b/include/agg_renderer_base.h
-@@ -37,6 +37,7 @@ namespace agg
- public:
- typedef PixelFormat pixfmt_type;
- typedef typename pixfmt_type::color_type color_type;
-+ typedef typename pixfmt_type::color_type::value_type value_type;
- typedef typename pixfmt_type::row_data row_data;
-
- //--------------------------------------------------------------------
-@@ -383,6 +384,33 @@ namespace agg
- }
-
- //--------------------------------------------------------------------
-+ void blend_color_hspan_alpha(int x, int y, int len,
-+ const color_type* colors,
-+ value_type alpha,
-+ const cover_type* covers,
-+ cover_type cover = agg::cover_full)
-+ {
-+ if(y > ymax()) return;
-+ if(y < ymin()) return;
-+
-+ if(x < xmin())
-+ {
-+ int d = xmin() - x;
-+ len -= d;
-+ if(len <= 0) return;
-+ if(covers) covers += d;
-+ colors += d;
-+ x = xmin();
-+ }
-+ if(x + len > xmax())
-+ {
-+ len = xmax() - x + 1;
-+ if(len <= 0) return;
-+ }
-+ m_ren->blend_color_hspan_alpha(x, y, len, colors, alpha, covers, cover);
-+ }
-+
-+ //--------------------------------------------------------------------
- void blend_color_vspan(int x, int y, int len,
- const color_type* colors,
- const cover_type* covers,
-diff --git a/include/agg_renderer_scanline.h b/include/agg_renderer_scanline.h
-index c27ca60..4fcb557 100644
---- a/include/agg_renderer_scanline.h
-+++ b/include/agg_renderer_scanline.h
-@@ -156,6 +156,35 @@ namespace agg
- }
- }
-
-+ //================================================render_scanline_aa_alpha
-+ template<class Scanline, class BaseRenderer,
-+ class SpanAllocator, class SpanGenerator>
-+ void render_scanline_aa_alpha(const Scanline& sl, BaseRenderer& ren,
-+ SpanAllocator& alloc, SpanGenerator& span_gen,
-+ unsigned alpha)
-+ {
-+ int y = sl.y();
-+
-+ unsigned num_spans = sl.num_spans();
-+ typename Scanline::const_iterator span = sl.begin();
-+ for(;;)
-+ {
-+ int x = span->x;
-+ int len = span->len;
-+ const typename Scanline::cover_type* covers = span->covers;
-+
-+ if(len < 0) len = -len;
-+ typename BaseRenderer::color_type* colors = alloc.allocate(len);
-+ span_gen.generate(colors, x, y, len);
-+ ren.blend_color_hspan_alpha(x, y, len, colors, alpha,
-+ (span->len < 0) ? 0 : covers, *covers);
-+
-+ if(--num_spans == 0) break;
-+ ++span;
-+ }
-+ }
-+
-+
- //=====================================================render_scanlines_aa
- template<class Rasterizer, class Scanline, class BaseRenderer,
- class SpanAllocator, class SpanGenerator>
-@@ -216,8 +245,50 @@ namespace agg
- };
-
-
-+ //==============================================renderer_scanline_aa_alpha
-+ template<class BaseRenderer, class SpanAllocator, class SpanGenerator>
-+ class renderer_scanline_aa_alpha
-+ {
-+ public:
-+ typedef BaseRenderer base_ren_type;
-+ typedef SpanAllocator alloc_type;
-+ typedef SpanGenerator span_gen_type;
-
-+ //--------------------------------------------------------------------
-+ renderer_scanline_aa_alpha() : m_ren(0), m_alloc(0), m_span_gen(0), m_alpha(1.0) {}
-+ renderer_scanline_aa_alpha(base_ren_type& ren,
-+ alloc_type& alloc,
-+ span_gen_type& span_gen,
-+ unsigned alpha) :
-+ m_ren(&ren),
-+ m_alloc(&alloc),
-+ m_span_gen(&span_gen),
-+ m_alpha(alpha)
-+ {}
-+ void attach(base_ren_type& ren,
-+ alloc_type& alloc,
-+ span_gen_type& span_gen)
-+ {
-+ m_ren = &ren;
-+ m_alloc = &alloc;
-+ m_span_gen = &span_gen;
-+ }
-
-+ //--------------------------------------------------------------------
-+ void prepare() { m_span_gen->prepare(); }
-+
-+ //--------------------------------------------------------------------
-+ template<class Scanline> void render(const Scanline& sl)
-+ {
-+ render_scanline_aa_alpha(sl, *m_ren, *m_alloc, *m_span_gen, m_alpha);
-+ }
-+
-+ private:
-+ base_ren_type* m_ren;
-+ alloc_type* m_alloc;
-+ span_gen_type* m_span_gen;
-+ unsigned m_alpha;
-+ };
-
-
- //===============================================render_scanline_bin_solid
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0011-Avoid-division-by-zero-in-color-burn-mode.patch b/libraries/agg/patches/0011-Avoid-division-by-zero-in-color-burn-mode.patch
deleted file mode 100644
index 2a0d198fe9..0000000000
--- a/libraries/agg/patches/0011-Avoid-division-by-zero-in-color-burn-mode.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0ec68d7f5695403eccac75025ba7f6f7ecf1814e Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sun, 19 May 2013 16:49:08 +0100
-Subject: [PATCH 11/15] Avoid division by zero in color-burn mode
-
-FIXME: re-work using latest math from http://www.w3.org/TR/SVGCompositing/
----
- include/agg_pixfmt_rgba.h | 21 ++++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
-diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
-index 6c4bc37..5d6b511 100644
---- a/include/agg_pixfmt_rgba.h
-+++ b/include/agg_pixfmt_rgba.h
-@@ -1027,6 +1027,21 @@ namespace agg
- // Dca' = Sa.(Sca.Da + Dca.Sa - Sa.Da)/Sca + Sca.(1 - Da) + Dca.(1 - Sa)
- //
- // Da' = Sa + Da - Sa.Da
-+
-+
-+ // http://www.w3.org/TR/SVGCompositing/
-+ // if Sca == 0 and Dca == Da
-+ // Dca' = Sa × Da + Sca × (1 - Da) + Dca × (1 - Sa)
-+ // = Sa × Da + Dca × (1 - Sa)
-+ // = Da = Dca
-+ // otherwise if Sca == 0
-+ // Dca' = Sca × (1 - Da) + Dca × (1 - Sa)
-+ // = Dca × (1 - Sa)
-+ // otherwise if Sca > 0
-+ // Dca' = Sa × Da - Sa × Da × min(1, (1 - Dca/Da) × Sa/Sca) + Sca × (1 - Da) + Dca × (1 - Sa)
-+ // = Sa × Da × (1 - min(1, (1 - Dca/Da) × Sa/Sca)) + Sca × (1 - Da) + Dca × (1 - Sa)
-+
-+ // sa * da * (255 - std::min(255, (255 - p[0]/da)*(sa/(sc*sa)) +
- static AGG_INLINE void blend_pix(value_type* p,
- unsigned sr, unsigned sg, unsigned sb,
- unsigned sa, unsigned cover)
-@@ -1056,15 +1071,15 @@ namespace agg
-
- p[Order::R] = (value_type)(((srda + drsa <= sada) ?
- sr * d1a + dr * s1a :
-- sa * (srda + drsa - sada) / sr + sr * d1a + dr * s1a + base_mask) >> base_shift);
-+ (sr > 0 ? sa * (srda + drsa - sada) / sr + sr * d1a + dr * s1a + base_mask : 0)) >> base_shift);
-
- p[Order::G] = (value_type)(((sgda + dgsa <= sada) ?
- sg * d1a + dg * s1a :
-- sa * (sgda + dgsa - sada) / sg + sg * d1a + dg * s1a + base_mask) >> base_shift);
-+ (sg > 0 ? sa * (sgda + dgsa - sada) / sg + sg * d1a + dg * s1a + base_mask : 0)) >> base_shift);
-
- p[Order::B] = (value_type)(((sbda + dbsa <= sada) ?
- sb * d1a + db * s1a :
-- sa * (sbda + dbsa - sada) / sb + sb * d1a + db * s1a + base_mask) >> base_shift);
-+ (sb > 0 ? sa * (sbda + dbsa - sada) / sb + sb * d1a + db * s1a + base_mask : 0)) >> base_shift);
-
- p[Order::A] = (value_type)(sa + da - ((sa * da + base_mask) >> base_shift));
- }
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0012-Avoid-pixel-artifacts-when-compositing.patch b/libraries/agg/patches/0012-Avoid-pixel-artifacts-when-compositing.patch
deleted file mode 100644
index b3e641e6f5..0000000000
--- a/libraries/agg/patches/0012-Avoid-pixel-artifacts-when-compositing.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bf0e0b71360cfbc690a29f4abe15d7b9b61b8479 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sat, 22 Jun 2013 12:11:54 +0100
-Subject: [PATCH 12/15] Avoid pixel artifacts when compositing
-
-Change src_over alpha to avoid pixel artifacts by reordering computations.
----
- include/agg_pixfmt_rgba.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
-index 5d6b511..bb255cd 100644
---- a/include/agg_pixfmt_rgba.h
-+++ b/include/agg_pixfmt_rgba.h
-@@ -346,7 +346,7 @@ namespace agg
- p[Order::R] = (value_type)(sr + ((p[Order::R] * s1a + base_mask) >> base_shift));
- p[Order::G] = (value_type)(sg + ((p[Order::G] * s1a + base_mask) >> base_shift));
- p[Order::B] = (value_type)(sb + ((p[Order::B] * s1a + base_mask) >> base_shift));
-- p[Order::A] = (value_type)(sa + p[Order::A] - ((sa * p[Order::A] + base_mask) >> base_shift));
-+ p[Order::A] = (value_type)(sa + ((p[Order::A] * s1a + base_mask) >> base_shift));
- }
- };
-
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch b/libraries/agg/patches/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch
deleted file mode 100644
index 9deb904734..0000000000
--- a/libraries/agg/patches/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 6f1ab5f4b470bcf4e7e72aac6e2f7f6ee3e7b424 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sat, 22 Jun 2013 12:16:42 +0100
-Subject: [PATCH 13/15] Modify agg conv classes to allow access to the original
- geometry type
-
----
- include/agg_conv_adaptor_vcgen.h | 2 ++
- include/agg_conv_adaptor_vpgen.h | 1 +
- include/agg_conv_clip_polygon.h | 1 +
- include/agg_conv_clip_polyline.h | 1 +
- include/agg_conv_smooth_poly1.h | 2 ++
- 5 files changed, 7 insertions(+)
-
-diff --git a/include/agg_conv_adaptor_vcgen.h b/include/agg_conv_adaptor_vcgen.h
-index 7bd9b07..fef4579 100644
---- a/include/agg_conv_adaptor_vcgen.h
-+++ b/include/agg_conv_adaptor_vcgen.h
-@@ -38,6 +38,7 @@ namespace agg
-
- void rewind(unsigned) {}
- unsigned vertex(double*, double*) { return path_cmd_stop; }
-+ unsigned type() const { return 0; }
- };
-
-
-@@ -73,6 +74,7 @@ namespace agg
- }
-
- unsigned vertex(double* x, double* y);
-+ unsigned type() const { return m_source->type(); }
-
- private:
- // Prohibit copying
-diff --git a/include/agg_conv_adaptor_vpgen.h b/include/agg_conv_adaptor_vpgen.h
-index dca9415..a39102d 100644
---- a/include/agg_conv_adaptor_vpgen.h
-+++ b/include/agg_conv_adaptor_vpgen.h
-@@ -42,6 +42,7 @@ namespace agg
-
- void rewind(unsigned path_id);
- unsigned vertex(double* x, double* y);
-+ unsigned type() const { return m_source->type(); }
-
- private:
- conv_adaptor_vpgen(const conv_adaptor_vpgen<VertexSource, VPGen>&);
-diff --git a/include/agg_conv_clip_polygon.h b/include/agg_conv_clip_polygon.h
-index 3c34590..e417a7d 100644
---- a/include/agg_conv_clip_polygon.h
-+++ b/include/agg_conv_clip_polygon.h
-@@ -60,6 +60,7 @@ namespace agg
- double y1() const { return base_type::vpgen().y1(); }
- double x2() const { return base_type::vpgen().x2(); }
- double y2() const { return base_type::vpgen().y2(); }
-+ unsigned type() const { return base_type::type(); }
-
- private:
- conv_clip_polygon(const conv_clip_polygon<VertexSource>&);
-diff --git a/include/agg_conv_clip_polyline.h b/include/agg_conv_clip_polyline.h
-index d45067f..0de4b57 100644
---- a/include/agg_conv_clip_polyline.h
-+++ b/include/agg_conv_clip_polyline.h
-@@ -60,6 +60,7 @@ namespace agg
- double y1() const { return base_type::vpgen().y1(); }
- double x2() const { return base_type::vpgen().x2(); }
- double y2() const { return base_type::vpgen().y2(); }
-+ unsigned type() const { return base_type::type(); }
-
- private:
- conv_clip_polyline(const conv_clip_polyline<VertexSource>&);
-diff --git a/include/agg_conv_smooth_poly1.h b/include/agg_conv_smooth_poly1.h
-index 15f7f8d..0956c4e 100644
---- a/include/agg_conv_smooth_poly1.h
-+++ b/include/agg_conv_smooth_poly1.h
-@@ -48,6 +48,7 @@ namespace agg
-
- void smooth_value(double v) { base_type::generator().smooth_value(v); }
- double smooth_value() const { return base_type::generator().smooth_value(); }
-+ unsigned type() const { return base_type::type(); }
-
- private:
- conv_smooth_poly1(const conv_smooth_poly1<VertexSource>&);
-@@ -70,6 +71,7 @@ namespace agg
-
- void smooth_value(double v) { m_smooth.generator().smooth_value(v); }
- double smooth_value() const { return m_smooth.generator().smooth_value(); }
-+ unsigned type() const { return m_smooth.type(); }
-
- private:
- conv_smooth_poly1_curve(const conv_smooth_poly1_curve<VertexSource>&);
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch b/libraries/agg/patches/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch
deleted file mode 100644
index 547b0d2188..0000000000
--- a/libraries/agg/patches/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 6433a64f4cd41e88499386b0b7c7ae05d30683b8 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sat, 22 Jun 2013 12:33:32 +0100
-Subject: [PATCH 14/15] Avoid potential zero division resulting in nan in
- agg::gamma_linear
-
----
- include/agg_gamma_functions.h | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/include/agg_gamma_functions.h b/include/agg_gamma_functions.h
-index fa38a45..beb0c04 100644
---- a/include/agg_gamma_functions.h
-+++ b/include/agg_gamma_functions.h
-@@ -94,7 +94,11 @@ namespace agg
- {
- if(x < m_start) return 0.0;
- if(x > m_end) return 1.0;
-- return (x - m_start) / (m_end - m_start);
-+ double delta = m_end - m_start;
-+ // avoid nan from potential zero division
-+ // https://github.com/mapnik/mapnik/issues/761
-+ if (delta <= 0.0) return 0.0;
-+ return (x - m_start) / delta;
- }
-
- private:
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch b/libraries/agg/patches/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch
deleted file mode 100644
index 6214bd62e3..0000000000
--- a/libraries/agg/patches/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From ca818d4dcd428c5560fc3c341fbaf427a7485e32 Mon Sep 17 00:00:00 2001
-From: Tom Hughes <tom@compton.nu>
-Date: Sat, 22 Jun 2013 12:34:37 +0100
-Subject: [PATCH 15/15] Ensure first value in the gamma table is always zero
-
----
- include/agg_gamma_functions.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/agg_gamma_functions.h b/include/agg_gamma_functions.h
-index beb0c04..b8eda52 100644
---- a/include/agg_gamma_functions.h
-+++ b/include/agg_gamma_functions.h
-@@ -49,6 +49,7 @@ namespace agg
-
- double operator() (double x) const
- {
-+ if (x == 0.0) return 0.0;
- return pow(x, m_gamma);
- }
-
---
-1.8.1.4
-
diff --git a/libraries/agg/patches/01-disable-gpc.patch b/libraries/agg/patches/01-disable-gpc.patch
new file mode 100644
index 0000000000..4fe764a985
--- /dev/null
+++ b/libraries/agg/patches/01-disable-gpc.patch
@@ -0,0 +1,14 @@
+Author: Andrea Veri <and@debian.org>
+Description: Disable GPC at build time.
+
+diff -urNad debian.source~/Makefile.am debian.source/Makefile.am
+--- debian.source~/Makefile.am 2007-10-10 16:13:11.000000000 +0200
++++ debian.source/Makefile.am 2007-10-10 16:26:51.000000000 +0200
+@@ -1,4 +1,7 @@
++SUBDIRS = src font_freetype font_win32_tt include examples
++if ENABLE_GPC
+ SUBDIRS = gpc src font_freetype font_win32_tt include examples
++endif
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = libagg.pc
diff --git a/libraries/agg/patches/02-maintainer-mode.patch b/libraries/agg/patches/02-maintainer-mode.patch
new file mode 100644
index 0000000000..5cab4a01a1
--- /dev/null
+++ b/libraries/agg/patches/02-maintainer-mode.patch
@@ -0,0 +1,16 @@
+Author: Andrea Veri <and@debian.org>
+Description: Use AM_MAINTAINER_MODE, to avoid re-running autotools
+ except when explicitely called in debian/rules.
+
+diff -urNad agg-2.5+dfsg~/configure.ac agg-2.5+dfsg/configure.ac
+--- agg-2.5+dfsg~/configure.ac 2007-07-21 19:58:06.966030999 -0500
++++ agg-2.5+dfsg/configure.ac 2007-07-21 19:58:33.595695250 -0500
+@@ -2,7 +2,7 @@
+ AC_CANONICAL_TARGET
+ AC_CONFIG_HEADERS(include/config.h)
+ AM_INIT_AUTOMAKE(agg, 2.4.0)
+-
++AM_MAINTAINER_MODE
+
+ dnl Checks for programs.
+ AC_PROG_CC
diff --git a/libraries/agg/patches/03-pkg-config-pic.patch b/libraries/agg/patches/03-pkg-config-pic.patch
new file mode 100644
index 0000000000..dc16fc9ae2
--- /dev/null
+++ b/libraries/agg/patches/03-pkg-config-pic.patch
@@ -0,0 +1,13 @@
+Author: Unknown
+Description: Correct library name from agg to agg_pic for link
+
+diff -urNad agg-2.3~/libagg.pc.in agg-2.3/libagg.pc.in
+--- agg-2.3~/libagg.pc.in 2005-02-18 03:27:48.000000000 +0100
++++ agg-2.3/libagg.pc.in 2006-03-01 18:08:26.906950512 +0100
+@@ -6,5 +6,5 @@
+ Name: libagg
+ Description: Anti Grain Geometry - A High Quality Rendering Engine for C++
+ Version: @VERSION@
+-Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg
++Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg_pic
+ Cflags: -I${includedir}
diff --git a/libraries/agg/patches/04-no-rpath.patch b/libraries/agg/patches/04-no-rpath.patch
new file mode 100644
index 0000000000..d3f91408a3
--- /dev/null
+++ b/libraries/agg/patches/04-no-rpath.patch
@@ -0,0 +1,13 @@
+Author: Unknown
+Description: Disable hard coded rpath during linking
+
+diff -urNad agg-2.4~/libagg.pc.in agg-2.4/libagg.pc.in
+--- agg-2.4~/libagg.pc.in 2006-07-10 11:27:16.000000000 +0200
++++ agg-2.4/libagg.pc.in 2006-07-10 11:28:51.000000000 +0200
+@@ -6,5 +6,5 @@
+ Name: libagg
+ Description: Anti Grain Geometry - A High Quality Rendering Engine for C++
+ Version: @VERSION@
+-Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg_pic
++Libs: -L${libdir} -lagg_pic
+ Cflags: -I${includedir}
diff --git a/libraries/agg/patches/05-no-agg_conv_gpc.h.patch b/libraries/agg/patches/05-no-agg_conv_gpc.h.patch
new file mode 100644
index 0000000000..50bc68ba1e
--- /dev/null
+++ b/libraries/agg/patches/05-no-agg_conv_gpc.h.patch
@@ -0,0 +1,25 @@
+Description: Remove include/agg_conv_gpc.h from build files since it has been
+ removed from the source tarball.
+Author: John Horigan <john@glyphic.com>
+
+--- a/include/Makefile.am
++++ b/include/Makefile.am
+@@ -27,7 +27,7 @@
+ agg_conv_contour.h agg_rasterizer_scanline_aa.h agg_trans_affine.h \
+ agg_conv_curve.h agg_rasterizer_sl_clip.h agg_trans_bilinear.h \
+ agg_conv_dash.h agg_renderer_base.h agg_trans_double_path.h \
+- agg_conv_gpc.h agg_renderer_markers.h \
++ agg_renderer_markers.h \
+ agg_conv_marker.h agg_renderer_mclip.h agg_trans_perspective.h \
+ agg_conv_marker_adaptor.h agg_renderer_outline_aa.h agg_trans_single_path.h \
+ agg_conv_segmentator.h agg_renderer_outline_image.h agg_trans_viewport.h \
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -24,7 +24,6 @@
+ ${antigrain_SOURCE_DIR}/include/agg_conv_contour.h
+ ${antigrain_SOURCE_DIR}/include/agg_conv_curve.h
+ ${antigrain_SOURCE_DIR}/include/agg_conv_dash.h
+- ${antigrain_SOURCE_DIR}/include/agg_conv_gpc.h
+ ${antigrain_SOURCE_DIR}/include/agg_conv_marker.h
+ ${antigrain_SOURCE_DIR}/include/agg_conv_marker_adaptor.h
+ ${antigrain_SOURCE_DIR}/include/agg_conv_segmentator.h
diff --git a/libraries/agg/patches/07-autogen-noconfigure.patch b/libraries/agg/patches/07-autogen-noconfigure.patch
new file mode 100644
index 0000000000..70183cb693
--- /dev/null
+++ b/libraries/agg/patches/07-autogen-noconfigure.patch
@@ -0,0 +1,15 @@
+Author: Andrea Veri <and@debian.org>
+Description: Disable configure's run from the autogen file.
+
+Index: agg-2.5+dfsg1/autogen.sh
+===================================================================
+--- agg-2.5+dfsg1.orig/autogen.sh 2007-10-11 00:06:16.000000000 +0200
++++ agg-2.5+dfsg1/autogen.sh 2012-05-01 16:57:37.916862783 +0200
+@@ -18,6 +18,6 @@
+ automake --foreign --add-missing --ignore-deps
+
+ # and finally invoke our new configure
+-./configure $*
++[ -n "$NOCONFIGURE" ] || ./configure $*
+
+ # end
diff --git a/libraries/agg/patches/08-fix-kfreebsd-ftbfs.patch b/libraries/agg/patches/08-fix-kfreebsd-ftbfs.patch
new file mode 100644
index 0000000000..12b01b6367
--- /dev/null
+++ b/libraries/agg/patches/08-fix-kfreebsd-ftbfs.patch
@@ -0,0 +1,18 @@
+Author: Andrea Veri <and@debian.org>
+Description: Patch to prevent a FTBFS on kfreebsd-*
+
+Index: agg-2.5+dfsg1/src/Makefile
+===================================================================
+--- agg-2.5+dfsg1.orig/src/Makefile 2007-10-11 00:06:16.000000000 +0200
++++ agg-2.5+dfsg1/src/Makefile 2012-05-01 21:30:08.492401874 +0200
+@@ -1,4 +1,9 @@
+-include ../Makefile.in.$(shell uname)
++PLATFORM=$(shell uname)
++ifeq (GNU/kFreeBSD,$(PLATFORM))
++ PLATFORM=Linux
++endif
++
++include ../Makefile.in.$(PLATFORM)
+
+ CXXFLAGS= $(AGGCXXFLAGS) -I../include -L./
+
diff --git a/libraries/agg/patches/09-fix-hurd-ftbfs.patch b/libraries/agg/patches/09-fix-hurd-ftbfs.patch
new file mode 100644
index 0000000000..145b9d7151
--- /dev/null
+++ b/libraries/agg/patches/09-fix-hurd-ftbfs.patch
@@ -0,0 +1,18 @@
+Author: Barry deFreese <bdefreese@debian.org>
+Description: Patch to prevent a FTBFS on GNU/Hurd.
+
+Index: agg-2.5+dfsg1/src/Makefile
+===================================================================
+--- agg-2.5+dfsg1.orig/src/Makefile 2012-06-04 23:05:40.000000000 +0000
++++ agg-2.5+dfsg1/src/Makefile 2012-06-04 23:08:30.000000000 +0000
+@@ -3,6 +3,10 @@
+ PLATFORM=Linux
+ endif
+
++ifeq (GNU,$(PLATFORM))
++ PLATFORM=Linux
++endif
++
+ include ../Makefile.in.$(PLATFORM)
+
+ CXXFLAGS= $(AGGCXXFLAGS) -I../include -L./
diff --git a/libraries/agg/patches/no-pre-c89.patch b/libraries/agg/patches/no-pre-c89.patch
new file mode 100644
index 0000000000..48d72e1e2c
--- /dev/null
+++ b/libraries/agg/patches/no-pre-c89.patch
@@ -0,0 +1,17 @@
+Description: configure.in: stop checking for pre-C89
+ No longer required, and no longer supported by recent automake.
+Author: Adrian Bunk <bunk@debian.org>
+
+--- agg-2.5+dfsg1.orig/configure.ac
++++ agg-2.5+dfsg1/configure.ac
+@@ -8,10 +8,6 @@ dnl Checks for programs.
+ AC_PROG_CC
+ AC_PROG_CXX
+ AC_ISC_POSIX
+-AM_C_PROTOTYPES
+-if test "x$U" != "x"; then
+- AC_MSG_ERROR(Compiler not ANSI compliant)
+-fi
+ AM_PROG_LIBTOOL
+ AC_PROG_INSTALL
+