1 |
commit: 07a9b643524998811b2213ab21c05dfd591baeea |
2 |
Author: Andreas K. Huettel (dilfridge) <dilfridge <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Dec 23 09:58:37 2011 +0000 |
4 |
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Dec 23 09:58:37 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=dev/dilfridge.git;a=commit;h=07a9b643 |
7 |
|
8 |
Added cairo patched for qt-4.8 |
9 |
|
10 |
--- |
11 |
x11-libs/cairo/Manifest | 29 ++ |
12 |
x11-libs/cairo/cairo-1.10.2-r2.ebuild | 159 +++++++++++ |
13 |
.../cairo/files/cairo-1.10.0-buggy_gradients.patch | 17 ++ |
14 |
x11-libs/cairo/files/cairo-1.10.2-interix.patch | 36 +++ |
15 |
x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch | 55 ++++ |
16 |
.../files/cairo-1.2.4-lcd-cleartype-like.diff | 275 ++++++++++++++++++++ |
17 |
x11-libs/cairo/files/cairo-1.8.10-libpng14.patch | 11 + |
18 |
x11-libs/cairo/files/cairo-1.8.8-interix.patch | 16 ++ |
19 |
x11-libs/cairo/metadata.xml | 27 ++ |
20 |
9 files changed, 625 insertions(+), 0 deletions(-) |
21 |
|
22 |
diff --git a/x11-libs/cairo/Manifest b/x11-libs/cairo/Manifest |
23 |
new file mode 100644 |
24 |
index 0000000..a598954 |
25 |
--- /dev/null |
26 |
+++ b/x11-libs/cairo/Manifest |
27 |
@@ -0,0 +1,29 @@ |
28 |
+-----BEGIN PGP SIGNED MESSAGE----- |
29 |
+Hash: SHA512 |
30 |
+ |
31 |
+AUX cairo-1.10.0-buggy_gradients.patch 581 RMD160 077fb7a18c2840c0d637d2161ca9d244cb69608b SHA1 45f4b6a834cb9f1c153f092fba18416d257d71c7 SHA256 3b622bb250b996ea5f5adc5c899af343e0efba5c477fa0e51fdbb720a8dd1b18 |
32 |
+AUX cairo-1.10.2-interix.patch 1235 RMD160 83803df650e8381649b11bd3c81dd0c6ee5f8e53 SHA1 d6b731fc8aa0c9461e62a9afc1431782d3af433b SHA256 d915d69e2eb96f6a4bef1de0c493ed9face7b5d6a79194ab9f2a7f3d85b799ea |
33 |
+AUX cairo-1.10.2-qt-surface.patch 2687 RMD160 9ffc2924070a7dfa917a2b05b11de1fcca571dab SHA1 6ce6a6047d6f8420ea3044d036e7d10c6ac98c61 SHA256 fb96199ec7a4cf8527726be8d0333ed883183b56960832218eca1c9ef2e05dbd |
34 |
+AUX cairo-1.2.4-lcd-cleartype-like.diff 7244 RMD160 e50d5bf17cbead688a8b808a78fe4104c09af52e SHA1 f63131fd75bb496db59e3ce6bc755bbfb70baacb SHA256 4926d20d2b6b5071a5bf9ee9a12a36fef69510ebebd717c1dab151fe650f173a |
35 |
+AUX cairo-1.8.10-libpng14.patch 426 RMD160 f97e4f2d1e65e2c6a90c5fddbce66caeb4337bba SHA1 bb029f710432af7b24175aa941fc7cd3187ef767 SHA256 b090f829d3b9fb69b83bfa094552335b8382988d60ce7e46558c4069b8bca532 |
36 |
+AUX cairo-1.8.8-interix.patch 619 RMD160 9bb28c5a88aa1f2776d32ac7020aef4ba93872b5 SHA1 857a4d2be0118a6d2d0d80388b5963a5f768341d SHA256 505be82a1a0b7f963cb49ff85ecf1fa1389a4e43621df76b91fc1529616b2299 |
37 |
+DIST cairo-1.10.2.tar.gz 23558405 RMD160 8c8de00120398fe2b3a60a08ff59a464b2eebf47 SHA1 ccce5ae03f99c505db97c286a0c9a90a926d3c6e SHA256 32018c7998358eebc2ad578ff8d8559d34fc80252095f110a572ed23d989fc41 |
38 |
+EBUILD cairo-1.10.2-r2.ebuild 4198 RMD160 fd014de4730fe58f96f223e67b69f7488a1f4129 SHA1 2007dcd723dd78071998cc9baeafbaa88908bed2 SHA256 4adaba8bace8c0b4058c1136a58b9a832bf0fe7b30d12491632456f5e3cd8e1a |
39 |
+MISC metadata.xml 998 RMD160 2a4f5df13bc9d39c91e12e80924465450d758e32 SHA1 f4e943a00531a6f6a5ca2945a05ab95233b63e3b SHA256 325e1f55131748f3840ed1cfec421fe27aa6a621568135e4f6ce1d517b5d3cd8 |
40 |
+-----BEGIN PGP SIGNATURE----- |
41 |
+Version: GnuPG v2.0.17 (GNU/Linux) |
42 |
+ |
43 |
+iQIcBAEBCgAGBQJO8aD7AAoJENwGBM22xffe17gP+gJhHkBahmisQx69En53miQU |
44 |
+1WSNx3gjiRvA6nnMoHsrGvhMZSkvfOACxfy0COp2w8+pojDHVyBJ/alJdw65Y2sn |
45 |
+UfklPT5EgrV90b4P8dkCgq7/3C1O84yjDviroDayODjhjz5Lp2oASTYqrOQtm+yt |
46 |
+cWUgdTOmtCYaEt/+TBUta1xnLM0qEkKxwIvHzgjY9c79ifwFkxvoV/vIsPJw9IAp |
47 |
+rgXhd/nyLvEHQHADrBfoYtGgMnXYci4nNmnqXpVE2+PLWRdox4o8q0oqlHTK8Sey |
48 |
+3+suF1FJPWHUD37vQUU2oNSi/bbvEePFlaBlHwfGe7ux2RQxYfvBc0KLLQHXFL9b |
49 |
+dfH0eCZEuk3qlYHHR4jKpCIwJUXH7UBByi4O7H27lACxwH3usoy+tMMG2Btvgugm |
50 |
+4E5+fIvt+v1Oohf2p8HjOPJ92hFzef6VdJ10MKNpx8gzR+5QlxKMAp1W5R7vZSoh |
51 |
+8pG7mWG3EzQrXB4DXOM4LD+JtRTPts3e4NWo4G17kZS0tNIyDkd+GmObQaoZ97iz |
52 |
+WMJmxrKN2zGamtowCiK0G/Iq7Lba+qQtGQ8qdKJkj0vLkFVjBNeEp3OcfXAcTKeP |
53 |
+2k/Arnuu6elD4NNGCmPO3q0/aJQNebmQ4YxXjvHc1ZkTD16tO5i1Y2qAEligb00G |
54 |
+UBHv7gStQeSAiy18YdKi |
55 |
+=MPY2 |
56 |
+-----END PGP SIGNATURE----- |
57 |
|
58 |
diff --git a/x11-libs/cairo/cairo-1.10.2-r2.ebuild b/x11-libs/cairo/cairo-1.10.2-r2.ebuild |
59 |
new file mode 100644 |
60 |
index 0000000..cc6fdae |
61 |
--- /dev/null |
62 |
+++ b/x11-libs/cairo/cairo-1.10.2-r2.ebuild |
63 |
@@ -0,0 +1,159 @@ |
64 |
+# Copyright 1999-2011 Gentoo Foundation |
65 |
+# Distributed under the terms of the GNU General Public License v2 |
66 |
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/cairo/cairo-1.10.2-r1.ebuild,v 1.13 2011/07/13 09:05:48 mduft Exp $ |
67 |
+ |
68 |
+EAPI=3 |
69 |
+ |
70 |
+EGIT_REPO_URI="git://anongit.freedesktop.org/git/cairo" |
71 |
+[[ ${PV} == *9999 ]] && GIT_ECLASS="git" |
72 |
+ |
73 |
+inherit eutils flag-o-matic autotools ${GIT_ECLASS} |
74 |
+ |
75 |
+DESCRIPTION="A vector graphics library with cross-device output support" |
76 |
+HOMEPAGE="http://cairographics.org/" |
77 |
+[[ ${PV} == *9999 ]] || SRC_URI="http://cairographics.org/releases/${P}.tar.gz" |
78 |
+ |
79 |
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )" |
80 |
+SLOT="0" |
81 |
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" |
82 |
+IUSE="X aqua debug directfb doc drm gallium +glib opengl openvg qt4 static-libs +svg xcb" |
83 |
+ |
84 |
+# Test causes a circular depend on gtk+... since gtk+ needs cairo but test needs gtk+ so we need to block it |
85 |
+RESTRICT="test" |
86 |
+ |
87 |
+RDEPEND="media-libs/fontconfig |
88 |
+ media-libs/freetype:2 |
89 |
+ media-libs/libpng:0 |
90 |
+ sys-libs/zlib |
91 |
+ >=x11-libs/pixman-0.18.4 |
92 |
+ directfb? ( dev-libs/DirectFB ) |
93 |
+ glib? ( dev-libs/glib:2 ) |
94 |
+ opengl? ( virtual/opengl ) |
95 |
+ openvg? ( media-libs/mesa[gallium] ) |
96 |
+ qt4? ( >=x11-libs/qt-gui-4.4:4 ) |
97 |
+ svg? ( dev-libs/libxml2 ) |
98 |
+ X? ( |
99 |
+ >=x11-libs/libXrender-0.6 |
100 |
+ x11-libs/libXext |
101 |
+ x11-libs/libX11 |
102 |
+ x11-libs/libXft |
103 |
+ drm? ( |
104 |
+ >=sys-fs/udev-136 |
105 |
+ gallium? ( media-libs/mesa[gallium] ) |
106 |
+ ) |
107 |
+ ) |
108 |
+ xcb? ( |
109 |
+ x11-libs/libxcb |
110 |
+ x11-libs/xcb-util |
111 |
+ )" |
112 |
+DEPEND="${RDEPEND} |
113 |
+ dev-util/pkgconfig |
114 |
+ >=sys-devel/libtool-2 |
115 |
+ doc? ( |
116 |
+ >=dev-util/gtk-doc-1.6 |
117 |
+ ~app-text/docbook-xml-dtd-4.2 |
118 |
+ ) |
119 |
+ X? ( |
120 |
+ x11-proto/renderproto |
121 |
+ drm? ( |
122 |
+ x11-proto/xproto |
123 |
+ >=x11-proto/xextproto-7.1 |
124 |
+ ) |
125 |
+ )" |
126 |
+ |
127 |
+src_prepare() { |
128 |
+ epatch "${FILESDIR}"/${PN}-1.8.8-interix.patch |
129 |
+ epatch "${FILESDIR}"/${PN}-1.10.0-buggy_gradients.patch |
130 |
+ epatch "${FILESDIR}"/${P}-interix.patch |
131 |
+ epatch "${FILESDIR}"/${P}-qt-surface.patch |
132 |
+ |
133 |
+ # Slightly messed build system YAY |
134 |
+ if [[ ${PV} == *9999* ]]; then |
135 |
+ touch boilerplate/Makefile.am.features |
136 |
+ touch src/Makefile.am.features |
137 |
+ touch ChangeLog |
138 |
+ fi |
139 |
+ |
140 |
+ # We need to run elibtoolize to ensure correct so versioning on FreeBSD |
141 |
+ # upgraded to an eautoreconf for the above interix patch. |
142 |
+ eautoreconf |
143 |
+} |
144 |
+ |
145 |
+src_configure() { |
146 |
+ local myopts |
147 |
+ |
148 |
+ # SuperH doesn't have native atomics yet |
149 |
+ use sh && myopts+=" --disable-atomic" |
150 |
+ |
151 |
+ [[ ${CHOST} == *-interix* ]] && append-flags -D_REENTRANT |
152 |
+ |
153 |
+ # tracing fails to compile, because Solaris' libelf doesn't do large files |
154 |
+ [[ ${CHOST} == *-solaris* ]] && myopts+=" --disable-trace" |
155 |
+ |
156 |
+ # 128-bits long arithemetic functions are missing |
157 |
+ [[ ${CHOST} == powerpc*-*-darwin* ]] && filter-flags -mcpu=* |
158 |
+ |
159 |
+ #gets rid of fbmmx.c inlining warnings |
160 |
+ append-flags -finline-limit=1200 |
161 |
+ |
162 |
+ if use X; then |
163 |
+ myopts+=" |
164 |
+ --enable-tee=yes |
165 |
+ $(use_enable drm) |
166 |
+ " |
167 |
+ |
168 |
+ if use drm; then |
169 |
+ myopts+=" |
170 |
+ $(use_enable gallium) |
171 |
+ $(use_enable xcb xcb-drm) |
172 |
+ " |
173 |
+ else |
174 |
+ use gallium && ewarn "Gallium use requires drm use enabled. So disabling for now." |
175 |
+ myopts+=" |
176 |
+ --disable-gallium |
177 |
+ --disable-xcb-drm |
178 |
+ " |
179 |
+ fi |
180 |
+ else |
181 |
+ use drm && ewarn "drm use requires X use enabled. So disabling for now." |
182 |
+ myopts+=" |
183 |
+ --disable-drm |
184 |
+ --disable-gallium |
185 |
+ --disable-xcb-drm |
186 |
+ " |
187 |
+ fi |
188 |
+ |
189 |
+ # --disable-xcb-lib: |
190 |
+ # do not override good xlib backed by hardforcing rendering over xcb |
191 |
+ econf \ |
192 |
+ --disable-dependency-tracking \ |
193 |
+ $(use_with X x) \ |
194 |
+ $(use_enable X xlib) \ |
195 |
+ $(use_enable X xlib-xrender) \ |
196 |
+ $(use_enable aqua quartz) \ |
197 |
+ $(use_enable aqua quartz-image) \ |
198 |
+ $(use_enable debug test-surfaces) \ |
199 |
+ $(use_enable directfb) \ |
200 |
+ $(use_enable glib gobject) \ |
201 |
+ $(use_enable doc gtk-doc) \ |
202 |
+ $(use_enable openvg vg) \ |
203 |
+ $(use_enable opengl gl) \ |
204 |
+ $(use_enable qt4 qt) \ |
205 |
+ $(use_enable static-libs static) \ |
206 |
+ $(use_enable svg) \ |
207 |
+ $(use_enable xcb) \ |
208 |
+ $(use_enable xcb xcb-shm) \ |
209 |
+ --enable-ft \ |
210 |
+ --enable-pdf \ |
211 |
+ --enable-png \ |
212 |
+ --enable-ps \ |
213 |
+ --disable-xlib-xcb \ |
214 |
+ ${myopts} |
215 |
+} |
216 |
+ |
217 |
+src_install() { |
218 |
+ # parallel make install fails |
219 |
+ emake -j1 DESTDIR="${D}" install || die |
220 |
+ find "${ED}" -name '*.la' -exec rm -f {} + |
221 |
+ dodoc AUTHORS ChangeLog NEWS README || die |
222 |
+} |
223 |
|
224 |
diff --git a/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch b/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch |
225 |
new file mode 100644 |
226 |
index 0000000..a58c2f8 |
227 |
--- /dev/null |
228 |
+++ b/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch |
229 |
@@ -0,0 +1,17 @@ |
230 |
+http://repos.archlinux.org/wsvn/packages/cairo/trunk/cairo-1.10.0-buggy_gradients.patch |
231 |
+http://bugs.gentoo.org/336696 |
232 |
+ |
233 |
+--- src/cairo-xlib-display.c |
234 |
++++ src/cairo-xlib-display.c |
235 |
+@@ -353,11 +353,7 @@ |
236 |
+ /* Prior to Render 0.10, there is no protocol support for gradients and |
237 |
+ * we call function stubs instead, which would silently consume the drawing. |
238 |
+ */ |
239 |
+-#if RENDER_MAJOR == 0 && RENDER_MINOR < 10 |
240 |
+ display->buggy_gradients = TRUE; |
241 |
+-#else |
242 |
+- display->buggy_gradients = FALSE; |
243 |
+-#endif |
244 |
+ display->buggy_pad_reflect = FALSE; |
245 |
+ display->buggy_repeat = FALSE; |
246 |
+ |
247 |
|
248 |
diff --git a/x11-libs/cairo/files/cairo-1.10.2-interix.patch b/x11-libs/cairo/files/cairo-1.10.2-interix.patch |
249 |
new file mode 100644 |
250 |
index 0000000..3333e3e |
251 |
--- /dev/null |
252 |
+++ b/x11-libs/cairo/files/cairo-1.10.2-interix.patch |
253 |
@@ -0,0 +1,36 @@ |
254 |
+commit 95f6f7a174ca096a3d3dbe84ff220d166d1e2baa |
255 |
+Author: Uli Schlachter <psychon@×××.in> |
256 |
+Date: Fri Oct 22 11:54:57 2010 +0200 |
257 |
+ |
258 |
+ Make both versions of _cairo_lround consistent again |
259 |
+ |
260 |
+ Commit c0008242b0f made cairo use libm's lround instead of its own _cairo_lround |
261 |
+ by default. However, since commit ce58f874 from 2006, _cairo_lround does |
262 |
+ arithmetic rounding instead of away-from-zero rounding (before said commit, it |
263 |
+ was using baker's rounding). |
264 |
+ |
265 |
+ So to make the rounding of _cairo_lround be independent from |
266 |
+ DISABLE_SOME_FLOATING_POINT, we have to use another function. Turns out that |
267 |
+ _cairo_round already does the same thing that _cairo_lround does. Their only |
268 |
+ difference is the return type. |
269 |
+ |
270 |
+ Signed-off-by: Uli Schlachter <psychon@×××.in> |
271 |
+ Signed-off-by: Chris Wilson <chris@×××××××××××××××.uk> |
272 |
+ |
273 |
+diff --git a/src/cairoint.h b/src/cairoint.h |
274 |
+index 53c87e5..539d92e 100644 |
275 |
+--- a/src/cairoint.h |
276 |
++++ b/src/cairoint.h |
277 |
+@@ -968,7 +968,11 @@ _cairo_round (double r) |
278 |
+ cairo_private int |
279 |
+ _cairo_lround (double d) cairo_const; |
280 |
+ #else |
281 |
+-#define _cairo_lround lround |
282 |
++static inline int cairo_const |
283 |
++_cairo_lround (double r) |
284 |
++{ |
285 |
++ return _cairo_round (r); |
286 |
++} |
287 |
+ #endif |
288 |
+ |
289 |
+ cairo_private uint16_t |
290 |
|
291 |
diff --git a/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch b/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch |
292 |
new file mode 100644 |
293 |
index 0000000..cf0b57a |
294 |
--- /dev/null |
295 |
+++ b/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch |
296 |
@@ -0,0 +1,55 @@ |
297 |
+diff -ruN cairo-1.10.2-0-vanilla/src/cairo-qt-surface.cpp cairo-1.10.2/src/cairo-qt-surface.cpp |
298 |
+--- cairo-1.10.2-0-vanilla/src/cairo-qt-surface.cpp 2010-12-25 15:21:34.000000000 +0100 |
299 |
++++ cairo-1.10.2/src/cairo-qt-surface.cpp 2011-12-20 22:59:30.000000000 +0100 |
300 |
+@@ -61,7 +61,9 @@ |
301 |
+ #include <QtGui/QX11Info> |
302 |
+ #include <QtCore/QVarLengthArray> |
303 |
+ |
304 |
+-#if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT) |
305 |
++#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)) |
306 |
++#include <QtGui/QGlyphRun> |
307 |
++#elif (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT) |
308 |
+ extern void qt_draw_glyphs(QPainter *, const quint32 *glyphs, const QPointF *positions, int count); |
309 |
+ #endif |
310 |
+ |
311 |
+@@ -1370,7 +1372,39 @@ |
312 |
+ cairo_clip_t *clip, |
313 |
+ int *remaining_glyphs) |
314 |
+ { |
315 |
+-#if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT) |
316 |
++#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)) && !defined(QT_NO_RAWFONT) |
317 |
++ cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface; |
318 |
++ |
319 |
++ // pick out the colour to use from the cairo source |
320 |
++ cairo_solid_pattern_t *solid = (cairo_solid_pattern_t*) source; |
321 |
++ // documentation says you have to freeze the cache, but I don't believe it |
322 |
++ _cairo_scaled_font_freeze_cache(scaled_font); |
323 |
++ |
324 |
++ QColor tempColour(solid->color.red * 255, solid->color.green * 255, solid->color.blue * 255); |
325 |
++ QVector<QPointF> positions(num_glyphs); |
326 |
++ QVector<unsigned int> glyphss(num_glyphs); |
327 |
++ FT_Face face = cairo_ft_scaled_font_lock_face (scaled_font); |
328 |
++ const FT_Size_Metrics& ftMetrics = face->size->metrics; |
329 |
++ QFont font(face->family_name); |
330 |
++ font.setStyleStrategy(QFont::NoFontMerging); |
331 |
++ font.setBold(face->style_flags & FT_STYLE_FLAG_BOLD); |
332 |
++ font.setItalic(face->style_flags & FT_STYLE_FLAG_ITALIC); |
333 |
++ font.setKerning(face->face_flags & FT_FACE_FLAG_KERNING); |
334 |
++ font.setPixelSize(ftMetrics.y_ppem); |
335 |
++ cairo_ft_scaled_font_unlock_face(scaled_font); |
336 |
++ qs->p->setFont(font); |
337 |
++ qs->p->setPen(tempColour); |
338 |
++ for (int currentGlyph = 0; currentGlyph < num_glyphs; currentGlyph++) { |
339 |
++ positions.append(QPointF(glyphs[currentGlyph].x, glyphs[currentGlyph].y)); |
340 |
++ glyphss.append(glyphs[currentGlyph].index); |
341 |
++ } |
342 |
++ QGlyphRun qglyphs; |
343 |
++ qglyphs.setGlyphIndexes(glyphss); |
344 |
++ qglyphs.setPositions(positions); |
345 |
++ qs->p->drawGlyphRun(QPointF(), qglyphs); |
346 |
++ _cairo_scaled_font_thaw_cache(scaled_font); |
347 |
++ return CAIRO_INT_STATUS_SUCCESS; |
348 |
++#elif (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT) |
349 |
+ cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface; |
350 |
+ |
351 |
+ // pick out the colour to use from the cairo source |
352 |
|
353 |
diff --git a/x11-libs/cairo/files/cairo-1.2.4-lcd-cleartype-like.diff b/x11-libs/cairo/files/cairo-1.2.4-lcd-cleartype-like.diff |
354 |
new file mode 100644 |
355 |
index 0000000..2f908b8 |
356 |
--- /dev/null |
357 |
+++ b/x11-libs/cairo/files/cairo-1.2.4-lcd-cleartype-like.diff |
358 |
@@ -0,0 +1,275 @@ |
359 |
+diff -rup libcairo-1.2.4.orig/src/cairo-ft-font.c libcairo-1.2.4/src/cairo-ft-font.c |
360 |
+--- libcairo-1.2.4.orig/src/cairo-ft-font.c 2006-08-22 21:40:02.802247352 +0800 |
361 |
++++ libcairo-1.2.4/src/cairo-ft-font.c 2006-08-22 21:40:39.443677008 +0800 |
362 |
+@@ -53,6 +53,8 @@ |
363 |
+ #include FT_SYNTHESIS_H |
364 |
+ #endif |
365 |
+ |
366 |
++#define FIR_FILTER 1 |
367 |
++ |
368 |
+ #define DOUBLE_TO_26_6(d) ((FT_F26Dot6)((d) * 64.0)) |
369 |
+ #define DOUBLE_FROM_26_6(t) ((double)(t) / 64.0) |
370 |
+ #define DOUBLE_TO_16_16(d) ((FT_Fixed)((d) * 65536.0)) |
371 |
+@@ -492,6 +494,8 @@ _cairo_ft_unscaled_font_destroy (void *a |
372 |
+ } |
373 |
+ } |
374 |
+ |
375 |
++static const int fir_filter[5] = { 0x1C, 0x38, 0x55, 0x38, 0x1C }; |
376 |
++ |
377 |
+ static cairo_bool_t |
378 |
+ _has_unlocked_face (void *entry) |
379 |
+ { |
380 |
+@@ -779,7 +783,220 @@ _get_bitmap_surface (FT_Bitmap *bi |
381 |
+ } |
382 |
+ format = CAIRO_FORMAT_A8; |
383 |
+ break; |
384 |
+- case CAIRO_ANTIALIAS_SUBPIXEL: { |
385 |
++ case CAIRO_ANTIALIAS_SUBPIXEL: |
386 |
++#ifdef FIR_FILTER |
387 |
++ { |
388 |
++ unsigned char* line; |
389 |
++ unsigned char* bufBitmap; |
390 |
++ int pitch; |
391 |
++ unsigned char *data_rgba; |
392 |
++ unsigned int width_rgba, stride_rgba; |
393 |
++ int vmul = 1; |
394 |
++ int hmul = 1; |
395 |
++ |
396 |
++ switch (font_options->subpixel_order) { |
397 |
++ case CAIRO_SUBPIXEL_ORDER_DEFAULT: |
398 |
++ case CAIRO_SUBPIXEL_ORDER_RGB: |
399 |
++ case CAIRO_SUBPIXEL_ORDER_BGR: |
400 |
++ default: |
401 |
++ width /= 3; |
402 |
++ hmul = 3; |
403 |
++ break; |
404 |
++ case CAIRO_SUBPIXEL_ORDER_VRGB: |
405 |
++ case CAIRO_SUBPIXEL_ORDER_VBGR: |
406 |
++ vmul = 3; |
407 |
++ height /= 3; |
408 |
++ break; |
409 |
++ } |
410 |
++ /* |
411 |
++ * Filter the glyph to soften the color fringes |
412 |
++ */ |
413 |
++ width_rgba = width; |
414 |
++ stride = bitmap->pitch; |
415 |
++ stride_rgba = (width_rgba * 4 + 3) & ~3; |
416 |
++ data_rgba = calloc (1, stride_rgba * height); |
417 |
++ |
418 |
++ /* perform in-place FIR filtering in either the horizontal or |
419 |
++ * vertical direction. We're going to modify the RGB graymap, |
420 |
++ * but that's ok, because we either own it, or its part of |
421 |
++ * the FreeType glyph slot, which will not be used anymore. |
422 |
++ */ |
423 |
++ pitch = bitmap->pitch; |
424 |
++ line = (unsigned char*)bitmap->buffer; |
425 |
++ if ( pitch < 0 ) |
426 |
++ line -= pitch*(height-1); |
427 |
++ |
428 |
++ bufBitmap = line; |
429 |
++ |
430 |
++ switch (font_options->subpixel_order) { |
431 |
++ case CAIRO_SUBPIXEL_ORDER_DEFAULT: |
432 |
++ case CAIRO_SUBPIXEL_ORDER_RGB: |
433 |
++ case CAIRO_SUBPIXEL_ORDER_BGR: |
434 |
++ { |
435 |
++ int h; |
436 |
++ |
437 |
++ for ( h = height; h > 0; h--, line += pitch ) { |
438 |
++ int pix[6] = { 0, 0, 0, 0, 0, 0 }; |
439 |
++ unsigned char* p = line; |
440 |
++ unsigned char* limit = line + width*3; |
441 |
++ int nn, val, val2; |
442 |
++ |
443 |
++ val = p[0]; |
444 |
++ for (nn = 0; nn < 3; nn++) |
445 |
++ pix[2 + nn] += val * fir_filter[nn]; |
446 |
++ |
447 |
++ val = p[1]; |
448 |
++ for (nn = 0; nn < 4; nn++) |
449 |
++ pix[1 + nn] += val * fir_filter[nn]; |
450 |
++ |
451 |
++ p += 2; |
452 |
++ |
453 |
++ for ( ; p < limit; p++ ) { |
454 |
++ val = p[0]; |
455 |
++ for (nn = 0; nn < 5; nn++) |
456 |
++ pix[nn] += val * fir_filter[nn]; |
457 |
++ |
458 |
++ val2 = pix[0] / 256; |
459 |
++ val2 |= -(val2 >> 8); |
460 |
++ p[-2] = (unsigned char)val2; |
461 |
++ |
462 |
++ for (nn = 0; nn < 5; nn++) |
463 |
++ pix[nn] = pix[nn + 1]; |
464 |
++ } |
465 |
++ for (nn = 0; nn < 2; nn++ ) { |
466 |
++ val2 = pix[nn] / 256; |
467 |
++ val2 |= -(val2 >> 8); |
468 |
++ p[nn - 2] = (unsigned char)val2; |
469 |
++ } |
470 |
++ } |
471 |
++ } |
472 |
++ break; |
473 |
++ case CAIRO_SUBPIXEL_ORDER_VRGB: |
474 |
++ case CAIRO_SUBPIXEL_ORDER_VBGR: |
475 |
++ { |
476 |
++ int w; |
477 |
++ |
478 |
++ for (w = 0; w < width; w++ ) { |
479 |
++ int pix[6] = { 0, 0, 0, 0, 0, 0 }; |
480 |
++ unsigned char* p = bufBitmap + w; |
481 |
++ unsigned char* limit = bufBitmap + w + height*3*pitch; |
482 |
++ int nn, val, val2; |
483 |
++ |
484 |
++ val = p[0]; |
485 |
++ for (nn = 0; nn < 3; nn++) |
486 |
++ pix[2 + nn] += val*fir_filter[nn]; |
487 |
++ |
488 |
++ val = p[pitch]; |
489 |
++ for (nn = 0; nn < 4; nn++ ) |
490 |
++ pix[1 + nn] += val * fir_filter[nn]; |
491 |
++ |
492 |
++ p += 2*pitch; |
493 |
++ for ( ; p < limit; p += pitch ) { |
494 |
++ val = p[0]; |
495 |
++ for (nn = 0; nn < 5; nn++ ) |
496 |
++ pix[nn] += val * fir_filter[nn]; |
497 |
++ |
498 |
++ val2 = pix[0] / 256; |
499 |
++ val2 |= -(val2 >> 8); |
500 |
++ p[-2 * pitch] = (unsigned char)val2; |
501 |
++ |
502 |
++ for (nn = 0; nn < 5; nn++) |
503 |
++ pix[nn] = pix[nn+1]; |
504 |
++ } |
505 |
++ |
506 |
++ for (nn = 0; nn < 2; nn++) { |
507 |
++ val2 = pix[nn] / 256; |
508 |
++ val2 |= -(val2 >> 8); |
509 |
++ p[(nn - 2) * pitch] = (unsigned char)val2; |
510 |
++ } |
511 |
++ } |
512 |
++ } |
513 |
++ break; |
514 |
++ default: /* shouldn't happen */ |
515 |
++ break; |
516 |
++ } |
517 |
++ |
518 |
++ /* now copy the resulting graymap into an ARGB32 image */ |
519 |
++ { |
520 |
++ unsigned char* in_line = bufBitmap; |
521 |
++ unsigned char* out_line = data_rgba; |
522 |
++ int h = height; |
523 |
++ |
524 |
++ switch (font_options->subpixel_order) { |
525 |
++ case CAIRO_SUBPIXEL_ORDER_DEFAULT: |
526 |
++ case CAIRO_SUBPIXEL_ORDER_RGB: |
527 |
++ for ( ; h > 0; h--, in_line += pitch, out_line += stride_rgba) { |
528 |
++ unsigned char* in = in_line; |
529 |
++ int* out = (int*)out_line; |
530 |
++ int w; |
531 |
++ |
532 |
++ for (w = width; w > 0; w--, in += 3, out += 1) { |
533 |
++ int r = in[0]; |
534 |
++ int g = in[1]; |
535 |
++ int b = in[2]; |
536 |
++ |
537 |
++ out[0] = (g << 24) | (r << 16) | (g << 8) | b; |
538 |
++ } |
539 |
++ } |
540 |
++ break; |
541 |
++ case CAIRO_SUBPIXEL_ORDER_BGR: |
542 |
++ for ( ; h > 0; h--, in_line += pitch, out_line += stride_rgba) { |
543 |
++ unsigned char* in = in_line; |
544 |
++ int* out = (int*)out_line; |
545 |
++ int w; |
546 |
++ |
547 |
++ for (w = width; w > 0; w--, in += 3, out += 1) { |
548 |
++ int r = in[2]; |
549 |
++ int g = in[1]; |
550 |
++ int b = in[0]; |
551 |
++ |
552 |
++ out[0] = (g << 24) | (r << 16) | (g << 8) | b; |
553 |
++ } |
554 |
++ } |
555 |
++ break; |
556 |
++ case CAIRO_SUBPIXEL_ORDER_VRGB: |
557 |
++ for ( ; h > 0; h--, in_line += pitch*3, out_line += stride_rgba) { |
558 |
++ unsigned char* in = in_line; |
559 |
++ int* out = (int*)out_line; |
560 |
++ int w; |
561 |
++ |
562 |
++ for (w = width; w > 0; w--, in += 1, out += 1) { |
563 |
++ int r = in[0]; |
564 |
++ int g = in[pitch]; |
565 |
++ int b = in[pitch*2]; |
566 |
++ |
567 |
++ out[0] = (g << 24) | (r << 16) | (g << 8) | b; |
568 |
++ } |
569 |
++ } |
570 |
++ break; |
571 |
++ case CAIRO_SUBPIXEL_ORDER_VBGR: |
572 |
++ for ( ; h > 0; h--, in_line += pitch*3, out_line += stride_rgba) { |
573 |
++ unsigned char* in = in_line; |
574 |
++ int* out = (int*)out_line; |
575 |
++ int w; |
576 |
++ |
577 |
++ for (w = width; w > 0; w--, in += 1, out += 1) { |
578 |
++ int r = in[2*pitch]; |
579 |
++ int g = in[pitch]; |
580 |
++ int b = in[0]; |
581 |
++ |
582 |
++ out[0] = (g << 24) | (r << 16) | (g << 8) | b; |
583 |
++ } |
584 |
++ } |
585 |
++ break; |
586 |
++ } |
587 |
++ } |
588 |
++ |
589 |
++ if (own_buffer) |
590 |
++ free (bitmap->buffer); |
591 |
++ data = data_rgba; |
592 |
++ stride = stride_rgba; |
593 |
++ format = CAIRO_FORMAT_ARGB32; |
594 |
++ subpixel = TRUE; |
595 |
++ break; |
596 |
++ } |
597 |
++#else /* !FIR_FILTER */ |
598 |
++ { |
599 |
+ int x, y; |
600 |
+ unsigned char *in_line, *out_line, *in; |
601 |
+ unsigned int *out; |
602 |
+@@ -871,6 +1088,7 @@ _get_bitmap_surface (FT_Bitmap *bi |
603 |
+ subpixel = TRUE; |
604 |
+ break; |
605 |
+ } |
606 |
++#endif /* !FIR_FILTER */ |
607 |
+ } |
608 |
+ break; |
609 |
+ case FT_PIXEL_MODE_GRAY2: |
610 |
+@@ -986,12 +1204,22 @@ _render_glyph_outline (FT_Face |
611 |
+ matrix.xx *= 3; |
612 |
+ hmul = 3; |
613 |
+ subpixel = TRUE; |
614 |
++#ifdef FIR_FILTER |
615 |
++ cbox.xMin -= 64; |
616 |
++ cbox.xMax += 64; |
617 |
++ width += 2; |
618 |
++#endif |
619 |
+ break; |
620 |
+ case CAIRO_SUBPIXEL_ORDER_VRGB: |
621 |
+ case CAIRO_SUBPIXEL_ORDER_VBGR: |
622 |
+ matrix.yy *= 3; |
623 |
+ vmul = 3; |
624 |
+ subpixel = TRUE; |
625 |
++#ifdef FIR_FILTER |
626 |
++ cbox.yMin -= 64; |
627 |
++ cbox.yMax += 64; |
628 |
++ height += 2; |
629 |
++#endif |
630 |
+ break; |
631 |
+ } |
632 |
+ FT_Outline_Transform (outline, &matrix); |
633 |
+Only in libcairo-1.2.4/src: cairo-ft-font.c.orig |
634 |
|
635 |
diff --git a/x11-libs/cairo/files/cairo-1.8.10-libpng14.patch b/x11-libs/cairo/files/cairo-1.8.10-libpng14.patch |
636 |
new file mode 100644 |
637 |
index 0000000..1872367 |
638 |
--- /dev/null |
639 |
+++ b/x11-libs/cairo/files/cairo-1.8.10-libpng14.patch |
640 |
@@ -0,0 +1,11 @@ |
641 |
+--- configure.ac |
642 |
++++ configure.ac |
643 |
+@@ -161,7 +161,7 @@ |
644 |
+ AC_ARG_VAR([png_REQUIRES], [module name for libpng to search for using pkg-config]) |
645 |
+ if test "x$png_REQUIRES" = x; then |
646 |
+ # libpng13 is GnuWin32's libpng-1.2.8 :-( |
647 |
+- for l in libpng12 libpng13 libpng10 libpng; do |
648 |
++ for l in libpng14 libpng12 libpng13 libpng10 libpng; do |
649 |
+ if $PKG_CONFIG --exists $l ; then |
650 |
+ png_REQUIRES=$l |
651 |
+ use_png=yes |
652 |
|
653 |
diff --git a/x11-libs/cairo/files/cairo-1.8.8-interix.patch b/x11-libs/cairo/files/cairo-1.8.8-interix.patch |
654 |
new file mode 100644 |
655 |
index 0000000..dc20714 |
656 |
--- /dev/null |
657 |
+++ b/x11-libs/cairo/files/cairo-1.8.8-interix.patch |
658 |
@@ -0,0 +1,16 @@ |
659 |
+diff -ru cairo-1.8.8.orig/build/configure.ac.tools cairo-1.8.8/build/configure.ac.tools |
660 |
+--- cairo-1.8.8.orig/build/configure.ac.tools 2009-09-30 13:36:42 +0200 |
661 |
++++ cairo-1.8.8/build/configure.ac.tools 2009-09-30 13:50:50 +0200 |
662 |
+@@ -21,5 +21,12 @@ |
663 |
+ *) PKGCONFIG_REQUIRES="Requires.private"; ;; |
664 |
+ esac |
665 |
+ |
666 |
++dnl hmm... on interix, things go really bad with Requires.private, since libpng12 |
667 |
++dnl is missing on the final link commands, so gtk+'s configure checks for cairo |
668 |
++dnl fail miserably with unresolved symbols to it. |
669 |
++case "$host_os" in |
670 |
++interix*) PKGCONFIG_REQUIRES="Requires" ;; |
671 |
++esac |
672 |
++ |
673 |
+ AC_SUBST(PKGCONFIG_REQUIRES) |
674 |
+ |
675 |
|
676 |
diff --git a/x11-libs/cairo/metadata.xml b/x11-libs/cairo/metadata.xml |
677 |
new file mode 100644 |
678 |
index 0000000..a842180 |
679 |
--- /dev/null |
680 |
+++ b/x11-libs/cairo/metadata.xml |
681 |
@@ -0,0 +1,27 @@ |
682 |
+<?xml version="1.0" encoding="UTF-8"?> |
683 |
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> |
684 |
+<pkgmetadata> |
685 |
+<herd>x11</herd> |
686 |
+<maintainer> |
687 |
+ <email>cardoe@g.o</email> |
688 |
+ <name>Doug Goldstein</name> |
689 |
+</maintainer> |
690 |
+<maintainer> |
691 |
+ <email>spatz@g.o</email> |
692 |
+ <name>Dror Levin</name> |
693 |
+</maintainer> |
694 |
+<use> |
695 |
+ <flag name='cleartype'>Add ClearType-style behavior for sub-pixel hinting. |
696 |
+ Patch taken from Arch Linux</flag> |
697 |
+ <flag name='lcdfilter'>Add FreeType LCD filtering, ClearType-style behavior |
698 |
+ for sub-pixel-hinting. Overrides cleartype USE flag. Patch taken from |
699 |
+ Ubuntu</flag> |
700 |
+ <flag name='opengl' restrict=">=x11-libs/cairo-1.10.0"> |
701 |
+ Use Mesa backend for acceleration |
702 |
+ </flag> |
703 |
+ <flag name='drm'>Use Linux DRM for backend acceleration</flag> |
704 |
+ <flag name='gallium'>Use Mesa's Gallium backend for acceleration</flag> |
705 |
+ <flag name='glib'>Compile with GLib Object System support</flag> |
706 |
+ <flag name='openvg'>Use OpenVG for backend acceleration</flag> |
707 |
+</use> |
708 |
+</pkgmetadata> |