Remove AGG.

It's no longer needed because i now use my own port of Gnash
that provides its own copy of AGG and it was the only piece of software
using it.
This is also done for performance reasons as that means the whole AGG
library can easily be PGO'd, something that would be a lot less easy
if part of the OS.

To ease maintaince on the Funkey team and given that it was only useful for Gnash,
it should be removed.
This commit is contained in:
gameblabla 2021-07-22 03:12:52 +02:00
parent 7a15dcc3ef
commit bff6dbe889
No known key found for this signature in database
GPG Key ID: 55F5ECF22285E516
25 changed files with 0 additions and 1175 deletions

View File

@ -14,7 +14,6 @@ source "$BR2_EXTERNAL_FUNKEY_PATH/package/libini/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libopk/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libxdgmime/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/gmenu2x/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/agg/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/fluidlite/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libmikmod/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/commander/Config.in"

View File

@ -115,7 +115,6 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_LIBOPK=y
BR2_PACKAGE_LIBXDGMIME=y
BR2_PACKAGE_GMENU2X=y
BR2_PACKAGE_AGG=y
BR2_PACKAGE_FLUIDLITE=y
BR2_PACKAGE_LIBMIKMOD=y
BR2_PACKAGE_COMMANDER=y

View File

@ -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

View File

@ -1,15 +0,0 @@
Author: Andrea Veri <and@debian.org>
Description: Disable configure's run from the autogen file.
Index: agg-2.5+dfsg1/autogen.sh
===================================================================
--- a/autogen.sh 2007-10-11 00:06:16.000000000 +0200
+++ b/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

View File

@ -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

View File

@ -1,34 +0,0 @@
--- a/configure.in
+++ b/configure.in
@@ -39,7 +39,7 @@
# used as platform library in examples:
# todo, make the PREFERED_PLATFORM selectable, after the set of possible
# Platforms to link the examples have been evaluated.
-PREFERED_PLATFORM=X11
+PREFERED_PLATFORM=sdl
case "$host" in
*darwin* )
OSX_LIBS="-framework Carbon -framework QuickTime"
@@ -120,9 +120,7 @@
if test "$no_x" = "yes"; then
AC_MSG_WARN([*** X11 not found! Omitting X11 layer.])
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)
+AM_CONDITIONAL(ENABLE_X11,0)
dnl ###############################################
dnl Settung up library version
--- a/include/agg_renderer_outline_aa.h
+++ b/include/agg_renderer_outline_aa.h
@@ -1375,7 +1375,7 @@
//---------------------------------------------------------------------
void profile(const line_profile_aa& prof) { m_profile = &prof; }
const line_profile_aa& profile() const { return *m_profile; }
- line_profile_aa& profile() { return *m_profile; }
+// line_profile_aa& profile() { return *m_profile; }
//---------------------------------------------------------------------
int subpixel_width() const { return m_profile->subpixel_width(); }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,14 +0,0 @@
--- a/README.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/README 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac
--- a/NEWS.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/NEWS 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac
--- a/AUTHORS.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/AUTHORS 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac

View File

@ -1,13 +0,0 @@
config BR2_PACKAGE_AGG
bool "agg"
depends on BR2_INSTALL_LIBSTDCPP
select BR2_PACKAGE_SDL
help
The Anti-Grain Geometry project. A High Quality 2D Graphics Rendering
Engine for C++.
We select the SDL backend by default.
http://www.antigrain.com/index.html
comment "agg needs a toolchain with C++ support"
depends on !BR2_INSTALL_LIBSTDCPP

View File

@ -1,36 +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/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

View File

@ -1,11 +0,0 @@
--- a/configure.in 2013-02-22 09:30:00.000000000 -0600
+++ b/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

View File

@ -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}

View File

@ -1,32 +0,0 @@
###############################################################################
#
# agg
#
###############################################################################
AGG_VERSION = 2.5
AGG_SOURCE = agg-$(AGG_VERSION).tar.gz
AGG_SITE = https://ftp.osuosl.org/pub/blfs/8.0/a
AGG_LICENSE = GPLv3+
AGG_LICENSE_FILES = COPYING
AGG_INSTALL_STAGING = YES
AGG_AUTORECONF = YES
AGG_DEPENDENCIES = host-pkgconf sdl
AGG_CONF_OPTS = \
--with-sdl-prefix=$(STAGING_DIR)/usr \
--disable-sdltest
AGG_CONF_OPTS += \
--with-x=NO \
--disable-examples --disable-gpc
ifeq ($(BR2_PACKAGE_FREETYPE),y)
AGG_DEPENDENCIES += freetype
AGG_CONF_OPTS += --enable-freetype
else
AGG_CONF_OPTS += --disable-freetype
endif
$(eval $(autotools-package))