From d4bd6695641f6d2ec7ff8681913d304e995902f5 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 29 May 2018 03:22:09 +0100 Subject: gentoo resync : 29.05.2018 --- x11-libs/agg/Manifest | 21 +++ x11-libs/agg/agg-2.5-r3.ebuild | 60 +++++++ ...on-terminating-loop-conditions-when-len-1.patch | 81 +++++++++ ...ion-by-aborting-if-the-co-ordinates-are-t.patch | 40 +++++ ...ates-from-previous-vertex-if-last-command.patch | 30 ++++ ...izer_outline_aa-ignore-close_polygon-when.patch | 138 +++++++++++++++ .../files/2.5/0005-Remove-VC-6-workaround.patch | 52 ++++++ ...-Implement-grain-merge-blending-mode-GIMP.patch | 85 +++++++++ ...mplement-grain-extract-blending-mode-GIMP.patch | 85 +++++++++ ...tiplication-and-division-operators-as-con.patch | 36 ++++ ...0009-Add-a-static-identity-transformation.patch | 37 ++++ .../2.5/0010-Add-renderer_scanline_aa_alpha.patch | 193 +++++++++++++++++++++ ...Avoid-division-by-zero-in-color-burn-mode.patch | 58 +++++++ ...12-Avoid-pixel-artifacts-when-compositing.patch | 26 +++ ...conv-classes-to-allow-access-to-the-origi.patch | 93 ++++++++++ ...tial-zero-division-resulting-in-nan-in-ag.patch | 30 ++++ ...t-value-in-the-gamma-table-is-always-zero.patch | 24 +++ x11-libs/agg/files/agg-2.4-depends.patch | 48 +++++ x11-libs/agg/files/agg-2.5-autotools.patch | 11 ++ x11-libs/agg/files/agg-2.5-pkgconfig.patch | 10 ++ x11-libs/agg/files/agg-2.5-sdl-automagic.patch | 26 +++ x11-libs/agg/files/agg-2.5-sdl-m4.patch | 186 ++++++++++++++++++++ 22 files changed, 1370 insertions(+) create mode 100644 x11-libs/agg/agg-2.5-r3.ebuild create mode 100644 x11-libs/agg/files/2.5/0001-Fix-non-terminating-loop-conditions-when-len-1.patch create mode 100644 x11-libs/agg/files/2.5/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch create mode 100644 x11-libs/agg/files/2.5/0003-Get-coordinates-from-previous-vertex-if-last-command.patch create mode 100644 x11-libs/agg/files/2.5/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch create mode 100644 x11-libs/agg/files/2.5/0005-Remove-VC-6-workaround.patch create mode 100644 x11-libs/agg/files/2.5/0006-Implement-grain-merge-blending-mode-GIMP.patch create mode 100644 x11-libs/agg/files/2.5/0007-Implement-grain-extract-blending-mode-GIMP.patch create mode 100644 x11-libs/agg/files/2.5/0008-Declare-multiplication-and-division-operators-as-con.patch create mode 100644 x11-libs/agg/files/2.5/0009-Add-a-static-identity-transformation.patch create mode 100644 x11-libs/agg/files/2.5/0010-Add-renderer_scanline_aa_alpha.patch create mode 100644 x11-libs/agg/files/2.5/0011-Avoid-division-by-zero-in-color-burn-mode.patch create mode 100644 x11-libs/agg/files/2.5/0012-Avoid-pixel-artifacts-when-compositing.patch create mode 100644 x11-libs/agg/files/2.5/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch create mode 100644 x11-libs/agg/files/2.5/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch create mode 100644 x11-libs/agg/files/2.5/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch create mode 100644 x11-libs/agg/files/agg-2.4-depends.patch create mode 100644 x11-libs/agg/files/agg-2.5-autotools.patch create mode 100644 x11-libs/agg/files/agg-2.5-pkgconfig.patch create mode 100644 x11-libs/agg/files/agg-2.5-sdl-automagic.patch create mode 100644 x11-libs/agg/files/agg-2.5-sdl-m4.patch (limited to 'x11-libs/agg') diff --git a/x11-libs/agg/Manifest b/x11-libs/agg/Manifest index 3b732b125264..ae48b16346d1 100644 --- a/x11-libs/agg/Manifest +++ b/x11-libs/agg/Manifest @@ -1,5 +1,26 @@ +AUX 2.5/0001-Fix-non-terminating-loop-conditions-when-len-1.patch 3538 BLAKE2B 42aa5c5c99921e53db1ec44da360e04c1e433421b4be37f5669bc5b3bab78f23fcec84763f4af4d77bb19d3b81c74fa8bff46548c1f17a06aae2620084ca7a6d SHA512 6fa06ff3b97efde6d83ee3bb7a2cea81ed5e095f284f2517a65d182b591a629ce09b3eaeefc9ff80d093d6245a802fd76a261b812a357a16085c8062738caf4d +AUX 2.5/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch 1290 BLAKE2B 6d79c5d51a693b6bb6985a890bcf8ca6bc45600552cd68edf49062e649d0503ef702a9f7b45fd8bcbbf3a4f3731edd26e109b1f671e69fa9cdaa30ccb3e2b4a2 SHA512 40369584513c2bb86d89670b78c3d7489af5ff6a7c837faea0b52a8ed224bd458deb7bb47027c72557d9a849abb8ae1d8f3cd0dfb6bb0e13128954eb5558bc6d +AUX 2.5/0003-Get-coordinates-from-previous-vertex-if-last-command.patch 833 BLAKE2B 0c376d62b533649655790c41a8faac5486c170b0c3b55639711187a4fb3da290d0e296133b1229939a2f23c67a91a49bf2d3f084d875f5684a7744ac70e82a34 SHA512 fa9ae4f9e3169da8d60939e2d53c04833e4d955535b72067b95d4a1c74ac543bd67596d2da2c587abaeb4ce2ac905ec2bbd2c808dc8c90b0826486390e937e64 +AUX 2.5/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch 4590 BLAKE2B b540f786883a741ea77a441acf71e0304ea0c05331a8ff528bfa801627bfeb2e37d039ead0a5411c3abf1e66eabf9fd9319c9a6cf73a207604c25d06305a2e35 SHA512 72b82c8729e16afa11ea11e47c44dee3962b95e655c8129c2c9a9caa176ad88a85d5cb356b5092dfc4432d1d52f9678f28abdbe5c0a7a011b0df53581258d758 +AUX 2.5/0005-Remove-VC-6-workaround.patch 1949 BLAKE2B 8230a414657ee7ad9575043e21ed894725e09e702514472f59300d85e43de52f129cde6d1632c05206c627babd401d5a00b8c9ea3988b57168ea41a0bd5d31c8 SHA512 36ad8f23396df65c3f040fef40447fde4e9a00a578f5599ea44e441626d1ce2bb2023d0dd1a6cda513624d9bf34d2cbef4bcf37cd2d97e5f66b3d9eea51e7c67 +AUX 2.5/0006-Implement-grain-merge-blending-mode-GIMP.patch 3031 BLAKE2B 565edfd1c74d187e4c974cd43801bd5136dd5e0d0aa87ea76a662bbdf3b6cc95a688ad1fb7e1a9725968f4ce1481a877d6c292c44f626b893f2b782a79857aa8 SHA512 9e0df7f67f1c6f91f9b257cc568117773f0534253743f7a8bdb79765503b02bec4575be28f61f03dcfe715de182b94e76ff27f7f9c7d8d29927b30500dad5947 +AUX 2.5/0007-Implement-grain-extract-blending-mode-GIMP.patch 2920 BLAKE2B e3fe254677ddd7bec746ac826103a8a24355a38ad02d43788da01ce81cf0fee528cef7f94b47b47310c1b7d04078b26829206c7d6db1c9f4f77f5c1915fddd23 SHA512 40044f1cb0b684c6d57454264d3af084c61195fee4be4d1a966f32c3940051536f17b99b47f02f4b4f1f47c571be6989fded986e5f66d3918415a8907274da44 +AUX 2.5/0008-Declare-multiplication-and-division-operators-as-con.patch 1259 BLAKE2B 4e786eccd2b0ac644c64c98f2912fec7276656daf7a4c80016c03699ca0e57d621b0f95653ea201ad9755e170c1433c93450cc5b971abde31bab6f2460a4d524 SHA512 f816897fce1367fc44e3c95f3463de7b582d9895e4b5a910366a96c6c18befdd6ed5aea3b03c75382b345f1739028f27e19ce4c0367aacaf34c737d8a2887781 +AUX 2.5/0009-Add-a-static-identity-transformation.patch 1184 BLAKE2B 0ea506ede9a1ef803ca716bdb207c879ad6b1a122ae7f2af6d6d08908a6eaa54823260ea22b89a5a7dbf242210e235385987e9c2b12e2e0ef7943b6fcc188c27 SHA512 0f86f4af17338a4ddbd24a788ad46481050cb308a50cd28b6fd15a26434fd8b844656498391f5546a953ae5eefd29fadc4e62ef493971c02386bcf3ca9d92e7e +AUX 2.5/0010-Add-renderer_scanline_aa_alpha.patch 7326 BLAKE2B 7450f0df6db953a48d9287f71c2054c109ec029c08dd6f8bb3681896dc1e7bf73ba3e875947934927db7a0063abdc57bc8670700cc0d12efd91c1d56882d4b66 SHA512 7b0a1d9d9c7995e0c103df3ac1b68924b693066ee416aba79999acf93f7534729597cfe89e2d5668fd40325cb462b68de8a9ad7478f7da54127a431ea51a9e46 +AUX 2.5/0011-Avoid-division-by-zero-in-color-burn-mode.patch 2791 BLAKE2B 6f16eafcfdb633c4bf45897678c986a7348ac96e20341b183e45623178b9606c776ff117cd105bf448bd8702363f0ec0e3717f94b7a0226c052c16d41191f2cc SHA512 41ed5524289ba6d59686a284c6ff37f0f71c215306592b54d51439011a9ba9e040ad2758353b642156b0af7e4869ad504d0aa165d357d7c722f756ffd147c4d9 +AUX 2.5/0012-Avoid-pixel-artifacts-when-compositing.patch 1084 BLAKE2B 5f48f9327941ff6ca4558f7a252e8af5112de7c54db7ad00239a5f92eb0c894055569b47556f4b7819ab3b560dc28993375c73af10749161829ed5ad3e9f43a0 SHA512 495403338eeb106c561a917265fe99652691f9d7bae11132720bad0e64ae6cadf68e0495744db1c33ace9d2fc06a62c7e79b97699dda250388291d067993b5e4 +AUX 2.5/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch 3534 BLAKE2B 5333d7e8cec192be5d4943ff50b893d74cb39338b19f928dd51578c8b1fd218c662227d6defa14c220305f759b5d3653f343ead9cdf247c3130c3f8b27490e19 SHA512 85eff63dabcc9f357933db7ffe9d9f87bd652de475859b80205e2661d6158842b6848caf52917c6401063f86a53f668a0ee311f31b17999474043943273304ca +AUX 2.5/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch 973 BLAKE2B 4ac032b962331a4e11282937759056e5a44b7edda936214484e97e553ccba55bc11f9db3eabe68cde47c18c45050dd437a5904347384945ee655ab04301a51b6 SHA512 4dcb65e3e1561e43d7a1250529830f23b8d0a928a927dde60fe7cfe8fe89c69e535ef6e79a884311ede4396530f9e4c2de3e6188ed7ce860b74a55d580400c5b +AUX 2.5/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch 662 BLAKE2B 41933541711439e285516aaadc675899614f75ee030eea32aff54fd8559a54f27968e2f02cfb4e89e421d61524f6f992ce38da0cfdc2d6b438d91a44fdfa2f0c SHA512 f67185083382823d1e00bee5065943be467b4ad2b5b155efe4cdb472142276e9215545bce62bacbeefc2f69142463726fbcbcfee82ac4b6db72d9fe645a29777 AUX 2.5/02_maintainer_mode.patch 590 BLAKE2B 61804fbb72b05975b1bf4470e466ae39eac18aaebb899426b41505cfba8030db3542dd900d5f866b6c32e2c743e89f009985871cf37500b9c43b28f0c9822404 SHA512 150640e2eaa1ef764071759b09f25adaf2653d9f97b8a938e47e1cc0d221d441054d460d48819995ebea7d311c97b480caf83f135c3da188733230405cc9bf9e AUX 2.5/04_no_rpath.patch 359 BLAKE2B c78f3555f371203c8355a2b8e6ac3c300b9757a1d74e14f3bfdbe58abc1332ed76f8486963b0b484a50ffd8fb48deea315a09b5cf7b44ac0156488a8b7fb251b SHA512 f44a98258cef2bdb1ed86a2614162d749f7d191ac3e7c642fe8055bdc757e65d8b7a26ad44ea3f7b760776b308dd9d07af3100826504c5547c8a111a3dbdbc8e +AUX agg-2.4-depends.patch 2154 BLAKE2B ecea231011d0779bd3fa42f8364cd31ac9d2dc17f9de2aff98045abcde5e562b04ca5da295d35ac2aef8924eb65a4bbcd42b54ce8da4453383f5b0bcac2e85e3 SHA512 22b15f495c313417e05431516239bd04889d26b05c559b4905f0ad0aac3b8e4053a6bdc19e1c8e0c192f3b65c200cf5e3074db15011e01e4deaa4c13070418ef +AUX agg-2.5-autotools.patch 277 BLAKE2B 9579b23d043b151f5404cd6f97586c3f1b1098b23d3aacfc1c287431c3b52b654c1c4057859f5708afc5fdfe0fd57e24538d6865f156b345c87240cf48a2ba3f SHA512 facfb36e8de3987153d988d4ff4227da6531a1508c2263d85364809b5dc3b564e76469a134084b2d020709fc32cfd319141126653b700dc38e266b68528c8f47 +AUX agg-2.5-pkgconfig.patch 387 BLAKE2B 7f0034bf791618bf3fdc59ec60210732f582b54d933a11399c10d7c8ad63a419e44a1f8430acdcdfef5268600e088664cc8bbbc9a5513b3170f62cba86f07d4b SHA512 113ac9deb4d0992ef4bdaeb1654f5c1ab199d3865b525c573926b73b2351e9c551f2a7b77082f87fd78bcdab3036621b72bba9502028c35b28dc8f18acf11f53 +AUX agg-2.5-sdl-automagic.patch 811 BLAKE2B 9cb34b0efc6980b5269f6d82e524ddde3557b11e369bcb5e351b4b7d814d92a52bc13cd9a1b85487ce9d3d42b897712e93fdb17fa191e0f8850160402acaa415 SHA512 11166f6b8ca9cdaef2e510c7752c643ee6c7a56051c6214111e56dd0274f2e0023be073014a806ecf9ffc086b1436adefd04b563fc82cdd53f9910d281fe2b8e +AUX agg-2.5-sdl-m4.patch 6797 BLAKE2B 1050aa706618ad34f03d437105449b071478b37655b6799be0258fb5afe27238dfbd029aae77e339847372a97ab99946078a677d691895e05a046389e618b3d7 SHA512 880594c3ea43846e79529444608301b323acbec4dc1bb883880ae4610f8041e95ac31743f0edd042be7d70d36928295b571265910e9342f2538ee68e557406bd DIST agg-2.5.tar.gz 564313 BLAKE2B 6451688dad51fe9d0433218109fd555fcaea3dd5933ebb13bc5c6d935640885f007b5dba8607cf45c94f58f0974391ca4fcd2ea9fda954334c8a4309b881d994 SHA512 e2c79f0bf6da80e16e5b50e69638647224fbe778a42a83d72e9de444b3ea711735177de92bf16134da313b9f75e63eb76bd7b0aaf390059f4d0785454e8a6fcf EBUILD agg-2.5-r2.ebuild 1454 BLAKE2B 1d95a5d65345a7067479902e3cdf28798f8b19b43844b56e551b6f207efb78fca89000dffaaac465b7bb2d73e0c131010b274398525f7766f95909b77af5109d SHA512 5d7061a7fd9bc19a37e6a249fb1019ed1801f2e18efe796188a83f868e79f8d29e052088d853485aba1f82db6113087ae257a67abf13d3774f21d681fd915743 +EBUILD agg-2.5-r3.ebuild 1309 BLAKE2B c340f8f36959309a51dc51d24d5fbb85e998dae4e451723c4cedadddab238e3d8da5db503f04e4778fea4f6c1997f8660beb508760ed8e1f7907fde948e38af3 SHA512 30d7648d35753d574028f92a96399a964cf0c7e28bf48e26db136465b3a359e9bb77881d592250eed5b45d91b3432104807dc8fb96878f16f7811af4380d22de MISC metadata.xml 335 BLAKE2B 4f8f3f570b1640e3dd48210e17eba5e9e0749313f4ba21d1d2f2565d8dbb2a7ec16ad73852ddeb0dd11f25887319bbbc44b9bc1c7397e02e43c36123789d186a SHA512 014f102fc0a515f69a841d11f7485287fe7fd4c4b44f33ea972813879d20e6c26d0ff2146268caf7332219055f6c968feb5d59951ee2c0e3e4a439c8f7fef68f diff --git a/x11-libs/agg/agg-2.5-r3.ebuild b/x11-libs/agg/agg-2.5-r3.ebuild new file mode 100644 index 000000000000..de2db3f9f25a --- /dev/null +++ b/x11-libs/agg/agg-2.5-r3.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit autotools ltprune + +DESCRIPTION="High quality rendering engine library for C++" +HOMEPAGE="http://antigrain.com/" +SRC_URI="http://antigrain.com/${P}.tar.gz" + +LICENSE="GPL-2 gpc? ( free-noncomm )" +SLOT="0" +KEYWORDS="~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux" +IUSE="+gpc sdl static-libs +truetype +X" + +# preffer X with enabled xcb, really +RDEPEND=" + sdl? ( >=media-libs/libsdl-1.2.0[X?] ) + X? ( >=x11-libs/libX11-1.3.99.901 ) + truetype? ( media-libs/freetype:2 ) +" +DEPEND="${RDEPEND} + virtual/pkgconfig +" + +DOCS=( readme authors ChangeLog news ) + +# patches taken from fedora +PATCHES=( + "${FILESDIR}"/agg-2.4-depends.patch + "${FILESDIR}"/${P}-pkgconfig.patch + "${FILESDIR}"/${P}-autotools.patch + "${FILESDIR}"/${P}-sdl-m4.patch + "${FILESDIR}"/${P}-sdl-automagic.patch + "${FILESDIR}"/${PV} +) + +src_prepare() { + default + mv configure.{in,ac} || die + AT_M4DIR="." eautoreconf +} + +src_configure() { + local myeconfargs=( + --disable-ctrl + --disable-examples + $(use_enable gpc) + $(use_enable sdl) + $(use_enable static-libs static) + $(use_enable truetype freetype) + $(use_with X x) + ) + econf ${myeconfargs[@]} +} + +src_install() { + default + prune_libtool_files +} diff --git a/x11-libs/agg/files/2.5/0001-Fix-non-terminating-loop-conditions-when-len-1.patch b/x11-libs/agg/files/2.5/0001-Fix-non-terminating-loop-conditions-when-len-1.patch new file mode 100644 index 000000000000..eaf0467fb846 --- /dev/null +++ b/x11-libs/agg/files/2.5/0001-Fix-non-terminating-loop-conditions-when-len-1.patch @@ -0,0 +1,81 @@ +From efd33aad5e69f36ab343b1f28839a55db4538104 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch b/x11-libs/agg/files/2.5/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch new file mode 100644 index 000000000000..4fe74341ed6b --- /dev/null +++ b/x11-libs/agg/files/2.5/0002-Cure-recursion-by-aborting-if-the-co-ordinates-are-t.patch @@ -0,0 +1,40 @@ +From e269fe9b62af6fe314cebe0ee7a6d6d1a4a84d1c Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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 +-#include ++#include ++#include + #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::max()/2) || (std::abs(y1) >= std::numeric_limits::max()/2) || ++ (std::abs(x2) >= std::numeric_limits::max()/2) || (std::abs(y2) >= std::numeric_limits::max()/2)) ++ return; ++ + line(x1, y1, cx, cy); + line(cx, cy, x2, y2); + } +-- +1.8.1.4 + diff --git a/x11-libs/agg/files/2.5/0003-Get-coordinates-from-previous-vertex-if-last-command.patch b/x11-libs/agg/files/2.5/0003-Get-coordinates-from-previous-vertex-if-last-command.patch new file mode 100644 index 000000000000..b12684d18d2d --- /dev/null +++ b/x11-libs/agg/files/2.5/0003-Get-coordinates-from-previous-vertex-if-last-command.patch @@ -0,0 +1,30 @@ +From 032d5342430f4c5dfbc34a2817d67386a14fd51b Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch b/x11-libs/agg/files/2.5/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch new file mode 100644 index 000000000000..0cecaf794860 --- /dev/null +++ b/x11-libs/agg/files/2.5/0004-Make-rasterizer_outline_aa-ignore-close_polygon-when.patch @@ -0,0 +1,138 @@ +From b9c4b1c72b4ad6b24c37f402d3eec39ef393b0eb Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0005-Remove-VC-6-workaround.patch b/x11-libs/agg/files/2.5/0005-Remove-VC-6-workaround.patch new file mode 100644 index 000000000000..f38f7c40d0dd --- /dev/null +++ b/x11-libs/agg/files/2.5/0005-Remove-VC-6-workaround.patch @@ -0,0 +1,52 @@ +From b8c43fb0ba13af0cc2b1050f48f81d76d2fdf0c7 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0006-Implement-grain-merge-blending-mode-GIMP.patch b/x11-libs/agg/files/2.5/0006-Implement-grain-merge-blending-mode-GIMP.patch new file mode 100644 index 000000000000..f1e465b4d3a8 --- /dev/null +++ b/x11-libs/agg/files/2.5/0006-Implement-grain-merge-blending-mode-GIMP.patch @@ -0,0 +1,85 @@ +From 9422570f4e099a834fc43619f7b2a7eb6b442e25 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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 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 struct comp_op_table_rgba +@@ -1451,6 +1488,7 @@ namespace agg + comp_op_rgba_contrast ::blend_pix, + comp_op_rgba_invert ::blend_pix, + comp_op_rgba_invert_rgb ::blend_pix, ++ comp_op_rgba_grain_merge::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/x11-libs/agg/files/2.5/0007-Implement-grain-extract-blending-mode-GIMP.patch b/x11-libs/agg/files/2.5/0007-Implement-grain-extract-blending-mode-GIMP.patch new file mode 100644 index 000000000000..cafb36eb032d --- /dev/null +++ b/x11-libs/agg/files/2.5/0007-Implement-grain-extract-blending-mode-GIMP.patch @@ -0,0 +1,85 @@ +From abd440342e166a90d08610bf5b31d2a8357eafbe Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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 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 struct comp_op_table_rgba + { +@@ -1489,6 +1535,7 @@ namespace agg + comp_op_rgba_invert ::blend_pix, + comp_op_rgba_invert_rgb ::blend_pix, + comp_op_rgba_grain_merge::blend_pix, ++ comp_op_rgba_grain_extract::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/x11-libs/agg/files/2.5/0008-Declare-multiplication-and-division-operators-as-con.patch b/x11-libs/agg/files/2.5/0008-Declare-multiplication-and-division-operators-as-con.patch new file mode 100644 index 000000000000..0ed92ee6cf98 --- /dev/null +++ b/x11-libs/agg/files/2.5/0008-Declare-multiplication-and-division-operators-as-con.patch @@ -0,0 +1,36 @@ +From 2688af280836b95908d3cfd6915510d55de673b8 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0009-Add-a-static-identity-transformation.patch b/x11-libs/agg/files/2.5/0009-Add-a-static-identity-transformation.patch new file mode 100644 index 000000000000..01555cb3afdf --- /dev/null +++ b/x11-libs/agg/files/2.5/0009-Add-a-static-identity-transformation.patch @@ -0,0 +1,37 @@ +From be9ed90897bc43b4547a3a1f8046827caaf13b4c Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0010-Add-renderer_scanline_aa_alpha.patch b/x11-libs/agg/files/2.5/0010-Add-renderer_scanline_aa_alpha.patch new file mode 100644 index 000000000000..b0be2583fcea --- /dev/null +++ b/x11-libs/agg/files/2.5/0010-Add-renderer_scanline_aa_alpha.patch @@ -0,0 +1,193 @@ +From 749c8cd11e9e6f81e93ae5ce19258431722b6bdf Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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 ++ 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 +@@ -216,8 +245,50 @@ namespace agg + }; + + ++ //==============================================renderer_scanline_aa_alpha ++ template ++ 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 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/x11-libs/agg/files/2.5/0011-Avoid-division-by-zero-in-color-burn-mode.patch b/x11-libs/agg/files/2.5/0011-Avoid-division-by-zero-in-color-burn-mode.patch new file mode 100644 index 000000000000..2a0d198fe917 --- /dev/null +++ b/x11-libs/agg/files/2.5/0011-Avoid-division-by-zero-in-color-burn-mode.patch @@ -0,0 +1,58 @@ +From 0ec68d7f5695403eccac75025ba7f6f7ecf1814e Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0012-Avoid-pixel-artifacts-when-compositing.patch b/x11-libs/agg/files/2.5/0012-Avoid-pixel-artifacts-when-compositing.patch new file mode 100644 index 000000000000..b3e641e6f53e --- /dev/null +++ b/x11-libs/agg/files/2.5/0012-Avoid-pixel-artifacts-when-compositing.patch @@ -0,0 +1,26 @@ +From bf0e0b71360cfbc690a29f4abe15d7b9b61b8479 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch b/x11-libs/agg/files/2.5/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch new file mode 100644 index 000000000000..9deb9047342d --- /dev/null +++ b/x11-libs/agg/files/2.5/0013-Modify-agg-conv-classes-to-allow-access-to-the-origi.patch @@ -0,0 +1,93 @@ +From 6f1ab5f4b470bcf4e7e72aac6e2f7f6ee3e7b424 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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&); +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&); +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&); +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&); +@@ -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&); +-- +1.8.1.4 + diff --git a/x11-libs/agg/files/2.5/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch b/x11-libs/agg/files/2.5/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch new file mode 100644 index 000000000000..547b0d21886a --- /dev/null +++ b/x11-libs/agg/files/2.5/0014-Avoid-potential-zero-division-resulting-in-nan-in-ag.patch @@ -0,0 +1,30 @@ +From 6433a64f4cd41e88499386b0b7c7ae05d30683b8 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/2.5/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch b/x11-libs/agg/files/2.5/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch new file mode 100644 index 000000000000..6214bd62e3ab --- /dev/null +++ b/x11-libs/agg/files/2.5/0015-Ensure-first-value-in-the-gamma-table-is-always-zero.patch @@ -0,0 +1,24 @@ +From ca818d4dcd428c5560fc3c341fbaf427a7485e32 Mon Sep 17 00:00:00 2001 +From: Tom Hughes +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/x11-libs/agg/files/agg-2.4-depends.patch b/x11-libs/agg/files/agg-2.4-depends.patch new file mode 100644 index 000000000000..9d4f6e309d87 --- /dev/null +++ b/x11-libs/agg/files/agg-2.4-depends.patch @@ -0,0 +1,48 @@ +--- 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/x11-libs/agg/files/agg-2.5-autotools.patch b/x11-libs/agg/files/agg-2.5-autotools.patch new file mode 100644 index 000000000000..1272b65bb69a --- /dev/null +++ b/x11-libs/agg/files/agg-2.5-autotools.patch @@ -0,0 +1,11 @@ +--- 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 diff --git a/x11-libs/agg/files/agg-2.5-pkgconfig.patch b/x11-libs/agg/files/agg-2.5-pkgconfig.patch new file mode 100644 index 000000000000..a303bfb90509 --- /dev/null +++ b/x11-libs/agg/files/agg-2.5-pkgconfig.patch @@ -0,0 +1,10 @@ +--- 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/x11-libs/agg/files/agg-2.5-sdl-automagic.patch b/x11-libs/agg/files/agg-2.5-sdl-automagic.patch new file mode 100644 index 000000000000..19daaea06730 --- /dev/null +++ b/x11-libs/agg/files/agg-2.5-sdl-automagic.patch @@ -0,0 +1,26 @@ +--- a/configure.in 2013-08-06 16:35:30.740061017 -0700 ++++ b/configure.in 2013-08-06 16:40:47.511004499 -0700 +@@ -95,10 +95,14 @@ + + dnl ######### Check for SDL: ##################### + dnl the sdl script pollutes our global values: ++AC_ARG_ENABLE(sdl, ++ AC_HELP_STRING([--enable-sdl],[enable the sdl layer]) ) ++ ++sdl_enabled="no" ++if test x"$enable_sdl" = x"yes"; then + temp_LIBS="$LIBS" + temp_CFLAGS="$CFLAGS" + temp_CXXFLAGS="$CXXFLAGS" +-sdl_enabled="" + SDL_VERSION=1.2.0 + AM_PATH_SDL($SDL_VERSION, + [sdl_enabled="yes"], +@@ -111,6 +115,7 @@ + dnl ### the sdl script already does that: + dnl AC_SUBST(SDL_CFLAGS) + dnl AC_SUBST(SDL_LIBS) ++fi + AM_CONDITIONAL(ENABLE_SDL,[test xyes = x$sdl_enabled -a xno != x$enable_platform -a x$win32_host != xyes]) + dnl ############################################### + diff --git a/x11-libs/agg/files/agg-2.5-sdl-m4.patch b/x11-libs/agg/files/agg-2.5-sdl-m4.patch new file mode 100644 index 000000000000..2e2569f8b984 --- /dev/null +++ b/x11-libs/agg/files/agg-2.5-sdl-m4.patch @@ -0,0 +1,186 @@ +--- a/sdl.m4 1969-12-31 16:00:00.000000000 -0800 ++++ b/sdl.m4 2008-01-24 07:50:20.000000000 -0800 +@@ -0,0 +1,183 @@ ++# Configure paths for SDL ++# Sam Lantinga 9/21/99 ++# stolen from Manish Singh ++# stolen back from Frank Belew ++# stolen from Manish Singh ++# Shamelessly stolen from Owen Taylor ++ ++dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) ++dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS ++dnl ++AC_DEFUN([AM_PATH_SDL], ++[dnl ++dnl Get the cflags and libraries from the sdl-config script ++dnl ++AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], ++ sdl_prefix="$withval", sdl_prefix="") ++AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], ++ sdl_exec_prefix="$withval", sdl_exec_prefix="") ++AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], ++ , enable_sdltest=yes) ++ ++ if test x$sdl_exec_prefix != x ; then ++ sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" ++ if test x${SDL_CONFIG+set} != xset ; then ++ SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config ++ fi ++ fi ++ if test x$sdl_prefix != x ; then ++ sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" ++ if test x${SDL_CONFIG+set} != xset ; then ++ SDL_CONFIG=$sdl_prefix/bin/sdl-config ++ fi ++ fi ++ ++ as_save_PATH="$PATH" ++ if test "x$prefix" != xNONE; then ++ PATH="$prefix/bin:$prefix/usr/bin:$PATH" ++ fi ++ AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) ++ PATH="$as_save_PATH" ++ min_sdl_version=ifelse([$1], ,0.11.0,$1) ++ AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) ++ no_sdl="" ++ if test "$SDL_CONFIG" = "no" ; then ++ no_sdl=yes ++ else ++ SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` ++ SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` ++ ++ sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` ++ sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` ++ sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` ++ if test "x$enable_sdltest" = "xyes" ; then ++ ac_save_CFLAGS="$CFLAGS" ++ ac_save_CXXFLAGS="$CXXFLAGS" ++ ac_save_LIBS="$LIBS" ++ CFLAGS="$CFLAGS $SDL_CFLAGS" ++ CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" ++ LIBS="$LIBS $SDL_LIBS" ++dnl ++dnl Now check if the installed SDL is sufficiently new. (Also sanity ++dnl checks the results of sdl-config to some extent ++dnl ++ rm -f conf.sdltest ++ AC_TRY_RUN([ ++#include ++#include ++#include ++#include "SDL.h" ++ ++char* ++my_strdup (char *str) ++{ ++ char *new_str; ++ ++ if (str) ++ { ++ new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); ++ strcpy (new_str, str); ++ } ++ else ++ new_str = NULL; ++ ++ return new_str; ++} ++ ++int main (int argc, char *argv[]) ++{ ++ int major, minor, micro; ++ char *tmp_version; ++ ++ /* This hangs on some systems (?) ++ system ("touch conf.sdltest"); ++ */ ++ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } ++ ++ /* HP/UX 9 (%@#!) writes to sscanf strings */ ++ tmp_version = my_strdup("$min_sdl_version"); ++ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { ++ printf("%s, bad version string\n", "$min_sdl_version"); ++ exit(1); ++ } ++ ++ if (($sdl_major_version > major) || ++ (($sdl_major_version == major) && ($sdl_minor_version > minor)) || ++ (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) ++ { ++ return 0; ++ } ++ else ++ { ++ printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); ++ printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); ++ printf("*** best to upgrade to the required version.\n"); ++ printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); ++ printf("*** to point to the correct copy of sdl-config, and remove the file\n"); ++ printf("*** config.cache before re-running configure\n"); ++ return 1; ++ } ++} ++ ++],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) ++ CFLAGS="$ac_save_CFLAGS" ++ CXXFLAGS="$ac_save_CXXFLAGS" ++ LIBS="$ac_save_LIBS" ++ fi ++ fi ++ if test "x$no_sdl" = x ; then ++ AC_MSG_RESULT(yes) ++ ifelse([$2], , :, [$2]) ++ else ++ AC_MSG_RESULT(no) ++ if test "$SDL_CONFIG" = "no" ; then ++ echo "*** The sdl-config script installed by SDL could not be found" ++ echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" ++ echo "*** your path, or set the SDL_CONFIG environment variable to the" ++ echo "*** full path to sdl-config." ++ else ++ if test -f conf.sdltest ; then ++ : ++ else ++ echo "*** Could not run SDL test program, checking why..." ++ CFLAGS="$CFLAGS $SDL_CFLAGS" ++ CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" ++ LIBS="$LIBS $SDL_LIBS" ++ AC_TRY_LINK([ ++#include ++#include "SDL.h" ++ ++int main(int argc, char *argv[]) ++{ return 0; } ++#undef main ++#define main K_and_R_C_main ++], [ return 0; ], ++ [ echo "*** The test program compiled, but did not run. This usually means" ++ echo "*** that the run-time linker is not finding SDL or finding the wrong" ++ echo "*** version of SDL. If it is not finding SDL, you'll need to set your" ++ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" ++ echo "*** to the installed location Also, make sure you have run ldconfig if that" ++ echo "*** is required on your system" ++ echo "***" ++ echo "*** If you have an old version installed, it is best to remove it, although" ++ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], ++ [ echo "*** The test program failed to compile or link. See the file config.log for the" ++ echo "*** exact error that occured. This usually means SDL was incorrectly installed" ++ echo "*** or that you have moved SDL since it was installed. In the latter case, you" ++ echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) ++ CFLAGS="$ac_save_CFLAGS" ++ CXXFLAGS="$ac_save_CXXFLAGS" ++ LIBS="$ac_save_LIBS" ++ fi ++ fi ++ SDL_CFLAGS="" ++ SDL_LIBS="" ++ ifelse([$3], , :, [$3]) ++ fi ++ AC_SUBST(SDL_CFLAGS) ++ AC_SUBST(SDL_LIBS) ++ rm -f conf.sdltest ++]) -- cgit v1.2.3