diff options
author | Loïc Minier <lool@dooz.org> | 2009-04-15 00:04:39 +0200 |
---|---|---|
committer | Loïc Minier <lool@dooz.org> | 2009-04-15 00:04:39 +0200 |
commit | f4713253ccf85d454c2d7ae0322ff63c5144bbc9 (patch) | |
tree | 8b2bb39ee4d40ad5e22de698f5ec45393910e867 /test | |
parent | 0b7f8018c0813104d5ed151ba3ddebd84a9b42ef (diff) |
Imported Upstream version 1.6.4
Diffstat (limited to 'test')
272 files changed, 4642 insertions, 835 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 220ec73..faf82f0 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -3,9 +3,12 @@ SUBDIRS=pdiff . # Here are all the tests that are run unconditionally TESTS = \ a1-image-sample$(EXEEXT) \ +a1-mask$(EXEEXT) \ a1-traps-sample$(EXEEXT) \ a8-mask$(EXEEXT) \ +big-line$(EXEEXT) \ big-trap$(EXEEXT) \ +bilevel-image$(EXEEXT) \ caps-joins$(EXEEXT) \ caps-joins-alpha$(EXEEXT) \ caps-sub-paths$(EXEEXT) \ @@ -48,7 +51,9 @@ fill-and-stroke-alpha-add$(EXEEXT) \ fill-degenerate-sort-order$(EXEEXT) \ fill-missed-stop$(EXEEXT) \ fill-rule$(EXEEXT) \ +filter-bilinear-extents$(EXEEXT) \ filter-nearest-offset$(EXEEXT) \ +finer-grained-fallbacks$(EXEEXT) \ font-face-get-type$(EXEEXT) \ font-matrix-translation$(EXEEXT) \ font-options$(EXEEXT) \ @@ -57,13 +62,14 @@ get-and-set$(EXEEXT) \ get-clip$(EXEEXT) \ get-group-target$(EXEEXT) \ get-path-extents$(EXEEXT) \ -get-xrender-format$(EXEEXT) \ gradient-alpha$(EXEEXT) \ gradient-zero-stops$(EXEEXT) \ +image-surface-source$(EXEEXT) \ infinite-join$(EXEEXT) \ in-fill-empty-trapezoid$(EXEEXT) \ -in-fill-trapezoid$(EXEEXT) \ +in-fill-trapezoid$(EXEEXT) \ invalid-matrix$(EXEEXT) \ +large-source$(EXEEXT) \ leaky-dash$(EXEEXT) \ leaky-polygon$(EXEEXT) \ line-width$(EXEEXT) \ @@ -71,6 +77,7 @@ line-width-scale$(EXEEXT) \ line-width-zero$(EXEEXT) \ linear-gradient$(EXEEXT) \ linear-gradient-reflect$(EXEEXT) \ +long-dashed-lines$(EXEEXT) \ long-lines$(EXEEXT) \ mask$(EXEEXT) \ mask-alpha$(EXEEXT) \ @@ -94,17 +101,21 @@ paint-with-alpha$(EXEEXT) \ pattern-get-type$(EXEEXT) \ pattern-getters$(EXEEXT) \ pixman-rotate$(EXEEXT) \ +png$(EXEEXT) \ push-group$(EXEEXT) \ radial-gradient$(EXEEXT) \ random-intersections$(EXEEXT) \ rectangle-rounding-error$(EXEEXT) \ rectilinear-miter-limit$(EXEEXT) \ rectilinear-stroke$(EXEEXT) \ +reflected-stroke$(EXEEXT) \ rel-path$(EXEEXT) \ rgb24-ignore-alpha$(EXEEXT) \ rotate-image-surface-paint$(EXEEXT) \ scale-down-source-surface-paint$(EXEEXT) \ scale-source-surface-paint$(EXEEXT) \ +stroke-ctm-caps$(EXEEXT) \ +stroke-image$(EXEEXT) \ select-font-face$(EXEEXT) \ select-font-no-show-text$(EXEEXT) \ self-copy$(EXEEXT) \ @@ -112,6 +123,13 @@ self-intersecting$(EXEEXT) \ set-source$(EXEEXT) \ show-text-current-point$(EXEEXT) \ skew-extreme$(EXEEXT) \ +smask$(EXEEXT) \ +smask-fill$(EXEEXT) \ +smask-image-mask$(EXEEXT) \ +smask-mask$(EXEEXT) \ +smask-paint$(EXEEXT) \ +smask-stroke$(EXEEXT) \ +smask-text$(EXEEXT) \ solid-pattern-cache-stress$(EXEEXT) \ source-clip$(EXEEXT) \ source-clip-scale$(EXEEXT) \ @@ -127,6 +145,7 @@ text-antialias-subpixel$(EXEEXT) \ text-cache-crash$(EXEEXT) \ text-pattern$(EXEEXT) \ text-rotate$(EXEEXT) \ +text-transform$(EXEEXT) \ text-zero-len$(EXEEXT) \ transforms$(EXEEXT) \ translate-show-surface$(EXEEXT) \ @@ -190,26 +209,37 @@ endif if CAIRO_HAS_FT_FONT TESTS += bitmap-font$(EXEEXT) TESTS += ft-font-create-for-ft-face$(EXEEXT) +TESTS += ft-show-glyphs-positioning$(EXEEXT) +TESTS += ft-show-glyphs-table$(EXEEXT) TESTS += ft-text-vertical-layout-type1$(EXEEXT) TESTS += ft-text-vertical-layout-type3$(EXEEXT) TESTS += ft-text-antialias-none$(EXEEXT) endif -if CAIRO_HAS_SVG_SURFACE -TESTS += svg-surface$(EXEEXT) -TESTS += svg-clip$(EXEEXT) +# Need to add win32-surface-source, quartz-surface-source +if CAIRO_HAS_GLITZ_SURFACE +TESTS += glitz-surface-source$(EXEEXT) endif if CAIRO_HAS_PDF_SURFACE TESTS += pdf-features$(EXEEXT) +TESTS += pdf-surface-source$(EXEEXT) endif if CAIRO_HAS_PS_SURFACE TESTS += ps-features$(EXEEXT) +TESTS += ps-surface-source$(EXEEXT) +endif + +if CAIRO_HAS_SVG_SURFACE +TESTS += svg-surface$(EXEEXT) +TESTS += svg-clip$(EXEEXT) +TESTS += svg-surface-source$(EXEEXT) endif if CAIRO_HAS_XLIB_SURFACE TESTS += xlib-surface$(EXEEXT) +TESTS += xlib-surface-source$(EXEEXT) endif if CAIRO_HAS_XLIB_XRENDER_SURFACE @@ -231,8 +261,16 @@ endif # All tests which have a reference image go here. REFERENCE_IMAGES = \ a1-image-sample-ref.png \ + a1-mask-ref.png \ a1-traps-sample-ref.png \ a8-mask-ref.png \ + big-line-ref.png \ + big-line-rgb24-ref.png \ + big-line-ps-ref.png \ + big-line-ps-rgb24-ref.png \ + big-line-quartz-ref.png \ + big-line-quartz-rgb24-ref.png \ + bilevel-image-ref.png \ bitmap-font-pdf-argb32-ref.png \ bitmap-font-ref.png \ bitmap-font-rgb24-ref.png \ @@ -240,6 +278,7 @@ REFERENCE_IMAGES = \ caps-joins-alpha-ref.png \ caps-joins-alpha-svg-ref.png \ caps-joins-ref.png \ + caps-joins-ps-ref.png \ caps-sub-paths-ref.png \ clip-all-ref.png \ clip-empty-ref.png \ @@ -256,8 +295,13 @@ REFERENCE_IMAGES = \ clip-nesting-ref.png \ clip-nesting-rgb24-ref.png \ clip-operator-ref.png \ + clip-operator-pdf-argb32-ref.png \ + clip-operator-pdf-rgb24-ref.png \ clip-operator-ps-argb32-ref.png \ + clip-operator-ps-rgb24-ref.png \ clip-operator-rgb24-ref.png \ + clip-operator-quartz-ref.png \ + clip-operator-quartz-rgb24-ref.png \ clip-push-group-ps-argb32-ref.png \ clip-push-group-ps-rgb24-ref.png \ clip-push-group-quartz-ref.png \ @@ -269,11 +313,11 @@ REFERENCE_IMAGES = \ clip-twice-ref.png \ clip-twice-rgb24-ref.png \ close-path-ref.png \ + close-path-ps-ref.png \ composite-integer-translate-over-ref.png \ composite-integer-translate-over-repeat-ref.png \ composite-integer-translate-source-ref.png \ - copy-path-ps-argb32-ref.png \ - copy-path-ps-rgb24-ref.png \ + copy-path-ps-ref.png \ copy-path-ref.png \ create-from-png-ref.png \ create-from-png-stream-ref.png \ @@ -282,23 +326,30 @@ REFERENCE_IMAGES = \ dash-caps-joins-quartz-ref.png \ dash-caps-joins-ref.png \ dash-curve-ref.png \ + dash-curve-ps-ref.png \ + dash-curve-quartz-ref.png \ dash-no-dash-ref.png \ dash-offset-negative-ref.png \ dash-scale-ps-argb32-ref.png \ dash-scale-ps-rgb24-ref.png \ + dash-scale-quartz-ref.png \ dash-scale-ref.png \ - dash-state-ps-argb32-ref.png \ - dash-state-ps-rgb24-ref.png \ + dash-state-ps-ref.png \ dash-state-ref.png \ - dash-zero-length-ps-argb32-ref.png \ + dash-state-quartz-ref.png \ + dash-zero-length-ps-ref.png \ + dash-zero-length-ps-rgb24-ref.png \ dash-zero-length-ref.png \ dash-zero-length-rgb24-ref.png \ degenerate-pen-ref.png \ - degenerate-pen-ps-argb32-ref.png \ + degenerate-pen-ps-ref.png \ + degenerate-pen-quartz-ref.png \ degenerate-path-ps-argb32-ref.png \ degenerate-path-ps-rgb24-ref.png \ degenerate-path-ref.png \ degenerate-path-rgb24-ref.png \ + degenerate-path-quartz-ref.png \ + degenerate-path-quartz-rgb24-ref.png \ device-offset-positive-ref.png \ device-offset-positive-rgb24-ref.png \ device-offset-ref.png \ @@ -306,6 +357,8 @@ REFERENCE_IMAGES = \ extend-pad-ref.png \ extend-reflect-ref.png \ extend-reflect-similar-ref.png \ + extend-reflect-similar-ps-ref.png \ + extend-reflect-ps-ref.png \ extend-repeat-ref.png \ extend-repeat-similar-ref.png \ fill-and-stroke-alpha-add-quartz-ref.png \ @@ -332,49 +385,87 @@ REFERENCE_IMAGES = \ fill-rule-ref.png \ fill-rule-rgb24-ref.png \ fill-rule-ps-rgb24-ref.png \ + filter-bilinear-extents-ref.png \ filter-nearest-offset-ref.png \ + finer-grained-fallbacks-ref.png \ + finer-grained-fallbacks-rgb24-ref.png \ + finer-grained-fallbacks-ps-argb32-ref.png \ + finer-grained-fallbacks-ps-rgb24-ref.png \ font-matrix-translation-ps-argb32-ref.png \ font-matrix-translation-ps-rgb24-ref.png \ font-matrix-translation-ref.png \ font-matrix-translation-svg-ref.png \ + font-matrix-translation-quartz-ref.png \ ft-text-antialias-none-ps-argb32-ref.png \ ft-text-antialias-none-ref.png \ - ft-text-vertical-layout-type1-ps-argb32-ref.png \ + ft-show-glyphs-positioning-ref.png \ + ft-show-glyphs-positioning-pdf-ref.png \ + ft-show-glyphs-positioning-ps-ref.png \ + ft-show-glyphs-positioning-svg-ref.png \ + ft-show-glyphs-table-ref.png \ + ft-show-glyphs-table-ps-ref.png \ + ft-text-vertical-layout-type1-pdf-ref.png \ + ft-text-vertical-layout-type1-ps-ref.png \ ft-text-vertical-layout-type1-ref.png \ ft-text-vertical-layout-type1-svg-ref.png \ - ft-text-vertical-layout-type3-ps-argb32-ref.png \ + ft-text-vertical-layout-type3-pdf-ref.png \ + ft-text-vertical-layout-type3-ps-ref.png \ ft-text-vertical-layout-type3-ref.png \ ft-text-vertical-layout-type3-svg-ref.png \ get-group-target-ref.png \ + glitz-surface-source-ref.png \ glyph-cache-pressure-ref.png \ + glyph-cache-pressure-ps-ref.png \ + glyph-cache-pressure-quartz-ref.png \ + gradient-alpha-pdf-argb32-ref.png \ + gradient-alpha-pdf-rgb24-ref.png \ gradient-alpha-ps-argb32-ref.png \ gradient-alpha-ps-rgb24-ref.png \ gradient-alpha-ref.png \ gradient-alpha-rgb24-ref.png \ gradient-zero-stops-ref.png \ gradient-zero-stops-rgb24-ref.png \ + image-surface-source-ref.png \ infinite-join-ref.png \ + infinite-join-ps-ref.png \ + large-source-ref.png \ leaky-dash-ps-argb32-ref.png \ leaky-dash-ps-rgb24-ref.png \ + leaky-dash-quartz-ref.png \ leaky-dash-ref.png \ leaky-polygon-ref.png \ + leaky-polygon-ps-ref.png \ linear-gradient-reflect-ref.png \ - linear-gradient-ps-argb32-ref.png \ - linear-gradient-ps-rgb24-ref.png \ + linear-gradient-reflect-pdf-argb32-ref.png \ + linear-gradient-reflect-pdf-rgb24-ref.png \ + linear-gradient-reflect-ps-ref.png \ + linear-gradient-reflect-quartz-ref.png \ + linear-gradient-pdf-ref.png \ + linear-gradient-ps-ref.png \ + linear-gradient-quartz-ref.png \ linear-gradient-ref.png \ linear-gradient-svg-ref.png \ line-width-ref.png \ - line-width-scale-ps-argb32-ref.png \ - line-width-scale-ps-rgb24-ref.png \ + line-width-scale-ps-ref.png \ + line-width-scale-quartz-ref.png \ line-width-scale-ref.png \ + long-dashed-lines-ref.png \ + long-dashed-lines-ps-ref.png \ + long-dashed-lines-quartz-ref.png \ long-lines-ref.png \ mask-alpha-ref.png \ + mask-alpha-svg-argb32-ref.png \ mask-alpha-rgb24-ref.png \ + mask-alpha-quartz-argb32-ref.png \ mask-ctm-ref.png \ mask-ctm-rgb24-ref.png \ mask-ctm-svg-argb32-ref.png \ mask-ref.png \ mask-rgb24-ref.png \ + mask-pdf-argb32-ref.png \ + mask-pdf-rgb24-ref.png \ + mask-quartz-ref.png \ + mask-quartz-rgb24-ref.png \ mask-surface-ctm-ref.png \ mask-surface-ctm-rgb24-ref.png \ mask-surface-ctm-svg-argb32-ref.png \ @@ -384,6 +475,12 @@ REFERENCE_IMAGES = \ meta-surface-pattern-rgb24-ref.png \ meta-surface-pattern-pdf-ref.png \ meta-surface-pattern-pdf-rgb24-ref.png \ + meta-surface-pattern-ps-argb32-ref.png \ + meta-surface-pattern-ps-rgb24-ref.png \ + meta-surface-pattern-quartz-ref.png \ + meta-surface-pattern-quartz-rgb24-ref.png \ + meta-surface-pattern-svg-argb32-ref.png \ + meta-surface-pattern-svg-rgb24-ref.png \ miter-precision-ref.png \ move-to-show-surface-ref.png \ new-sub-path-ps-argb32-ref.png \ @@ -398,20 +495,33 @@ REFERENCE_IMAGES = \ operator-clear-quartz-rgb24-ref.png \ operator-clear-ref.png \ operator-clear-rgb24-ref.png \ + operator-clear-pdf-argb32-ref.png \ + operator-clear-pdf-rgb24-ref.png \ + operator-clear-ps-argb32-ref.png \ + operator-source-pdf-argb32-ref.png \ + operator-source-pdf-rgb24-ref.png \ operator-source-ps-argb32-ref.png \ operator-source-ps-rgb24-ref.png \ operator-source-ref.png \ operator-source-rgb24-ref.png \ + operator-source-quartz-ref.png \ + operator-source-quartz-rgb24-ref.png \ over-above-source-ps-argb32-ref.png \ + over-above-source-quartz-ref.png \ + over-above-source-quartz-rgb24-ref.png \ over-above-source-ref.png \ over-above-source-rgb24-ref.png \ over-around-source-ps-argb32-ref.png \ + over-around-source-quartz-ref.png \ + over-around-source-quartz-rgb24-ref.png \ over-around-source-ref.png \ over-around-source-rgb24-ref.png \ over-below-source-ps-argb32-ref.png \ over-below-source-ref.png \ over-below-source-rgb24-ref.png \ - over-between-source-ps-argb32-ref.png \ + over-between-source-ps-argb32-ref.png \ + over-between-source-quartz-ref.png \ + over-between-source-quartz-rgb24-ref.png \ over-between-source-ref.png \ over-between-source-rgb24-ref.png \ paint-ref.png \ @@ -421,31 +531,42 @@ REFERENCE_IMAGES = \ paint-source-alpha-svg-ref.png \ paint-with-alpha-ref.png \ paint-with-alpha-svg-ref.png \ + paint-source-alpha-pdf-ref.png \ + paint-with-alpha-pdf-ref.png \ pattern-getters-ref.png \ - pixman-rotate-ps-argb32-ref.png \ - pixman-rotate-ps-rgb24-ref.png \ + pdf-surface-source-ref.png \ pixman-rotate-ref.png \ pixman-rotate-rgb24-ref.png \ + ps-surface-source-ref.png \ + push-group-pdf-ref.png \ + push-group-pdf-rgb24-ref.png \ push-group-ref.png \ push-group-rgb24-ref.png \ push-group-svg-argb32-ref.png \ radial-gradient-ref.png \ + radial-gradient-pdf-ref.png \ + radial-gradient-quartz-ref.png \ radial-gradient-svg-ref.png \ - random-intersections-ps-argb32-ref.png \ - random-intersections-ps-rgb24-ref.png \ random-intersections-ref.png \ + random-intersections-ps-ref.png \ + random-intersections-quartz-ref.png \ rgb24-ignore-alpha-ref.png \ rectangle-rounding-error-ref.png \ rectilinear-miter-limit-ref.png \ + rectilinear-miter-limit-ps-ref.png \ rectilinear-stroke-ref.png \ + reflected-stroke-ref.png \ + reflected-stroke-ps-ref.png \ + reflected-stroke-quartz-ref.png \ rel-path-quartz-ref.png \ rel-path-quartz-rgb24-ref.png \ rel-path-ps-rgb24-ref.png \ rel-path-ref.png \ rel-path-rgb24-ref.png \ + rotate-image-surface-paint-pdf-rgb24-ref.png \ + rotate-image-surface-paint-ps-ref.png \ rotate-image-surface-paint-pdf-argb32-ref.png \ - rotate-image-surface-paint-ps-argb32-ref.png \ - rotate-image-surface-paint-ps-rgb24-ref.png \ + rotate-image-surface-paint-quartz-ref.png \ rotate-image-surface-paint-ref.png \ rotate-image-surface-paint-svg-ref.png \ scale-down-source-surface-paint-ref.png \ @@ -454,8 +575,14 @@ REFERENCE_IMAGES = \ scale-source-surface-paint-rgb24-ref.png \ scale-source-surface-paint-svg-argb32-ref.png \ scale-source-surface-paint-svg-rgb24-ref.png \ + scale-source-surface-paint-pdf-rgb24-ref.png \ + stroke-ctm-caps-ref.png \ + stroke-ctm-caps-quartz-ref.png \ select-font-face-ref.png \ + select-font-face-ps-ref.png \ + select-font-face-quartz-ref.png \ self-copy-ref.png \ + self-copy-ps-ref.png \ self-intersecting-ref.png \ self-intersecting-rgb24-ref.png \ set-source-ref.png \ @@ -463,15 +590,45 @@ REFERENCE_IMAGES = \ set-source-svg-argb32-ref.png \ show-glyphs-many-ref.png \ show-text-current-point-ref.png \ + show-text-current-point-ps-ref.png \ + show-text-current-point-quartz-ref.png \ skew-extreme-ref.png \ + skew-extreme-ps-ref.png \ + smask-ref.png \ + smask-pdf-ref.png \ + smask-ps-ref.png \ + smask-svg-ref.png \ + smask-fill-ref.png \ + smask-fill-pdf-ref.png \ + smask-fill-svg-ref.png \ + smask-image-mask-ref.png \ + smask-image-mask-pdf-ref.png \ + smask-mask-ref.png \ + smask-mask-pdf-ref.png \ + smask-mask-svg-ref.png \ + smask-paint-ref.png \ + smask-paint-pdf-ref.png \ + smask-paint-svg-ref.png \ + smask-stroke-ref.png \ + smask-stroke-pdf-ref.png \ + smask-text-ref.png \ + smask-text-pdf-ref.png \ + smask-text-ps-ref.png \ + smask-text-svg-ref.png \ + stroke-image-ref.png \ + stroke-image-pdf-ref.png \ + stroke-image-ps-ref.png \ + stroke-image-quartz-ref.png \ source-clip-ref.png \ source-clip-scale-quartz-ref.png \ source-clip-scale-ps-argb32-ref.png \ source-clip-scale-ps-rgb24-ref.png \ source-clip-scale-ref.png \ source-clip-scale-svg-ref.png \ + source-clip-scale-pdf-ref.png \ source-surface-scale-paint-ref.png \ source-surface-scale-paint-rgb24-ref.png \ + stroke-ctm-caps-ps-ref.png \ surface-pattern-big-scale-down-ref.png \ surface-pattern-pdf-argb32-ref.png \ surface-pattern-ps-argb32-ref.png \ @@ -479,13 +636,18 @@ REFERENCE_IMAGES = \ surface-pattern-scale-down-pdf-argb32-ref.png \ surface-pattern-scale-down-ps-argb32-ref.png \ surface-pattern-scale-down-ref.png \ + surface-pattern-scale-down-quartz-ref.png \ surface-pattern-scale-up-pdf-argb32-ref.png \ surface-pattern-scale-up-ps-argb32-ref.png \ surface-pattern-scale-up-ref.png \ surface-pattern-svg-ref.png \ + svg-surface-source-ref.png \ text-antialias-gray-ref.png \ + text-antialias-gray-quartz-ref.png \ text-antialias-none-ref.png \ + text-antialias-none-quartz-ref.png \ text-antialias-subpixel-ref.png \ + text-antialias-subpixel-quartz-ref.png \ text-glyph-range-ref.png \ text-glyph-range-rgb24-ref.png \ text-pattern-ps-argb32-ref.png \ @@ -494,12 +656,19 @@ REFERENCE_IMAGES = \ text-pattern-rgb24-ref.png \ text-pattern-svg-argb32-ref.png \ text-pattern-svg-rgb24-ref.png \ - text-rotate-ps-argb32-ref.png \ - text-rotate-ps-rgb24-ref.png \ + text-pattern-pdf-argb32-ref.png \ + text-pattern-pdf-rgb24-ref.png \ + text-pattern-quartz-ref.png \ + text-pattern-quartz-rgb24-ref.png \ text-rotate-ref.png \ + text-rotate-ps-ref.png \ text-rotate-svg-ref.png \ - text-zero-len-ref.png \ + text-rotate-quartz-ref.png \ + text-transform-ref.png \ + text-transform-pdf-ref.png \ + text-transform-ps-ref.png \ transforms-ref.png \ + transforms-ps-ref.png \ translate-show-surface-ref.png \ trap-clip-quartz-ref.png \ trap-clip-quartz-rgb24-ref.png \ @@ -507,15 +676,22 @@ REFERENCE_IMAGES = \ trap-clip-ps-rgb24-ref.png \ trap-clip-ref.png \ trap-clip-rgb24-ref.png \ + trap-clip-pdf-argb32-ref.png \ + trap-clip-pdf-rgb24-ref.png \ unantialiased-shapes-ref.png \ + unantialiased-shapes-quartz-ref.png \ unbounded-operator-ref.png \ unbounded-operator-rgb24-ref.png \ + unbounded-operator-quartz-ref.png \ + unbounded-operator-quartz-rgb24-ref.png \ + xlib-surface-source-ref.png \ zero-alpha-ref.png EXTRA_DIST = \ 6x13.pcf \ make-html.pl \ romedalen.png \ +surface-source.c \ $(REFERENCE_IMAGES) # Any test for which the code committed to CVS is expected to fail @@ -529,9 +705,12 @@ $(REFERENCE_IMAGES) # everything from this list by fixing the bugs. (We don't necessarily # have to be that strict for "snapshots" though.) XFAIL_TESTS = \ +big-line$(EXEEXT) \ big-trap$(EXEEXT) \ extend-pad$(EXEEXT) \ filter-nearest-offset$(EXEEXT) \ +filter-bilinear-extents$(EXEEXT) \ +large-source$(EXEEXT) \ long-lines$(EXEEXT) \ self-intersecting$(EXEEXT) \ surface-pattern$(EXEEXT) \ @@ -545,13 +724,16 @@ fallback-resolution \ font-options \ multi-page \ pdf-features \ +png \ ps-features \ svg-clip \ svg-surface \ user-data # A hook that summarises the failures -check: AM_MAKEFLAGS+=-k +# We need to both force make to keep going after failures and to disable the +# jobserver (parallel builds). +check: AM_MAKEFLAGS+=-k -j1 check-local: @FAILED_TESTS=""; \ for t in $(TESTS:$(EXEEXT)=.log); do \ @@ -561,10 +743,33 @@ check-local: done; \ if test -n "$$FAILED_TESTS"; then \ echo "Failed tests:"; \ + surfaces=""; \ for t in $$FAILED_TESTS; do \ echo -n " $$t: "; \ grep -e '\<FAIL\>' $$t.log | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq | tr '\n' ' '; \ echo; \ + for s in `grep -e '\<FAIL\>' $$t.log | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq`; do \ + ss=`echo $$s | tr '-' '_'`; \ + tt=`echo $$t | tr '-' '_'`; \ + eval $$ss=\""$${!ss} $$tt"\"; \ + echo $$surfaces | grep $$ss >/dev/null || surfaces="$$surfaces $$ss"; \ + done; \ + done; \ + echo -n "Failures per surface - "; \ + first=""; \ + for s in $$surfaces; do \ + ss=`echo $$s | tr '_' '-'`; \ + test -n "$$first" && echo -n ", "; \ + cnt=`echo $${!s} | wc -w`; \ + echo -n "$$ss: $$cnt"; \ + first="false"; \ + done; \ + echo "."; \ + for s in $$surfaces; do \ + ss=`echo $$s | tr '_' '-'`; \ + cnt=`echo $${!s} | wc -w`; \ + echo -n " $$ss [$$cnt]: "; \ + echo $${!s} | tr '_' '-'; \ done; \ fi @@ -648,6 +853,7 @@ CLEANFILES = \ valgrind-log \ index.html \ ref.hash \ + png-test.png \ $(EXTRA_LTLIBRARIES) \ $(EXTRA_PROGRAMS) @@ -752,3 +958,5 @@ check-ref-missing: release-verify-sane-tests: check-ref-missing .PHONY: check-valgrind test recheck retest html rehtml check-ref-dups check-ref-missing release-verify-sane-tests + +EXTRA_DIST += Makefile.win32 diff --git a/test/Makefile.in b/test/Makefile.in index ba76484..d79f630 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. +# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -13,15 +13,11 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c @@ -41,23 +37,31 @@ host_triplet = @host@ @HAVE_PTHREAD_TRUE@am__append_1 = pthread-show-text$(EXEEXT) @CAIRO_HAS_FT_FONT_TRUE@am__append_2 = bitmap-font$(EXEEXT) \ @CAIRO_HAS_FT_FONT_TRUE@ ft-font-create-for-ft-face$(EXEEXT) \ +@CAIRO_HAS_FT_FONT_TRUE@ ft-show-glyphs-positioning$(EXEEXT) \ +@CAIRO_HAS_FT_FONT_TRUE@ ft-show-glyphs-table$(EXEEXT) \ @CAIRO_HAS_FT_FONT_TRUE@ ft-text-vertical-layout-type1$(EXEEXT) \ @CAIRO_HAS_FT_FONT_TRUE@ ft-text-vertical-layout-type3$(EXEEXT) \ @CAIRO_HAS_FT_FONT_TRUE@ ft-text-antialias-none$(EXEEXT) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_3 = svg-surface$(EXEEXT) \ -@CAIRO_HAS_SVG_SURFACE_TRUE@ svg-clip$(EXEEXT) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_4 = pdf-features$(EXEEXT) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_5 = ps-features$(EXEEXT) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_6 = xlib-surface$(EXEEXT) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_7 = get-xrender-format$(EXEEXT) -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__append_8 = multi-page$(EXEEXT) -@CAIRO_HAS_PDF_SURFACE_TRUE@@CAIRO_HAS_PS_SURFACE_TRUE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_9 = fallback-resolution$(EXEEXT) + +# Need to add win32-surface-source, quartz-surface-source +@CAIRO_HAS_GLITZ_SURFACE_TRUE@am__append_3 = glitz-surface-source$(EXEEXT) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_4 = pdf-features$(EXEEXT) \ +@CAIRO_HAS_PDF_SURFACE_TRUE@ pdf-surface-source$(EXEEXT) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_5 = ps-features$(EXEEXT) \ +@CAIRO_HAS_PS_SURFACE_TRUE@ ps-surface-source$(EXEEXT) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_6 = svg-surface$(EXEEXT) \ +@CAIRO_HAS_SVG_SURFACE_TRUE@ svg-clip$(EXEEXT) \ +@CAIRO_HAS_SVG_SURFACE_TRUE@ svg-surface-source$(EXEEXT) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_7 = xlib-surface$(EXEEXT) \ +@CAIRO_HAS_XLIB_SURFACE_TRUE@ xlib-surface-source$(EXEEXT) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_8 = get-xrender-format$(EXEEXT) +@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__append_9 = multi-page$(EXEEXT) +@CAIRO_HAS_PDF_SURFACE_TRUE@@CAIRO_HAS_PS_SURFACE_TRUE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_10 = fallback-resolution$(EXEEXT) check_PROGRAMS = imagediff$(EXEEXT) png-flatten$(EXEEXT) \ - $(am__EXEEXT_12) $(am__EXEEXT_13) -EXTRA_PROGRAMS = $(am__EXEEXT_10) $(am__EXEEXT_11) -@HAVE_PTHREAD_TRUE@am__append_10 = -lpthread -@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__append_11 = pdf2png -@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__append_12 = svg2png + $(am__EXEEXT_1) $(am__EXEEXT_2) +@HAVE_PTHREAD_TRUE@am__append_11 = -lpthread +@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__append_12 = pdf2png +@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__append_13 = svg2png subdir = test DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -74,102 +78,18 @@ libcairotest_la_DEPENDENCIES = $(top_builddir)/test/pdiff/libpdiff.la \ $(top_builddir)/src/libcairo.la $(am__DEPENDENCIES_1) am_libcairotest_la_OBJECTS = buffer-diff.lo cairo-test.lo libcairotest_la_OBJECTS = $(am_libcairotest_la_OBJECTS) -@HAVE_PTHREAD_TRUE@am__EXEEXT_1 = pthread-show-text$(EXEEXT) -@CAIRO_HAS_FT_FONT_TRUE@am__EXEEXT_2 = bitmap-font$(EXEEXT) \ -@CAIRO_HAS_FT_FONT_TRUE@ ft-font-create-for-ft-face$(EXEEXT) \ -@CAIRO_HAS_FT_FONT_TRUE@ ft-text-vertical-layout-type1$(EXEEXT) \ -@CAIRO_HAS_FT_FONT_TRUE@ ft-text-vertical-layout-type3$(EXEEXT) \ -@CAIRO_HAS_FT_FONT_TRUE@ ft-text-antialias-none$(EXEEXT) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__EXEEXT_3 = svg-surface$(EXEEXT) \ -@CAIRO_HAS_SVG_SURFACE_TRUE@ svg-clip$(EXEEXT) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__EXEEXT_4 = pdf-features$(EXEEXT) -@CAIRO_HAS_PS_SURFACE_TRUE@am__EXEEXT_5 = ps-features$(EXEEXT) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__EXEEXT_6 = xlib-surface$(EXEEXT) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__EXEEXT_7 = get-xrender-format$(EXEEXT) -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__EXEEXT_8 = \ -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@ multi-page$(EXEEXT) -@CAIRO_HAS_PDF_SURFACE_TRUE@@CAIRO_HAS_PS_SURFACE_TRUE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__EXEEXT_9 = fallback-resolution$(EXEEXT) -am__EXEEXT_10 = a1-image-sample$(EXEEXT) a1-traps-sample$(EXEEXT) \ - a8-mask$(EXEEXT) big-trap$(EXEEXT) caps-joins$(EXEEXT) \ - caps-joins-alpha$(EXEEXT) caps-sub-paths$(EXEEXT) \ - clip-all$(EXEEXT) clip-empty$(EXEEXT) clip-fill-rule$(EXEEXT) \ - clip-fill-rule-pixel-aligned$(EXEEXT) clip-nesting$(EXEEXT) \ - clip-operator$(EXEEXT) clip-push-group$(EXEEXT) \ - clip-twice$(EXEEXT) clip-zero$(EXEEXT) close-path$(EXEEXT) \ - composite-integer-translate-source$(EXEEXT) \ - composite-integer-translate-over$(EXEEXT) \ - composite-integer-translate-over-repeat$(EXEEXT) \ - copy-path$(EXEEXT) create-for-stream$(EXEEXT) \ - create-from-png$(EXEEXT) create-from-png-stream$(EXEEXT) \ - dash-caps-joins$(EXEEXT) dash-curve$(EXEEXT) \ - dash-no-dash$(EXEEXT) dash-offset-negative$(EXEEXT) \ - dash-scale$(EXEEXT) dash-state$(EXEEXT) \ - dash-zero-length$(EXEEXT) degenerate-path$(EXEEXT) \ - degenerate-pen$(EXEEXT) device-offset$(EXEEXT) \ - device-offset-positive$(EXEEXT) extend-pad$(EXEEXT) \ - extend-reflect$(EXEEXT) extend-reflect-similar$(EXEEXT) \ - extend-repeat$(EXEEXT) extend-repeat-similar$(EXEEXT) \ - fill-and-stroke$(EXEEXT) fill-and-stroke-alpha$(EXEEXT) \ - fill-and-stroke-alpha-add$(EXEEXT) \ - fill-degenerate-sort-order$(EXEEXT) fill-missed-stop$(EXEEXT) \ - fill-rule$(EXEEXT) filter-nearest-offset$(EXEEXT) \ - font-face-get-type$(EXEEXT) font-matrix-translation$(EXEEXT) \ - font-options$(EXEEXT) glyph-cache-pressure$(EXEEXT) \ - get-and-set$(EXEEXT) get-clip$(EXEEXT) \ - get-group-target$(EXEEXT) get-path-extents$(EXEEXT) \ - get-xrender-format$(EXEEXT) gradient-alpha$(EXEEXT) \ - gradient-zero-stops$(EXEEXT) infinite-join$(EXEEXT) \ - in-fill-empty-trapezoid$(EXEEXT) in-fill-trapezoid$(EXEEXT) \ - invalid-matrix$(EXEEXT) leaky-dash$(EXEEXT) \ - leaky-polygon$(EXEEXT) line-width$(EXEEXT) \ - line-width-scale$(EXEEXT) line-width-zero$(EXEEXT) \ - linear-gradient$(EXEEXT) linear-gradient-reflect$(EXEEXT) \ - long-lines$(EXEEXT) mask$(EXEEXT) mask-alpha$(EXEEXT) \ - mask-ctm$(EXEEXT) mask-surface-ctm$(EXEEXT) \ - meta-surface-pattern$(EXEEXT) miter-precision$(EXEEXT) \ - move-to-show-surface$(EXEEXT) new-sub-path$(EXEEXT) \ - nil-surface$(EXEEXT) operator-clear$(EXEEXT) \ - operator-source$(EXEEXT) over-above-source$(EXEEXT) \ - over-around-source$(EXEEXT) over-below-source$(EXEEXT) \ - over-between-source$(EXEEXT) paint$(EXEEXT) \ - paint-repeat$(EXEEXT) paint-source-alpha$(EXEEXT) \ - paint-with-alpha$(EXEEXT) pattern-get-type$(EXEEXT) \ - pattern-getters$(EXEEXT) pixman-rotate$(EXEEXT) \ - push-group$(EXEEXT) radial-gradient$(EXEEXT) \ - random-intersections$(EXEEXT) \ - rectangle-rounding-error$(EXEEXT) \ - rectilinear-miter-limit$(EXEEXT) rectilinear-stroke$(EXEEXT) \ - rel-path$(EXEEXT) rgb24-ignore-alpha$(EXEEXT) \ - rotate-image-surface-paint$(EXEEXT) \ - scale-down-source-surface-paint$(EXEEXT) \ - scale-source-surface-paint$(EXEEXT) select-font-face$(EXEEXT) \ - select-font-no-show-text$(EXEEXT) self-copy$(EXEEXT) \ - self-intersecting$(EXEEXT) set-source$(EXEEXT) \ - show-text-current-point$(EXEEXT) skew-extreme$(EXEEXT) \ - solid-pattern-cache-stress$(EXEEXT) source-clip$(EXEEXT) \ - source-clip-scale$(EXEEXT) source-surface-scale-paint$(EXEEXT) \ - surface-finish-twice$(EXEEXT) surface-pattern$(EXEEXT) \ - surface-pattern-big-scale-down$(EXEEXT) \ - surface-pattern-scale-down$(EXEEXT) \ - surface-pattern-scale-up$(EXEEXT) text-antialias-gray$(EXEEXT) \ - text-antialias-none$(EXEEXT) text-antialias-subpixel$(EXEEXT) \ - text-cache-crash$(EXEEXT) text-pattern$(EXEEXT) \ - text-rotate$(EXEEXT) text-zero-len$(EXEEXT) \ - transforms$(EXEEXT) translate-show-surface$(EXEEXT) \ - trap-clip$(EXEEXT) truetype-tables$(EXEEXT) \ - unantialiased-shapes$(EXEEXT) unbounded-operator$(EXEEXT) \ - user-data$(EXEEXT) zero-alpha$(EXEEXT) $(am__EXEEXT_1) \ - $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ - $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \ - $(am__EXEEXT_8) $(am__EXEEXT_9) -am__EXEEXT_11 = show-glyphs-many$(EXEEXT) text-glyph-range$(EXEEXT) -@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__EXEEXT_12 = pdf2png$(EXEEXT) -@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__EXEEXT_13 = svg2png$(EXEEXT) +@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__EXEEXT_1 = pdf2png$(EXEEXT) +@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__EXEEXT_2 = svg2png$(EXEEXT) a1_image_sample_SOURCES = a1-image-sample.c a1_image_sample_OBJECTS = a1-image-sample.$(OBJEXT) a1_image_sample_LDADD = $(LDADD) a1_image_sample_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +a1_mask_SOURCES = a1-mask.c +a1_mask_OBJECTS = a1-mask.$(OBJEXT) +a1_mask_LDADD = $(LDADD) +a1_mask_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) a1_traps_sample_SOURCES = a1-traps-sample.c a1_traps_sample_OBJECTS = a1-traps-sample.$(OBJEXT) a1_traps_sample_LDADD = $(LDADD) @@ -180,11 +100,21 @@ a8_mask_OBJECTS = a8-mask.$(OBJEXT) a8_mask_LDADD = $(LDADD) a8_mask_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +big_line_SOURCES = big-line.c +big_line_OBJECTS = big-line.$(OBJEXT) +big_line_LDADD = $(LDADD) +big_line_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) big_trap_SOURCES = big-trap.c big_trap_OBJECTS = big-trap.$(OBJEXT) big_trap_LDADD = $(LDADD) big_trap_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +bilevel_image_SOURCES = bilevel-image.c +bilevel_image_OBJECTS = bilevel-image.$(OBJEXT) +bilevel_image_LDADD = $(LDADD) +bilevel_image_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) bitmap_font_SOURCES = bitmap-font.c bitmap_font_OBJECTS = bitmap-font.$(OBJEXT) bitmap_font_LDADD = $(LDADD) @@ -414,11 +344,21 @@ fill_rule_OBJECTS = fill-rule.$(OBJEXT) fill_rule_LDADD = $(LDADD) fill_rule_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +filter_bilinear_extents_SOURCES = filter-bilinear-extents.c +filter_bilinear_extents_OBJECTS = filter-bilinear-extents.$(OBJEXT) +filter_bilinear_extents_LDADD = $(LDADD) +filter_bilinear_extents_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) filter_nearest_offset_SOURCES = filter-nearest-offset.c filter_nearest_offset_OBJECTS = filter-nearest-offset.$(OBJEXT) filter_nearest_offset_LDADD = $(LDADD) filter_nearest_offset_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +finer_grained_fallbacks_SOURCES = finer-grained-fallbacks.c +finer_grained_fallbacks_OBJECTS = finer-grained-fallbacks.$(OBJEXT) +finer_grained_fallbacks_LDADD = $(LDADD) +finer_grained_fallbacks_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) font_face_get_type_SOURCES = font-face-get-type.c font_face_get_type_OBJECTS = font-face-get-type.$(OBJEXT) font_face_get_type_LDADD = $(LDADD) @@ -440,6 +380,17 @@ ft_font_create_for_ft_face_OBJECTS = \ ft_font_create_for_ft_face_LDADD = $(LDADD) ft_font_create_for_ft_face_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +ft_show_glyphs_positioning_SOURCES = ft-show-glyphs-positioning.c +ft_show_glyphs_positioning_OBJECTS = \ + ft-show-glyphs-positioning.$(OBJEXT) +ft_show_glyphs_positioning_LDADD = $(LDADD) +ft_show_glyphs_positioning_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) +ft_show_glyphs_table_SOURCES = ft-show-glyphs-table.c +ft_show_glyphs_table_OBJECTS = ft-show-glyphs-table.$(OBJEXT) +ft_show_glyphs_table_LDADD = $(LDADD) +ft_show_glyphs_table_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) ft_text_antialias_none_SOURCES = ft-text-antialias-none.c ft_text_antialias_none_OBJECTS = ft-text-antialias-none.$(OBJEXT) ft_text_antialias_none_LDADD = $(LDADD) @@ -484,6 +435,11 @@ get_xrender_format_OBJECTS = get-xrender-format.$(OBJEXT) get_xrender_format_LDADD = $(LDADD) get_xrender_format_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +glitz_surface_source_SOURCES = glitz-surface-source.c +glitz_surface_source_OBJECTS = glitz-surface-source.$(OBJEXT) +glitz_surface_source_LDADD = $(LDADD) +glitz_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) glyph_cache_pressure_SOURCES = glyph-cache-pressure.c glyph_cache_pressure_OBJECTS = glyph-cache-pressure.$(OBJEXT) glyph_cache_pressure_LDADD = $(LDADD) @@ -499,6 +455,11 @@ gradient_zero_stops_OBJECTS = gradient-zero-stops.$(OBJEXT) gradient_zero_stops_LDADD = $(LDADD) gradient_zero_stops_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +image_surface_source_SOURCES = image-surface-source.c +image_surface_source_OBJECTS = image-surface-source.$(OBJEXT) +image_surface_source_LDADD = $(LDADD) +image_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) imagediff_SOURCES = imagediff.c imagediff_OBJECTS = imagediff.$(OBJEXT) imagediff_LDADD = $(LDADD) @@ -524,6 +485,11 @@ invalid_matrix_OBJECTS = invalid-matrix.$(OBJEXT) invalid_matrix_LDADD = $(LDADD) invalid_matrix_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +large_source_SOURCES = large-source.c +large_source_OBJECTS = large-source.$(OBJEXT) +large_source_LDADD = $(LDADD) +large_source_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) leaky_dash_SOURCES = leaky-dash.c leaky_dash_OBJECTS = leaky-dash.$(OBJEXT) leaky_dash_LDADD = $(LDADD) @@ -559,6 +525,11 @@ linear_gradient_reflect_OBJECTS = linear-gradient-reflect.$(OBJEXT) linear_gradient_reflect_LDADD = $(LDADD) linear_gradient_reflect_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +long_dashed_lines_SOURCES = long-dashed-lines.c +long_dashed_lines_OBJECTS = long-dashed-lines.$(OBJEXT) +long_dashed_lines_LDADD = $(LDADD) +long_dashed_lines_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) long_lines_SOURCES = long-lines.c long_lines_OBJECTS = long-lines.$(OBJEXT) long_lines_LDADD = $(LDADD) @@ -679,6 +650,11 @@ pdf_features_OBJECTS = pdf-features.$(OBJEXT) pdf_features_LDADD = $(LDADD) pdf_features_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +pdf_surface_source_SOURCES = pdf-surface-source.c +pdf_surface_source_OBJECTS = pdf-surface-source.$(OBJEXT) +pdf_surface_source_LDADD = $(LDADD) +pdf_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) pdf2png_SOURCES = pdf2png.c pdf2png_OBJECTS = pdf2png-pdf2png.$(OBJEXT) am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libcairotest.la \ @@ -686,11 +662,22 @@ am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libcairotest.la \ @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@pdf2png_DEPENDENCIES = \ @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@ $(am__DEPENDENCIES_2) \ @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@ $(am__DEPENDENCIES_1) +pdf2png_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(pdf2png_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ pixman_rotate_SOURCES = pixman-rotate.c pixman_rotate_OBJECTS = pixman-rotate.$(OBJEXT) pixman_rotate_LDADD = $(LDADD) pixman_rotate_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +png_SOURCES = png.c +png_OBJECTS = png-png.$(OBJEXT) +png_LDADD = $(LDADD) +png_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +png_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(png_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ png_flatten_SOURCES = png-flatten.c png_flatten_OBJECTS = png-flatten.$(OBJEXT) png_flatten_LDADD = $(LDADD) @@ -701,6 +688,11 @@ ps_features_OBJECTS = ps-features.$(OBJEXT) ps_features_LDADD = $(LDADD) ps_features_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +ps_surface_source_SOURCES = ps-surface-source.c +ps_surface_source_OBJECTS = ps-surface-source.$(OBJEXT) +ps_surface_source_LDADD = $(LDADD) +ps_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) pthread_show_text_SOURCES = pthread-show-text.c pthread_show_text_OBJECTS = pthread-show-text.$(OBJEXT) pthread_show_text_LDADD = $(LDADD) @@ -736,6 +728,11 @@ rectilinear_stroke_OBJECTS = rectilinear-stroke.$(OBJEXT) rectilinear_stroke_LDADD = $(LDADD) rectilinear_stroke_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +reflected_stroke_SOURCES = reflected-stroke.c +reflected_stroke_OBJECTS = reflected-stroke.$(OBJEXT) +reflected_stroke_LDADD = $(LDADD) +reflected_stroke_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) rel_path_SOURCES = rel-path.c rel_path_OBJECTS = rel-path.$(OBJEXT) rel_path_LDADD = $(LDADD) @@ -805,6 +802,41 @@ skew_extreme_OBJECTS = skew-extreme.$(OBJEXT) skew_extreme_LDADD = $(LDADD) skew_extreme_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +smask_SOURCES = smask.c +smask_OBJECTS = smask.$(OBJEXT) +smask_LDADD = $(LDADD) +smask_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_fill_SOURCES = smask-fill.c +smask_fill_OBJECTS = smask-fill.$(OBJEXT) +smask_fill_LDADD = $(LDADD) +smask_fill_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_image_mask_SOURCES = smask-image-mask.c +smask_image_mask_OBJECTS = smask-image-mask.$(OBJEXT) +smask_image_mask_LDADD = $(LDADD) +smask_image_mask_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_mask_SOURCES = smask-mask.c +smask_mask_OBJECTS = smask-mask.$(OBJEXT) +smask_mask_LDADD = $(LDADD) +smask_mask_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_paint_SOURCES = smask-paint.c +smask_paint_OBJECTS = smask-paint.$(OBJEXT) +smask_paint_LDADD = $(LDADD) +smask_paint_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_stroke_SOURCES = smask-stroke.c +smask_stroke_OBJECTS = smask-stroke.$(OBJEXT) +smask_stroke_LDADD = $(LDADD) +smask_stroke_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +smask_text_SOURCES = smask-text.c +smask_text_OBJECTS = smask-text.$(OBJEXT) +smask_text_LDADD = $(LDADD) +smask_text_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) solid_pattern_cache_stress_SOURCES = solid-pattern-cache-stress.c solid_pattern_cache_stress_OBJECTS = \ solid-pattern-cache-stress.$(OBJEXT) @@ -827,6 +859,16 @@ source_surface_scale_paint_OBJECTS = \ source_surface_scale_paint_LDADD = $(LDADD) source_surface_scale_paint_DEPENDENCIES = $(am__DEPENDENCIES_1) \ libcairotest.la $(am__DEPENDENCIES_1) +stroke_ctm_caps_SOURCES = stroke-ctm-caps.c +stroke_ctm_caps_OBJECTS = stroke-ctm-caps.$(OBJEXT) +stroke_ctm_caps_LDADD = $(LDADD) +stroke_ctm_caps_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) +stroke_image_SOURCES = stroke-image.c +stroke_image_OBJECTS = stroke-image.$(OBJEXT) +stroke_image_LDADD = $(LDADD) +stroke_image_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) surface_finish_twice_SOURCES = surface-finish-twice.c surface_finish_twice_OBJECTS = surface-finish-twice.$(OBJEXT) surface_finish_twice_LDADD = $(LDADD) @@ -865,11 +907,19 @@ svg_surface_OBJECTS = svg-surface.$(OBJEXT) svg_surface_LDADD = $(LDADD) svg_surface_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +svg_surface_source_SOURCES = svg-surface-source.c +svg_surface_source_OBJECTS = svg-surface-source.$(OBJEXT) +svg_surface_source_LDADD = $(LDADD) +svg_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) svg2png_SOURCES = svg2png.c svg2png_OBJECTS = svg2png-svg2png.$(OBJEXT) @CAIRO_CAN_TEST_SVG_SURFACE_TRUE@svg2png_DEPENDENCIES = \ @CAIRO_CAN_TEST_SVG_SURFACE_TRUE@ $(am__DEPENDENCIES_2) \ @CAIRO_CAN_TEST_SVG_SURFACE_TRUE@ $(am__DEPENDENCIES_1) +svg2png_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(svg2png_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ text_antialias_gray_SOURCES = text-antialias-gray.c text_antialias_gray_OBJECTS = text-antialias-gray.$(OBJEXT) text_antialias_gray_LDADD = $(LDADD) @@ -905,6 +955,11 @@ text_rotate_OBJECTS = text-rotate.$(OBJEXT) text_rotate_LDADD = $(LDADD) text_rotate_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +text_transform_SOURCES = text-transform.c +text_transform_OBJECTS = text-transform.$(OBJEXT) +text_transform_LDADD = $(LDADD) +text_transform_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ + $(am__DEPENDENCIES_1) text_zero_len_SOURCES = text-zero-len.c text_zero_len_OBJECTS = text-zero-len.$(OBJEXT) text_zero_len_LDADD = $(LDADD) @@ -950,28 +1005,35 @@ xlib_surface_OBJECTS = xlib-surface.$(OBJEXT) xlib_surface_LDADD = $(LDADD) xlib_surface_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) +xlib_surface_source_SOURCES = xlib-surface-source.c +xlib_surface_source_OBJECTS = xlib-surface-source.$(OBJEXT) +xlib_surface_source_LDADD = $(LDADD) +xlib_surface_source_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + libcairotest.la $(am__DEPENDENCIES_1) zero_alpha_SOURCES = zero-alpha.c zero_alpha_OBJECTS = zero-alpha.$(OBJEXT) zero_alpha_LDADD = $(LDADD) zero_alpha_DEPENDENCIES = $(am__DEPENDENCIES_1) libcairotest.la \ $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c \ - a1-traps-sample.c a8-mask.c big-trap.c bitmap-font.c \ - caps-joins.c caps-joins-alpha.c caps-sub-paths.c clip-all.c \ - clip-empty.c clip-fill-rule.c clip-fill-rule-pixel-aligned.c \ - clip-nesting.c clip-operator.c clip-push-group.c clip-twice.c \ - clip-zero.c close-path.c composite-integer-translate-over.c \ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c a1-mask.c \ + a1-traps-sample.c a8-mask.c big-line.c big-trap.c \ + bilevel-image.c bitmap-font.c caps-joins.c caps-joins-alpha.c \ + caps-sub-paths.c clip-all.c clip-empty.c clip-fill-rule.c \ + clip-fill-rule-pixel-aligned.c clip-nesting.c clip-operator.c \ + clip-push-group.c clip-twice.c clip-zero.c close-path.c \ + composite-integer-translate-over.c \ composite-integer-translate-over-repeat.c \ composite-integer-translate-source.c copy-path.c \ create-for-stream.c create-from-png.c create-from-png-stream.c \ @@ -983,50 +1045,59 @@ SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c \ extend-repeat-similar.c fallback-resolution.c \ fill-and-stroke.c fill-and-stroke-alpha.c \ fill-and-stroke-alpha-add.c fill-degenerate-sort-order.c \ - fill-missed-stop.c fill-rule.c filter-nearest-offset.c \ + fill-missed-stop.c fill-rule.c filter-bilinear-extents.c \ + filter-nearest-offset.c finer-grained-fallbacks.c \ font-face-get-type.c font-matrix-translation.c font-options.c \ - ft-font-create-for-ft-face.c ft-text-antialias-none.c \ + ft-font-create-for-ft-face.c ft-show-glyphs-positioning.c \ + ft-show-glyphs-table.c ft-text-antialias-none.c \ ft-text-vertical-layout-type1.c \ ft-text-vertical-layout-type3.c get-and-set.c get-clip.c \ get-group-target.c get-path-extents.c get-xrender-format.c \ - glyph-cache-pressure.c gradient-alpha.c gradient-zero-stops.c \ - imagediff.c in-fill-empty-trapezoid.c in-fill-trapezoid.c \ - infinite-join.c invalid-matrix.c leaky-dash.c leaky-polygon.c \ + glitz-surface-source.c glyph-cache-pressure.c gradient-alpha.c \ + gradient-zero-stops.c image-surface-source.c imagediff.c \ + in-fill-empty-trapezoid.c in-fill-trapezoid.c infinite-join.c \ + invalid-matrix.c large-source.c leaky-dash.c leaky-polygon.c \ line-width.c line-width-scale.c line-width-zero.c \ - linear-gradient.c linear-gradient-reflect.c long-lines.c \ - mask.c mask-alpha.c mask-ctm.c mask-surface-ctm.c \ - meta-surface-pattern.c miter-precision.c \ - move-to-show-surface.c multi-page.c new-sub-path.c \ - nil-surface.c operator-clear.c operator-source.c \ - over-above-source.c over-around-source.c over-below-source.c \ - over-between-source.c paint.c paint-repeat.c \ - paint-source-alpha.c paint-with-alpha.c pattern-get-type.c \ - pattern-getters.c pdf-features.c pdf2png.c pixman-rotate.c \ - png-flatten.c ps-features.c pthread-show-text.c push-group.c \ - radial-gradient.c random-intersections.c \ - rectangle-rounding-error.c rectilinear-miter-limit.c \ - rectilinear-stroke.c rel-path.c rgb24-ignore-alpha.c \ + linear-gradient.c linear-gradient-reflect.c \ + long-dashed-lines.c long-lines.c mask.c mask-alpha.c \ + mask-ctm.c mask-surface-ctm.c meta-surface-pattern.c \ + miter-precision.c move-to-show-surface.c multi-page.c \ + new-sub-path.c nil-surface.c operator-clear.c \ + operator-source.c over-above-source.c over-around-source.c \ + over-below-source.c over-between-source.c paint.c \ + paint-repeat.c paint-source-alpha.c paint-with-alpha.c \ + pattern-get-type.c pattern-getters.c pdf-features.c \ + pdf-surface-source.c pdf2png.c pixman-rotate.c png.c \ + png-flatten.c ps-features.c ps-surface-source.c \ + pthread-show-text.c push-group.c radial-gradient.c \ + random-intersections.c rectangle-rounding-error.c \ + rectilinear-miter-limit.c rectilinear-stroke.c \ + reflected-stroke.c rel-path.c rgb24-ignore-alpha.c \ rotate-image-surface-paint.c scale-down-source-surface-paint.c \ scale-source-surface-paint.c select-font-face.c \ select-font-no-show-text.c self-copy.c self-intersecting.c \ set-source.c show-glyphs-many.c show-text-current-point.c \ - skew-extreme.c solid-pattern-cache-stress.c source-clip.c \ - source-clip-scale.c source-surface-scale-paint.c \ + skew-extreme.c smask.c smask-fill.c smask-image-mask.c \ + smask-mask.c smask-paint.c smask-stroke.c smask-text.c \ + solid-pattern-cache-stress.c source-clip.c source-clip-scale.c \ + source-surface-scale-paint.c stroke-ctm-caps.c stroke-image.c \ surface-finish-twice.c surface-pattern.c \ surface-pattern-big-scale-down.c surface-pattern-scale-down.c \ - surface-pattern-scale-up.c svg-clip.c svg-surface.c svg2png.c \ - text-antialias-gray.c text-antialias-none.c \ - text-antialias-subpixel.c text-cache-crash.c \ - text-glyph-range.c text-pattern.c text-rotate.c \ - text-zero-len.c transforms.c translate-show-surface.c \ - trap-clip.c truetype-tables.c unantialiased-shapes.c \ - unbounded-operator.c user-data.c xlib-surface.c zero-alpha.c -DIST_SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c \ - a1-traps-sample.c a8-mask.c big-trap.c bitmap-font.c \ - caps-joins.c caps-joins-alpha.c caps-sub-paths.c clip-all.c \ - clip-empty.c clip-fill-rule.c clip-fill-rule-pixel-aligned.c \ - clip-nesting.c clip-operator.c clip-push-group.c clip-twice.c \ - clip-zero.c close-path.c composite-integer-translate-over.c \ + surface-pattern-scale-up.c svg-clip.c svg-surface.c \ + svg-surface-source.c svg2png.c text-antialias-gray.c \ + text-antialias-none.c text-antialias-subpixel.c \ + text-cache-crash.c text-glyph-range.c text-pattern.c \ + text-rotate.c text-transform.c text-zero-len.c transforms.c \ + translate-show-surface.c trap-clip.c truetype-tables.c \ + unantialiased-shapes.c unbounded-operator.c user-data.c \ + xlib-surface.c xlib-surface-source.c zero-alpha.c +DIST_SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c a1-mask.c \ + a1-traps-sample.c a8-mask.c big-line.c big-trap.c \ + bilevel-image.c bitmap-font.c caps-joins.c caps-joins-alpha.c \ + caps-sub-paths.c clip-all.c clip-empty.c clip-fill-rule.c \ + clip-fill-rule-pixel-aligned.c clip-nesting.c clip-operator.c \ + clip-push-group.c clip-twice.c clip-zero.c close-path.c \ + composite-integer-translate-over.c \ composite-integer-translate-over-repeat.c \ composite-integer-translate-source.c copy-path.c \ create-for-stream.c create-from-png.c create-from-png-stream.c \ @@ -1038,57 +1109,66 @@ DIST_SOURCES = $(libcairotest_la_SOURCES) a1-image-sample.c \ extend-repeat-similar.c fallback-resolution.c \ fill-and-stroke.c fill-and-stroke-alpha.c \ fill-and-stroke-alpha-add.c fill-degenerate-sort-order.c \ - fill-missed-stop.c fill-rule.c filter-nearest-offset.c \ + fill-missed-stop.c fill-rule.c filter-bilinear-extents.c \ + filter-nearest-offset.c finer-grained-fallbacks.c \ font-face-get-type.c font-matrix-translation.c font-options.c \ - ft-font-create-for-ft-face.c ft-text-antialias-none.c \ + ft-font-create-for-ft-face.c ft-show-glyphs-positioning.c \ + ft-show-glyphs-table.c ft-text-antialias-none.c \ ft-text-vertical-layout-type1.c \ ft-text-vertical-layout-type3.c get-and-set.c get-clip.c \ get-group-target.c get-path-extents.c get-xrender-format.c \ - glyph-cache-pressure.c gradient-alpha.c gradient-zero-stops.c \ - imagediff.c in-fill-empty-trapezoid.c in-fill-trapezoid.c \ - infinite-join.c invalid-matrix.c leaky-dash.c leaky-polygon.c \ + glitz-surface-source.c glyph-cache-pressure.c gradient-alpha.c \ + gradient-zero-stops.c image-surface-source.c imagediff.c \ + in-fill-empty-trapezoid.c in-fill-trapezoid.c infinite-join.c \ + invalid-matrix.c large-source.c leaky-dash.c leaky-polygon.c \ line-width.c line-width-scale.c line-width-zero.c \ - linear-gradient.c linear-gradient-reflect.c long-lines.c \ - mask.c mask-alpha.c mask-ctm.c mask-surface-ctm.c \ - meta-surface-pattern.c miter-precision.c \ - move-to-show-surface.c multi-page.c new-sub-path.c \ - nil-surface.c operator-clear.c operator-source.c \ - over-above-source.c over-around-source.c over-below-source.c \ - over-between-source.c paint.c paint-repeat.c \ - paint-source-alpha.c paint-with-alpha.c pattern-get-type.c \ - pattern-getters.c pdf-features.c pdf2png.c pixman-rotate.c \ - png-flatten.c ps-features.c pthread-show-text.c push-group.c \ - radial-gradient.c random-intersections.c \ - rectangle-rounding-error.c rectilinear-miter-limit.c \ - rectilinear-stroke.c rel-path.c rgb24-ignore-alpha.c \ + linear-gradient.c linear-gradient-reflect.c \ + long-dashed-lines.c long-lines.c mask.c mask-alpha.c \ + mask-ctm.c mask-surface-ctm.c meta-surface-pattern.c \ + miter-precision.c move-to-show-surface.c multi-page.c \ + new-sub-path.c nil-surface.c operator-clear.c \ + operator-source.c over-above-source.c over-around-source.c \ + over-below-source.c over-between-source.c paint.c \ + paint-repeat.c paint-source-alpha.c paint-with-alpha.c \ + pattern-get-type.c pattern-getters.c pdf-features.c \ + pdf-surface-source.c pdf2png.c pixman-rotate.c png.c \ + png-flatten.c ps-features.c ps-surface-source.c \ + pthread-show-text.c push-group.c radial-gradient.c \ + random-intersections.c rectangle-rounding-error.c \ + rectilinear-miter-limit.c rectilinear-stroke.c \ + reflected-stroke.c rel-path.c rgb24-ignore-alpha.c \ rotate-image-surface-paint.c scale-down-source-surface-paint.c \ scale-source-surface-paint.c select-font-face.c \ select-font-no-show-text.c self-copy.c self-intersecting.c \ set-source.c show-glyphs-many.c show-text-current-point.c \ - skew-extreme.c solid-pattern-cache-stress.c source-clip.c \ - source-clip-scale.c source-surface-scale-paint.c \ + skew-extreme.c smask.c smask-fill.c smask-image-mask.c \ + smask-mask.c smask-paint.c smask-stroke.c smask-text.c \ + solid-pattern-cache-stress.c source-clip.c source-clip-scale.c \ + source-surface-scale-paint.c stroke-ctm-caps.c stroke-image.c \ surface-finish-twice.c surface-pattern.c \ surface-pattern-big-scale-down.c surface-pattern-scale-down.c \ - surface-pattern-scale-up.c svg-clip.c svg-surface.c svg2png.c \ - text-antialias-gray.c text-antialias-none.c \ - text-antialias-subpixel.c text-cache-crash.c \ - text-glyph-range.c text-pattern.c text-rotate.c \ - text-zero-len.c transforms.c translate-show-surface.c \ - trap-clip.c truetype-tables.c unantialiased-shapes.c \ - unbounded-operator.c user-data.c xlib-surface.c zero-alpha.c + surface-pattern-scale-up.c svg-clip.c svg-surface.c \ + svg-surface-source.c svg2png.c text-antialias-gray.c \ + text-antialias-none.c text-antialias-subpixel.c \ + text-cache-crash.c text-glyph-range.c text-pattern.c \ + text-rotate.c text-transform.c text-zero-len.c transforms.c \ + translate-show-surface.c trap-clip.c truetype-tables.c \ + unantialiased-shapes.c unbounded-operator.c user-data.c \ + xlib-surface.c xlib-surface-source.c zero-alpha.c RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -1097,61 +1177,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIROPERF_LIBS = @CAIROPERF_LIBS@ -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @CAIRO_CAN_TEST_PDF_SURFACE_FALSE@ -CAIRO_CAN_TEST_PDF_SURFACE_TRUE = @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@ -CAIRO_CAN_TEST_PS_SURFACE_FALSE = @CAIRO_CAN_TEST_PS_SURFACE_FALSE@ -CAIRO_CAN_TEST_PS_SURFACE_TRUE = @CAIRO_CAN_TEST_PS_SURFACE_TRUE@ -CAIRO_CAN_TEST_SVG_SURFACE_FALSE = @CAIRO_CAN_TEST_SVG_SURFACE_FALSE@ -CAIRO_CAN_TEST_SVG_SURFACE_TRUE = @CAIRO_CAN_TEST_SVG_SURFACE_TRUE@ -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE = @CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE@ -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE = @CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_HAS_ATSUI_FONT_FALSE = @CAIRO_HAS_ATSUI_FONT_FALSE@ -CAIRO_HAS_ATSUI_FONT_TRUE = @CAIRO_HAS_ATSUI_FONT_TRUE@ -CAIRO_HAS_BEOS_SURFACE_FALSE = @CAIRO_HAS_BEOS_SURFACE_FALSE@ -CAIRO_HAS_BEOS_SURFACE_TRUE = @CAIRO_HAS_BEOS_SURFACE_TRUE@ -CAIRO_HAS_DIRECTFB_SURFACE_FALSE = @CAIRO_HAS_DIRECTFB_SURFACE_FALSE@ -CAIRO_HAS_DIRECTFB_SURFACE_TRUE = @CAIRO_HAS_DIRECTFB_SURFACE_TRUE@ -CAIRO_HAS_FT_FONT_FALSE = @CAIRO_HAS_FT_FONT_FALSE@ -CAIRO_HAS_FT_FONT_TRUE = @CAIRO_HAS_FT_FONT_TRUE@ -CAIRO_HAS_GLITZ_SURFACE_FALSE = @CAIRO_HAS_GLITZ_SURFACE_FALSE@ -CAIRO_HAS_GLITZ_SURFACE_TRUE = @CAIRO_HAS_GLITZ_SURFACE_TRUE@ -CAIRO_HAS_LCOV_FALSE = @CAIRO_HAS_LCOV_FALSE@ -CAIRO_HAS_LCOV_TRUE = @CAIRO_HAS_LCOV_TRUE@ -CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE = @CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE@ -CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE = @CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@ -CAIRO_HAS_OS2_SURFACE_FALSE = @CAIRO_HAS_OS2_SURFACE_FALSE@ -CAIRO_HAS_OS2_SURFACE_TRUE = @CAIRO_HAS_OS2_SURFACE_TRUE@ -CAIRO_HAS_PDF_SURFACE_FALSE = @CAIRO_HAS_PDF_SURFACE_FALSE@ -CAIRO_HAS_PDF_SURFACE_TRUE = @CAIRO_HAS_PDF_SURFACE_TRUE@ -CAIRO_HAS_PNG_FUNCTIONS_FALSE = @CAIRO_HAS_PNG_FUNCTIONS_FALSE@ -CAIRO_HAS_PNG_FUNCTIONS_TRUE = @CAIRO_HAS_PNG_FUNCTIONS_TRUE@ -CAIRO_HAS_PS_SURFACE_FALSE = @CAIRO_HAS_PS_SURFACE_FALSE@ -CAIRO_HAS_PS_SURFACE_TRUE = @CAIRO_HAS_PS_SURFACE_TRUE@ -CAIRO_HAS_QUARTZ_SURFACE_FALSE = @CAIRO_HAS_QUARTZ_SURFACE_FALSE@ -CAIRO_HAS_QUARTZ_SURFACE_TRUE = @CAIRO_HAS_QUARTZ_SURFACE_TRUE@ -CAIRO_HAS_SVG_SURFACE_FALSE = @CAIRO_HAS_SVG_SURFACE_FALSE@ -CAIRO_HAS_SVG_SURFACE_TRUE = @CAIRO_HAS_SVG_SURFACE_TRUE@ -CAIRO_HAS_TEST_SURFACES_FALSE = @CAIRO_HAS_TEST_SURFACES_FALSE@ -CAIRO_HAS_TEST_SURFACES_TRUE = @CAIRO_HAS_TEST_SURFACES_TRUE@ -CAIRO_HAS_WIN32_FONT_FALSE = @CAIRO_HAS_WIN32_FONT_FALSE@ -CAIRO_HAS_WIN32_FONT_TRUE = @CAIRO_HAS_WIN32_FONT_TRUE@ -CAIRO_HAS_WIN32_SURFACE_FALSE = @CAIRO_HAS_WIN32_SURFACE_FALSE@ -CAIRO_HAS_WIN32_SURFACE_TRUE = @CAIRO_HAS_WIN32_SURFACE_TRUE@ -CAIRO_HAS_XCB_SURFACE_FALSE = @CAIRO_HAS_XCB_SURFACE_FALSE@ -CAIRO_HAS_XCB_SURFACE_TRUE = @CAIRO_HAS_XCB_SURFACE_TRUE@ -CAIRO_HAS_XLIB_SURFACE_FALSE = @CAIRO_HAS_XLIB_SURFACE_FALSE@ -CAIRO_HAS_XLIB_SURFACE_TRUE = @CAIRO_HAS_XLIB_SURFACE_TRUE@ -CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE = @CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE@ -CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE = @CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@ CAIRO_LDADD = @CAIRO_LDADD@ CAIRO_LIBS = @CAIRO_LIBS@ CAIRO_NONPKGCONFIG_CFLAGS = @CAIRO_NONPKGCONFIG_CFLAGS@ @@ -1172,16 +1198,12 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DISABLE_SOME_FLOATING_POINT_FALSE = @DISABLE_SOME_FLOATING_POINT_FALSE@ -DISABLE_SOME_FLOATING_POINT_TRUE = @DISABLE_SOME_FLOATING_POINT_TRUE@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@ -ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ @@ -1201,11 +1223,8 @@ GLITZ_WGL_CFLAGS = @GLITZ_WGL_CFLAGS@ GLITZ_WGL_LIBS = @GLITZ_WGL_LIBS@ GREP = @GREP@ GS = @GS@ -GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@ -GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@ -HAVE_PTHREAD_FALSE = @HAVE_PTHREAD_FALSE@ -HAVE_PTHREAD_TRUE = @HAVE_PTHREAD_TRUE@ HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -1222,10 +1241,9 @@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ -OS_WIN32_FALSE = @OS_WIN32_FALSE@ -OS_WIN32_TRUE = @OS_WIN32_TRUE@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -1251,13 +1269,13 @@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -1269,6 +1287,7 @@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ directfb_CFLAGS = @directfb_CFLAGS@ @@ -1305,8 +1324,11 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ xcb_CFLAGS = @xcb_CFLAGS@ xcb_LIBS = @xcb_LIBS@ xlib_CFLAGS = @xlib_CFLAGS@ @@ -1316,8 +1338,9 @@ xlib_xrender_LIBS = @xlib_xrender_LIBS@ SUBDIRS = pdiff . # Here are all the tests that are run unconditionally -TESTS = a1-image-sample$(EXEEXT) a1-traps-sample$(EXEEXT) \ - a8-mask$(EXEEXT) big-trap$(EXEEXT) caps-joins$(EXEEXT) \ +TESTS = a1-image-sample$(EXEEXT) a1-mask$(EXEEXT) \ + a1-traps-sample$(EXEEXT) a8-mask$(EXEEXT) big-line$(EXEEXT) \ + big-trap$(EXEEXT) bilevel-image$(EXEEXT) caps-joins$(EXEEXT) \ caps-joins-alpha$(EXEEXT) caps-sub-paths$(EXEEXT) \ clip-all$(EXEEXT) clip-empty$(EXEEXT) clip-fill-rule$(EXEEXT) \ clip-fill-rule-pixel-aligned$(EXEEXT) clip-nesting$(EXEEXT) \ @@ -1339,56 +1362,64 @@ TESTS = a1-image-sample$(EXEEXT) a1-traps-sample$(EXEEXT) \ fill-and-stroke$(EXEEXT) fill-and-stroke-alpha$(EXEEXT) \ fill-and-stroke-alpha-add$(EXEEXT) \ fill-degenerate-sort-order$(EXEEXT) fill-missed-stop$(EXEEXT) \ - fill-rule$(EXEEXT) filter-nearest-offset$(EXEEXT) \ - font-face-get-type$(EXEEXT) font-matrix-translation$(EXEEXT) \ - font-options$(EXEEXT) glyph-cache-pressure$(EXEEXT) \ - get-and-set$(EXEEXT) get-clip$(EXEEXT) \ - get-group-target$(EXEEXT) get-path-extents$(EXEEXT) \ - get-xrender-format$(EXEEXT) gradient-alpha$(EXEEXT) \ - gradient-zero-stops$(EXEEXT) infinite-join$(EXEEXT) \ - in-fill-empty-trapezoid$(EXEEXT) in-fill-trapezoid$(EXEEXT) \ - invalid-matrix$(EXEEXT) leaky-dash$(EXEEXT) \ + fill-rule$(EXEEXT) filter-bilinear-extents$(EXEEXT) \ + filter-nearest-offset$(EXEEXT) \ + finer-grained-fallbacks$(EXEEXT) font-face-get-type$(EXEEXT) \ + font-matrix-translation$(EXEEXT) font-options$(EXEEXT) \ + glyph-cache-pressure$(EXEEXT) get-and-set$(EXEEXT) \ + get-clip$(EXEEXT) get-group-target$(EXEEXT) \ + get-path-extents$(EXEEXT) gradient-alpha$(EXEEXT) \ + gradient-zero-stops$(EXEEXT) image-surface-source$(EXEEXT) \ + infinite-join$(EXEEXT) in-fill-empty-trapezoid$(EXEEXT) \ + in-fill-trapezoid$(EXEEXT) invalid-matrix$(EXEEXT) \ + large-source$(EXEEXT) leaky-dash$(EXEEXT) \ leaky-polygon$(EXEEXT) line-width$(EXEEXT) \ line-width-scale$(EXEEXT) line-width-zero$(EXEEXT) \ linear-gradient$(EXEEXT) linear-gradient-reflect$(EXEEXT) \ - long-lines$(EXEEXT) mask$(EXEEXT) mask-alpha$(EXEEXT) \ - mask-ctm$(EXEEXT) mask-surface-ctm$(EXEEXT) \ - meta-surface-pattern$(EXEEXT) miter-precision$(EXEEXT) \ - move-to-show-surface$(EXEEXT) new-sub-path$(EXEEXT) \ - nil-surface$(EXEEXT) operator-clear$(EXEEXT) \ - operator-source$(EXEEXT) over-above-source$(EXEEXT) \ - over-around-source$(EXEEXT) over-below-source$(EXEEXT) \ - over-between-source$(EXEEXT) paint$(EXEEXT) \ - paint-repeat$(EXEEXT) paint-source-alpha$(EXEEXT) \ - paint-with-alpha$(EXEEXT) pattern-get-type$(EXEEXT) \ - pattern-getters$(EXEEXT) pixman-rotate$(EXEEXT) \ - push-group$(EXEEXT) radial-gradient$(EXEEXT) \ - random-intersections$(EXEEXT) \ + long-dashed-lines$(EXEEXT) long-lines$(EXEEXT) mask$(EXEEXT) \ + mask-alpha$(EXEEXT) mask-ctm$(EXEEXT) \ + mask-surface-ctm$(EXEEXT) meta-surface-pattern$(EXEEXT) \ + miter-precision$(EXEEXT) move-to-show-surface$(EXEEXT) \ + new-sub-path$(EXEEXT) nil-surface$(EXEEXT) \ + operator-clear$(EXEEXT) operator-source$(EXEEXT) \ + over-above-source$(EXEEXT) over-around-source$(EXEEXT) \ + over-below-source$(EXEEXT) over-between-source$(EXEEXT) \ + paint$(EXEEXT) paint-repeat$(EXEEXT) \ + paint-source-alpha$(EXEEXT) paint-with-alpha$(EXEEXT) \ + pattern-get-type$(EXEEXT) pattern-getters$(EXEEXT) \ + pixman-rotate$(EXEEXT) png$(EXEEXT) push-group$(EXEEXT) \ + radial-gradient$(EXEEXT) random-intersections$(EXEEXT) \ rectangle-rounding-error$(EXEEXT) \ rectilinear-miter-limit$(EXEEXT) rectilinear-stroke$(EXEEXT) \ - rel-path$(EXEEXT) rgb24-ignore-alpha$(EXEEXT) \ + reflected-stroke$(EXEEXT) rel-path$(EXEEXT) \ + rgb24-ignore-alpha$(EXEEXT) \ rotate-image-surface-paint$(EXEEXT) \ scale-down-source-surface-paint$(EXEEXT) \ - scale-source-surface-paint$(EXEEXT) select-font-face$(EXEEXT) \ + scale-source-surface-paint$(EXEEXT) stroke-ctm-caps$(EXEEXT) \ + stroke-image$(EXEEXT) select-font-face$(EXEEXT) \ select-font-no-show-text$(EXEEXT) self-copy$(EXEEXT) \ self-intersecting$(EXEEXT) set-source$(EXEEXT) \ show-text-current-point$(EXEEXT) skew-extreme$(EXEEXT) \ - solid-pattern-cache-stress$(EXEEXT) source-clip$(EXEEXT) \ - source-clip-scale$(EXEEXT) source-surface-scale-paint$(EXEEXT) \ + smask$(EXEEXT) smask-fill$(EXEEXT) smask-image-mask$(EXEEXT) \ + smask-mask$(EXEEXT) smask-paint$(EXEEXT) smask-stroke$(EXEEXT) \ + smask-text$(EXEEXT) solid-pattern-cache-stress$(EXEEXT) \ + source-clip$(EXEEXT) source-clip-scale$(EXEEXT) \ + source-surface-scale-paint$(EXEEXT) \ surface-finish-twice$(EXEEXT) surface-pattern$(EXEEXT) \ surface-pattern-big-scale-down$(EXEEXT) \ surface-pattern-scale-down$(EXEEXT) \ surface-pattern-scale-up$(EXEEXT) text-antialias-gray$(EXEEXT) \ text-antialias-none$(EXEEXT) text-antialias-subpixel$(EXEEXT) \ text-cache-crash$(EXEEXT) text-pattern$(EXEEXT) \ - text-rotate$(EXEEXT) text-zero-len$(EXEEXT) \ - transforms$(EXEEXT) translate-show-surface$(EXEEXT) \ - trap-clip$(EXEEXT) truetype-tables$(EXEEXT) \ - unantialiased-shapes$(EXEEXT) unbounded-operator$(EXEEXT) \ - user-data$(EXEEXT) zero-alpha$(EXEEXT) $(am__append_1) \ - $(am__append_2) $(am__append_3) $(am__append_4) \ - $(am__append_5) $(am__append_6) $(am__append_7) \ - $(am__append_8) $(am__append_9) + text-rotate$(EXEEXT) text-transform$(EXEEXT) \ + text-zero-len$(EXEEXT) transforms$(EXEEXT) \ + translate-show-surface$(EXEEXT) trap-clip$(EXEEXT) \ + truetype-tables$(EXEEXT) unantialiased-shapes$(EXEEXT) \ + unbounded-operator$(EXEEXT) user-data$(EXEEXT) \ + zero-alpha$(EXEEXT) $(am__append_1) $(am__append_2) \ + $(am__append_3) $(am__append_4) $(am__append_5) \ + $(am__append_6) $(am__append_7) $(am__append_8) \ + $(am__append_9) $(am__append_10) # XXX: Here are some existing tests that are currently disabled for # one reason or another. They can still be built and run (manually) @@ -1438,8 +1469,16 @@ text-glyph-range$(EXEEXT) # All tests which have a reference image go here. REFERENCE_IMAGES = \ a1-image-sample-ref.png \ + a1-mask-ref.png \ a1-traps-sample-ref.png \ a8-mask-ref.png \ + big-line-ref.png \ + big-line-rgb24-ref.png \ + big-line-ps-ref.png \ + big-line-ps-rgb24-ref.png \ + big-line-quartz-ref.png \ + big-line-quartz-rgb24-ref.png \ + bilevel-image-ref.png \ bitmap-font-pdf-argb32-ref.png \ bitmap-font-ref.png \ bitmap-font-rgb24-ref.png \ @@ -1447,6 +1486,7 @@ REFERENCE_IMAGES = \ caps-joins-alpha-ref.png \ caps-joins-alpha-svg-ref.png \ caps-joins-ref.png \ + caps-joins-ps-ref.png \ caps-sub-paths-ref.png \ clip-all-ref.png \ clip-empty-ref.png \ @@ -1463,8 +1503,13 @@ REFERENCE_IMAGES = \ clip-nesting-ref.png \ clip-nesting-rgb24-ref.png \ clip-operator-ref.png \ + clip-operator-pdf-argb32-ref.png \ + clip-operator-pdf-rgb24-ref.png \ clip-operator-ps-argb32-ref.png \ + clip-operator-ps-rgb24-ref.png \ clip-operator-rgb24-ref.png \ + clip-operator-quartz-ref.png \ + clip-operator-quartz-rgb24-ref.png \ clip-push-group-ps-argb32-ref.png \ clip-push-group-ps-rgb24-ref.png \ clip-push-group-quartz-ref.png \ @@ -1476,11 +1521,11 @@ REFERENCE_IMAGES = \ clip-twice-ref.png \ clip-twice-rgb24-ref.png \ close-path-ref.png \ + close-path-ps-ref.png \ composite-integer-translate-over-ref.png \ composite-integer-translate-over-repeat-ref.png \ composite-integer-translate-source-ref.png \ - copy-path-ps-argb32-ref.png \ - copy-path-ps-rgb24-ref.png \ + copy-path-ps-ref.png \ copy-path-ref.png \ create-from-png-ref.png \ create-from-png-stream-ref.png \ @@ -1489,23 +1534,30 @@ REFERENCE_IMAGES = \ dash-caps-joins-quartz-ref.png \ dash-caps-joins-ref.png \ dash-curve-ref.png \ + dash-curve-ps-ref.png \ + dash-curve-quartz-ref.png \ dash-no-dash-ref.png \ dash-offset-negative-ref.png \ dash-scale-ps-argb32-ref.png \ dash-scale-ps-rgb24-ref.png \ + dash-scale-quartz-ref.png \ dash-scale-ref.png \ - dash-state-ps-argb32-ref.png \ - dash-state-ps-rgb24-ref.png \ + dash-state-ps-ref.png \ dash-state-ref.png \ - dash-zero-length-ps-argb32-ref.png \ + dash-state-quartz-ref.png \ + dash-zero-length-ps-ref.png \ + dash-zero-length-ps-rgb24-ref.png \ dash-zero-length-ref.png \ dash-zero-length-rgb24-ref.png \ degenerate-pen-ref.png \ - degenerate-pen-ps-argb32-ref.png \ + degenerate-pen-ps-ref.png \ + degenerate-pen-quartz-ref.png \ degenerate-path-ps-argb32-ref.png \ degenerate-path-ps-rgb24-ref.png \ degenerate-path-ref.png \ degenerate-path-rgb24-ref.png \ + degenerate-path-quartz-ref.png \ + degenerate-path-quartz-rgb24-ref.png \ device-offset-positive-ref.png \ device-offset-positive-rgb24-ref.png \ device-offset-ref.png \ @@ -1513,6 +1565,8 @@ REFERENCE_IMAGES = \ extend-pad-ref.png \ extend-reflect-ref.png \ extend-reflect-similar-ref.png \ + extend-reflect-similar-ps-ref.png \ + extend-reflect-ps-ref.png \ extend-repeat-ref.png \ extend-repeat-similar-ref.png \ fill-and-stroke-alpha-add-quartz-ref.png \ @@ -1539,49 +1593,87 @@ REFERENCE_IMAGES = \ fill-rule-ref.png \ fill-rule-rgb24-ref.png \ fill-rule-ps-rgb24-ref.png \ + filter-bilinear-extents-ref.png \ filter-nearest-offset-ref.png \ + finer-grained-fallbacks-ref.png \ + finer-grained-fallbacks-rgb24-ref.png \ + finer-grained-fallbacks-ps-argb32-ref.png \ + finer-grained-fallbacks-ps-rgb24-ref.png \ font-matrix-translation-ps-argb32-ref.png \ font-matrix-translation-ps-rgb24-ref.png \ font-matrix-translation-ref.png \ font-matrix-translation-svg-ref.png \ + font-matrix-translation-quartz-ref.png \ ft-text-antialias-none-ps-argb32-ref.png \ ft-text-antialias-none-ref.png \ - ft-text-vertical-layout-type1-ps-argb32-ref.png \ + ft-show-glyphs-positioning-ref.png \ + ft-show-glyphs-positioning-pdf-ref.png \ + ft-show-glyphs-positioning-ps-ref.png \ + ft-show-glyphs-positioning-svg-ref.png \ + ft-show-glyphs-table-ref.png \ + ft-show-glyphs-table-ps-ref.png \ + ft-text-vertical-layout-type1-pdf-ref.png \ + ft-text-vertical-layout-type1-ps-ref.png \ ft-text-vertical-layout-type1-ref.png \ ft-text-vertical-layout-type1-svg-ref.png \ - ft-text-vertical-layout-type3-ps-argb32-ref.png \ + ft-text-vertical-layout-type3-pdf-ref.png \ + ft-text-vertical-layout-type3-ps-ref.png \ ft-text-vertical-layout-type3-ref.png \ ft-text-vertical-layout-type3-svg-ref.png \ get-group-target-ref.png \ + glitz-surface-source-ref.png \ glyph-cache-pressure-ref.png \ + glyph-cache-pressure-ps-ref.png \ + glyph-cache-pressure-quartz-ref.png \ + gradient-alpha-pdf-argb32-ref.png \ + gradient-alpha-pdf-rgb24-ref.png \ gradient-alpha-ps-argb32-ref.png \ gradient-alpha-ps-rgb24-ref.png \ gradient-alpha-ref.png \ gradient-alpha-rgb24-ref.png \ gradient-zero-stops-ref.png \ gradient-zero-stops-rgb24-ref.png \ + image-surface-source-ref.png \ infinite-join-ref.png \ + infinite-join-ps-ref.png \ + large-source-ref.png \ leaky-dash-ps-argb32-ref.png \ leaky-dash-ps-rgb24-ref.png \ + leaky-dash-quartz-ref.png \ leaky-dash-ref.png \ leaky-polygon-ref.png \ + leaky-polygon-ps-ref.png \ linear-gradient-reflect-ref.png \ - linear-gradient-ps-argb32-ref.png \ - linear-gradient-ps-rgb24-ref.png \ + linear-gradient-reflect-pdf-argb32-ref.png \ + linear-gradient-reflect-pdf-rgb24-ref.png \ + linear-gradient-reflect-ps-ref.png \ + linear-gradient-reflect-quartz-ref.png \ + linear-gradient-pdf-ref.png \ + linear-gradient-ps-ref.png \ + linear-gradient-quartz-ref.png \ linear-gradient-ref.png \ linear-gradient-svg-ref.png \ line-width-ref.png \ - line-width-scale-ps-argb32-ref.png \ - line-width-scale-ps-rgb24-ref.png \ + line-width-scale-ps-ref.png \ + line-width-scale-quartz-ref.png \ line-width-scale-ref.png \ + long-dashed-lines-ref.png \ + long-dashed-lines-ps-ref.png \ + long-dashed-lines-quartz-ref.png \ long-lines-ref.png \ mask-alpha-ref.png \ + mask-alpha-svg-argb32-ref.png \ mask-alpha-rgb24-ref.png \ + mask-alpha-quartz-argb32-ref.png \ mask-ctm-ref.png \ mask-ctm-rgb24-ref.png \ mask-ctm-svg-argb32-ref.png \ mask-ref.png \ mask-rgb24-ref.png \ + mask-pdf-argb32-ref.png \ + mask-pdf-rgb24-ref.png \ + mask-quartz-ref.png \ + mask-quartz-rgb24-ref.png \ mask-surface-ctm-ref.png \ mask-surface-ctm-rgb24-ref.png \ mask-surface-ctm-svg-argb32-ref.png \ @@ -1591,6 +1683,12 @@ REFERENCE_IMAGES = \ meta-surface-pattern-rgb24-ref.png \ meta-surface-pattern-pdf-ref.png \ meta-surface-pattern-pdf-rgb24-ref.png \ + meta-surface-pattern-ps-argb32-ref.png \ + meta-surface-pattern-ps-rgb24-ref.png \ + meta-surface-pattern-quartz-ref.png \ + meta-surface-pattern-quartz-rgb24-ref.png \ + meta-surface-pattern-svg-argb32-ref.png \ + meta-surface-pattern-svg-rgb24-ref.png \ miter-precision-ref.png \ move-to-show-surface-ref.png \ new-sub-path-ps-argb32-ref.png \ @@ -1605,20 +1703,33 @@ REFERENCE_IMAGES = \ operator-clear-quartz-rgb24-ref.png \ operator-clear-ref.png \ operator-clear-rgb24-ref.png \ + operator-clear-pdf-argb32-ref.png \ + operator-clear-pdf-rgb24-ref.png \ + operator-clear-ps-argb32-ref.png \ + operator-source-pdf-argb32-ref.png \ + operator-source-pdf-rgb24-ref.png \ operator-source-ps-argb32-ref.png \ operator-source-ps-rgb24-ref.png \ operator-source-ref.png \ operator-source-rgb24-ref.png \ + operator-source-quartz-ref.png \ + operator-source-quartz-rgb24-ref.png \ over-above-source-ps-argb32-ref.png \ + over-above-source-quartz-ref.png \ + over-above-source-quartz-rgb24-ref.png \ over-above-source-ref.png \ over-above-source-rgb24-ref.png \ over-around-source-ps-argb32-ref.png \ + over-around-source-quartz-ref.png \ + over-around-source-quartz-rgb24-ref.png \ over-around-source-ref.png \ over-around-source-rgb24-ref.png \ over-below-source-ps-argb32-ref.png \ over-below-source-ref.png \ over-below-source-rgb24-ref.png \ - over-between-source-ps-argb32-ref.png \ + over-between-source-ps-argb32-ref.png \ + over-between-source-quartz-ref.png \ + over-between-source-quartz-rgb24-ref.png \ over-between-source-ref.png \ over-between-source-rgb24-ref.png \ paint-ref.png \ @@ -1628,31 +1739,42 @@ REFERENCE_IMAGES = \ paint-source-alpha-svg-ref.png \ paint-with-alpha-ref.png \ paint-with-alpha-svg-ref.png \ + paint-source-alpha-pdf-ref.png \ + paint-with-alpha-pdf-ref.png \ pattern-getters-ref.png \ - pixman-rotate-ps-argb32-ref.png \ - pixman-rotate-ps-rgb24-ref.png \ + pdf-surface-source-ref.png \ pixman-rotate-ref.png \ pixman-rotate-rgb24-ref.png \ + ps-surface-source-ref.png \ + push-group-pdf-ref.png \ + push-group-pdf-rgb24-ref.png \ push-group-ref.png \ push-group-rgb24-ref.png \ push-group-svg-argb32-ref.png \ radial-gradient-ref.png \ + radial-gradient-pdf-ref.png \ + radial-gradient-quartz-ref.png \ radial-gradient-svg-ref.png \ - random-intersections-ps-argb32-ref.png \ - random-intersections-ps-rgb24-ref.png \ random-intersections-ref.png \ + random-intersections-ps-ref.png \ + random-intersections-quartz-ref.png \ rgb24-ignore-alpha-ref.png \ rectangle-rounding-error-ref.png \ rectilinear-miter-limit-ref.png \ + rectilinear-miter-limit-ps-ref.png \ rectilinear-stroke-ref.png \ + reflected-stroke-ref.png \ + reflected-stroke-ps-ref.png \ + reflected-stroke-quartz-ref.png \ rel-path-quartz-ref.png \ rel-path-quartz-rgb24-ref.png \ rel-path-ps-rgb24-ref.png \ rel-path-ref.png \ rel-path-rgb24-ref.png \ + rotate-image-surface-paint-pdf-rgb24-ref.png \ + rotate-image-surface-paint-ps-ref.png \ rotate-image-surface-paint-pdf-argb32-ref.png \ - rotate-image-surface-paint-ps-argb32-ref.png \ - rotate-image-surface-paint-ps-rgb24-ref.png \ + rotate-image-surface-paint-quartz-ref.png \ rotate-image-surface-paint-ref.png \ rotate-image-surface-paint-svg-ref.png \ scale-down-source-surface-paint-ref.png \ @@ -1661,8 +1783,14 @@ REFERENCE_IMAGES = \ scale-source-surface-paint-rgb24-ref.png \ scale-source-surface-paint-svg-argb32-ref.png \ scale-source-surface-paint-svg-rgb24-ref.png \ + scale-source-surface-paint-pdf-rgb24-ref.png \ + stroke-ctm-caps-ref.png \ + stroke-ctm-caps-quartz-ref.png \ select-font-face-ref.png \ + select-font-face-ps-ref.png \ + select-font-face-quartz-ref.png \ self-copy-ref.png \ + self-copy-ps-ref.png \ self-intersecting-ref.png \ self-intersecting-rgb24-ref.png \ set-source-ref.png \ @@ -1670,15 +1798,45 @@ REFERENCE_IMAGES = \ set-source-svg-argb32-ref.png \ show-glyphs-many-ref.png \ show-text-current-point-ref.png \ + show-text-current-point-ps-ref.png \ + show-text-current-point-quartz-ref.png \ skew-extreme-ref.png \ + skew-extreme-ps-ref.png \ + smask-ref.png \ + smask-pdf-ref.png \ + smask-ps-ref.png \ + smask-svg-ref.png \ + smask-fill-ref.png \ + smask-fill-pdf-ref.png \ + smask-fill-svg-ref.png \ + smask-image-mask-ref.png \ + smask-image-mask-pdf-ref.png \ + smask-mask-ref.png \ + smask-mask-pdf-ref.png \ + smask-mask-svg-ref.png \ + smask-paint-ref.png \ + smask-paint-pdf-ref.png \ + smask-paint-svg-ref.png \ + smask-stroke-ref.png \ + smask-stroke-pdf-ref.png \ + smask-text-ref.png \ + smask-text-pdf-ref.png \ + smask-text-ps-ref.png \ + smask-text-svg-ref.png \ + stroke-image-ref.png \ + stroke-image-pdf-ref.png \ + stroke-image-ps-ref.png \ + stroke-image-quartz-ref.png \ source-clip-ref.png \ source-clip-scale-quartz-ref.png \ source-clip-scale-ps-argb32-ref.png \ source-clip-scale-ps-rgb24-ref.png \ source-clip-scale-ref.png \ source-clip-scale-svg-ref.png \ + source-clip-scale-pdf-ref.png \ source-surface-scale-paint-ref.png \ source-surface-scale-paint-rgb24-ref.png \ + stroke-ctm-caps-ps-ref.png \ surface-pattern-big-scale-down-ref.png \ surface-pattern-pdf-argb32-ref.png \ surface-pattern-ps-argb32-ref.png \ @@ -1686,13 +1844,18 @@ REFERENCE_IMAGES = \ surface-pattern-scale-down-pdf-argb32-ref.png \ surface-pattern-scale-down-ps-argb32-ref.png \ surface-pattern-scale-down-ref.png \ + surface-pattern-scale-down-quartz-ref.png \ surface-pattern-scale-up-pdf-argb32-ref.png \ surface-pattern-scale-up-ps-argb32-ref.png \ surface-pattern-scale-up-ref.png \ surface-pattern-svg-ref.png \ + svg-surface-source-ref.png \ text-antialias-gray-ref.png \ + text-antialias-gray-quartz-ref.png \ text-antialias-none-ref.png \ + text-antialias-none-quartz-ref.png \ text-antialias-subpixel-ref.png \ + text-antialias-subpixel-quartz-ref.png \ text-glyph-range-ref.png \ text-glyph-range-rgb24-ref.png \ text-pattern-ps-argb32-ref.png \ @@ -1701,12 +1864,19 @@ REFERENCE_IMAGES = \ text-pattern-rgb24-ref.png \ text-pattern-svg-argb32-ref.png \ text-pattern-svg-rgb24-ref.png \ - text-rotate-ps-argb32-ref.png \ - text-rotate-ps-rgb24-ref.png \ + text-pattern-pdf-argb32-ref.png \ + text-pattern-pdf-rgb24-ref.png \ + text-pattern-quartz-ref.png \ + text-pattern-quartz-rgb24-ref.png \ text-rotate-ref.png \ + text-rotate-ps-ref.png \ text-rotate-svg-ref.png \ - text-zero-len-ref.png \ + text-rotate-quartz-ref.png \ + text-transform-ref.png \ + text-transform-pdf-ref.png \ + text-transform-ps-ref.png \ transforms-ref.png \ + transforms-ps-ref.png \ translate-show-surface-ref.png \ trap-clip-quartz-ref.png \ trap-clip-quartz-rgb24-ref.png \ @@ -1714,17 +1884,19 @@ REFERENCE_IMAGES = \ trap-clip-ps-rgb24-ref.png \ trap-clip-ref.png \ trap-clip-rgb24-ref.png \ + trap-clip-pdf-argb32-ref.png \ + trap-clip-pdf-rgb24-ref.png \ unantialiased-shapes-ref.png \ + unantialiased-shapes-quartz-ref.png \ unbounded-operator-ref.png \ unbounded-operator-rgb24-ref.png \ + unbounded-operator-quartz-ref.png \ + unbounded-operator-quartz-rgb24-ref.png \ + xlib-surface-source-ref.png \ zero-alpha-ref.png -EXTRA_DIST = \ -6x13.pcf \ -make-html.pl \ -romedalen.png \ -$(REFERENCE_IMAGES) - +EXTRA_DIST = 6x13.pcf make-html.pl romedalen.png surface-source.c \ + $(REFERENCE_IMAGES) Makefile.win32 # Any test for which the code committed to CVS is expected to fail # should be listed here. @@ -1737,9 +1909,12 @@ $(REFERENCE_IMAGES) # everything from this list by fixing the bugs. (We don't necessarily # have to be that strict for "snapshots" though.) XFAIL_TESTS = \ +big-line$(EXEEXT) \ big-trap$(EXEEXT) \ extend-pad$(EXEEXT) \ filter-nearest-offset$(EXEEXT) \ +filter-bilinear-extents$(EXEEXT) \ +large-source$(EXEEXT) \ long-lines$(EXEEXT) \ self-intersecting$(EXEEXT) \ surface-pattern$(EXEEXT) \ @@ -1754,11 +1929,13 @@ fallback-resolution \ font-options \ multi-page \ pdf-features \ +png \ ps-features \ svg-clip \ svg-surface \ user-data +EXTRA_PROGRAMS = $(TESTS) $(DISABLED_TESTS) # We're using _GNU_SOURCE to get the prototype for asprintf. This may # not be the most portable approach, but it is pragmatic and I'm @@ -1787,7 +1964,7 @@ libcairotest_la_LIBADD = \ $(top_builddir)/src/libcairo.la \ $(CAIRO_LDADD) -LDADD = $(CAIRO_LDADD) libcairotest.la $(am__append_10) +LDADD = $(CAIRO_LDADD) libcairotest.la $(am__append_11) @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@pdf2png_CFLAGS = $(POPPLER_CFLAGS) # add LDADD, so poppler uses "our" cairo @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@pdf2png_LDADD = $(LDADD) $(POPPLER_LIBS) @@ -1810,6 +1987,7 @@ CLEANFILES = \ valgrind-log \ index.html \ ref.hash \ + png-test.png \ $(EXTRA_LTLIBRARIES) \ $(EXTRA_PROGRAMS) @@ -1853,7 +2031,7 @@ $(top_srcdir)/configure: $(am__configure_deps) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh libcairotest.la: $(libcairotest_la_OBJECTS) $(libcairotest_la_DEPENDENCIES) - $(LINK) $(libcairotest_la_LDFLAGS) $(libcairotest_la_OBJECTS) $(libcairotest_la_LIBADD) $(LIBS) + $(LINK) $(libcairotest_la_OBJECTS) $(libcairotest_la_LIBADD) $(LIBS) clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; for p in $$list; do \ @@ -1863,463 +2041,544 @@ clean-checkPROGRAMS: done a1-image-sample$(EXEEXT): $(a1_image_sample_OBJECTS) $(a1_image_sample_DEPENDENCIES) @rm -f a1-image-sample$(EXEEXT) - $(LINK) $(a1_image_sample_LDFLAGS) $(a1_image_sample_OBJECTS) $(a1_image_sample_LDADD) $(LIBS) + $(LINK) $(a1_image_sample_OBJECTS) $(a1_image_sample_LDADD) $(LIBS) +a1-mask$(EXEEXT): $(a1_mask_OBJECTS) $(a1_mask_DEPENDENCIES) + @rm -f a1-mask$(EXEEXT) + $(LINK) $(a1_mask_OBJECTS) $(a1_mask_LDADD) $(LIBS) a1-traps-sample$(EXEEXT): $(a1_traps_sample_OBJECTS) $(a1_traps_sample_DEPENDENCIES) @rm -f a1-traps-sample$(EXEEXT) - $(LINK) $(a1_traps_sample_LDFLAGS) $(a1_traps_sample_OBJECTS) $(a1_traps_sample_LDADD) $(LIBS) + $(LINK) $(a1_traps_sample_OBJECTS) $(a1_traps_sample_LDADD) $(LIBS) a8-mask$(EXEEXT): $(a8_mask_OBJECTS) $(a8_mask_DEPENDENCIES) @rm -f a8-mask$(EXEEXT) - $(LINK) $(a8_mask_LDFLAGS) $(a8_mask_OBJECTS) $(a8_mask_LDADD) $(LIBS) + $(LINK) $(a8_mask_OBJECTS) $(a8_mask_LDADD) $(LIBS) +big-line$(EXEEXT): $(big_line_OBJECTS) $(big_line_DEPENDENCIES) + @rm -f big-line$(EXEEXT) + $(LINK) $(big_line_OBJECTS) $(big_line_LDADD) $(LIBS) big-trap$(EXEEXT): $(big_trap_OBJECTS) $(big_trap_DEPENDENCIES) @rm -f big-trap$(EXEEXT) - $(LINK) $(big_trap_LDFLAGS) $(big_trap_OBJECTS) $(big_trap_LDADD) $(LIBS) + $(LINK) $(big_trap_OBJECTS) $(big_trap_LDADD) $(LIBS) +bilevel-image$(EXEEXT): $(bilevel_image_OBJECTS) $(bilevel_image_DEPENDENCIES) + @rm -f bilevel-image$(EXEEXT) + $(LINK) $(bilevel_image_OBJECTS) $(bilevel_image_LDADD) $(LIBS) bitmap-font$(EXEEXT): $(bitmap_font_OBJECTS) $(bitmap_font_DEPENDENCIES) @rm -f bitmap-font$(EXEEXT) - $(LINK) $(bitmap_font_LDFLAGS) $(bitmap_font_OBJECTS) $(bitmap_font_LDADD) $(LIBS) + $(LINK) $(bitmap_font_OBJECTS) $(bitmap_font_LDADD) $(LIBS) caps-joins$(EXEEXT): $(caps_joins_OBJECTS) $(caps_joins_DEPENDENCIES) @rm -f caps-joins$(EXEEXT) - $(LINK) $(caps_joins_LDFLAGS) $(caps_joins_OBJECTS) $(caps_joins_LDADD) $(LIBS) + $(LINK) $(caps_joins_OBJECTS) $(caps_joins_LDADD) $(LIBS) caps-joins-alpha$(EXEEXT): $(caps_joins_alpha_OBJECTS) $(caps_joins_alpha_DEPENDENCIES) @rm -f caps-joins-alpha$(EXEEXT) - $(LINK) $(caps_joins_alpha_LDFLAGS) $(caps_joins_alpha_OBJECTS) $(caps_joins_alpha_LDADD) $(LIBS) + $(LINK) $(caps_joins_alpha_OBJECTS) $(caps_joins_alpha_LDADD) $(LIBS) caps-sub-paths$(EXEEXT): $(caps_sub_paths_OBJECTS) $(caps_sub_paths_DEPENDENCIES) @rm -f caps-sub-paths$(EXEEXT) - $(LINK) $(caps_sub_paths_LDFLAGS) $(caps_sub_paths_OBJECTS) $(caps_sub_paths_LDADD) $(LIBS) + $(LINK) $(caps_sub_paths_OBJECTS) $(caps_sub_paths_LDADD) $(LIBS) clip-all$(EXEEXT): $(clip_all_OBJECTS) $(clip_all_DEPENDENCIES) @rm -f clip-all$(EXEEXT) - $(LINK) $(clip_all_LDFLAGS) $(clip_all_OBJECTS) $(clip_all_LDADD) $(LIBS) + $(LINK) $(clip_all_OBJECTS) $(clip_all_LDADD) $(LIBS) clip-empty$(EXEEXT): $(clip_empty_OBJECTS) $(clip_empty_DEPENDENCIES) @rm -f clip-empty$(EXEEXT) - $(LINK) $(clip_empty_LDFLAGS) $(clip_empty_OBJECTS) $(clip_empty_LDADD) $(LIBS) + $(LINK) $(clip_empty_OBJECTS) $(clip_empty_LDADD) $(LIBS) clip-fill-rule$(EXEEXT): $(clip_fill_rule_OBJECTS) $(clip_fill_rule_DEPENDENCIES) @rm -f clip-fill-rule$(EXEEXT) - $(LINK) $(clip_fill_rule_LDFLAGS) $(clip_fill_rule_OBJECTS) $(clip_fill_rule_LDADD) $(LIBS) + $(LINK) $(clip_fill_rule_OBJECTS) $(clip_fill_rule_LDADD) $(LIBS) clip-fill-rule-pixel-aligned$(EXEEXT): $(clip_fill_rule_pixel_aligned_OBJECTS) $(clip_fill_rule_pixel_aligned_DEPENDENCIES) @rm -f clip-fill-rule-pixel-aligned$(EXEEXT) - $(LINK) $(clip_fill_rule_pixel_aligned_LDFLAGS) $(clip_fill_rule_pixel_aligned_OBJECTS) $(clip_fill_rule_pixel_aligned_LDADD) $(LIBS) + $(LINK) $(clip_fill_rule_pixel_aligned_OBJECTS) $(clip_fill_rule_pixel_aligned_LDADD) $(LIBS) clip-nesting$(EXEEXT): $(clip_nesting_OBJECTS) $(clip_nesting_DEPENDENCIES) @rm -f clip-nesting$(EXEEXT) - $(LINK) $(clip_nesting_LDFLAGS) $(clip_nesting_OBJECTS) $(clip_nesting_LDADD) $(LIBS) + $(LINK) $(clip_nesting_OBJECTS) $(clip_nesting_LDADD) $(LIBS) clip-operator$(EXEEXT): $(clip_operator_OBJECTS) $(clip_operator_DEPENDENCIES) @rm -f clip-operator$(EXEEXT) - $(LINK) $(clip_operator_LDFLAGS) $(clip_operator_OBJECTS) $(clip_operator_LDADD) $(LIBS) + $(LINK) $(clip_operator_OBJECTS) $(clip_operator_LDADD) $(LIBS) clip-push-group$(EXEEXT): $(clip_push_group_OBJECTS) $(clip_push_group_DEPENDENCIES) @rm -f clip-push-group$(EXEEXT) - $(LINK) $(clip_push_group_LDFLAGS) $(clip_push_group_OBJECTS) $(clip_push_group_LDADD) $(LIBS) + $(LINK) $(clip_push_group_OBJECTS) $(clip_push_group_LDADD) $(LIBS) clip-twice$(EXEEXT): $(clip_twice_OBJECTS) $(clip_twice_DEPENDENCIES) @rm -f clip-twice$(EXEEXT) - $(LINK) $(clip_twice_LDFLAGS) $(clip_twice_OBJECTS) $(clip_twice_LDADD) $(LIBS) + $(LINK) $(clip_twice_OBJECTS) $(clip_twice_LDADD) $(LIBS) clip-zero$(EXEEXT): $(clip_zero_OBJECTS) $(clip_zero_DEPENDENCIES) @rm -f clip-zero$(EXEEXT) - $(LINK) $(clip_zero_LDFLAGS) $(clip_zero_OBJECTS) $(clip_zero_LDADD) $(LIBS) + $(LINK) $(clip_zero_OBJECTS) $(clip_zero_LDADD) $(LIBS) close-path$(EXEEXT): $(close_path_OBJECTS) $(close_path_DEPENDENCIES) @rm -f close-path$(EXEEXT) - $(LINK) $(close_path_LDFLAGS) $(close_path_OBJECTS) $(close_path_LDADD) $(LIBS) + $(LINK) $(close_path_OBJECTS) $(close_path_LDADD) $(LIBS) composite-integer-translate-over$(EXEEXT): $(composite_integer_translate_over_OBJECTS) $(composite_integer_translate_over_DEPENDENCIES) @rm -f composite-integer-translate-over$(EXEEXT) - $(LINK) $(composite_integer_translate_over_LDFLAGS) $(composite_integer_translate_over_OBJECTS) $(composite_integer_translate_over_LDADD) $(LIBS) + $(LINK) $(composite_integer_translate_over_OBJECTS) $(composite_integer_translate_over_LDADD) $(LIBS) composite-integer-translate-over-repeat$(EXEEXT): $(composite_integer_translate_over_repeat_OBJECTS) $(composite_integer_translate_over_repeat_DEPENDENCIES) @rm -f composite-integer-translate-over-repeat$(EXEEXT) - $(LINK) $(composite_integer_translate_over_repeat_LDFLAGS) $(composite_integer_translate_over_repeat_OBJECTS) $(composite_integer_translate_over_repeat_LDADD) $(LIBS) + $(LINK) $(composite_integer_translate_over_repeat_OBJECTS) $(composite_integer_translate_over_repeat_LDADD) $(LIBS) composite-integer-translate-source$(EXEEXT): $(composite_integer_translate_source_OBJECTS) $(composite_integer_translate_source_DEPENDENCIES) @rm -f composite-integer-translate-source$(EXEEXT) - $(LINK) $(composite_integer_translate_source_LDFLAGS) $(composite_integer_translate_source_OBJECTS) $(composite_integer_translate_source_LDADD) $(LIBS) + $(LINK) $(composite_integer_translate_source_OBJECTS) $(composite_integer_translate_source_LDADD) $(LIBS) copy-path$(EXEEXT): $(copy_path_OBJECTS) $(copy_path_DEPENDENCIES) @rm -f copy-path$(EXEEXT) - $(LINK) $(copy_path_LDFLAGS) $(copy_path_OBJECTS) $(copy_path_LDADD) $(LIBS) + $(LINK) $(copy_path_OBJECTS) $(copy_path_LDADD) $(LIBS) create-for-stream$(EXEEXT): $(create_for_stream_OBJECTS) $(create_for_stream_DEPENDENCIES) @rm -f create-for-stream$(EXEEXT) - $(LINK) $(create_for_stream_LDFLAGS) $(create_for_stream_OBJECTS) $(create_for_stream_LDADD) $(LIBS) + $(LINK) $(create_for_stream_OBJECTS) $(create_for_stream_LDADD) $(LIBS) create-from-png$(EXEEXT): $(create_from_png_OBJECTS) $(create_from_png_DEPENDENCIES) @rm -f create-from-png$(EXEEXT) - $(LINK) $(create_from_png_LDFLAGS) $(create_from_png_OBJECTS) $(create_from_png_LDADD) $(LIBS) + $(LINK) $(create_from_png_OBJECTS) $(create_from_png_LDADD) $(LIBS) create-from-png-stream$(EXEEXT): $(create_from_png_stream_OBJECTS) $(create_from_png_stream_DEPENDENCIES) @rm -f create-from-png-stream$(EXEEXT) - $(LINK) $(create_from_png_stream_LDFLAGS) $(create_from_png_stream_OBJECTS) $(create_from_png_stream_LDADD) $(LIBS) + $(LINK) $(create_from_png_stream_OBJECTS) $(create_from_png_stream_LDADD) $(LIBS) dash-caps-joins$(EXEEXT): $(dash_caps_joins_OBJECTS) $(dash_caps_joins_DEPENDENCIES) @rm -f dash-caps-joins$(EXEEXT) - $(LINK) $(dash_caps_joins_LDFLAGS) $(dash_caps_joins_OBJECTS) $(dash_caps_joins_LDADD) $(LIBS) + $(LINK) $(dash_caps_joins_OBJECTS) $(dash_caps_joins_LDADD) $(LIBS) dash-curve$(EXEEXT): $(dash_curve_OBJECTS) $(dash_curve_DEPENDENCIES) @rm -f dash-curve$(EXEEXT) - $(LINK) $(dash_curve_LDFLAGS) $(dash_curve_OBJECTS) $(dash_curve_LDADD) $(LIBS) + $(LINK) $(dash_curve_OBJECTS) $(dash_curve_LDADD) $(LIBS) dash-no-dash$(EXEEXT): $(dash_no_dash_OBJECTS) $(dash_no_dash_DEPENDENCIES) @rm -f dash-no-dash$(EXEEXT) - $(LINK) $(dash_no_dash_LDFLAGS) $(dash_no_dash_OBJECTS) $(dash_no_dash_LDADD) $(LIBS) + $(LINK) $(dash_no_dash_OBJECTS) $(dash_no_dash_LDADD) $(LIBS) dash-offset-negative$(EXEEXT): $(dash_offset_negative_OBJECTS) $(dash_offset_negative_DEPENDENCIES) @rm -f dash-offset-negative$(EXEEXT) - $(LINK) $(dash_offset_negative_LDFLAGS) $(dash_offset_negative_OBJECTS) $(dash_offset_negative_LDADD) $(LIBS) + $(LINK) $(dash_offset_negative_OBJECTS) $(dash_offset_negative_LDADD) $(LIBS) dash-scale$(EXEEXT): $(dash_scale_OBJECTS) $(dash_scale_DEPENDENCIES) @rm -f dash-scale$(EXEEXT) - $(LINK) $(dash_scale_LDFLAGS) $(dash_scale_OBJECTS) $(dash_scale_LDADD) $(LIBS) + $(LINK) $(dash_scale_OBJECTS) $(dash_scale_LDADD) $(LIBS) dash-state$(EXEEXT): $(dash_state_OBJECTS) $(dash_state_DEPENDENCIES) @rm -f dash-state$(EXEEXT) - $(LINK) $(dash_state_LDFLAGS) $(dash_state_OBJECTS) $(dash_state_LDADD) $(LIBS) + $(LINK) $(dash_state_OBJECTS) $(dash_state_LDADD) $(LIBS) dash-zero-length$(EXEEXT): $(dash_zero_length_OBJECTS) $(dash_zero_length_DEPENDENCIES) @rm -f dash-zero-length$(EXEEXT) - $(LINK) $(dash_zero_length_LDFLAGS) $(dash_zero_length_OBJECTS) $(dash_zero_length_LDADD) $(LIBS) + $(LINK) $(dash_zero_length_OBJECTS) $(dash_zero_length_LDADD) $(LIBS) degenerate-path$(EXEEXT): $(degenerate_path_OBJECTS) $(degenerate_path_DEPENDENCIES) @rm -f degenerate-path$(EXEEXT) - $(LINK) $(degenerate_path_LDFLAGS) $(degenerate_path_OBJECTS) $(degenerate_path_LDADD) $(LIBS) + $(LINK) $(degenerate_path_OBJECTS) $(degenerate_path_LDADD) $(LIBS) degenerate-pen$(EXEEXT): $(degenerate_pen_OBJECTS) $(degenerate_pen_DEPENDENCIES) @rm -f degenerate-pen$(EXEEXT) - $(LINK) $(degenerate_pen_LDFLAGS) $(degenerate_pen_OBJECTS) $(degenerate_pen_LDADD) $(LIBS) + $(LINK) $(degenerate_pen_OBJECTS) $(degenerate_pen_LDADD) $(LIBS) device-offset$(EXEEXT): $(device_offset_OBJECTS) $(device_offset_DEPENDENCIES) @rm -f device-offset$(EXEEXT) - $(LINK) $(device_offset_LDFLAGS) $(device_offset_OBJECTS) $(device_offset_LDADD) $(LIBS) + $(LINK) $(device_offset_OBJECTS) $(device_offset_LDADD) $(LIBS) device-offset-positive$(EXEEXT): $(device_offset_positive_OBJECTS) $(device_offset_positive_DEPENDENCIES) @rm -f device-offset-positive$(EXEEXT) - $(LINK) $(device_offset_positive_LDFLAGS) $(device_offset_positive_OBJECTS) $(device_offset_positive_LDADD) $(LIBS) + $(LINK) $(device_offset_positive_OBJECTS) $(device_offset_positive_LDADD) $(LIBS) extend-pad$(EXEEXT): $(extend_pad_OBJECTS) $(extend_pad_DEPENDENCIES) @rm -f extend-pad$(EXEEXT) - $(LINK) $(extend_pad_LDFLAGS) $(extend_pad_OBJECTS) $(extend_pad_LDADD) $(LIBS) + $(LINK) $(extend_pad_OBJECTS) $(extend_pad_LDADD) $(LIBS) extend-reflect$(EXEEXT): $(extend_reflect_OBJECTS) $(extend_reflect_DEPENDENCIES) @rm -f extend-reflect$(EXEEXT) - $(LINK) $(extend_reflect_LDFLAGS) $(extend_reflect_OBJECTS) $(extend_reflect_LDADD) $(LIBS) + $(LINK) $(extend_reflect_OBJECTS) $(extend_reflect_LDADD) $(LIBS) extend-reflect-similar$(EXEEXT): $(extend_reflect_similar_OBJECTS) $(extend_reflect_similar_DEPENDENCIES) @rm -f extend-reflect-similar$(EXEEXT) - $(LINK) $(extend_reflect_similar_LDFLAGS) $(extend_reflect_similar_OBJECTS) $(extend_reflect_similar_LDADD) $(LIBS) + $(LINK) $(extend_reflect_similar_OBJECTS) $(extend_reflect_similar_LDADD) $(LIBS) extend-repeat$(EXEEXT): $(extend_repeat_OBJECTS) $(extend_repeat_DEPENDENCIES) @rm -f extend-repeat$(EXEEXT) - $(LINK) $(extend_repeat_LDFLAGS) $(extend_repeat_OBJECTS) $(extend_repeat_LDADD) $(LIBS) + $(LINK) $(extend_repeat_OBJECTS) $(extend_repeat_LDADD) $(LIBS) extend-repeat-similar$(EXEEXT): $(extend_repeat_similar_OBJECTS) $(extend_repeat_similar_DEPENDENCIES) @rm -f extend-repeat-similar$(EXEEXT) - $(LINK) $(extend_repeat_similar_LDFLAGS) $(extend_repeat_similar_OBJECTS) $(extend_repeat_similar_LDADD) $(LIBS) + $(LINK) $(extend_repeat_similar_OBJECTS) $(extend_repeat_similar_LDADD) $(LIBS) fallback-resolution$(EXEEXT): $(fallback_resolution_OBJECTS) $(fallback_resolution_DEPENDENCIES) @rm -f fallback-resolution$(EXEEXT) - $(LINK) $(fallback_resolution_LDFLAGS) $(fallback_resolution_OBJECTS) $(fallback_resolution_LDADD) $(LIBS) + $(LINK) $(fallback_resolution_OBJECTS) $(fallback_resolution_LDADD) $(LIBS) fill-and-stroke$(EXEEXT): $(fill_and_stroke_OBJECTS) $(fill_and_stroke_DEPENDENCIES) @rm -f fill-and-stroke$(EXEEXT) - $(LINK) $(fill_and_stroke_LDFLAGS) $(fill_and_stroke_OBJECTS) $(fill_and_stroke_LDADD) $(LIBS) + $(LINK) $(fill_and_stroke_OBJECTS) $(fill_and_stroke_LDADD) $(LIBS) fill-and-stroke-alpha$(EXEEXT): $(fill_and_stroke_alpha_OBJECTS) $(fill_and_stroke_alpha_DEPENDENCIES) @rm -f fill-and-stroke-alpha$(EXEEXT) - $(LINK) $(fill_and_stroke_alpha_LDFLAGS) $(fill_and_stroke_alpha_OBJECTS) $(fill_and_stroke_alpha_LDADD) $(LIBS) + $(LINK) $(fill_and_stroke_alpha_OBJECTS) $(fill_and_stroke_alpha_LDADD) $(LIBS) fill-and-stroke-alpha-add$(EXEEXT): $(fill_and_stroke_alpha_add_OBJECTS) $(fill_and_stroke_alpha_add_DEPENDENCIES) @rm -f fill-and-stroke-alpha-add$(EXEEXT) - $(LINK) $(fill_and_stroke_alpha_add_LDFLAGS) $(fill_and_stroke_alpha_add_OBJECTS) $(fill_and_stroke_alpha_add_LDADD) $(LIBS) + $(LINK) $(fill_and_stroke_alpha_add_OBJECTS) $(fill_and_stroke_alpha_add_LDADD) $(LIBS) fill-degenerate-sort-order$(EXEEXT): $(fill_degenerate_sort_order_OBJECTS) $(fill_degenerate_sort_order_DEPENDENCIES) @rm -f fill-degenerate-sort-order$(EXEEXT) - $(LINK) $(fill_degenerate_sort_order_LDFLAGS) $(fill_degenerate_sort_order_OBJECTS) $(fill_degenerate_sort_order_LDADD) $(LIBS) + $(LINK) $(fill_degenerate_sort_order_OBJECTS) $(fill_degenerate_sort_order_LDADD) $(LIBS) fill-missed-stop$(EXEEXT): $(fill_missed_stop_OBJECTS) $(fill_missed_stop_DEPENDENCIES) @rm -f fill-missed-stop$(EXEEXT) - $(LINK) $(fill_missed_stop_LDFLAGS) $(fill_missed_stop_OBJECTS) $(fill_missed_stop_LDADD) $(LIBS) + $(LINK) $(fill_missed_stop_OBJECTS) $(fill_missed_stop_LDADD) $(LIBS) fill-rule$(EXEEXT): $(fill_rule_OBJECTS) $(fill_rule_DEPENDENCIES) @rm -f fill-rule$(EXEEXT) - $(LINK) $(fill_rule_LDFLAGS) $(fill_rule_OBJECTS) $(fill_rule_LDADD) $(LIBS) + $(LINK) $(fill_rule_OBJECTS) $(fill_rule_LDADD) $(LIBS) +filter-bilinear-extents$(EXEEXT): $(filter_bilinear_extents_OBJECTS) $(filter_bilinear_extents_DEPENDENCIES) + @rm -f filter-bilinear-extents$(EXEEXT) + $(LINK) $(filter_bilinear_extents_OBJECTS) $(filter_bilinear_extents_LDADD) $(LIBS) filter-nearest-offset$(EXEEXT): $(filter_nearest_offset_OBJECTS) $(filter_nearest_offset_DEPENDENCIES) @rm -f filter-nearest-offset$(EXEEXT) - $(LINK) $(filter_nearest_offset_LDFLAGS) $(filter_nearest_offset_OBJECTS) $(filter_nearest_offset_LDADD) $(LIBS) + $(LINK) $(filter_nearest_offset_OBJECTS) $(filter_nearest_offset_LDADD) $(LIBS) +finer-grained-fallbacks$(EXEEXT): $(finer_grained_fallbacks_OBJECTS) $(finer_grained_fallbacks_DEPENDENCIES) + @rm -f finer-grained-fallbacks$(EXEEXT) + $(LINK) $(finer_grained_fallbacks_OBJECTS) $(finer_grained_fallbacks_LDADD) $(LIBS) font-face-get-type$(EXEEXT): $(font_face_get_type_OBJECTS) $(font_face_get_type_DEPENDENCIES) @rm -f font-face-get-type$(EXEEXT) - $(LINK) $(font_face_get_type_LDFLAGS) $(font_face_get_type_OBJECTS) $(font_face_get_type_LDADD) $(LIBS) + $(LINK) $(font_face_get_type_OBJECTS) $(font_face_get_type_LDADD) $(LIBS) font-matrix-translation$(EXEEXT): $(font_matrix_translation_OBJECTS) $(font_matrix_translation_DEPENDENCIES) @rm -f font-matrix-translation$(EXEEXT) - $(LINK) $(font_matrix_translation_LDFLAGS) $(font_matrix_translation_OBJECTS) $(font_matrix_translation_LDADD) $(LIBS) + $(LINK) $(font_matrix_translation_OBJECTS) $(font_matrix_translation_LDADD) $(LIBS) font-options$(EXEEXT): $(font_options_OBJECTS) $(font_options_DEPENDENCIES) @rm -f font-options$(EXEEXT) - $(LINK) $(font_options_LDFLAGS) $(font_options_OBJECTS) $(font_options_LDADD) $(LIBS) + $(LINK) $(font_options_OBJECTS) $(font_options_LDADD) $(LIBS) ft-font-create-for-ft-face$(EXEEXT): $(ft_font_create_for_ft_face_OBJECTS) $(ft_font_create_for_ft_face_DEPENDENCIES) @rm -f ft-font-create-for-ft-face$(EXEEXT) - $(LINK) $(ft_font_create_for_ft_face_LDFLAGS) $(ft_font_create_for_ft_face_OBJECTS) $(ft_font_create_for_ft_face_LDADD) $(LIBS) + $(LINK) $(ft_font_create_for_ft_face_OBJECTS) $(ft_font_create_for_ft_face_LDADD) $(LIBS) +ft-show-glyphs-positioning$(EXEEXT): $(ft_show_glyphs_positioning_OBJECTS) $(ft_show_glyphs_positioning_DEPENDENCIES) + @rm -f ft-show-glyphs-positioning$(EXEEXT) + $(LINK) $(ft_show_glyphs_positioning_OBJECTS) $(ft_show_glyphs_positioning_LDADD) $(LIBS) +ft-show-glyphs-table$(EXEEXT): $(ft_show_glyphs_table_OBJECTS) $(ft_show_glyphs_table_DEPENDENCIES) + @rm -f ft-show-glyphs-table$(EXEEXT) + $(LINK) $(ft_show_glyphs_table_OBJECTS) $(ft_show_glyphs_table_LDADD) $(LIBS) ft-text-antialias-none$(EXEEXT): $(ft_text_antialias_none_OBJECTS) $(ft_text_antialias_none_DEPENDENCIES) @rm -f ft-text-antialias-none$(EXEEXT) - $(LINK) $(ft_text_antialias_none_LDFLAGS) $(ft_text_antialias_none_OBJECTS) $(ft_text_antialias_none_LDADD) $(LIBS) + $(LINK) $(ft_text_antialias_none_OBJECTS) $(ft_text_antialias_none_LDADD) $(LIBS) ft-text-vertical-layout-type1$(EXEEXT): $(ft_text_vertical_layout_type1_OBJECTS) $(ft_text_vertical_layout_type1_DEPENDENCIES) @rm -f ft-text-vertical-layout-type1$(EXEEXT) - $(LINK) $(ft_text_vertical_layout_type1_LDFLAGS) $(ft_text_vertical_layout_type1_OBJECTS) $(ft_text_vertical_layout_type1_LDADD) $(LIBS) + $(LINK) $(ft_text_vertical_layout_type1_OBJECTS) $(ft_text_vertical_layout_type1_LDADD) $(LIBS) ft-text-vertical-layout-type3$(EXEEXT): $(ft_text_vertical_layout_type3_OBJECTS) $(ft_text_vertical_layout_type3_DEPENDENCIES) @rm -f ft-text-vertical-layout-type3$(EXEEXT) - $(LINK) $(ft_text_vertical_layout_type3_LDFLAGS) $(ft_text_vertical_layout_type3_OBJECTS) $(ft_text_vertical_layout_type3_LDADD) $(LIBS) + $(LINK) $(ft_text_vertical_layout_type3_OBJECTS) $(ft_text_vertical_layout_type3_LDADD) $(LIBS) get-and-set$(EXEEXT): $(get_and_set_OBJECTS) $(get_and_set_DEPENDENCIES) @rm -f get-and-set$(EXEEXT) - $(LINK) $(get_and_set_LDFLAGS) $(get_and_set_OBJECTS) $(get_and_set_LDADD) $(LIBS) + $(LINK) $(get_and_set_OBJECTS) $(get_and_set_LDADD) $(LIBS) get-clip$(EXEEXT): $(get_clip_OBJECTS) $(get_clip_DEPENDENCIES) @rm -f get-clip$(EXEEXT) - $(LINK) $(get_clip_LDFLAGS) $(get_clip_OBJECTS) $(get_clip_LDADD) $(LIBS) + $(LINK) $(get_clip_OBJECTS) $(get_clip_LDADD) $(LIBS) get-group-target$(EXEEXT): $(get_group_target_OBJECTS) $(get_group_target_DEPENDENCIES) @rm -f get-group-target$(EXEEXT) - $(LINK) $(get_group_target_LDFLAGS) $(get_group_target_OBJECTS) $(get_group_target_LDADD) $(LIBS) + $(LINK) $(get_group_target_OBJECTS) $(get_group_target_LDADD) $(LIBS) get-path-extents$(EXEEXT): $(get_path_extents_OBJECTS) $(get_path_extents_DEPENDENCIES) @rm -f get-path-extents$(EXEEXT) - $(LINK) $(get_path_extents_LDFLAGS) $(get_path_extents_OBJECTS) $(get_path_extents_LDADD) $(LIBS) + $(LINK) $(get_path_extents_OBJECTS) $(get_path_extents_LDADD) $(LIBS) get-xrender-format$(EXEEXT): $(get_xrender_format_OBJECTS) $(get_xrender_format_DEPENDENCIES) @rm -f get-xrender-format$(EXEEXT) - $(LINK) $(get_xrender_format_LDFLAGS) $(get_xrender_format_OBJECTS) $(get_xrender_format_LDADD) $(LIBS) + $(LINK) $(get_xrender_format_OBJECTS) $(get_xrender_format_LDADD) $(LIBS) +glitz-surface-source$(EXEEXT): $(glitz_surface_source_OBJECTS) $(glitz_surface_source_DEPENDENCIES) + @rm -f glitz-surface-source$(EXEEXT) + $(LINK) $(glitz_surface_source_OBJECTS) $(glitz_surface_source_LDADD) $(LIBS) glyph-cache-pressure$(EXEEXT): $(glyph_cache_pressure_OBJECTS) $(glyph_cache_pressure_DEPENDENCIES) @rm -f glyph-cache-pressure$(EXEEXT) - $(LINK) $(glyph_cache_pressure_LDFLAGS) $(glyph_cache_pressure_OBJECTS) $(glyph_cache_pressure_LDADD) $(LIBS) + $(LINK) $(glyph_cache_pressure_OBJECTS) $(glyph_cache_pressure_LDADD) $(LIBS) gradient-alpha$(EXEEXT): $(gradient_alpha_OBJECTS) $(gradient_alpha_DEPENDENCIES) @rm -f gradient-alpha$(EXEEXT) - $(LINK) $(gradient_alpha_LDFLAGS) $(gradient_alpha_OBJECTS) $(gradient_alpha_LDADD) $(LIBS) + $(LINK) $(gradient_alpha_OBJECTS) $(gradient_alpha_LDADD) $(LIBS) gradient-zero-stops$(EXEEXT): $(gradient_zero_stops_OBJECTS) $(gradient_zero_stops_DEPENDENCIES) @rm -f gradient-zero-stops$(EXEEXT) - $(LINK) $(gradient_zero_stops_LDFLAGS) $(gradient_zero_stops_OBJECTS) $(gradient_zero_stops_LDADD) $(LIBS) + $(LINK) $(gradient_zero_stops_OBJECTS) $(gradient_zero_stops_LDADD) $(LIBS) +image-surface-source$(EXEEXT): $(image_surface_source_OBJECTS) $(image_surface_source_DEPENDENCIES) + @rm -f image-surface-source$(EXEEXT) + $(LINK) $(image_surface_source_OBJECTS) $(image_surface_source_LDADD) $(LIBS) imagediff$(EXEEXT): $(imagediff_OBJECTS) $(imagediff_DEPENDENCIES) @rm -f imagediff$(EXEEXT) - $(LINK) $(imagediff_LDFLAGS) $(imagediff_OBJECTS) $(imagediff_LDADD) $(LIBS) + $(LINK) $(imagediff_OBJECTS) $(imagediff_LDADD) $(LIBS) in-fill-empty-trapezoid$(EXEEXT): $(in_fill_empty_trapezoid_OBJECTS) $(in_fill_empty_trapezoid_DEPENDENCIES) @rm -f in-fill-empty-trapezoid$(EXEEXT) - $(LINK) $(in_fill_empty_trapezoid_LDFLAGS) $(in_fill_empty_trapezoid_OBJECTS) $(in_fill_empty_trapezoid_LDADD) $(LIBS) + $(LINK) $(in_fill_empty_trapezoid_OBJECTS) $(in_fill_empty_trapezoid_LDADD) $(LIBS) in-fill-trapezoid$(EXEEXT): $(in_fill_trapezoid_OBJECTS) $(in_fill_trapezoid_DEPENDENCIES) @rm -f in-fill-trapezoid$(EXEEXT) - $(LINK) $(in_fill_trapezoid_LDFLAGS) $(in_fill_trapezoid_OBJECTS) $(in_fill_trapezoid_LDADD) $(LIBS) + $(LINK) $(in_fill_trapezoid_OBJECTS) $(in_fill_trapezoid_LDADD) $(LIBS) infinite-join$(EXEEXT): $(infinite_join_OBJECTS) $(infinite_join_DEPENDENCIES) @rm -f infinite-join$(EXEEXT) - $(LINK) $(infinite_join_LDFLAGS) $(infinite_join_OBJECTS) $(infinite_join_LDADD) $(LIBS) + $(LINK) $(infinite_join_OBJECTS) $(infinite_join_LDADD) $(LIBS) invalid-matrix$(EXEEXT): $(invalid_matrix_OBJECTS) $(invalid_matrix_DEPENDENCIES) @rm -f invalid-matrix$(EXEEXT) - $(LINK) $(invalid_matrix_LDFLAGS) $(invalid_matrix_OBJECTS) $(invalid_matrix_LDADD) $(LIBS) + $(LINK) $(invalid_matrix_OBJECTS) $(invalid_matrix_LDADD) $(LIBS) +large-source$(EXEEXT): $(large_source_OBJECTS) $(large_source_DEPENDENCIES) + @rm -f large-source$(EXEEXT) + $(LINK) $(large_source_OBJECTS) $(large_source_LDADD) $(LIBS) leaky-dash$(EXEEXT): $(leaky_dash_OBJECTS) $(leaky_dash_DEPENDENCIES) @rm -f leaky-dash$(EXEEXT) - $(LINK) $(leaky_dash_LDFLAGS) $(leaky_dash_OBJECTS) $(leaky_dash_LDADD) $(LIBS) + $(LINK) $(leaky_dash_OBJECTS) $(leaky_dash_LDADD) $(LIBS) leaky-polygon$(EXEEXT): $(leaky_polygon_OBJECTS) $(leaky_polygon_DEPENDENCIES) @rm -f leaky-polygon$(EXEEXT) - $(LINK) $(leaky_polygon_LDFLAGS) $(leaky_polygon_OBJECTS) $(leaky_polygon_LDADD) $(LIBS) + $(LINK) $(leaky_polygon_OBJECTS) $(leaky_polygon_LDADD) $(LIBS) line-width$(EXEEXT): $(line_width_OBJECTS) $(line_width_DEPENDENCIES) @rm -f line-width$(EXEEXT) - $(LINK) $(line_width_LDFLAGS) $(line_width_OBJECTS) $(line_width_LDADD) $(LIBS) + $(LINK) $(line_width_OBJECTS) $(line_width_LDADD) $(LIBS) line-width-scale$(EXEEXT): $(line_width_scale_OBJECTS) $(line_width_scale_DEPENDENCIES) @rm -f line-width-scale$(EXEEXT) - $(LINK) $(line_width_scale_LDFLAGS) $(line_width_scale_OBJECTS) $(line_width_scale_LDADD) $(LIBS) + $(LINK) $(line_width_scale_OBJECTS) $(line_width_scale_LDADD) $(LIBS) line-width-zero$(EXEEXT): $(line_width_zero_OBJECTS) $(line_width_zero_DEPENDENCIES) @rm -f line-width-zero$(EXEEXT) - $(LINK) $(line_width_zero_LDFLAGS) $(line_width_zero_OBJECTS) $(line_width_zero_LDADD) $(LIBS) + $(LINK) $(line_width_zero_OBJECTS) $(line_width_zero_LDADD) $(LIBS) linear-gradient$(EXEEXT): $(linear_gradient_OBJECTS) $(linear_gradient_DEPENDENCIES) @rm -f linear-gradient$(EXEEXT) - $(LINK) $(linear_gradient_LDFLAGS) $(linear_gradient_OBJECTS) $(linear_gradient_LDADD) $(LIBS) + $(LINK) $(linear_gradient_OBJECTS) $(linear_gradient_LDADD) $(LIBS) linear-gradient-reflect$(EXEEXT): $(linear_gradient_reflect_OBJECTS) $(linear_gradient_reflect_DEPENDENCIES) @rm -f linear-gradient-reflect$(EXEEXT) - $(LINK) $(linear_gradient_reflect_LDFLAGS) $(linear_gradient_reflect_OBJECTS) $(linear_gradient_reflect_LDADD) $(LIBS) + $(LINK) $(linear_gradient_reflect_OBJECTS) $(linear_gradient_reflect_LDADD) $(LIBS) +long-dashed-lines$(EXEEXT): $(long_dashed_lines_OBJECTS) $(long_dashed_lines_DEPENDENCIES) + @rm -f long-dashed-lines$(EXEEXT) + $(LINK) $(long_dashed_lines_OBJECTS) $(long_dashed_lines_LDADD) $(LIBS) long-lines$(EXEEXT): $(long_lines_OBJECTS) $(long_lines_DEPENDENCIES) @rm -f long-lines$(EXEEXT) - $(LINK) $(long_lines_LDFLAGS) $(long_lines_OBJECTS) $(long_lines_LDADD) $(LIBS) + $(LINK) $(long_lines_OBJECTS) $(long_lines_LDADD) $(LIBS) mask$(EXEEXT): $(mask_OBJECTS) $(mask_DEPENDENCIES) @rm -f mask$(EXEEXT) - $(LINK) $(mask_LDFLAGS) $(mask_OBJECTS) $(mask_LDADD) $(LIBS) + $(LINK) $(mask_OBJECTS) $(mask_LDADD) $(LIBS) mask-alpha$(EXEEXT): $(mask_alpha_OBJECTS) $(mask_alpha_DEPENDENCIES) @rm -f mask-alpha$(EXEEXT) - $(LINK) $(mask_alpha_LDFLAGS) $(mask_alpha_OBJECTS) $(mask_alpha_LDADD) $(LIBS) + $(LINK) $(mask_alpha_OBJECTS) $(mask_alpha_LDADD) $(LIBS) mask-ctm$(EXEEXT): $(mask_ctm_OBJECTS) $(mask_ctm_DEPENDENCIES) @rm -f mask-ctm$(EXEEXT) - $(LINK) $(mask_ctm_LDFLAGS) $(mask_ctm_OBJECTS) $(mask_ctm_LDADD) $(LIBS) + $(LINK) $(mask_ctm_OBJECTS) $(mask_ctm_LDADD) $(LIBS) mask-surface-ctm$(EXEEXT): $(mask_surface_ctm_OBJECTS) $(mask_surface_ctm_DEPENDENCIES) @rm -f mask-surface-ctm$(EXEEXT) - $(LINK) $(mask_surface_ctm_LDFLAGS) $(mask_surface_ctm_OBJECTS) $(mask_surface_ctm_LDADD) $(LIBS) + $(LINK) $(mask_surface_ctm_OBJECTS) $(mask_surface_ctm_LDADD) $(LIBS) meta-surface-pattern$(EXEEXT): $(meta_surface_pattern_OBJECTS) $(meta_surface_pattern_DEPENDENCIES) @rm -f meta-surface-pattern$(EXEEXT) - $(LINK) $(meta_surface_pattern_LDFLAGS) $(meta_surface_pattern_OBJECTS) $(meta_surface_pattern_LDADD) $(LIBS) + $(LINK) $(meta_surface_pattern_OBJECTS) $(meta_surface_pattern_LDADD) $(LIBS) miter-precision$(EXEEXT): $(miter_precision_OBJECTS) $(miter_precision_DEPENDENCIES) @rm -f miter-precision$(EXEEXT) - $(LINK) $(miter_precision_LDFLAGS) $(miter_precision_OBJECTS) $(miter_precision_LDADD) $(LIBS) + $(LINK) $(miter_precision_OBJECTS) $(miter_precision_LDADD) $(LIBS) move-to-show-surface$(EXEEXT): $(move_to_show_surface_OBJECTS) $(move_to_show_surface_DEPENDENCIES) @rm -f move-to-show-surface$(EXEEXT) - $(LINK) $(move_to_show_surface_LDFLAGS) $(move_to_show_surface_OBJECTS) $(move_to_show_surface_LDADD) $(LIBS) + $(LINK) $(move_to_show_surface_OBJECTS) $(move_to_show_surface_LDADD) $(LIBS) multi-page$(EXEEXT): $(multi_page_OBJECTS) $(multi_page_DEPENDENCIES) @rm -f multi-page$(EXEEXT) - $(LINK) $(multi_page_LDFLAGS) $(multi_page_OBJECTS) $(multi_page_LDADD) $(LIBS) + $(LINK) $(multi_page_OBJECTS) $(multi_page_LDADD) $(LIBS) new-sub-path$(EXEEXT): $(new_sub_path_OBJECTS) $(new_sub_path_DEPENDENCIES) @rm -f new-sub-path$(EXEEXT) - $(LINK) $(new_sub_path_LDFLAGS) $(new_sub_path_OBJECTS) $(new_sub_path_LDADD) $(LIBS) + $(LINK) $(new_sub_path_OBJECTS) $(new_sub_path_LDADD) $(LIBS) nil-surface$(EXEEXT): $(nil_surface_OBJECTS) $(nil_surface_DEPENDENCIES) @rm -f nil-surface$(EXEEXT) - $(LINK) $(nil_surface_LDFLAGS) $(nil_surface_OBJECTS) $(nil_surface_LDADD) $(LIBS) + $(LINK) $(nil_surface_OBJECTS) $(nil_surface_LDADD) $(LIBS) operator-clear$(EXEEXT): $(operator_clear_OBJECTS) $(operator_clear_DEPENDENCIES) @rm -f operator-clear$(EXEEXT) - $(LINK) $(operator_clear_LDFLAGS) $(operator_clear_OBJECTS) $(operator_clear_LDADD) $(LIBS) + $(LINK) $(operator_clear_OBJECTS) $(operator_clear_LDADD) $(LIBS) operator-source$(EXEEXT): $(operator_source_OBJECTS) $(operator_source_DEPENDENCIES) @rm -f operator-source$(EXEEXT) - $(LINK) $(operator_source_LDFLAGS) $(operator_source_OBJECTS) $(operator_source_LDADD) $(LIBS) + $(LINK) $(operator_source_OBJECTS) $(operator_source_LDADD) $(LIBS) over-above-source$(EXEEXT): $(over_above_source_OBJECTS) $(over_above_source_DEPENDENCIES) @rm -f over-above-source$(EXEEXT) - $(LINK) $(over_above_source_LDFLAGS) $(over_above_source_OBJECTS) $(over_above_source_LDADD) $(LIBS) + $(LINK) $(over_above_source_OBJECTS) $(over_above_source_LDADD) $(LIBS) over-around-source$(EXEEXT): $(over_around_source_OBJECTS) $(over_around_source_DEPENDENCIES) @rm -f over-around-source$(EXEEXT) - $(LINK) $(over_around_source_LDFLAGS) $(over_around_source_OBJECTS) $(over_around_source_LDADD) $(LIBS) + $(LINK) $(over_around_source_OBJECTS) $(over_around_source_LDADD) $(LIBS) over-below-source$(EXEEXT): $(over_below_source_OBJECTS) $(over_below_source_DEPENDENCIES) @rm -f over-below-source$(EXEEXT) - $(LINK) $(over_below_source_LDFLAGS) $(over_below_source_OBJECTS) $(over_below_source_LDADD) $(LIBS) + $(LINK) $(over_below_source_OBJECTS) $(over_below_source_LDADD) $(LIBS) over-between-source$(EXEEXT): $(over_between_source_OBJECTS) $(over_between_source_DEPENDENCIES) @rm -f over-between-source$(EXEEXT) - $(LINK) $(over_between_source_LDFLAGS) $(over_between_source_OBJECTS) $(over_between_source_LDADD) $(LIBS) + $(LINK) $(over_between_source_OBJECTS) $(over_between_source_LDADD) $(LIBS) paint$(EXEEXT): $(paint_OBJECTS) $(paint_DEPENDENCIES) @rm -f paint$(EXEEXT) - $(LINK) $(paint_LDFLAGS) $(paint_OBJECTS) $(paint_LDADD) $(LIBS) + $(LINK) $(paint_OBJECTS) $(paint_LDADD) $(LIBS) paint-repeat$(EXEEXT): $(paint_repeat_OBJECTS) $(paint_repeat_DEPENDENCIES) @rm -f paint-repeat$(EXEEXT) - $(LINK) $(paint_repeat_LDFLAGS) $(paint_repeat_OBJECTS) $(paint_repeat_LDADD) $(LIBS) + $(LINK) $(paint_repeat_OBJECTS) $(paint_repeat_LDADD) $(LIBS) paint-source-alpha$(EXEEXT): $(paint_source_alpha_OBJECTS) $(paint_source_alpha_DEPENDENCIES) @rm -f paint-source-alpha$(EXEEXT) - $(LINK) $(paint_source_alpha_LDFLAGS) $(paint_source_alpha_OBJECTS) $(paint_source_alpha_LDADD) $(LIBS) + $(LINK) $(paint_source_alpha_OBJECTS) $(paint_source_alpha_LDADD) $(LIBS) paint-with-alpha$(EXEEXT): $(paint_with_alpha_OBJECTS) $(paint_with_alpha_DEPENDENCIES) @rm -f paint-with-alpha$(EXEEXT) - $(LINK) $(paint_with_alpha_LDFLAGS) $(paint_with_alpha_OBJECTS) $(paint_with_alpha_LDADD) $(LIBS) + $(LINK) $(paint_with_alpha_OBJECTS) $(paint_with_alpha_LDADD) $(LIBS) pattern-get-type$(EXEEXT): $(pattern_get_type_OBJECTS) $(pattern_get_type_DEPENDENCIES) @rm -f pattern-get-type$(EXEEXT) - $(LINK) $(pattern_get_type_LDFLAGS) $(pattern_get_type_OBJECTS) $(pattern_get_type_LDADD) $(LIBS) + $(LINK) $(pattern_get_type_OBJECTS) $(pattern_get_type_LDADD) $(LIBS) pattern-getters$(EXEEXT): $(pattern_getters_OBJECTS) $(pattern_getters_DEPENDENCIES) @rm -f pattern-getters$(EXEEXT) - $(LINK) $(pattern_getters_LDFLAGS) $(pattern_getters_OBJECTS) $(pattern_getters_LDADD) $(LIBS) + $(LINK) $(pattern_getters_OBJECTS) $(pattern_getters_LDADD) $(LIBS) pdf-features$(EXEEXT): $(pdf_features_OBJECTS) $(pdf_features_DEPENDENCIES) @rm -f pdf-features$(EXEEXT) - $(LINK) $(pdf_features_LDFLAGS) $(pdf_features_OBJECTS) $(pdf_features_LDADD) $(LIBS) + $(LINK) $(pdf_features_OBJECTS) $(pdf_features_LDADD) $(LIBS) +pdf-surface-source$(EXEEXT): $(pdf_surface_source_OBJECTS) $(pdf_surface_source_DEPENDENCIES) + @rm -f pdf-surface-source$(EXEEXT) + $(LINK) $(pdf_surface_source_OBJECTS) $(pdf_surface_source_LDADD) $(LIBS) pdf2png$(EXEEXT): $(pdf2png_OBJECTS) $(pdf2png_DEPENDENCIES) @rm -f pdf2png$(EXEEXT) - $(LINK) $(pdf2png_LDFLAGS) $(pdf2png_OBJECTS) $(pdf2png_LDADD) $(LIBS) + $(pdf2png_LINK) $(pdf2png_OBJECTS) $(pdf2png_LDADD) $(LIBS) pixman-rotate$(EXEEXT): $(pixman_rotate_OBJECTS) $(pixman_rotate_DEPENDENCIES) @rm -f pixman-rotate$(EXEEXT) - $(LINK) $(pixman_rotate_LDFLAGS) $(pixman_rotate_OBJECTS) $(pixman_rotate_LDADD) $(LIBS) + $(LINK) $(pixman_rotate_OBJECTS) $(pixman_rotate_LDADD) $(LIBS) +png$(EXEEXT): $(png_OBJECTS) $(png_DEPENDENCIES) + @rm -f png$(EXEEXT) + $(png_LINK) $(png_OBJECTS) $(png_LDADD) $(LIBS) png-flatten$(EXEEXT): $(png_flatten_OBJECTS) $(png_flatten_DEPENDENCIES) @rm -f png-flatten$(EXEEXT) - $(LINK) $(png_flatten_LDFLAGS) $(png_flatten_OBJECTS) $(png_flatten_LDADD) $(LIBS) + $(LINK) $(png_flatten_OBJECTS) $(png_flatten_LDADD) $(LIBS) ps-features$(EXEEXT): $(ps_features_OBJECTS) $(ps_features_DEPENDENCIES) @rm -f ps-features$(EXEEXT) - $(LINK) $(ps_features_LDFLAGS) $(ps_features_OBJECTS) $(ps_features_LDADD) $(LIBS) + $(LINK) $(ps_features_OBJECTS) $(ps_features_LDADD) $(LIBS) +ps-surface-source$(EXEEXT): $(ps_surface_source_OBJECTS) $(ps_surface_source_DEPENDENCIES) + @rm -f ps-surface-source$(EXEEXT) + $(LINK) $(ps_surface_source_OBJECTS) $(ps_surface_source_LDADD) $(LIBS) pthread-show-text$(EXEEXT): $(pthread_show_text_OBJECTS) $(pthread_show_text_DEPENDENCIES) @rm -f pthread-show-text$(EXEEXT) - $(LINK) $(pthread_show_text_LDFLAGS) $(pthread_show_text_OBJECTS) $(pthread_show_text_LDADD) $(LIBS) + $(LINK) $(pthread_show_text_OBJECTS) $(pthread_show_text_LDADD) $(LIBS) push-group$(EXEEXT): $(push_group_OBJECTS) $(push_group_DEPENDENCIES) @rm -f push-group$(EXEEXT) - $(LINK) $(push_group_LDFLAGS) $(push_group_OBJECTS) $(push_group_LDADD) $(LIBS) + $(LINK) $(push_group_OBJECTS) $(push_group_LDADD) $(LIBS) radial-gradient$(EXEEXT): $(radial_gradient_OBJECTS) $(radial_gradient_DEPENDENCIES) @rm -f radial-gradient$(EXEEXT) - $(LINK) $(radial_gradient_LDFLAGS) $(radial_gradient_OBJECTS) $(radial_gradient_LDADD) $(LIBS) + $(LINK) $(radial_gradient_OBJECTS) $(radial_gradient_LDADD) $(LIBS) random-intersections$(EXEEXT): $(random_intersections_OBJECTS) $(random_intersections_DEPENDENCIES) @rm -f random-intersections$(EXEEXT) - $(LINK) $(random_intersections_LDFLAGS) $(random_intersections_OBJECTS) $(random_intersections_LDADD) $(LIBS) + $(LINK) $(random_intersections_OBJECTS) $(random_intersections_LDADD) $(LIBS) rectangle-rounding-error$(EXEEXT): $(rectangle_rounding_error_OBJECTS) $(rectangle_rounding_error_DEPENDENCIES) @rm -f rectangle-rounding-error$(EXEEXT) - $(LINK) $(rectangle_rounding_error_LDFLAGS) $(rectangle_rounding_error_OBJECTS) $(rectangle_rounding_error_LDADD) $(LIBS) + $(LINK) $(rectangle_rounding_error_OBJECTS) $(rectangle_rounding_error_LDADD) $(LIBS) rectilinear-miter-limit$(EXEEXT): $(rectilinear_miter_limit_OBJECTS) $(rectilinear_miter_limit_DEPENDENCIES) @rm -f rectilinear-miter-limit$(EXEEXT) - $(LINK) $(rectilinear_miter_limit_LDFLAGS) $(rectilinear_miter_limit_OBJECTS) $(rectilinear_miter_limit_LDADD) $(LIBS) + $(LINK) $(rectilinear_miter_limit_OBJECTS) $(rectilinear_miter_limit_LDADD) $(LIBS) rectilinear-stroke$(EXEEXT): $(rectilinear_stroke_OBJECTS) $(rectilinear_stroke_DEPENDENCIES) @rm -f rectilinear-stroke$(EXEEXT) - $(LINK) $(rectilinear_stroke_LDFLAGS) $(rectilinear_stroke_OBJECTS) $(rectilinear_stroke_LDADD) $(LIBS) + $(LINK) $(rectilinear_stroke_OBJECTS) $(rectilinear_stroke_LDADD) $(LIBS) +reflected-stroke$(EXEEXT): $(reflected_stroke_OBJECTS) $(reflected_stroke_DEPENDENCIES) + @rm -f reflected-stroke$(EXEEXT) + $(LINK) $(reflected_stroke_OBJECTS) $(reflected_stroke_LDADD) $(LIBS) rel-path$(EXEEXT): $(rel_path_OBJECTS) $(rel_path_DEPENDENCIES) @rm -f rel-path$(EXEEXT) - $(LINK) $(rel_path_LDFLAGS) $(rel_path_OBJECTS) $(rel_path_LDADD) $(LIBS) + $(LINK) $(rel_path_OBJECTS) $(rel_path_LDADD) $(LIBS) rgb24-ignore-alpha$(EXEEXT): $(rgb24_ignore_alpha_OBJECTS) $(rgb24_ignore_alpha_DEPENDENCIES) @rm -f rgb24-ignore-alpha$(EXEEXT) - $(LINK) $(rgb24_ignore_alpha_LDFLAGS) $(rgb24_ignore_alpha_OBJECTS) $(rgb24_ignore_alpha_LDADD) $(LIBS) + $(LINK) $(rgb24_ignore_alpha_OBJECTS) $(rgb24_ignore_alpha_LDADD) $(LIBS) rotate-image-surface-paint$(EXEEXT): $(rotate_image_surface_paint_OBJECTS) $(rotate_image_surface_paint_DEPENDENCIES) @rm -f rotate-image-surface-paint$(EXEEXT) - $(LINK) $(rotate_image_surface_paint_LDFLAGS) $(rotate_image_surface_paint_OBJECTS) $(rotate_image_surface_paint_LDADD) $(LIBS) + $(LINK) $(rotate_image_surface_paint_OBJECTS) $(rotate_image_surface_paint_LDADD) $(LIBS) scale-down-source-surface-paint$(EXEEXT): $(scale_down_source_surface_paint_OBJECTS) $(scale_down_source_surface_paint_DEPENDENCIES) @rm -f scale-down-source-surface-paint$(EXEEXT) - $(LINK) $(scale_down_source_surface_paint_LDFLAGS) $(scale_down_source_surface_paint_OBJECTS) $(scale_down_source_surface_paint_LDADD) $(LIBS) + $(LINK) $(scale_down_source_surface_paint_OBJECTS) $(scale_down_source_surface_paint_LDADD) $(LIBS) scale-source-surface-paint$(EXEEXT): $(scale_source_surface_paint_OBJECTS) $(scale_source_surface_paint_DEPENDENCIES) @rm -f scale-source-surface-paint$(EXEEXT) - $(LINK) $(scale_source_surface_paint_LDFLAGS) $(scale_source_surface_paint_OBJECTS) $(scale_source_surface_paint_LDADD) $(LIBS) + $(LINK) $(scale_source_surface_paint_OBJECTS) $(scale_source_surface_paint_LDADD) $(LIBS) select-font-face$(EXEEXT): $(select_font_face_OBJECTS) $(select_font_face_DEPENDENCIES) @rm -f select-font-face$(EXEEXT) - $(LINK) $(select_font_face_LDFLAGS) $(select_font_face_OBJECTS) $(select_font_face_LDADD) $(LIBS) + $(LINK) $(select_font_face_OBJECTS) $(select_font_face_LDADD) $(LIBS) select-font-no-show-text$(EXEEXT): $(select_font_no_show_text_OBJECTS) $(select_font_no_show_text_DEPENDENCIES) @rm -f select-font-no-show-text$(EXEEXT) - $(LINK) $(select_font_no_show_text_LDFLAGS) $(select_font_no_show_text_OBJECTS) $(select_font_no_show_text_LDADD) $(LIBS) + $(LINK) $(select_font_no_show_text_OBJECTS) $(select_font_no_show_text_LDADD) $(LIBS) self-copy$(EXEEXT): $(self_copy_OBJECTS) $(self_copy_DEPENDENCIES) @rm -f self-copy$(EXEEXT) - $(LINK) $(self_copy_LDFLAGS) $(self_copy_OBJECTS) $(self_copy_LDADD) $(LIBS) + $(LINK) $(self_copy_OBJECTS) $(self_copy_LDADD) $(LIBS) self-intersecting$(EXEEXT): $(self_intersecting_OBJECTS) $(self_intersecting_DEPENDENCIES) @rm -f self-intersecting$(EXEEXT) - $(LINK) $(self_intersecting_LDFLAGS) $(self_intersecting_OBJECTS) $(self_intersecting_LDADD) $(LIBS) + $(LINK) $(self_intersecting_OBJECTS) $(self_intersecting_LDADD) $(LIBS) set-source$(EXEEXT): $(set_source_OBJECTS) $(set_source_DEPENDENCIES) @rm -f set-source$(EXEEXT) - $(LINK) $(set_source_LDFLAGS) $(set_source_OBJECTS) $(set_source_LDADD) $(LIBS) + $(LINK) $(set_source_OBJECTS) $(set_source_LDADD) $(LIBS) show-glyphs-many$(EXEEXT): $(show_glyphs_many_OBJECTS) $(show_glyphs_many_DEPENDENCIES) @rm -f show-glyphs-many$(EXEEXT) - $(LINK) $(show_glyphs_many_LDFLAGS) $(show_glyphs_many_OBJECTS) $(show_glyphs_many_LDADD) $(LIBS) + $(LINK) $(show_glyphs_many_OBJECTS) $(show_glyphs_many_LDADD) $(LIBS) show-text-current-point$(EXEEXT): $(show_text_current_point_OBJECTS) $(show_text_current_point_DEPENDENCIES) @rm -f show-text-current-point$(EXEEXT) - $(LINK) $(show_text_current_point_LDFLAGS) $(show_text_current_point_OBJECTS) $(show_text_current_point_LDADD) $(LIBS) + $(LINK) $(show_text_current_point_OBJECTS) $(show_text_current_point_LDADD) $(LIBS) skew-extreme$(EXEEXT): $(skew_extreme_OBJECTS) $(skew_extreme_DEPENDENCIES) @rm -f skew-extreme$(EXEEXT) - $(LINK) $(skew_extreme_LDFLAGS) $(skew_extreme_OBJECTS) $(skew_extreme_LDADD) $(LIBS) + $(LINK) $(skew_extreme_OBJECTS) $(skew_extreme_LDADD) $(LIBS) +smask$(EXEEXT): $(smask_OBJECTS) $(smask_DEPENDENCIES) + @rm -f smask$(EXEEXT) + $(LINK) $(smask_OBJECTS) $(smask_LDADD) $(LIBS) +smask-fill$(EXEEXT): $(smask_fill_OBJECTS) $(smask_fill_DEPENDENCIES) + @rm -f smask-fill$(EXEEXT) + $(LINK) $(smask_fill_OBJECTS) $(smask_fill_LDADD) $(LIBS) +smask-image-mask$(EXEEXT): $(smask_image_mask_OBJECTS) $(smask_image_mask_DEPENDENCIES) + @rm -f smask-image-mask$(EXEEXT) + $(LINK) $(smask_image_mask_OBJECTS) $(smask_image_mask_LDADD) $(LIBS) +smask-mask$(EXEEXT): $(smask_mask_OBJECTS) $(smask_mask_DEPENDENCIES) + @rm -f smask-mask$(EXEEXT) + $(LINK) $(smask_mask_OBJECTS) $(smask_mask_LDADD) $(LIBS) +smask-paint$(EXEEXT): $(smask_paint_OBJECTS) $(smask_paint_DEPENDENCIES) + @rm -f smask-paint$(EXEEXT) + $(LINK) $(smask_paint_OBJECTS) $(smask_paint_LDADD) $(LIBS) +smask-stroke$(EXEEXT): $(smask_stroke_OBJECTS) $(smask_stroke_DEPENDENCIES) + @rm -f smask-stroke$(EXEEXT) + $(LINK) $(smask_stroke_OBJECTS) $(smask_stroke_LDADD) $(LIBS) +smask-text$(EXEEXT): $(smask_text_OBJECTS) $(smask_text_DEPENDENCIES) + @rm -f smask-text$(EXEEXT) + $(LINK) $(smask_text_OBJECTS) $(smask_text_LDADD) $(LIBS) solid-pattern-cache-stress$(EXEEXT): $(solid_pattern_cache_stress_OBJECTS) $(solid_pattern_cache_stress_DEPENDENCIES) @rm -f solid-pattern-cache-stress$(EXEEXT) - $(LINK) $(solid_pattern_cache_stress_LDFLAGS) $(solid_pattern_cache_stress_OBJECTS) $(solid_pattern_cache_stress_LDADD) $(LIBS) + $(LINK) $(solid_pattern_cache_stress_OBJECTS) $(solid_pattern_cache_stress_LDADD) $(LIBS) source-clip$(EXEEXT): $(source_clip_OBJECTS) $(source_clip_DEPENDENCIES) @rm -f source-clip$(EXEEXT) - $(LINK) $(source_clip_LDFLAGS) $(source_clip_OBJECTS) $(source_clip_LDADD) $(LIBS) + $(LINK) $(source_clip_OBJECTS) $(source_clip_LDADD) $(LIBS) source-clip-scale$(EXEEXT): $(source_clip_scale_OBJECTS) $(source_clip_scale_DEPENDENCIES) @rm -f source-clip-scale$(EXEEXT) - $(LINK) $(source_clip_scale_LDFLAGS) $(source_clip_scale_OBJECTS) $(source_clip_scale_LDADD) $(LIBS) + $(LINK) $(source_clip_scale_OBJECTS) $(source_clip_scale_LDADD) $(LIBS) source-surface-scale-paint$(EXEEXT): $(source_surface_scale_paint_OBJECTS) $(source_surface_scale_paint_DEPENDENCIES) @rm -f source-surface-scale-paint$(EXEEXT) - $(LINK) $(source_surface_scale_paint_LDFLAGS) $(source_surface_scale_paint_OBJECTS) $(source_surface_scale_paint_LDADD) $(LIBS) + $(LINK) $(source_surface_scale_paint_OBJECTS) $(source_surface_scale_paint_LDADD) $(LIBS) +stroke-ctm-caps$(EXEEXT): $(stroke_ctm_caps_OBJECTS) $(stroke_ctm_caps_DEPENDENCIES) + @rm -f stroke-ctm-caps$(EXEEXT) + $(LINK) $(stroke_ctm_caps_OBJECTS) $(stroke_ctm_caps_LDADD) $(LIBS) +stroke-image$(EXEEXT): $(stroke_image_OBJECTS) $(stroke_image_DEPENDENCIES) + @rm -f stroke-image$(EXEEXT) + $(LINK) $(stroke_image_OBJECTS) $(stroke_image_LDADD) $(LIBS) surface-finish-twice$(EXEEXT): $(surface_finish_twice_OBJECTS) $(surface_finish_twice_DEPENDENCIES) @rm -f surface-finish-twice$(EXEEXT) - $(LINK) $(surface_finish_twice_LDFLAGS) $(surface_finish_twice_OBJECTS) $(surface_finish_twice_LDADD) $(LIBS) + $(LINK) $(surface_finish_twice_OBJECTS) $(surface_finish_twice_LDADD) $(LIBS) surface-pattern$(EXEEXT): $(surface_pattern_OBJECTS) $(surface_pattern_DEPENDENCIES) @rm -f surface-pattern$(EXEEXT) - $(LINK) $(surface_pattern_LDFLAGS) $(surface_pattern_OBJECTS) $(surface_pattern_LDADD) $(LIBS) + $(LINK) $(surface_pattern_OBJECTS) $(surface_pattern_LDADD) $(LIBS) surface-pattern-big-scale-down$(EXEEXT): $(surface_pattern_big_scale_down_OBJECTS) $(surface_pattern_big_scale_down_DEPENDENCIES) @rm -f surface-pattern-big-scale-down$(EXEEXT) - $(LINK) $(surface_pattern_big_scale_down_LDFLAGS) $(surface_pattern_big_scale_down_OBJECTS) $(surface_pattern_big_scale_down_LDADD) $(LIBS) + $(LINK) $(surface_pattern_big_scale_down_OBJECTS) $(surface_pattern_big_scale_down_LDADD) $(LIBS) surface-pattern-scale-down$(EXEEXT): $(surface_pattern_scale_down_OBJECTS) $(surface_pattern_scale_down_DEPENDENCIES) @rm -f surface-pattern-scale-down$(EXEEXT) - $(LINK) $(surface_pattern_scale_down_LDFLAGS) $(surface_pattern_scale_down_OBJECTS) $(surface_pattern_scale_down_LDADD) $(LIBS) + $(LINK) $(surface_pattern_scale_down_OBJECTS) $(surface_pattern_scale_down_LDADD) $(LIBS) surface-pattern-scale-up$(EXEEXT): $(surface_pattern_scale_up_OBJECTS) $(surface_pattern_scale_up_DEPENDENCIES) @rm -f surface-pattern-scale-up$(EXEEXT) - $(LINK) $(surface_pattern_scale_up_LDFLAGS) $(surface_pattern_scale_up_OBJECTS) $(surface_pattern_scale_up_LDADD) $(LIBS) + $(LINK) $(surface_pattern_scale_up_OBJECTS) $(surface_pattern_scale_up_LDADD) $(LIBS) svg-clip$(EXEEXT): $(svg_clip_OBJECTS) $(svg_clip_DEPENDENCIES) @rm -f svg-clip$(EXEEXT) - $(LINK) $(svg_clip_LDFLAGS) $(svg_clip_OBJECTS) $(svg_clip_LDADD) $(LIBS) + $(LINK) $(svg_clip_OBJECTS) $(svg_clip_LDADD) $(LIBS) svg-surface$(EXEEXT): $(svg_surface_OBJECTS) $(svg_surface_DEPENDENCIES) @rm -f svg-surface$(EXEEXT) - $(LINK) $(svg_surface_LDFLAGS) $(svg_surface_OBJECTS) $(svg_surface_LDADD) $(LIBS) + $(LINK) $(svg_surface_OBJECTS) $(svg_surface_LDADD) $(LIBS) +svg-surface-source$(EXEEXT): $(svg_surface_source_OBJECTS) $(svg_surface_source_DEPENDENCIES) + @rm -f svg-surface-source$(EXEEXT) + $(LINK) $(svg_surface_source_OBJECTS) $(svg_surface_source_LDADD) $(LIBS) svg2png$(EXEEXT): $(svg2png_OBJECTS) $(svg2png_DEPENDENCIES) @rm -f svg2png$(EXEEXT) - $(LINK) $(svg2png_LDFLAGS) $(svg2png_OBJECTS) $(svg2png_LDADD) $(LIBS) + $(svg2png_LINK) $(svg2png_OBJECTS) $(svg2png_LDADD) $(LIBS) text-antialias-gray$(EXEEXT): $(text_antialias_gray_OBJECTS) $(text_antialias_gray_DEPENDENCIES) @rm -f text-antialias-gray$(EXEEXT) - $(LINK) $(text_antialias_gray_LDFLAGS) $(text_antialias_gray_OBJECTS) $(text_antialias_gray_LDADD) $(LIBS) + $(LINK) $(text_antialias_gray_OBJECTS) $(text_antialias_gray_LDADD) $(LIBS) text-antialias-none$(EXEEXT): $(text_antialias_none_OBJECTS) $(text_antialias_none_DEPENDENCIES) @rm -f text-antialias-none$(EXEEXT) - $(LINK) $(text_antialias_none_LDFLAGS) $(text_antialias_none_OBJECTS) $(text_antialias_none_LDADD) $(LIBS) + $(LINK) $(text_antialias_none_OBJECTS) $(text_antialias_none_LDADD) $(LIBS) text-antialias-subpixel$(EXEEXT): $(text_antialias_subpixel_OBJECTS) $(text_antialias_subpixel_DEPENDENCIES) @rm -f text-antialias-subpixel$(EXEEXT) - $(LINK) $(text_antialias_subpixel_LDFLAGS) $(text_antialias_subpixel_OBJECTS) $(text_antialias_subpixel_LDADD) $(LIBS) + $(LINK) $(text_antialias_subpixel_OBJECTS) $(text_antialias_subpixel_LDADD) $(LIBS) text-cache-crash$(EXEEXT): $(text_cache_crash_OBJECTS) $(text_cache_crash_DEPENDENCIES) @rm -f text-cache-crash$(EXEEXT) - $(LINK) $(text_cache_crash_LDFLAGS) $(text_cache_crash_OBJECTS) $(text_cache_crash_LDADD) $(LIBS) + $(LINK) $(text_cache_crash_OBJECTS) $(text_cache_crash_LDADD) $(LIBS) text-glyph-range$(EXEEXT): $(text_glyph_range_OBJECTS) $(text_glyph_range_DEPENDENCIES) @rm -f text-glyph-range$(EXEEXT) - $(LINK) $(text_glyph_range_LDFLAGS) $(text_glyph_range_OBJECTS) $(text_glyph_range_LDADD) $(LIBS) + $(LINK) $(text_glyph_range_OBJECTS) $(text_glyph_range_LDADD) $(LIBS) text-pattern$(EXEEXT): $(text_pattern_OBJECTS) $(text_pattern_DEPENDENCIES) @rm -f text-pattern$(EXEEXT) - $(LINK) $(text_pattern_LDFLAGS) $(text_pattern_OBJECTS) $(text_pattern_LDADD) $(LIBS) + $(LINK) $(text_pattern_OBJECTS) $(text_pattern_LDADD) $(LIBS) text-rotate$(EXEEXT): $(text_rotate_OBJECTS) $(text_rotate_DEPENDENCIES) @rm -f text-rotate$(EXEEXT) - $(LINK) $(text_rotate_LDFLAGS) $(text_rotate_OBJECTS) $(text_rotate_LDADD) $(LIBS) + $(LINK) $(text_rotate_OBJECTS) $(text_rotate_LDADD) $(LIBS) +text-transform$(EXEEXT): $(text_transform_OBJECTS) $(text_transform_DEPENDENCIES) + @rm -f text-transform$(EXEEXT) + $(LINK) $(text_transform_OBJECTS) $(text_transform_LDADD) $(LIBS) text-zero-len$(EXEEXT): $(text_zero_len_OBJECTS) $(text_zero_len_DEPENDENCIES) @rm -f text-zero-len$(EXEEXT) - $(LINK) $(text_zero_len_LDFLAGS) $(text_zero_len_OBJECTS) $(text_zero_len_LDADD) $(LIBS) + $(LINK) $(text_zero_len_OBJECTS) $(text_zero_len_LDADD) $(LIBS) transforms$(EXEEXT): $(transforms_OBJECTS) $(transforms_DEPENDENCIES) @rm -f transforms$(EXEEXT) - $(LINK) $(transforms_LDFLAGS) $(transforms_OBJECTS) $(transforms_LDADD) $(LIBS) + $(LINK) $(transforms_OBJECTS) $(transforms_LDADD) $(LIBS) translate-show-surface$(EXEEXT): $(translate_show_surface_OBJECTS) $(translate_show_surface_DEPENDENCIES) @rm -f translate-show-surface$(EXEEXT) - $(LINK) $(translate_show_surface_LDFLAGS) $(translate_show_surface_OBJECTS) $(translate_show_surface_LDADD) $(LIBS) + $(LINK) $(translate_show_surface_OBJECTS) $(translate_show_surface_LDADD) $(LIBS) trap-clip$(EXEEXT): $(trap_clip_OBJECTS) $(trap_clip_DEPENDENCIES) @rm -f trap-clip$(EXEEXT) - $(LINK) $(trap_clip_LDFLAGS) $(trap_clip_OBJECTS) $(trap_clip_LDADD) $(LIBS) + $(LINK) $(trap_clip_OBJECTS) $(trap_clip_LDADD) $(LIBS) truetype-tables$(EXEEXT): $(truetype_tables_OBJECTS) $(truetype_tables_DEPENDENCIES) @rm -f truetype-tables$(EXEEXT) - $(LINK) $(truetype_tables_LDFLAGS) $(truetype_tables_OBJECTS) $(truetype_tables_LDADD) $(LIBS) + $(LINK) $(truetype_tables_OBJECTS) $(truetype_tables_LDADD) $(LIBS) unantialiased-shapes$(EXEEXT): $(unantialiased_shapes_OBJECTS) $(unantialiased_shapes_DEPENDENCIES) @rm -f unantialiased-shapes$(EXEEXT) - $(LINK) $(unantialiased_shapes_LDFLAGS) $(unantialiased_shapes_OBJECTS) $(unantialiased_shapes_LDADD) $(LIBS) + $(LINK) $(unantialiased_shapes_OBJECTS) $(unantialiased_shapes_LDADD) $(LIBS) unbounded-operator$(EXEEXT): $(unbounded_operator_OBJECTS) $(unbounded_operator_DEPENDENCIES) @rm -f unbounded-operator$(EXEEXT) - $(LINK) $(unbounded_operator_LDFLAGS) $(unbounded_operator_OBJECTS) $(unbounded_operator_LDADD) $(LIBS) + $(LINK) $(unbounded_operator_OBJECTS) $(unbounded_operator_LDADD) $(LIBS) user-data$(EXEEXT): $(user_data_OBJECTS) $(user_data_DEPENDENCIES) @rm -f user-data$(EXEEXT) - $(LINK) $(user_data_LDFLAGS) $(user_data_OBJECTS) $(user_data_LDADD) $(LIBS) + $(LINK) $(user_data_OBJECTS) $(user_data_LDADD) $(LIBS) xlib-surface$(EXEEXT): $(xlib_surface_OBJECTS) $(xlib_surface_DEPENDENCIES) @rm -f xlib-surface$(EXEEXT) - $(LINK) $(xlib_surface_LDFLAGS) $(xlib_surface_OBJECTS) $(xlib_surface_LDADD) $(LIBS) + $(LINK) $(xlib_surface_OBJECTS) $(xlib_surface_LDADD) $(LIBS) +xlib-surface-source$(EXEEXT): $(xlib_surface_source_OBJECTS) $(xlib_surface_source_DEPENDENCIES) + @rm -f xlib-surface-source$(EXEEXT) + $(LINK) $(xlib_surface_source_OBJECTS) $(xlib_surface_source_LDADD) $(LIBS) zero-alpha$(EXEEXT): $(zero_alpha_OBJECTS) $(zero_alpha_DEPENDENCIES) @rm -f zero-alpha$(EXEEXT) - $(LINK) $(zero_alpha_LDFLAGS) $(zero_alpha_OBJECTS) $(zero_alpha_LDADD) $(LIBS) + $(LINK) $(zero_alpha_OBJECTS) $(zero_alpha_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -2328,9 +2587,12 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1-image-sample.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1-mask.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1-traps-sample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a8-mask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/big-line.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/big-trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bilevel-image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitmap-font.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer-diff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-test.Plo@am__quote@ @@ -2377,11 +2639,15 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fill-degenerate-sort-order.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fill-missed-stop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fill-rule.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-bilinear-extents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-nearest-offset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finer-grained-fallbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font-face-get-type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font-matrix-translation.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font-options.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-font-create-for-ft-face.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-show-glyphs-positioning.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-show-glyphs-table.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-text-antialias-none.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-text-vertical-layout-type1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ft-text-vertical-layout-type3.Po@am__quote@ @@ -2390,14 +2656,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-group-target.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-path-extents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-xrender-format.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glitz-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glyph-cache-pressure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gradient-alpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gradient-zero-stops.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imagediff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/in-fill-empty-trapezoid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/in-fill-trapezoid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infinite-join.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invalid-matrix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leaky-dash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leaky-polygon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/line-width-scale.Po@am__quote@ @@ -2405,6 +2674,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/line-width.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear-gradient-reflect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear-gradient.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-dashed-lines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-lines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask-alpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask-ctm.Po@am__quote@ @@ -2429,10 +2699,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern-get-type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern-getters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdf-features.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdf-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdf2png-pdf2png.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-rotate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/png-flatten.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/png-png.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ps-features.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ps-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pthread-show-text.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/push-group.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radial-gradient.Po@am__quote@ @@ -2440,6 +2713,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rectangle-rounding-error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rectilinear-miter-limit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rectilinear-stroke.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reflected-stroke.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rel-path.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rgb24-ignore-alpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rotate-image-surface-paint.Po@am__quote@ @@ -2453,16 +2727,26 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-glyphs-many.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-text-current-point.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skew-extreme.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-fill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-image-mask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-mask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-paint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-stroke.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask-text.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smask.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solid-pattern-cache-stress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/source-clip-scale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/source-clip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/source-surface-scale-paint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stroke-ctm-caps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stroke-image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface-finish-twice.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface-pattern-big-scale-down.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface-pattern-scale-down.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface-pattern-scale-up.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svg-clip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svg-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svg-surface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svg2png-svg2png.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-antialias-gray.Po@am__quote@ @@ -2472,6 +2756,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-glyph-range.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-rotate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-transform.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-zero-len.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transforms.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/translate-show-surface.Po@am__quote@ @@ -2480,54 +2765,69 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unantialiased-shapes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unbounded-operator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user-data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xlib-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xlib-surface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zero-alpha.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< pdf2png-pdf2png.o: pdf2png.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -MT pdf2png-pdf2png.o -MD -MP -MF "$(DEPDIR)/pdf2png-pdf2png.Tpo" -c -o pdf2png-pdf2png.o `test -f 'pdf2png.c' || echo '$(srcdir)/'`pdf2png.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pdf2png-pdf2png.Tpo" "$(DEPDIR)/pdf2png-pdf2png.Po"; else rm -f "$(DEPDIR)/pdf2png-pdf2png.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -MT pdf2png-pdf2png.o -MD -MP -MF $(DEPDIR)/pdf2png-pdf2png.Tpo -c -o pdf2png-pdf2png.o `test -f 'pdf2png.c' || echo '$(srcdir)/'`pdf2png.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/pdf2png-pdf2png.Tpo $(DEPDIR)/pdf2png-pdf2png.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pdf2png.c' object='pdf2png-pdf2png.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -c -o pdf2png-pdf2png.o `test -f 'pdf2png.c' || echo '$(srcdir)/'`pdf2png.c pdf2png-pdf2png.obj: pdf2png.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -MT pdf2png-pdf2png.obj -MD -MP -MF "$(DEPDIR)/pdf2png-pdf2png.Tpo" -c -o pdf2png-pdf2png.obj `if test -f 'pdf2png.c'; then $(CYGPATH_W) 'pdf2png.c'; else $(CYGPATH_W) '$(srcdir)/pdf2png.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pdf2png-pdf2png.Tpo" "$(DEPDIR)/pdf2png-pdf2png.Po"; else rm -f "$(DEPDIR)/pdf2png-pdf2png.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -MT pdf2png-pdf2png.obj -MD -MP -MF $(DEPDIR)/pdf2png-pdf2png.Tpo -c -o pdf2png-pdf2png.obj `if test -f 'pdf2png.c'; then $(CYGPATH_W) 'pdf2png.c'; else $(CYGPATH_W) '$(srcdir)/pdf2png.c'; fi` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/pdf2png-pdf2png.Tpo $(DEPDIR)/pdf2png-pdf2png.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pdf2png.c' object='pdf2png-pdf2png.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdf2png_CFLAGS) $(CFLAGS) -c -o pdf2png-pdf2png.obj `if test -f 'pdf2png.c'; then $(CYGPATH_W) 'pdf2png.c'; else $(CYGPATH_W) '$(srcdir)/pdf2png.c'; fi` +png-png.o: png.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png_CFLAGS) $(CFLAGS) -MT png-png.o -MD -MP -MF $(DEPDIR)/png-png.Tpo -c -o png-png.o `test -f 'png.c' || echo '$(srcdir)/'`png.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/png-png.Tpo $(DEPDIR)/png-png.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='png.c' object='png-png.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png_CFLAGS) $(CFLAGS) -c -o png-png.o `test -f 'png.c' || echo '$(srcdir)/'`png.c + +png-png.obj: png.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png_CFLAGS) $(CFLAGS) -MT png-png.obj -MD -MP -MF $(DEPDIR)/png-png.Tpo -c -o png-png.obj `if test -f 'png.c'; then $(CYGPATH_W) 'png.c'; else $(CYGPATH_W) '$(srcdir)/png.c'; fi` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/png-png.Tpo $(DEPDIR)/png-png.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='png.c' object='png-png.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(png_CFLAGS) $(CFLAGS) -c -o png-png.obj `if test -f 'png.c'; then $(CYGPATH_W) 'png.c'; else $(CYGPATH_W) '$(srcdir)/png.c'; fi` + svg2png-svg2png.o: svg2png.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -MT svg2png-svg2png.o -MD -MP -MF "$(DEPDIR)/svg2png-svg2png.Tpo" -c -o svg2png-svg2png.o `test -f 'svg2png.c' || echo '$(srcdir)/'`svg2png.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/svg2png-svg2png.Tpo" "$(DEPDIR)/svg2png-svg2png.Po"; else rm -f "$(DEPDIR)/svg2png-svg2png.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -MT svg2png-svg2png.o -MD -MP -MF $(DEPDIR)/svg2png-svg2png.Tpo -c -o svg2png-svg2png.o `test -f 'svg2png.c' || echo '$(srcdir)/'`svg2png.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/svg2png-svg2png.Tpo $(DEPDIR)/svg2png-svg2png.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='svg2png.c' object='svg2png-svg2png.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -c -o svg2png-svg2png.o `test -f 'svg2png.c' || echo '$(srcdir)/'`svg2png.c svg2png-svg2png.obj: svg2png.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -MT svg2png-svg2png.obj -MD -MP -MF "$(DEPDIR)/svg2png-svg2png.Tpo" -c -o svg2png-svg2png.obj `if test -f 'svg2png.c'; then $(CYGPATH_W) 'svg2png.c'; else $(CYGPATH_W) '$(srcdir)/svg2png.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/svg2png-svg2png.Tpo" "$(DEPDIR)/svg2png-svg2png.Po"; else rm -f "$(DEPDIR)/svg2png-svg2png.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -MT svg2png-svg2png.obj -MD -MP -MF $(DEPDIR)/svg2png-svg2png.Tpo -c -o svg2png-svg2png.obj `if test -f 'svg2png.c'; then $(CYGPATH_W) 'svg2png.c'; else $(CYGPATH_W) '$(srcdir)/svg2png.c'; fi` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/svg2png-svg2png.Tpo $(DEPDIR)/svg2png-svg2png.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='svg2png.c' object='svg2png-svg2png.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(svg2png_CFLAGS) $(CFLAGS) -c -o svg2png-svg2png.obj `if test -f 'svg2png.c'; then $(CYGPATH_W) 'svg2png.c'; else $(CYGPATH_W) '$(srcdir)/svg2png.c'; fi` @@ -2538,10 +2838,6 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -2573,8 +2869,7 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -2618,8 +2913,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS @@ -2644,8 +2939,8 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ @@ -2655,13 +2950,12 @@ ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique @@ -2675,9 +2969,9 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ + list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ @@ -2686,7 +2980,7 @@ check-TESTS: $(TESTS) if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ @@ -2698,7 +2992,7 @@ check-TESTS: $(TESTS) elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ @@ -2748,22 +3042,21 @@ check-TESTS: $(TESTS) else :; fi distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ @@ -2777,7 +3070,7 @@ distdir: $(DISTFILES) list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ @@ -2785,6 +3078,8 @@ distdir: $(DISTFILES) $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ @@ -2830,7 +3125,7 @@ distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -2842,12 +3137,20 @@ info-am: install-data-am: +install-dvi: install-dvi-recursive + install-exec-am: +install-html: install-html-recursive + install-info: install-info-recursive install-man: +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -2868,28 +3171,31 @@ ps: ps-recursive ps-am: -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-TESTS \ - check-am check-local clean clean-checkPROGRAMS clean-generic \ - clean-libtool clean-local clean-recursive ctags \ - ctags-recursive distclean distclean-compile distclean-generic \ - distclean-libtool distclean-recursive distclean-tags distdir \ - dvi dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-strip \ +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-TESTS check-am check-local clean \ + clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + ctags ctags-recursive distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-info-am + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am # A hook that summarises the failures -check: AM_MAKEFLAGS+=-k +# We need to both force make to keep going after failures and to disable the +# jobserver (parallel builds). +check: AM_MAKEFLAGS+=-k -j1 check-local: @FAILED_TESTS=""; \ for t in $(TESTS:$(EXEEXT)=.log); do \ @@ -2899,10 +3205,33 @@ check-local: done; \ if test -n "$$FAILED_TESTS"; then \ echo "Failed tests:"; \ + surfaces=""; \ for t in $$FAILED_TESTS; do \ echo -n " $$t: "; \ grep -e '\<FAIL\>' $$t.log | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq | tr '\n' ' '; \ echo; \ + for s in `grep -e '\<FAIL\>' $$t.log | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq`; do \ + ss=`echo $$s | tr '-' '_'`; \ + tt=`echo $$t | tr '-' '_'`; \ + eval $$ss=\""$${!ss} $$tt"\"; \ + echo $$surfaces | grep $$ss >/dev/null || surfaces="$$surfaces $$ss"; \ + done; \ + done; \ + echo -n "Failures per surface - "; \ + first=""; \ + for s in $$surfaces; do \ + ss=`echo $$s | tr '_' '-'`; \ + test -n "$$first" && echo -n ", "; \ + cnt=`echo $${!s} | wc -w`; \ + echo -n "$$ss: $$cnt"; \ + first="false"; \ + done; \ + echo "."; \ + for s in $$surfaces; do \ + ss=`echo $$s | tr '_' '-'`; \ + cnt=`echo $${!s} | wc -w`; \ + echo -n " $$ss [$$cnt]: "; \ + echo $${!s} | tr '_' '-'; \ done; \ fi diff --git a/test/Makefile.win32 b/test/Makefile.win32 new file mode 100644 index 0000000..e8fea28 --- /dev/null +++ b/test/Makefile.win32 @@ -0,0 +1,139 @@ + +SUBMAKEFILE = 1 + +include ../Makefile.win32 + +CFLAGS += -I../src -I../boilerplate -I./pdiff + +LDFLAGS += ./pdiff/pdiff.lib ../src/$(CFG)/cairo-static.lib $(PIXMAN_LIBS) ../boilerplate/$(CFG)/boiler.lib $(EXE_LDFLAGS) + +TESTS = \ +a8-mask \ +caps-joins \ +caps-joins-alpha \ +caps-sub-paths \ +clip-all \ +clip-fill-rule \ +clip-fill-rule-pixel-aligned \ +clip-nesting \ +clip-operator \ +clip-twice \ +composite-integer-translate-source \ +composite-integer-translate-over \ +composite-integer-translate-over-repeat \ +create-for-stream \ +create-from-png \ +create-from-png-stream \ +dash-caps-joins \ +dash-no-dash \ +dash-offset-negative \ +dash-scale \ +dash-zero-length \ +degenerate-path \ +device-offset \ +device-offset-positive \ +extend-pad \ +extend-reflect \ +fill-and-stroke \ +fill-and-stroke-alpha \ +fill-and-stroke-alpha-add \ +fill-rule \ +filter-nearest-offset \ +font-face-get-type \ +font-matrix-translation \ +glyph-cache-pressure \ +get-and-set \ +get-clip \ +get-group-target \ +get-path-extents \ +gradient-alpha \ +leaky-dash \ +leaky-polygon \ +line-width \ +line-width-scale \ +linear-gradient \ +mask \ +mask-ctm \ +mask-surface-ctm \ +move-to-show-surface \ +new-sub-path \ +nil-surface \ +operator-clear \ +operator-source \ +paint \ +paint-source-alpha \ +paint-with-alpha \ +pattern-get-type \ +pattern-getters \ +pixman-rotate \ +rectangle-rounding-error \ +scale-source-surface-paint \ +select-font-face \ +select-font-no-show-text \ +self-copy \ +self-intersecting \ +set-source \ +show-text-current-point \ +source-clip \ +source-surface-scale-paint \ +surface-finish-twice \ +surface-pattern \ +text-antialias-gray \ +text-antialias-none \ +text-antialias-subpixel \ +text-cache-crash \ +text-pattern \ +text-rotate \ +transforms \ +translate-show-surface \ +trap-clip \ +unantialiased-shapes \ +unbounded-operator \ +user-data \ +rel-path \ +push-group \ +zero-alpha \ +$(NULL) + +TESTCORE_SOURCES = \ + cairo-test.c \ + buffer-diff.c \ + $(NULL) + +TEST_EXE = $(patsubst %, $(CFG)/%.exe, $(TESTS)) +# TEST_EXE = $(addsuffix .exe,$(TESTS)) + +all: $(TEST_EXE) + +$(CFG)/%.exe: %.c ./pdiff/pdiff.lib + @mkdir -p $(CFG) + @$(CC) $(CFLAGS) -Fe"$@" $< $(TESTCORE_SOURCES) -link $(LDFLAGS) + +./pdiff/pdiff.lib: + (cd pdiff ; $(MAKE) -f Makefile.win32) + +test: $(TEST_EXE) + @for exe in $(TEST_EXE) ; do \ + echo $$exe ; \ + ( ./$$exe || exit 0 ) ; \ + done + +html: + @echo Creating index.html... + @perl make-html.pl > index.html + +clean: + @rm -f $(CFG)/*.obj $(CFG)/*.dll $(CFG)/*.lib $(CFG)/*.pdb $(CFG)/*.ilk $(CFG)/*.exe || exit 0 + +inform: +ifneq ($(CFG),release) +ifneq ($(CFG),debug) + @echo "Invalid configuration "$(CFG)" specified." + @echo -n "You must specify a configuration when " + @echo "running make, e.g. make CFG=debug" + @echo + @echo -n "Possible choices for configuration are " + @echo "'release' and 'debug'" + @exit 1 +endif +endif diff --git a/test/README b/test/README index 840e1ad..a241d8a 100644 --- a/test/README +++ b/test/README @@ -1,8 +1,10 @@ Regression test suite for cairo. +How to use cairo's test suite +============================= Using this test should be as simple as running: - make check + make test assuming that the cairo distribution in the directory above has been configured and built. The test suite here goes through some effort to @@ -10,14 +12,17 @@ run against the locally compiled library rather than any installed version, but those efforts may fall short depending on the level of your libtool madness. -The test suite needs to be run before any code is committed and before -any release. Here are the rules governing the use of the suite: +The results of the test suite run are summarized in an index.html +file, which, when viewed in a web browser makes it quite easy to +visually see any failed renderings alongside the corresponding +reference image, (and a diff image as well). +The test suite needs to be run before any code is committed and before +any release. See below for hints and rules governing the use of the suite: Tailoring tests running ----------------------- - -There are some mechanisms to limit the tests run during "make check". +There are some mechanisms to limit the tests run during "make test". These come very handy when doing development, but should not be used to circumvent the "pass" requirements listed below. @@ -27,12 +32,86 @@ It should contain a (space-, comma-, etc-separated) list of backends to test. To limit the tests run, use the TESTS make variable, which should be a space-separated list of tests to run. For example: - make check TARGETS=image,ps TESTS="zero-alpha" + make test TARGETS=image,ps TESTS="zero-alpha" + +Another very handy mechanism when trying to fix bugs is: + + make retest + +This will re-run the test suite, but only on tests that failed on the +last run. So this is a much faster way of checking if changes actually +fix bugs rather than running the entire test suite again. + +Getting the elusive zero failures +--------------------------------- +It's generally been very difficult to achieve a test run with zero +failures. The difficulties stem from the various versions of the many +libraries that the test suite depends on, (it depends on a lot more +than cairo itself), as well as fonts and other system-specific +settings. If your system differs significantly from the system on +which the reference images were generated, then you will likely see +the test suite reporting "failures", (even if cairo is working just +fine). + +We are constantly working to reduce the number of variables that need +to be tweaked to get a clean run, (for example, by bundling fonts with +the test suite itself), and also working to more carefully document +the software configuration used to generate the reference images. + +Here are some of the relevant details: + + * Your system must have a copy of the Bitstream Vera font, (this is + a free software font that is often in a file named Vera.ttf). + + * Currently, you must be using a build of cairo using freetype + (cairo-ft) as the default font backend. Otherwise all tests + involving text are likely to fail. + + * To test the pdf backend, you will want the very latest version of + poppler as made available via git: + + git clone git://anongit.freedesktop.org/git/poppler/poppler + As of this writing, no released version of poppler contains all + the fixes you will need to avoid false negatives from the test + suite. + + * To test the ps backend, you will need ghostscript version 8.61. + +What if I can't make my system match? +------------------------------------- +For one reason or another, you may be unable to get a clean run of the +test suite even if cairo is working properly, (for example, you might +be on a system without freetype). In this case, it's still useful to +be able to determine if code changes you make to cairo result in any +regressions to the test suite. But it's hard to notice regressions if +there are many failures both before and after your changes. + +For this scenario, you can capture the output of a run of the test +suite before your changes, and then use the CAIRO_REF_DIR environment +variable to use that output as the reference images for a run after +your changes. The process looks like this: + + # Before code change there may be failures we don't care about + make test + + # Let's save those output images + mkdir /some/directory/ + cp test/*-out.png /some/directory/ + + # hack, hack, hack + + # Now to see if nothing changed: + CAIRO_REF_DIR=/some/directory/ make test + +Best practices for cairo developers +=================================== +If we all follow the guidelines below, then both the test suite and +cairo itself will stay much healthier, and we'll all have a lot more +fun hacking on cairo. Before committing ----------------- - All tests should return a result of PASS or XFAIL. The XFAIL results indicate known bugs. The final message should be one of the following: @@ -42,7 +121,6 @@ indicate known bugs. The final message should be one of the following: If any tests have a status of FAIL, then the new code has caused a regression error which should be fixed before the code is committed. - When a new bug is found ----------------------- A new test case should be added by imitating the style of an existing @@ -60,7 +138,6 @@ XFAIL_TESTS lists and new-bug-ref.png to EXTRA_DIST. Add new-bug to .gitignore, and last but not least, don't forget to "git add" the new files. - When a new feature is added --------------------------- It's important for the regression suite to keep pace with development @@ -77,7 +154,6 @@ CAIRO_REF_DIR to point at a previous test directory, relative to the current test directory, and any previous output will be used by preference as reference images. - When a bug is fixed ------------------- The fix should be verified by running the test suite which should @@ -85,7 +161,6 @@ result in an "unexpected pass" for the test of interest. Rejoice as appropriate, then remove the relevant file name from the XFAIL_TESTS variable in Makefile.am. - Before releasing ---------------- All tests should return a result of PASS for all supported (those enabled by @@ -94,3 +169,68 @@ message: All XX tests passed +Some notes on limitations in poppler +==================================== +One of the difficulties of our current test infrastructure is that we +rely on external tools to convert cairo's vector output (PDF, +PostScript, and SVG), into an image that can be used for the image +comparison. This means that any bugs in that conversion tool will +result in false negatives in the test suite. + +We've identified several such bugs in the poppler library which is +used to convert PDF to an image. This is particularly discouraging +because 1) poppler is free software that will be used by *many* cairo +users, and 2) poppler calls into cairo for its rendering so it should +be able to do a 100% faithful conversion. + +So we have an interest in ensuring that these poppler bugs get fixed +sooner rather than later. As such, we're trying to be good citizens by +reporting all such poppler bugs that we identify to the poppler +bugzilla. Here's a tracking bug explaining the situation: + + Poppler does not yet handle everything in the cairo test suite + https://bugs.freedesktop.org/show_bug.cgi?id=12143 + +Here's the rule: If a cairo-pdf test reports a failure, but viewing +the resulting PDF file with acroread suggests that the PDF itself is +correct, then there's likely a bug in poppler. In this case, we can +simply report the poppler bug, (making it block 12143 above), post the +PDF result from the test suite, and list the bug in this file. Once +we've done this, we can capture poppler's buggy output as a +pdf-specific reference image so that the test suite will regard the +test as passing, (and we'll ensure there is no regression). + +Once the poppler bug gets fixed, the test suite will start reporting a +false negative again, and this will be easy to fix by simply removing +the pdf-specific reference image. + +Here are the reported poppler bugs and the tests they affect: + +Poppler doesn't correctly handle gradients with transparency +https://bugs.freedesktop.org/show_bug.cgi?id=12144 +-------------------------------------------------- +gradient-alpha +linear-gradient +trap-clip +linear-gradient +linear-gradient-reflect +radial-gradient + +Poppler renders patterned text as black +https://bugs.freedesktop.org/show_bug.cgi?id=14577 +-------------------------------------------------- +text-pattern +text-transform + +Poppler should paint images with CAIRO_EXTEND_PAD +https://bugs.freedesktop.org/show_bug.cgi?id=14578 +-------------------------------------------------- +paint-source-alpha +paint-with-alpha +rotate-image-surface-paint +scale-source-surface-paint + +Incorrect clipping of group object (regression?) +https://bugs.freedesktop.org/show_bug.cgi?id=14580 +-------------------------------------------------- +push-group diff --git a/test/a1-image-sample.c b/test/a1-image-sample.c index 2dc4254..a95c577 100644 --- a/test/a1-image-sample.c +++ b/test/a1-image-sample.c @@ -73,6 +73,8 @@ draw (cairo_t *cr, int width, int height) cairo_paint (cr); } + cairo_surface_destroy (surface); + return CAIRO_TEST_SUCCESS; } diff --git a/test/a1-mask-ref.png b/test/a1-mask-ref.png Binary files differnew file mode 100644 index 0000000..ac4d97a --- /dev/null +++ b/test/a1-mask-ref.png diff --git a/test/a1-mask.c b/test/a1-mask.c new file mode 100644 index 0000000..cbc64b0 --- /dev/null +++ b/test/a1-mask.c @@ -0,0 +1,198 @@ +/* + * Copyright © Jeff Muizelaar + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Red Hat, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Authors: Jeff Muizelaar <jeff@infidigm.net> + * Carl Worth <cworth@cworth.org> + * Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define MASK_WIDTH 10 +#define MASK_HEIGHT 8 + +#ifdef WORDS_BIGENDIAN +#define MASK 0x28, 0x55 +#else +#define MASK 0x14, 0xAA +#endif +static unsigned char mask[(MASK_WIDTH + 7) / 8 * MASK_HEIGHT] = { + MASK, + MASK, + MASK, + MASK, + MASK, + MASK, + MASK, + MASK, +}; + +cairo_test_t test = { + "a1-mask", + "test masks of CAIRO_FORMAT_A1", + MASK_WIDTH, MASK_HEIGHT, + draw +}; + + +static cairo_test_status_t +check_status (cairo_status_t status, cairo_status_t expected) +{ + if (status == expected) + return CAIRO_TEST_SUCCESS; + + cairo_test_log ("Error: Expected status value %d (%s), received %d (%s)\n", + expected, + cairo_status_to_string (expected), + status, + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; +} + +static cairo_test_status_t +test_surface_with_width_and_stride (int width, int stride, + cairo_status_t expected) +{ + cairo_test_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + int len; + unsigned char *data; + + cairo_test_log ("Creating surface with width %d and stride %d\n", + width, stride); + + len = stride; + if (len < 0) + len = -len; + data = xmalloc (len); + + surface = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A1, + width, 1, stride); + cr = cairo_create (surface); + + cairo_paint (cr); + + status = check_status (cairo_surface_status (surface), expected); + if (status) + goto BAIL; + + status = check_status (cairo_status (cr), expected); + if (status) + goto BAIL; + + BAIL: + cairo_destroy (cr); + cairo_surface_destroy (surface); + free (data); + return status; +} + +static cairo_test_status_t +draw (cairo_t *cr, int dst_width, int dst_height) +{ + int test_width, test_stride, stride, row; + unsigned char *src, *dst, *mask_aligned; + cairo_surface_t *surface; + cairo_pattern_t *pattern; + cairo_test_status_t status; + cairo_status_t expected; + + for (test_width = 0; test_width < 40; test_width++) { + test_stride = (test_width + 7) / 8; + stride = cairo_format_stride_for_width (CAIRO_FORMAT_A1, + test_width); + + /* First create a surface using the width as the stride, (most + * of these should fail). */ + expected = (stride == test_stride) ? + CAIRO_STATUS_SUCCESS : CAIRO_STATUS_INVALID_STRIDE; + + status = test_surface_with_width_and_stride (test_width, + test_stride, + expected); + if (status) + return status; + + status = test_surface_with_width_and_stride (test_width, + -test_stride, + expected); + if (status) + return status; + + + /* Then create a surface using the correct stride, (should + always succeed).*/ + status = test_surface_with_width_and_stride (test_width, + stride, + CAIRO_STATUS_SUCCESS); + if (status) + return status; + + status = test_surface_with_width_and_stride (test_width, + -stride, + CAIRO_STATUS_SUCCESS); + if (status) + return status; + } + + /* Now test actually drawing through our mask data, allocating and + * copying with the proper stride. */ + surface = cairo_image_surface_create (CAIRO_FORMAT_A1, + MASK_WIDTH, + MASK_HEIGHT); + + mask_aligned = cairo_image_surface_get_data (surface); + if (mask_aligned != NULL) { + stride = cairo_image_surface_get_stride (surface); + src = mask; + dst = mask_aligned; + for (row = 0; row < MASK_HEIGHT; row++) { + memcpy (dst, src, (MASK_WIDTH + 7) / 8); + src += (MASK_WIDTH + 7) / 8; + dst += stride; + } + } + + /* Paint background blue */ + cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ + cairo_paint (cr); + + /* Then paint red through our mask */ + pattern = cairo_pattern_create_for_surface (surface); + + cairo_set_source_rgb (cr, 1, 0, 0); /* red */ + cairo_mask (cr, pattern); + + cairo_pattern_destroy (pattern); + cairo_surface_destroy (surface); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/a8-mask.c b/test/a8-mask.c index 14d4f8f..2e5efad 100644 --- a/test/a8-mask.c +++ b/test/a8-mask.c @@ -70,12 +70,16 @@ test_surface_with_width_and_stride (int width, int stride, cairo_test_status_t status; cairo_surface_t *surface; cairo_t *cr; + int len; unsigned char *data; cairo_test_log ("Creating surface with width %d and stride %d\n", width, stride); - data = malloc (stride); + len = stride; + if (len < 0) + len = -len; + data = xmalloc (len); surface = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A8, width, 1, stride); @@ -85,15 +89,17 @@ test_surface_with_width_and_stride (int width, int stride, status = check_status (cairo_surface_status (surface), expected); if (status) - return status; + goto BAIL; status = check_status (cairo_status (cr), expected); if (status) - return status; + goto BAIL; + BAIL: + cairo_destroy (cr); + cairo_surface_destroy (surface); free (data); - - return CAIRO_TEST_SUCCESS; + return status; } static cairo_test_status_t @@ -121,6 +127,13 @@ draw (cairo_t *cr, int dst_width, int dst_height) if (status) return status; + status = test_surface_with_width_and_stride (test_width, + -test_width, + expected); + if (status) + return status; + + /* Then create a surface using the correct stride, (should always succeed).*/ status = test_surface_with_width_and_stride (test_width, @@ -128,6 +141,12 @@ draw (cairo_t *cr, int dst_width, int dst_height) CAIRO_STATUS_SUCCESS); if (status) return status; + + status = test_surface_with_width_and_stride (test_width, + -stride, + CAIRO_STATUS_SUCCESS); + if (status) + return status; } /* Now test actually drawing through our mask data, allocating and @@ -135,7 +154,7 @@ draw (cairo_t *cr, int dst_width, int dst_height) stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, MASK_WIDTH); - mask_aligned = malloc (stride * MASK_HEIGHT); + mask_aligned = xmalloc (stride * MASK_HEIGHT); src = mask; dst = mask_aligned; diff --git a/test/big-line-ps-ref.png b/test/big-line-ps-ref.png Binary files differnew file mode 100644 index 0000000..2a4f57c --- /dev/null +++ b/test/big-line-ps-ref.png diff --git a/test/big-line-ps-rgb24-ref.png b/test/big-line-ps-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..d3d2356 --- /dev/null +++ b/test/big-line-ps-rgb24-ref.png diff --git a/test/big-line-quartz-ref.png b/test/big-line-quartz-ref.png Binary files differnew file mode 100644 index 0000000..b8dfe8b --- /dev/null +++ b/test/big-line-quartz-ref.png diff --git a/test/big-line-quartz-rgb24-ref.png b/test/big-line-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..c4fc158 --- /dev/null +++ b/test/big-line-quartz-rgb24-ref.png diff --git a/test/big-line-ref.png b/test/big-line-ref.png Binary files differnew file mode 100644 index 0000000..7bfb379 --- /dev/null +++ b/test/big-line-ref.png diff --git a/test/big-line-rgb24-ref.png b/test/big-line-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..f1fc49d --- /dev/null +++ b/test/big-line-rgb24-ref.png diff --git a/test/big-line.c b/test/big-line.c new file mode 100644 index 0000000..cb1d84e --- /dev/null +++ b/test/big-line.c @@ -0,0 +1,70 @@ +/* + * Copyright © 2008 Novell, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Novell, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Novell, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Larry Ewing <lewing@novell.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "big-line", + "Test drawing of simple lines with positive and negative coordinates > 2^16\n" + "This currently fails because of 16-bit limitations in pixman.", + 100, 100, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_new_path (cr); + + cairo_set_source_rgb (cr, 1, 1, 0); + cairo_move_to (cr, 50, 50); + cairo_line_to (cr, 50000, 50000); + cairo_stroke (cr); + + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_move_to (cr, 50, 50); + cairo_line_to (cr, -50000, 50000); + cairo_stroke (cr); + + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_move_to (cr, 50, 50); + cairo_line_to (cr, 50000, -50000); + cairo_stroke (cr); + + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_move_to (cr, 50, 50); + cairo_line_to (cr, -50000, -50000); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/bilevel-image-ref.png b/test/bilevel-image-ref.png Binary files differnew file mode 100644 index 0000000..cae76d6 --- /dev/null +++ b/test/bilevel-image-ref.png diff --git a/test/bilevel-image.c b/test/bilevel-image.c new file mode 100644 index 0000000..7898a5f --- /dev/null +++ b/test/bilevel-image.c @@ -0,0 +1,68 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "bilevel-image", + "Test that PS can embed an RGB image with a bilevel alpha channel.", + 12, 4, + draw +}; + +#define RGBx 0xffff0000, 0xff00ff00, 0xff0000ff, 0x00000000 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + static uint32_t data[] = { + RGBx, RGBx, RGBx, + RGBx, RGBx, RGBx, + RGBx, RGBx, RGBx, + RGBx, RGBx, RGBx, + }; + cairo_surface_t *mask; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + mask = cairo_image_surface_create_for_data ((unsigned char *) data, + CAIRO_FORMAT_ARGB32, 12, 4, 48); + + cairo_set_source_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/bitmap-font.c b/test/bitmap-font.c index a9e4e8b..7bebb6c 100644 --- a/test/bitmap-font.c +++ b/test/bitmap-font.c @@ -204,6 +204,8 @@ draw (cairo_t *cr, int width, int height) cairo_text_path (cr, " a lazy dog"); cairo_fill (cr); + cairo_font_options_destroy (font_options); + return CAIRO_TEST_SUCCESS; } diff --git a/test/buffer-diff.c b/test/buffer-diff.c index 24fdad3..d1b5863 100644 --- a/test/buffer-diff.c +++ b/test/buffer-diff.c @@ -42,6 +42,10 @@ #include "buffer-diff.h" #include "xmalloc.h" +/* Don't allow any differences greater than this value, even if pdiff + * claims that the images are identical */ +#define PERCEPTUAL_DIFF_THRESHOLD 25 + static void xunlink (const char *pathname) { @@ -152,13 +156,19 @@ compare_surfaces (cairo_surface_t *surface_a, /* Then, if there are any different pixels, we give the pdiff code * a crack at the images. If it decides that there are no visually * discernible differences in any pixels, then we accept this - * result as good enough. */ - discernible_pixels_changed = pdiff_compare (surface_a, surface_b, - gamma, luminance, field_of_view); - if (discernible_pixels_changed == 0) { - result->pixels_changed = 0; - cairo_test_log ("But perceptual diff finds no visually discernible difference.\n" - "Accepting result.\n"); + * result as good enough. + * + * Only let pdiff have a crack at the comparison if the max difference + * is lower than a threshold, otherwise some problems could be masked. + */ + if (result->max_diff < PERCEPTUAL_DIFF_THRESHOLD) { + discernible_pixels_changed = pdiff_compare (surface_a, surface_b, + gamma, luminance, field_of_view); + if (discernible_pixels_changed == 0) { + result->pixels_changed = 0; + cairo_test_log ("But perceptual diff finds no visually discernible difference.\n" + "Accepting result.\n"); + } } } diff --git a/test/caps-joins-ps-ref.png b/test/caps-joins-ps-ref.png Binary files differnew file mode 100644 index 0000000..1d473ac --- /dev/null +++ b/test/caps-joins-ps-ref.png diff --git a/test/clip-fill-rule-ps-argb32-ref.png b/test/clip-fill-rule-ps-argb32-ref.png Binary files differindex f06a1a2..67a8988 100644 --- a/test/clip-fill-rule-ps-argb32-ref.png +++ b/test/clip-fill-rule-ps-argb32-ref.png diff --git a/test/clip-fill-rule-ps-rgb24-ref.png b/test/clip-fill-rule-ps-rgb24-ref.png Binary files differindex 60e43c4..0697a42 100644 --- a/test/clip-fill-rule-ps-rgb24-ref.png +++ b/test/clip-fill-rule-ps-rgb24-ref.png diff --git a/test/clip-operator-pdf-argb32-ref.png b/test/clip-operator-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..b00cc00 --- /dev/null +++ b/test/clip-operator-pdf-argb32-ref.png diff --git a/test/clip-operator-pdf-rgb24-ref.png b/test/clip-operator-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..f9377fa --- /dev/null +++ b/test/clip-operator-pdf-rgb24-ref.png diff --git a/test/clip-operator-ps-argb32-ref.png b/test/clip-operator-ps-argb32-ref.png Binary files differindex 1d49920..35014bd 100644 --- a/test/clip-operator-ps-argb32-ref.png +++ b/test/clip-operator-ps-argb32-ref.png diff --git a/test/clip-operator-ps-rgb24-ref.png b/test/clip-operator-ps-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..1736e4b --- /dev/null +++ b/test/clip-operator-ps-rgb24-ref.png diff --git a/test/clip-operator-quartz-ref.png b/test/clip-operator-quartz-ref.png Binary files differnew file mode 100644 index 0000000..1726944 --- /dev/null +++ b/test/clip-operator-quartz-ref.png diff --git a/test/clip-operator-quartz-rgb24-ref.png b/test/clip-operator-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..a18c6f2 --- /dev/null +++ b/test/clip-operator-quartz-rgb24-ref.png diff --git a/test/clip-operator-ref.png b/test/clip-operator-ref.png Binary files differindex 9f4eff0..4ea1842 100644 --- a/test/clip-operator-ref.png +++ b/test/clip-operator-ref.png diff --git a/test/clip-twice-ref.png b/test/clip-twice-ref.png Binary files differindex bd3e3db..8dc86f3 100644 --- a/test/clip-twice-ref.png +++ b/test/clip-twice-ref.png diff --git a/test/clip-twice-rgb24-ref.png b/test/clip-twice-rgb24-ref.png Binary files differindex 7485594..3f1c013 100644 --- a/test/clip-twice-rgb24-ref.png +++ b/test/clip-twice-rgb24-ref.png diff --git a/test/close-path-ps-ref.png b/test/close-path-ps-ref.png Binary files differnew file mode 100644 index 0000000..e43821c --- /dev/null +++ b/test/close-path-ps-ref.png diff --git a/test/copy-path-ps-argb32-ref.png b/test/copy-path-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 647fafb..0000000 --- a/test/copy-path-ps-argb32-ref.png +++ /dev/null diff --git a/test/copy-path-ps-ref.png b/test/copy-path-ps-ref.png Binary files differnew file mode 100644 index 0000000..f66015b --- /dev/null +++ b/test/copy-path-ps-ref.png diff --git a/test/copy-path-ps-rgb24-ref.png b/test/copy-path-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index aa27262..0000000 --- a/test/copy-path-ps-rgb24-ref.png +++ /dev/null diff --git a/test/dash-caps-joins-ps-argb32-ref.png b/test/dash-caps-joins-ps-argb32-ref.png Binary files differindex 513fb68..baadcb4 100644 --- a/test/dash-caps-joins-ps-argb32-ref.png +++ b/test/dash-caps-joins-ps-argb32-ref.png diff --git a/test/dash-caps-joins-ps-rgb24-ref.png b/test/dash-caps-joins-ps-rgb24-ref.png Binary files differindex c62f48d..baadcb4 100644 --- a/test/dash-caps-joins-ps-rgb24-ref.png +++ b/test/dash-caps-joins-ps-rgb24-ref.png diff --git a/test/dash-curve-ps-ref.png b/test/dash-curve-ps-ref.png Binary files differnew file mode 100644 index 0000000..25a768b --- /dev/null +++ b/test/dash-curve-ps-ref.png diff --git a/test/dash-curve-quartz-ref.png b/test/dash-curve-quartz-ref.png Binary files differnew file mode 100644 index 0000000..18a506e --- /dev/null +++ b/test/dash-curve-quartz-ref.png diff --git a/test/dash-scale-quartz-ref.png b/test/dash-scale-quartz-ref.png Binary files differnew file mode 100644 index 0000000..8fc897b --- /dev/null +++ b/test/dash-scale-quartz-ref.png diff --git a/test/dash-scale-ref.png b/test/dash-scale-ref.png Binary files differindex 60aab2f..a0f004b 100644 --- a/test/dash-scale-ref.png +++ b/test/dash-scale-ref.png diff --git a/test/dash-state-ps-argb32-ref.png b/test/dash-state-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 01d32fa..0000000 --- a/test/dash-state-ps-argb32-ref.png +++ /dev/null diff --git a/test/dash-state-ps-ref.png b/test/dash-state-ps-ref.png Binary files differnew file mode 100644 index 0000000..ec6904e --- /dev/null +++ b/test/dash-state-ps-ref.png diff --git a/test/dash-state-ps-rgb24-ref.png b/test/dash-state-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index e655974..0000000 --- a/test/dash-state-ps-rgb24-ref.png +++ /dev/null diff --git a/test/dash-state-quartz-ref.png b/test/dash-state-quartz-ref.png Binary files differnew file mode 100644 index 0000000..f5f712a --- /dev/null +++ b/test/dash-state-quartz-ref.png diff --git a/test/dash-zero-length-ps-argb32-ref.png b/test/dash-zero-length-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 6c334e1..0000000 --- a/test/dash-zero-length-ps-argb32-ref.png +++ /dev/null diff --git a/test/dash-zero-length-ps-ref.png b/test/dash-zero-length-ps-ref.png Binary files differnew file mode 100644 index 0000000..68fd3fb --- /dev/null +++ b/test/dash-zero-length-ps-ref.png diff --git a/test/dash-zero-length-ps-rgb24-ref.png b/test/dash-zero-length-ps-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..8a4a40f --- /dev/null +++ b/test/dash-zero-length-ps-rgb24-ref.png diff --git a/test/degenerate-path-quartz-ref.png b/test/degenerate-path-quartz-ref.png Binary files differnew file mode 100644 index 0000000..d1d8f2f --- /dev/null +++ b/test/degenerate-path-quartz-ref.png diff --git a/test/degenerate-path-quartz-rgb24-ref.png b/test/degenerate-path-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..d6ff7eb --- /dev/null +++ b/test/degenerate-path-quartz-rgb24-ref.png diff --git a/test/degenerate-pen-ps-argb32-ref.png b/test/degenerate-pen-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 6117f0f..0000000 --- a/test/degenerate-pen-ps-argb32-ref.png +++ /dev/null diff --git a/test/degenerate-pen-ps-ref.png b/test/degenerate-pen-ps-ref.png Binary files differnew file mode 100644 index 0000000..2d0f07b --- /dev/null +++ b/test/degenerate-pen-ps-ref.png diff --git a/test/degenerate-pen-quartz-ref.png b/test/degenerate-pen-quartz-ref.png Binary files differnew file mode 100644 index 0000000..cc25b88 --- /dev/null +++ b/test/degenerate-pen-quartz-ref.png diff --git a/test/degenerate-pen-ref.png b/test/degenerate-pen-ref.png Binary files differindex 0ad3325..5961ddd 100644 --- a/test/degenerate-pen-ref.png +++ b/test/degenerate-pen-ref.png diff --git a/test/degenerate-pen.c b/test/degenerate-pen.c index c92a689..4ff50f8 100644 --- a/test/degenerate-pen.c +++ b/test/degenerate-pen.c @@ -60,12 +60,17 @@ cairo_test_t test = { static cairo_test_status_t draw (cairo_t *cr, int width, int height) { + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); cairo_translate (cr, PAD, PAD); /* First compress the pen to a vertical line. */ cairo_rectangle (cr, 0, 0, SIZE, SIZE); + cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); cairo_save (cr); { cairo_scale (cr, 0.000001, 1.0); @@ -77,6 +82,7 @@ draw (cairo_t *cr, int width, int height) /* Then compress the pen to a horizontal line. */ cairo_rectangle (cr, 0, 0, SIZE, SIZE); + cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); cairo_save (cr); { cairo_scale (cr, 1.0, 0.000001); @@ -88,6 +94,7 @@ draw (cairo_t *cr, int width, int height) /* Finally a line at an angle. */ cairo_rectangle (cr, 0, 0, SIZE, SIZE); + cairo_curve_to (cr, SIZE / 2, 0, SIZE, SIZE / 2, SIZE, SIZE); cairo_save (cr); { cairo_rotate (cr, M_PI / 4.0); diff --git a/test/extend-reflect-ps-ref.png b/test/extend-reflect-ps-ref.png Binary files differnew file mode 100644 index 0000000..b33b38d --- /dev/null +++ b/test/extend-reflect-ps-ref.png diff --git a/test/extend-reflect-similar-ps-ref.png b/test/extend-reflect-similar-ps-ref.png Binary files differnew file mode 100644 index 0000000..b33b38d --- /dev/null +++ b/test/extend-reflect-similar-ps-ref.png diff --git a/test/filter-bilinear-extents-ref.png b/test/filter-bilinear-extents-ref.png Binary files differnew file mode 100644 index 0000000..61e416b --- /dev/null +++ b/test/filter-bilinear-extents-ref.png diff --git a/test/filter-bilinear-extents.c b/test/filter-bilinear-extents.c new file mode 100644 index 0000000..a39a37c --- /dev/null +++ b/test/filter-bilinear-extents.c @@ -0,0 +1,91 @@ +/* + * Copyright © 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: Carl D. Worth <cworth@cworth.org> + * Owen Taylor <otaylor@redhat.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +/* This test exercises code that computes the extents of a surface + * pattern with CAIRO_FILTER_BILINEAR, (where the filtering + * effectively increases the extents of the pattern). + * + * The original bug was reported by Owen Taylor here: + * + * bad clipping with EXTEND_NONE + * http://bugs.freedesktop.org/show_bug.cgi?id=15349 + */ + +#define SCALE 10 +#define PAD 3 +#define WIDTH (PAD + 3 * SCALE + PAD) +#define HEIGHT WIDTH + +cairo_test_t test = { + "filter-bilinear-extents", + "Test that pattern extents are properly computed for CAIRO_FILTER_BILINEAR", + WIDTH, HEIGHT, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *checker; + cairo_t *cr2; + + /* Create a 2x2 blue+red checker */ + checker = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 2, 2); + cr2 = cairo_create (checker); + + cairo_set_source_rgb (cr2, 1, 0 ,0); /* red */ + cairo_paint (cr2); + cairo_set_source_rgb (cr2, 0, 0, 1); /* blue */ + cairo_rectangle (cr2, 0, 1, 1, 1); + cairo_rectangle (cr2, 1, 0, 1, 1); + cairo_fill (cr2); + cairo_destroy (cr2); + + /* Draw our surface scaled with EXTEND_NONE */ + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + cairo_save (cr); + cairo_translate (cr, PAD, PAD); + cairo_scale (cr, SCALE, SCALE); + cairo_translate (cr, 0.5, 0.5); + cairo_set_source_surface (cr, checker, 0, 0); + cairo_paint (cr); + cairo_restore (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/finer-grained-fallbacks-ps-argb32-ref.png b/test/finer-grained-fallbacks-ps-argb32-ref.png Binary files differnew file mode 100644 index 0000000..402f01b --- /dev/null +++ b/test/finer-grained-fallbacks-ps-argb32-ref.png diff --git a/test/finer-grained-fallbacks-ps-rgb24-ref.png b/test/finer-grained-fallbacks-ps-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..e821344 --- /dev/null +++ b/test/finer-grained-fallbacks-ps-rgb24-ref.png diff --git a/test/finer-grained-fallbacks-ref.png b/test/finer-grained-fallbacks-ref.png Binary files differnew file mode 100644 index 0000000..7dce860 --- /dev/null +++ b/test/finer-grained-fallbacks-ref.png diff --git a/test/finer-grained-fallbacks-rgb24-ref.png b/test/finer-grained-fallbacks-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..7328482 --- /dev/null +++ b/test/finer-grained-fallbacks-rgb24-ref.png diff --git a/test/finer-grained-fallbacks.c b/test/finer-grained-fallbacks.c new file mode 100644 index 0000000..2dd006c --- /dev/null +++ b/test/finer-grained-fallbacks.c @@ -0,0 +1,111 @@ +/* + * Copyright © 2008 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson <ajohnson@redneon.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define CIRCLE_SIZE 10 +#define PAD 2 +#define WIDTH (CIRCLE_SIZE*6.5 + PAD) +#define HEIGHT (CIRCLE_SIZE*3.5 + PAD) + +cairo_test_t test = { + "finer-grained-fallbacks", + "Test that multiple PS/PDF fallback images in various locations are correct", + WIDTH, HEIGHT, + draw +}; + +static void +draw_circle (cairo_t *cr, double x, double y) +{ + cairo_save (cr); + cairo_translate (cr, x, y); + cairo_arc (cr, 0, 0, CIRCLE_SIZE / 2, 0., 2. * M_PI); + cairo_fill (cr); + cairo_restore (cr); +} + +static void +draw_circles (cairo_t *cr) +{ + draw_circle (cr, 0, -CIRCLE_SIZE*0.1); + draw_circle (cr, CIRCLE_SIZE*0.4, CIRCLE_SIZE*0.25); + + draw_circle (cr, CIRCLE_SIZE*2, 0); + draw_circle (cr, CIRCLE_SIZE*4, 0); + draw_circle (cr, CIRCLE_SIZE*6, 0); +} + +/* For each of circle and fallback_circle we draw: + * - two overlapping + * - one isolated + * - one off the page + * - one overlapping the edge of the page. + * + * We also draw a circle and fallback_circle overlapping each other. + * + * Circles are drawn in green. An opaque color and CAIRO_OPERATOR_OVER + * is used to ensure they will be emitted as a vectors in PS/PDF. + * + * Fallback circles are drawn in red. CAIRO_OPERATOR_ADD is used to + * ensure they will be emitted as a fallback image in PS/PDF. + */ +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_translate (cr, PAD, PAD); + + /* Draw overlapping circle and fallback circle */ + cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); + draw_circle (cr, CIRCLE_SIZE*0.5, CIRCLE_SIZE*1.5); + + cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); + cairo_set_operator (cr, CAIRO_OPERATOR_ADD); + draw_circle (cr, CIRCLE_SIZE*0.75, CIRCLE_SIZE*1.75); + + /* Draw circles */ + cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); + cairo_translate (cr, CIRCLE_SIZE*2.5, CIRCLE_SIZE*0.6); + draw_circles (cr); + + /* Draw fallback circles */ + cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); + cairo_set_operator (cr, CAIRO_OPERATOR_ADD); + cairo_translate (cr, 0, CIRCLE_SIZE*2); + draw_circles (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/font-matrix-translation-ps-argb32-ref.png b/test/font-matrix-translation-ps-argb32-ref.png Binary files differindex 9f6a252..41d05a0 100644 --- a/test/font-matrix-translation-ps-argb32-ref.png +++ b/test/font-matrix-translation-ps-argb32-ref.png diff --git a/test/font-matrix-translation-ps-rgb24-ref.png b/test/font-matrix-translation-ps-rgb24-ref.png Binary files differindex 330a1b5..41d05a0 100644 --- a/test/font-matrix-translation-ps-rgb24-ref.png +++ b/test/font-matrix-translation-ps-rgb24-ref.png diff --git a/test/font-matrix-translation-quartz-ref.png b/test/font-matrix-translation-quartz-ref.png Binary files differnew file mode 100644 index 0000000..90fd962 --- /dev/null +++ b/test/font-matrix-translation-quartz-ref.png diff --git a/test/font-matrix-translation.c b/test/font-matrix-translation.c index 06b407d..9ed12ab 100644 --- a/test/font-matrix-translation.c +++ b/test/font-matrix-translation.c @@ -54,7 +54,7 @@ static cairo_test_status_t box_text (cairo_t *cr, const char *utf8, double x, double y) { double line_width; - cairo_text_extents_t extents = {}, scaled_extents = {}; + cairo_text_extents_t extents = {0}, scaled_extents = {0}; cairo_scaled_font_t *scaled_font; cairo_save (cr); diff --git a/test/font-options.c b/test/font-options.c index fdcde15..b0e111e 100644 --- a/test/font-options.c +++ b/test/font-options.c @@ -23,51 +23,69 @@ * Author: Chris Wilson <chris@chris-wilson.co.uk> */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <cairo.h> #include <assert.h> #include <stdlib.h> +#if HAVE_FCFINI +#include <fontconfig/fontconfig.h> +#endif + int main (void) { - cairo_font_options_t *options1; - cairo_font_options_t *options2; + cairo_font_options_t *default_options; + cairo_font_options_t *nil_options; cairo_surface_t *surface; cairo_matrix_t identity; cairo_t *cr; cairo_scaled_font_t *scaled_font; /* first check NULL handling of cairo_font_options_t */ - options1 = cairo_font_options_create (); - options2 = cairo_font_options_copy (NULL); - - assert (cairo_font_options_equal (options1, options2)); - assert (cairo_font_options_equal (NULL, options2)); - assert (cairo_font_options_equal (options1, NULL)); - - assert (cairo_font_options_hash (options1) == cairo_font_options_hash (options2)); - assert (cairo_font_options_hash (NULL) == cairo_font_options_hash (options2)); - assert (cairo_font_options_hash (options1) == cairo_font_options_hash (NULL)); + default_options = cairo_font_options_create (); + assert (cairo_font_options_status (default_options) == CAIRO_STATUS_SUCCESS); + nil_options = cairo_font_options_copy (NULL); + assert (cairo_font_options_status (nil_options) == CAIRO_STATUS_NO_MEMORY); + + assert (cairo_font_options_equal (default_options, default_options)); + assert (! cairo_font_options_equal (default_options, nil_options)); + assert (! cairo_font_options_equal (NULL, nil_options)); + assert (! cairo_font_options_equal (nil_options, nil_options)); + assert (! cairo_font_options_equal (default_options, NULL)); + assert (! cairo_font_options_equal (NULL, default_options)); + + assert (cairo_font_options_hash (default_options) == cairo_font_options_hash (nil_options)); + assert (cairo_font_options_hash (NULL) == cairo_font_options_hash (nil_options)); + assert (cairo_font_options_hash (default_options) == cairo_font_options_hash (NULL)); cairo_font_options_merge (NULL, NULL); - cairo_font_options_merge (options1, NULL); - cairo_font_options_merge (options1, options2); - - cairo_font_options_destroy (NULL); - cairo_font_options_destroy (options1); - cairo_font_options_destroy (options2); + cairo_font_options_merge (default_options, NULL); + cairo_font_options_merge (default_options, nil_options); cairo_font_options_set_antialias (NULL, CAIRO_ANTIALIAS_DEFAULT); cairo_font_options_get_antialias (NULL); + assert (cairo_font_options_get_antialias (default_options) == CAIRO_ANTIALIAS_DEFAULT); cairo_font_options_set_subpixel_order (NULL, CAIRO_SUBPIXEL_ORDER_DEFAULT); cairo_font_options_get_subpixel_order (NULL); + assert (cairo_font_options_get_subpixel_order (default_options) == CAIRO_SUBPIXEL_ORDER_DEFAULT); cairo_font_options_set_hint_style (NULL, CAIRO_HINT_STYLE_DEFAULT); cairo_font_options_get_hint_style (NULL); + assert (cairo_font_options_get_hint_style (default_options) == CAIRO_HINT_STYLE_DEFAULT); cairo_font_options_set_hint_metrics (NULL, CAIRO_HINT_METRICS_DEFAULT); cairo_font_options_get_hint_metrics (NULL); + assert (cairo_font_options_get_hint_metrics (default_options) == CAIRO_HINT_METRICS_DEFAULT); + + cairo_font_options_destroy (NULL); + cairo_font_options_destroy (default_options); + cairo_font_options_destroy (nil_options); + /* Now try creating fonts with NULLs */ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 0, 0); @@ -78,14 +96,21 @@ main (void) scaled_font = cairo_scaled_font_create (cairo_get_font_face (cr), &identity, &identity, NULL); - assert (cairo_scaled_font_status (scaled_font) == CAIRO_STATUS_SUCCESS); + assert (cairo_scaled_font_status (scaled_font) == CAIRO_STATUS_NULL_POINTER); cairo_scaled_font_get_font_options (scaled_font, NULL); cairo_scaled_font_destroy (scaled_font); - cairo_set_font_options (cr, NULL); + assert (cairo_status (cr) == CAIRO_STATUS_SUCCESS); cairo_get_font_options (cr, NULL); + cairo_set_font_options (cr, NULL); + assert (cairo_status (cr) == CAIRO_STATUS_NULL_POINTER); cairo_destroy (cr); + cairo_debug_reset_static_data (); +#if HAVE_FCFINI + FcFini (); +#endif + return 0; } diff --git a/test/ft-show-glyphs-positioning-pdf-ref.png b/test/ft-show-glyphs-positioning-pdf-ref.png Binary files differnew file mode 100644 index 0000000..11f6953 --- /dev/null +++ b/test/ft-show-glyphs-positioning-pdf-ref.png diff --git a/test/ft-show-glyphs-positioning-ps-ref.png b/test/ft-show-glyphs-positioning-ps-ref.png Binary files differnew file mode 100644 index 0000000..c5fbf30 --- /dev/null +++ b/test/ft-show-glyphs-positioning-ps-ref.png diff --git a/test/ft-show-glyphs-positioning-ref.png b/test/ft-show-glyphs-positioning-ref.png Binary files differnew file mode 100644 index 0000000..21b9a4e --- /dev/null +++ b/test/ft-show-glyphs-positioning-ref.png diff --git a/test/ft-show-glyphs-positioning-svg-ref.png b/test/ft-show-glyphs-positioning-svg-ref.png Binary files differnew file mode 100644 index 0000000..43b83cb --- /dev/null +++ b/test/ft-show-glyphs-positioning-svg-ref.png diff --git a/test/ft-show-glyphs-positioning.c b/test/ft-show-glyphs-positioning.c new file mode 100644 index 0000000..d23c531 --- /dev/null +++ b/test/ft-show-glyphs-positioning.c @@ -0,0 +1,167 @@ +/* + * Copyright © 2008 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson <ajohnson@redneon.com> + */ + +#include "cairo-test.h" +#include <cairo-ft.h> + +#define TEXT_SIZE 12 + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "ft-show-glyphs-positioning", + "Test that the PS/PDF glyph positioning optimizations are correct", + 235, (TEXT_SIZE + 4)*2, + draw +}; + +typedef struct { + cairo_glyph_t glyph_list[100]; + int num_glyphs; + double x; + double y; +} glyph_array_t; + +static void +glyph_array_init (glyph_array_t *glyphs, double x, double y) +{ + glyphs->num_glyphs = 0; + glyphs->x = x; + glyphs->y = y; +} + +static void +glyph_array_rel_move_to (glyph_array_t *glyphs, double x, double y) +{ + glyphs->x += x; + glyphs->y += y; +} + +static void +glyph_array_show (glyph_array_t *glyphs, cairo_t *cr) +{ + cairo_show_glyphs (cr, glyphs->glyph_list, glyphs->num_glyphs); +} + +#define DOUBLE_FROM_26_6(t) ((double)(t) / 64.0) + +static void +glyph_array_add_text(glyph_array_t *glyphs, cairo_t *cr, const char *s, double spacing) +{ + cairo_scaled_font_t *scaled_font; + FT_Face face; + unsigned long charcode; + unsigned int index; + cairo_text_extents_t extents; + const char *p; + FT_Vector kerning; + double kern_x; + int first = TRUE; + + scaled_font = cairo_get_scaled_font (cr); + face = cairo_ft_scaled_font_lock_face (scaled_font); + p = s; + while (*p) + { + charcode = *p; + index = FT_Get_Char_Index (face, charcode); + glyphs->glyph_list[glyphs->num_glyphs].index = index; + if (first) { + first = FALSE; + glyphs->glyph_list[glyphs->num_glyphs].x = glyphs->x; + glyphs->glyph_list[glyphs->num_glyphs].y = glyphs->y; + } else { + cairo_glyph_extents (cr, &glyphs->glyph_list[glyphs->num_glyphs - 1], 1, &extents); + FT_Get_Kerning (face, + glyphs->glyph_list[glyphs->num_glyphs - 1].index, + glyphs->glyph_list[glyphs->num_glyphs].index, + FT_KERNING_UNSCALED, + &kerning); + kern_x = DOUBLE_FROM_26_6(kerning.x); + glyphs->glyph_list[glyphs->num_glyphs].x = + glyphs->glyph_list[glyphs->num_glyphs - 1].x + extents.x_advance + kern_x + spacing; + glyphs->glyph_list[glyphs->num_glyphs].y = + glyphs->glyph_list[glyphs->num_glyphs - 1].y + extents.y_advance; + } + + cairo_glyph_extents (cr, &glyphs->glyph_list[glyphs->num_glyphs], 1, &extents); + glyphs->x = glyphs->glyph_list[glyphs->num_glyphs].x + extents.x_advance + spacing; + glyphs->y = glyphs->glyph_list[glyphs->num_glyphs].y + extents.y_advance; + p++; + glyphs->num_glyphs++; + } + + cairo_ft_scaled_font_unlock_face (scaled_font); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + glyph_array_t glyphs; + cairo_font_options_t *font_options; + + /* paint white so we don't need separate ref images for + * RGB24 and ARGB32 */ + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + cairo_paint (cr); + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (cr, TEXT_SIZE); + + font_options = cairo_font_options_create (); + cairo_get_font_options (cr, font_options); + cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + + glyph_array_init (&glyphs, 1, TEXT_SIZE); + glyph_array_add_text(&glyphs, cr, "AWAY again", 0.0); + glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1, 0.0); + glyph_array_add_text(&glyphs, cr, "character space", TEXT_SIZE*0.3); + glyph_array_show (&glyphs, cr); + + glyph_array_init (&glyphs, 1, TEXT_SIZE*2 + 4); + glyph_array_add_text(&glyphs, cr, "Increasing", 0.0); + glyph_array_rel_move_to (&glyphs, TEXT_SIZE*0.5, 0.0); + glyph_array_add_text(&glyphs, cr, "space", 0.0); + glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1.0, 0.0); + glyph_array_add_text(&glyphs, cr, "between", 0.0); + glyph_array_rel_move_to (&glyphs, TEXT_SIZE*1.5, 0.0); + glyph_array_add_text(&glyphs, cr, "words", 0.0); + glyph_array_show (&glyphs, cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/ft-show-glyphs-table-ps-ref.png b/test/ft-show-glyphs-table-ps-ref.png Binary files differnew file mode 100644 index 0000000..5143663 --- /dev/null +++ b/test/ft-show-glyphs-table-ps-ref.png diff --git a/test/ft-show-glyphs-table-ref.png b/test/ft-show-glyphs-table-ref.png Binary files differnew file mode 100644 index 0000000..92a3527 --- /dev/null +++ b/test/ft-show-glyphs-table-ref.png diff --git a/test/ft-show-glyphs-table.c b/test/ft-show-glyphs-table.c new file mode 100644 index 0000000..a7654bc --- /dev/null +++ b/test/ft-show-glyphs-table.c @@ -0,0 +1,116 @@ +/* + * Copyright © 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: Eugeniy Meshcheryakov <eugen@debian.org> + * Adrian Johnson <ajohnson@redneon.com> + * Carl Worth <cworth@cworth.org> + */ + +#include "cairo-test.h" +#include <cairo-ft.h> + +#define TEXT_SIZE 20 +#define PAD 10 +#define GRID_SIZE 30 +#define GRID_ROWS 10 +#define GRID_COLS 4 +#define NUM_GLYPHS (GRID_ROWS * GRID_COLS) +#define WIDTH (PAD + GRID_COLS * GRID_SIZE + PAD) +#define HEIGHT (PAD + GRID_ROWS * GRID_SIZE + PAD) + +/* This test was originally inspired by this bug report: + * + * Error when creating pdf charts for new FreeSerifItalic.ttf + * http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136 + * + * The original assertion failure was fairly boring, but the later + * glyph mispositiing was quite interesting. And it turns out that the + * _cairo_pdf_operators_show_glyphs code is fairly convoluted with a + * code path that wasn't being exercised at all by the test suite. + * + * So this is an attempt to exercise that code path. Apparently laying + * glyphs out vertically in a table like this, (so that there's a + * large change in Y position from one glyph to the next), exercises + * the code well. + */ + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "ft-show-glyphs-table", + "Test cairo_show_glyphs with cairo-ft backend and glyphs laid out in a table", + WIDTH, HEIGHT, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_font_options_t *font_options; + cairo_scaled_font_t *scaled_font; + FT_Face face; + FT_ULong charcode; + FT_UInt idx; + int i = 0; + cairo_glyph_t glyphs[NUM_GLYPHS]; + + /* paint white so we don't need separate ref images for + * RGB24 and ARGB32 */ + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + cairo_paint (cr); + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (cr, TEXT_SIZE); + + font_options = cairo_font_options_create (); + cairo_get_font_options (cr, font_options); + cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + + scaled_font = cairo_get_scaled_font (cr); + face = cairo_ft_scaled_font_lock_face (scaled_font); + { + charcode = FT_Get_First_Char(face, &idx); + while (idx && (i < NUM_GLYPHS)) { + glyphs[i] = (cairo_glyph_t) {idx, PAD + GRID_SIZE * (i/GRID_ROWS), PAD + TEXT_SIZE + GRID_SIZE * (i%GRID_ROWS)}; + i++; + charcode = FT_Get_Next_Char(face, charcode, &idx); + } + } + cairo_ft_scaled_font_unlock_face (scaled_font); + + cairo_show_glyphs(cr, glyphs, i); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/ft-text-vertical-layout-type1-pdf-ref.png b/test/ft-text-vertical-layout-type1-pdf-ref.png Binary files differnew file mode 100644 index 0000000..1fa9ecd --- /dev/null +++ b/test/ft-text-vertical-layout-type1-pdf-ref.png diff --git a/test/ft-text-vertical-layout-type1-ps-argb32-ref.png b/test/ft-text-vertical-layout-type1-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 56943e4..0000000 --- a/test/ft-text-vertical-layout-type1-ps-argb32-ref.png +++ /dev/null diff --git a/test/ft-text-vertical-layout-type1-ps-ref.png b/test/ft-text-vertical-layout-type1-ps-ref.png Binary files differnew file mode 100644 index 0000000..388ae73 --- /dev/null +++ b/test/ft-text-vertical-layout-type1-ps-ref.png diff --git a/test/ft-text-vertical-layout-type3-pdf-ref.png b/test/ft-text-vertical-layout-type3-pdf-ref.png Binary files differnew file mode 100644 index 0000000..04e679b --- /dev/null +++ b/test/ft-text-vertical-layout-type3-pdf-ref.png diff --git a/test/ft-text-vertical-layout-type3-ps-argb32-ref.png b/test/ft-text-vertical-layout-type3-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 08581e5..0000000 --- a/test/ft-text-vertical-layout-type3-ps-argb32-ref.png +++ /dev/null diff --git a/test/ft-text-vertical-layout-type3-ps-ref.png b/test/ft-text-vertical-layout-type3-ps-ref.png Binary files differnew file mode 100644 index 0000000..7e84d12 --- /dev/null +++ b/test/ft-text-vertical-layout-type3-ps-ref.png diff --git a/test/get-path-extents.c b/test/get-path-extents.c index 12901fd..4d1966b 100644 --- a/test/get-path-extents.c +++ b/test/get-path-extents.c @@ -78,8 +78,13 @@ check_extents (const char *message, cairo_t *cr, enum ExtentsType type, break; case APPROX_EQUALS: relation_string = "approx. equal"; - if (round (ext_x1) == x && round (ext_y1) == y && round (ext_x2) == x + width && round (ext_y2) == y + height) + if (floor (ext_x1 + 0.5) == floor (x + 0.5) && + floor (ext_y1 + 0.5) == floor (y + 0.5) && + floor (ext_x2 + 0.5) == floor (x + width + 0.5) && + floor (ext_y2 + 0.5) == floor (y + height + 0.5)) + { return 1; + } break; case CONTAINS: relation_string = "contain"; @@ -92,7 +97,7 @@ check_extents (const char *message, cairo_t *cr, enum ExtentsType type, break; } - cairo_test_log ("Error: %s; %s extents (%f, %f) x (%f, %f) should %s (%f, %f) x (%f, %f)\n", + cairo_test_log ("Error: %s; %s extents (%g, %g) x (%g, %g) should %s (%g, %g) x (%g, %g)\n", message, type_string, ext_x1, ext_y1, ext_x2 - ext_x1, ext_y2 - ext_y1, relation_string, @@ -108,7 +113,7 @@ draw (cairo_t *cr, int width, int height) const char *phase; const char string[] = "The quick brown fox jumps over the lazy dog."; cairo_text_extents_t extents, scaled_font_extents; - cairo_test_status_t ret = CAIRO_TEST_SUCCESS; + int errors = 0; surface = cairo_surface_create_similar (cairo_get_group_target (cr), CAIRO_CONTENT_COLOR, 100, 100); @@ -122,10 +127,9 @@ draw (cairo_t *cr, int width, int height) cairo_set_miter_limit (cr2, 100); phase = "No path"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, PATH, EQUALS, 0, 0, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, PATH, EQUALS, 0, 0, 0, 0); cairo_save (cr2); @@ -133,35 +137,31 @@ draw (cairo_t *cr, int width, int height) cairo_move_to (cr2, 200, 400); cairo_rel_line_to (cr2, 0., 0.); phase = "Degenerate line"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0); cairo_new_path (cr2); cairo_move_to (cr2, 200, 400); cairo_rel_curve_to (cr2, 0., 0., 0., 0., 0., 0.); phase = "Degenerate curve"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0); cairo_new_path (cr2); cairo_arc (cr2, 200, 400, 0., 0, 2 * M_PI); phase = "Degenerate arc (R=0)"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0); cairo_new_path (cr2); cairo_arc (cr2, 200, 400, 10., 0, 0); phase = "Degenerate arc (Θ=0)"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0); cairo_new_path (cr2); cairo_restore (cr2); @@ -176,19 +176,17 @@ draw (cairo_t *cr, int width, int height) cairo_move_to (cr2, 200, 400); cairo_rel_line_to (cr2, 0, 0); phase = "Single 'dot'"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 190, 390, 20, 20) || - !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 190, 390, 20, 20); + errors += !check_extents (phase, cr2, PATH, EQUALS, 200, 400, 0, 0); /* Add another dot without starting a new path */ cairo_move_to (cr2, 100, 500); cairo_rel_line_to (cr2, 0, 0); phase = "Multiple 'dots'"; - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, 90, 390, 120, 120) || - !check_extents (phase, cr2, PATH, EQUALS, 100, 400, 100, 100)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 90, 390, 120, 120); + errors += !check_extents (phase, cr2, PATH, EQUALS, 100, 400, 100, 100); cairo_new_path (cr2); @@ -201,20 +199,18 @@ draw (cairo_t *cr, int width, int height) cairo_set_line_join (cr2, CAIRO_LINE_JOIN_ROUND); cairo_move_to (cr2, 0, 180); cairo_line_to (cr2, 750, 180); - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0) || - !check_extents (phase, cr2, STROKE, EQUALS, -5, 175, 760, 10) || - !check_extents (phase, cr2, PATH, EQUALS, 0, 180, 755, 0)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 0, 0, 0, 0); + errors += !check_extents (phase, cr2, STROKE, EQUALS, -5, 175, 760, 10); + errors += !check_extents (phase, cr2, PATH, EQUALS, 0, 180, 755, 0); cairo_new_path (cr2); cairo_restore (cr2); phase = "Simple rect"; cairo_save (cr2); cairo_rectangle (cr2, 10, 10, 80, 80); - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) || - !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80); cairo_new_path (cr2); cairo_restore (cr2); @@ -222,10 +218,9 @@ draw (cairo_t *cr, int width, int height) cairo_save (cr2); cairo_rectangle (cr2, 10, 10, 10, 10); cairo_rectangle (cr2, 20, 20, 10, 10); - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 20, 20) || - !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 30, 30) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 20, 20)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 20, 20); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 30, 30); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 20, 20); cairo_new_path (cr2); cairo_restore (cr2); @@ -237,10 +232,9 @@ draw (cairo_t *cr, int width, int height) cairo_close_path (cr2); /* miter joins protrude 5*(1+sqrt(2)) above the top-left corner and to the right of the bottom-right corner */ - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) || - !check_extents (phase, cr2, STROKE, CONTAINS, 0, 5, 95, 95) || - !check_extents (phase, cr2, PATH, CONTAINS, 10, 10, 80, 80)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80); + errors += !check_extents (phase, cr2, STROKE, CONTAINS, 0, 5, 95, 95); + errors += !check_extents (phase, cr2, PATH, CONTAINS, 10, 10, 80, 80); cairo_new_path (cr2); cairo_restore (cr2); @@ -253,19 +247,17 @@ draw (cairo_t *cr, int width, int height) cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD); phase = "EVEN_ODD overlapping rectangles"; - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) || - !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30); /* Test other fill rule with the same path. */ cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING); phase = "WINDING overlapping rectangles"; - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 30, 30) || - !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 30, 30); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30); /* Now, change the direction of the second rectangle and test both * fill rules again. */ @@ -275,19 +267,17 @@ draw (cairo_t *cr, int width, int height) cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_EVEN_ODD); phase = "EVEN_ODD overlapping rectangles"; - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) || - !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30); /* Test other fill rule with the same path. */ cairo_set_fill_rule (cr2, CAIRO_FILL_RULE_WINDING); phase = "WINDING overlapping rectangles"; - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30) || - !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 15, 30); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 8, 8, 34, 34); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 30, 30); cairo_new_path (cr2); @@ -298,14 +288,12 @@ draw (cairo_t *cr, int width, int height) cairo_save (cr2); cairo_arc (cr2, 250.0, 250.0, 157.0, 5.147, 3.432); cairo_set_line_width (cr2, 154.0); - if (!check_extents (phase, cr2, STROKE, APPROX_EQUALS, 16, 38, 468, 446)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, STROKE, APPROX_EQUALS, 16, 38, 468, 446); cairo_new_path (cr2); cairo_restore (cr2); phase = "Text"; cairo_save (cr2); - cairo_set_tolerance (cr2, 100.0); cairo_select_font_face (cr2, "Bitstream Vera Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); @@ -325,16 +313,21 @@ draw (cairo_t *cr, int width, int height) extents.y_bearing, extents.width, extents.height); - ret = CAIRO_TEST_FAILURE; + errors++; } cairo_move_to (cr2, -extents.x_bearing, -extents.y_bearing); cairo_text_path (cr2, string); cairo_set_line_width (cr2, 2.0); - if (!check_extents (phase, cr2, FILL, EQUALS, 0, 0, extents.width, extents.height) || - !check_extents (phase, cr2, STROKE, EQUALS, -1, -1, extents.width+2, extents.height+2) || - !check_extents (phase, cr2, PATH, EQUALS, 0, 0, extents.width, extents.height)) - ret = CAIRO_TEST_FAILURE; + /* XXX: We'd like to be able to use EQUALS here, but currently + * when hinting is enabled freetype returns integer extents. See + * http://cairographics.org/todo */ + errors += !check_extents (phase, cr2, FILL, APPROX_EQUALS, + 0, 0, extents.width, extents.height); + errors += !check_extents (phase, cr2, STROKE, APPROX_EQUALS, + -1, -1, extents.width+2, extents.height+2); + errors += !check_extents (phase, cr2, PATH, APPROX_EQUALS, + 0, 0, extents.width, extents.height); cairo_new_path (cr2); cairo_restore (cr2); @@ -342,10 +335,9 @@ draw (cairo_t *cr, int width, int height) cairo_save (cr2); cairo_scale (cr2, 2, 2); cairo_rectangle (cr2, 5, 5, 40, 40); - if (!check_extents (phase, cr2, FILL, EQUALS, 5, 5, 40, 40) || - !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 50, 50) || - !check_extents (phase, cr2, PATH, EQUALS, 5, 5, 40, 40)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 5, 5, 40, 40); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 0, 0, 50, 50); + errors += !check_extents (phase, cr2, PATH, EQUALS, 5, 5, 40, 40); cairo_new_path (cr2); cairo_restore (cr2); @@ -355,10 +347,9 @@ draw (cairo_t *cr, int width, int height) cairo_scale (cr2, 2, 2); cairo_rectangle (cr2, 5, 5, 40, 40); cairo_restore (cr2); - if (!check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80) || - !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90) || - !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, EQUALS, 10, 10, 80, 80); + errors += !check_extents (phase, cr2, STROKE, EQUALS, 5, 5, 90, 90); + errors += !check_extents (phase, cr2, PATH, EQUALS, 10, 10, 80, 80); cairo_new_path (cr2); cairo_restore (cr2); @@ -375,15 +366,15 @@ draw (cairo_t *cr, int width, int height) the axes. With the stroke width added to the rotated path, the largest axis-aligned square is a bit over 38 on either side of the axes. */ - if (!check_extents (phase, cr2, FILL, CONTAINS, -35, -35, 35, 35) || - !check_extents (phase, cr2, STROKE, CONTAINS, -38, -38, 38, 38) || - !check_extents (phase, cr2, PATH, CONTAINS, -35, -35, 35, 35)) - ret = CAIRO_TEST_FAILURE; + errors += !check_extents (phase, cr2, FILL, CONTAINS, -35, -35, 35, 35); + errors += !check_extents (phase, cr2, STROKE, CONTAINS, -38, -38, 38, 38); + errors += !check_extents (phase, cr2, PATH, CONTAINS, -35, -35, 35, 35); cairo_new_path (cr2); cairo_restore (cr2); cairo_destroy (cr2); - return ret; + + return errors == 0 ? CAIRO_TEST_SUCCESS : CAIRO_TEST_FAILURE; } int diff --git a/test/get-xrender-format.c b/test/get-xrender-format.c index 0c9ce9a..6678249 100644 --- a/test/get-xrender-format.c +++ b/test/get-xrender-format.c @@ -106,9 +106,12 @@ main (void) return CAIRO_TEST_FAILURE; } + cairo_surface_destroy (surface); XCloseDisplay (dpy); + cairo_debug_reset_static_data (); + cairo_test_fini (); return CAIRO_TEST_SUCCESS; diff --git a/test/glitz-surface-source-ref.png b/test/glitz-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/glitz-surface-source-ref.png diff --git a/test/glitz-surface-source.c b/test/glitz-surface-source.c new file mode 100644 index 0000000..2dfa735 --- /dev/null +++ b/test/glitz-surface-source.c @@ -0,0 +1,201 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" +#include <cairo-glitz.h> +#include <cairo-xlib.h> +#include <cairo-xlib-xrender.h> + +#define NAME "glitz" +#include "surface-source.c" + +static cairo_user_data_key_t closure_key; + +#if CAIRO_CAN_TEST_GLITZ_GLX_SURFACE +#include <glitz-glx.h> + +struct closure { + Display *dpy; + Window win; +}; + +static void +cleanup (void *data) +{ + struct closure *closure = data; + + glitz_glx_fini (); + + if (closure->win) + XDestroyWindow (closure->dpy, closure->win); + + XCloseDisplay (closure->dpy); + + free (closure); +} + +static glitz_surface_t * +_glitz_glx_create_surface (glitz_format_name_t formatname, + int width, + int height, + struct closure *closure) +{ + Display * dpy = closure->dpy; + int scr = DefaultScreen(dpy); + glitz_drawable_format_t templ; + glitz_drawable_format_t * dformat = NULL; + unsigned long mask; + glitz_drawable_t * drawable = NULL; + glitz_format_t * format; + glitz_surface_t * sr; + + XSizeHints xsh; + XSetWindowAttributes xswa; + XVisualInfo * vinfo; + + memset(&templ, 0, sizeof(templ)); + templ.color.red_size = 8; + templ.color.green_size = 8; + templ.color.blue_size = 8; + templ.color.alpha_size = 8; + templ.color.fourcc = GLITZ_FOURCC_RGB; + templ.samples = 1; + + glitz_glx_init (NULL); + + mask = GLITZ_FORMAT_SAMPLES_MASK | + GLITZ_FORMAT_FOURCC_MASK | + GLITZ_FORMAT_RED_SIZE_MASK | + GLITZ_FORMAT_GREEN_SIZE_MASK | + GLITZ_FORMAT_BLUE_SIZE_MASK; + if (formatname == GLITZ_STANDARD_ARGB32) + mask |= GLITZ_FORMAT_ALPHA_SIZE_MASK; + + /* Try for a pbuffer first */ + if (!getenv("CAIRO_TEST_FORCE_GLITZ_WINDOW")) + dformat = glitz_glx_find_pbuffer_format (dpy, scr, mask, &templ, 0); + + if (dformat) { + closure->win = None; + + drawable = glitz_glx_create_pbuffer_drawable (dpy, scr, dformat, + width, height); + if (!drawable) + goto FAIL; + } else { + /* No pbuffer, try window */ + dformat = glitz_glx_find_window_format (dpy, scr, mask, &templ, 0); + + if (!dformat) + goto FAIL; + + vinfo = glitz_glx_get_visual_info_from_format(dpy, + DefaultScreen(dpy), + dformat); + + if (!vinfo) + goto FAIL; + + xsh.flags = PSize; + xsh.x = 0; + xsh.y = 0; + xsh.width = width; + xsh.height = height; + + xswa.colormap = XCreateColormap (dpy, RootWindow(dpy, scr), + vinfo->visual, AllocNone); + closure->win = XCreateWindow (dpy, RootWindow(dpy, scr), + xsh.x, xsh.y, xsh.width, xsh.height, + 0, vinfo->depth, CopyFromParent, + vinfo->visual, CWColormap, &xswa); + XFree (vinfo); + + drawable = + glitz_glx_create_drawable_for_window (dpy, scr, + dformat, closure->win, + width, height); + + if (!drawable) + goto DESTROY_WINDOW; + } + + format = glitz_find_standard_format (drawable, formatname); + if (!format) + goto DESTROY_DRAWABLE; + + sr = glitz_surface_create (drawable, format, width, height, 0, NULL); + if (!sr) + goto DESTROY_DRAWABLE; + + if (closure->win == None || dformat->doublebuffer) { + glitz_surface_attach (sr, drawable, GLITZ_DRAWABLE_BUFFER_BACK_COLOR); + } else { + XMapWindow (closure->dpy, closure->win); + glitz_surface_attach (sr, drawable, GLITZ_DRAWABLE_BUFFER_FRONT_COLOR); + } + + glitz_drawable_destroy (drawable); + + return sr; + DESTROY_DRAWABLE: + glitz_drawable_destroy (drawable); + DESTROY_WINDOW: + if (closure->win) + XDestroyWindow (dpy, closure->win); + FAIL: + return NULL; +} + +static cairo_surface_t * +create_source_surface (int size) +{ + struct closure *closure; + glitz_surface_t *glitz_surface; + cairo_surface_t *surface; + + closure = xcalloc (1, sizeof (struct closure)); + + closure->dpy = XOpenDisplay (getenv("CAIRO_TEST_GLITZ_DISPLAY")); + if (closure->dpy == NULL) { + free (closure); + return NULL; + } + + glitz_surface = _glitz_glx_create_surface (GLITZ_STANDARD_ARGB32, + size, size, + closure); + if (glitz_surface == NULL) { + XCloseDisplay (closure->dpy); + free (closure); + return NULL; + } + + surface = cairo_glitz_surface_create (glitz_surface); + + cairo_surface_set_user_data (surface, &closure_key, closure, cleanup); + + return surface; +} +#endif diff --git a/test/glyph-cache-pressure-ps-ref.png b/test/glyph-cache-pressure-ps-ref.png Binary files differnew file mode 100644 index 0000000..88fa447 --- /dev/null +++ b/test/glyph-cache-pressure-ps-ref.png diff --git a/test/glyph-cache-pressure-quartz-ref.png b/test/glyph-cache-pressure-quartz-ref.png Binary files differnew file mode 100644 index 0000000..88d3db6 --- /dev/null +++ b/test/glyph-cache-pressure-quartz-ref.png diff --git a/test/gradient-alpha-pdf-argb32-ref.png b/test/gradient-alpha-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..bf9c69a --- /dev/null +++ b/test/gradient-alpha-pdf-argb32-ref.png diff --git a/test/gradient-alpha-pdf-rgb24-ref.png b/test/gradient-alpha-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..7985273 --- /dev/null +++ b/test/gradient-alpha-pdf-rgb24-ref.png diff --git a/test/gradient-alpha-ps-argb32-ref.png b/test/gradient-alpha-ps-argb32-ref.png Binary files differindex 8b93c05..323238b 100644 --- a/test/gradient-alpha-ps-argb32-ref.png +++ b/test/gradient-alpha-ps-argb32-ref.png diff --git a/test/gradient-alpha-ps-rgb24-ref.png b/test/gradient-alpha-ps-rgb24-ref.png Binary files differindex c3c96cb..430052c 100644 --- a/test/gradient-alpha-ps-rgb24-ref.png +++ b/test/gradient-alpha-ps-rgb24-ref.png diff --git a/test/gradient-alpha.c b/test/gradient-alpha.c index 6646aec..6b76247 100644 --- a/test/gradient-alpha.c +++ b/test/gradient-alpha.c @@ -29,8 +29,7 @@ static cairo_test_draw_function_t draw; cairo_test_t test = { "gradient-alpha", - "Tests drawing of a gradient with various alpha values in the color stops\n" - "PDF backend will not be tested due to limitations in poppler.", + "Tests drawing of a gradient with various alpha values in the color stops\n", 10, 10, draw }; diff --git a/test/image-surface-source-ref.png b/test/image-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/image-surface-source-ref.png diff --git a/test/image-surface-source.c b/test/image-surface-source.c new file mode 100644 index 0000000..e675ecd --- /dev/null +++ b/test/image-surface-source.c @@ -0,0 +1,35 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +#define NAME "image" +#include "surface-source.c" + +static cairo_surface_t * +create_source_surface (int size) +{ + return cairo_image_surface_create (CAIRO_FORMAT_ARGB32, size, size); +} diff --git a/test/infinite-join-ps-ref.png b/test/infinite-join-ps-ref.png Binary files differnew file mode 100644 index 0000000..6fba8f4 --- /dev/null +++ b/test/infinite-join-ps-ref.png diff --git a/test/invalid-matrix.c b/test/invalid-matrix.c index 8a5a9bf..42240bc 100644 --- a/test/invalid-matrix.c +++ b/test/invalid-matrix.c @@ -26,6 +26,10 @@ #include "cairo-test.h" +#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) +#define HAVE_INFINITY 1 +#endif + static cairo_test_draw_function_t draw; cairo_test_t test = { @@ -45,7 +49,7 @@ draw (cairo_t *cr, int width, int height) cairo_scaled_font_t *scaled_font; cairo_pattern_t *pattern; cairo_t *cr2; - cairo_matrix_t identity, bogus, invalid = { + cairo_matrix_t identity, bogus, inf, invalid = { 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 @@ -57,11 +61,12 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ (function_name)); \ return CAIRO_TEST_FAILURE; \ } else if ((status) != CAIRO_STATUS_INVALID_MATRIX) { \ - cairo_test_log ("Warning: %s with invalid matrix returned unexpected status " \ + cairo_test_log ("Error: %s with invalid matrix returned unexpected status " \ "(%d): %s\n", \ (function_name), \ status, \ cairo_status_to_string (status)); \ + return CAIRO_TEST_FAILURE; \ } /* create a bogus matrix and check results of attempted inversion */ @@ -70,6 +75,13 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ status = cairo_matrix_invert (&bogus); CHECK_STATUS (status, "cairo_matrix_invert(NaN)"); +#if HAVE_INFINITY + inf.x0 = inf.xy = inf.xx = INFINITY; + inf.y0 = inf.yx = inf.yy = inf.xx; + status = cairo_matrix_invert (&inf); + CHECK_STATUS (status, "cairo_matrix_invert(infinity)"); +#endif + /* test cairo_matrix_invert with invalid matrix */ status = cairo_matrix_invert (&invalid); CHECK_STATUS (status, "cairo_matrix_invert(invalid)"); @@ -95,6 +107,16 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ cairo_destroy (cr2); CHECK_STATUS (status, "cairo_transform(NaN)"); +#if HAVE_INFINITY + /* test cairo_transform with ∞ matrix */ + cr2 = cairo_create (target); + cairo_transform (cr2, &inf); + + status = cairo_status (cr2); + cairo_destroy (cr2); + CHECK_STATUS (status, "cairo_transform(infinity)"); +#endif + /* test cairo_set_matrix with invalid matrix */ cr2 = cairo_create (target); @@ -112,6 +134,16 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ cairo_destroy (cr2); CHECK_STATUS (status, "cairo_set_matrix(NaN)"); +#if HAVE_INFINITY + /* test cairo_set_matrix with ∞ matrix */ + cr2 = cairo_create (target); + cairo_set_matrix (cr2, &inf); + + status = cairo_status (cr2); + cairo_destroy (cr2); + CHECK_STATUS (status, "cairo_set_matrix(infinity)"); +#endif + /* test cairo_set_font_matrix with invalid matrix */ cr2 = cairo_create (target); @@ -135,6 +167,19 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ cairo_destroy (cr2); CHECK_STATUS (status, "cairo_set_font_matrix(NaN)"); +#if HAVE_INFINITY + /* test cairo_set_font_matrix with ∞ matrix */ + cr2 = cairo_create (target); + cairo_set_font_matrix (cr2, &inf); + + /* draw some text to force the font to be resolved */ + cairo_show_text (cr2, "hello"); + + status = cairo_status (cr2); + cairo_destroy (cr2); + CHECK_STATUS (status, "cairo_set_font_matrix(infinity)"); +#endif + /* test cairo_scaled_font_create with invalid matrix */ cr2 = cairo_create (target); @@ -186,6 +231,33 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ cairo_font_options_destroy (font_options); cairo_destroy (cr2); +#if HAVE_INFINITY + /* test cairo_scaled_font_create with ∞ matrix */ + cr2 = cairo_create (target); + font_face = cairo_get_font_face (cr2); + font_options = cairo_font_options_create (); + cairo_get_font_options (cr, font_options); + scaled_font = cairo_scaled_font_create (font_face, + &inf, + &identity, + font_options); + status = cairo_scaled_font_status (scaled_font); + CHECK_STATUS (status, "cairo_scaled_font_create(infinity)"); + + cairo_scaled_font_destroy (scaled_font); + + scaled_font = cairo_scaled_font_create (font_face, + &identity, + &inf, + font_options); + status = cairo_scaled_font_status (scaled_font); + CHECK_STATUS (status, "cairo_scaled_font_create(infinity)"); + + cairo_scaled_font_destroy (scaled_font); + cairo_font_options_destroy (font_options); + cairo_destroy (cr2); +#endif + /* test cairo_pattern_set_matrix with invalid matrix */ pattern = cairo_pattern_create_rgb (1.0, 1.0, 1.0); @@ -201,6 +273,109 @@ if ((status) == CAIRO_STATUS_SUCCESS) { \ CHECK_STATUS (status, "cairo_pattern_set_matrix(NaN)"); cairo_pattern_destroy (pattern); +#if HAVE_INFINITY + /* test cairo_pattern_set_matrix with ∞ matrix */ + pattern = cairo_pattern_create_rgb (1.0, 1.0, 1.0); + cairo_pattern_set_matrix (pattern, &inf); + status = cairo_pattern_status (pattern); + CHECK_STATUS (status, "cairo_pattern_set_matrix(infinity)"); + cairo_pattern_destroy (pattern); +#endif + + + /* test invalid transformations */ + cr2 = cairo_create (target); + cairo_translate (cr2, bogus.xx, bogus.yy); + CHECK_STATUS (status, "cairo_translate(NaN, NaN)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_translate (cr2, 0, bogus.yy); + CHECK_STATUS (status, "cairo_translate(0, NaN)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_translate (cr2, bogus.xx, 0); + CHECK_STATUS (status, "cairo_translate(NaN, 0)"); + cairo_destroy (cr2); + +#if HAVE_INFINITY + cr2 = cairo_create (target); + cairo_translate (cr2, inf.xx, inf.yy); + CHECK_STATUS (status, "cairo_translate(∞, ∞)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_translate (cr2, 0, inf.yy); + CHECK_STATUS (status, "cairo_translate(0, ∞)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_translate (cr2, inf.xx, 0); + CHECK_STATUS (status, "cairo_translate(∞, 0)"); + cairo_destroy (cr2); +#endif + + + cr2 = cairo_create (target); + cairo_scale (cr2, bogus.xx, bogus.yy); + CHECK_STATUS (status, "cairo_scale(NaN, NaN)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, 1, bogus.yy); + CHECK_STATUS (status, "cairo_scale(1, NaN)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, bogus.xx, 1); + CHECK_STATUS (status, "cairo_scale(NaN, 1)"); + cairo_destroy (cr2); + +#if HAVE_INFINITY + cr2 = cairo_create (target); + cairo_scale (cr2, inf.xx, inf.yy); + CHECK_STATUS (status, "cairo_scale(∞, ∞)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, 1, inf.yy); + CHECK_STATUS (status, "cairo_scale(1, ∞)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, inf.xx, 1); + CHECK_STATUS (status, "cairo_scale(∞, 1)"); + cairo_destroy (cr2); +#endif + + cr2 = cairo_create (target); + cairo_scale (cr2, bogus.xx, bogus.yy); + CHECK_STATUS (status, "cairo_scale(0, 0)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, 1, bogus.yy); + CHECK_STATUS (status, "cairo_scale(1, 0)"); + cairo_destroy (cr2); + + cr2 = cairo_create (target); + cairo_scale (cr2, bogus.xx, 1); + CHECK_STATUS (status, "cairo_scale(0, 1)"); + cairo_destroy (cr2); + + + cr2 = cairo_create (target); + cairo_rotate (cr2, bogus.xx); + CHECK_STATUS (status, "cairo_rotate(NaN)"); + cairo_destroy (cr2); + +#if HAVE_INFINITY + cr2 = cairo_create (target); + cairo_rotate (cr2, inf.xx); + CHECK_STATUS (status, "cairo_rotate(∞)"); + cairo_destroy (cr2); +#endif return CAIRO_TEST_SUCCESS; } diff --git a/test/large-source-ref.png b/test/large-source-ref.png Binary files differnew file mode 100644 index 0000000..5d96dd3 --- /dev/null +++ b/test/large-source-ref.png diff --git a/test/large-source.c b/test/large-source.c new file mode 100644 index 0000000..c4781d0 --- /dev/null +++ b/test/large-source.c @@ -0,0 +1,109 @@ +/* + * Copyright © Chris Wilson, 2008 + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Authors: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +/* This is a test case for the following bug: + * + * crafted gif file will crash firefox + * [XError: 'BadAlloc (insufficient resources for operation)'] + * https://bugzilla.mozilla.org/show_bug.cgi?id=424333 + * + * The output is currently marked as XFAIL as pixman is still limited + * to 16.16. + */ + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "large-source", + "Exercises mozilla bug 424333 - handling of massive images", + 20, 20, + draw +}; + +#ifdef WORDS_BIGENDIAN +#define RED_MASK 0xA0 +#define GREEN_MASK 0xA +#else +#define RED_MASK 0x5 +#define GREEN_MASK 0x50 +#endif + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *surface; + unsigned char *data; + + cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ + cairo_paint (cr); + + surface = cairo_image_surface_create (CAIRO_FORMAT_A1, 64000, 20); + data = cairo_image_surface_get_data (surface); + if (data != NULL) { + int stride = cairo_image_surface_get_stride (surface); + int width = cairo_image_surface_get_width (surface); + int height = cairo_image_surface_get_height (surface); + int x, y; + + for (y = 0; y < height; y++) { + for (x = 0; x < (width + 7) / 8; x++) + data[x] = RED_MASK; + data += stride; + } + } + + cairo_set_source_rgb (cr, 1, 0, 0); /* red */ + cairo_mask_surface (cr, surface, 0, 0); + cairo_surface_destroy (surface); + + surface = cairo_image_surface_create (CAIRO_FORMAT_A1, 20, 64000); + data = cairo_image_surface_get_data (surface); + if (data != NULL) { + int stride = cairo_image_surface_get_stride (surface); + int width = cairo_image_surface_get_width (surface); + int height = cairo_image_surface_get_height (surface); + int x, y; + + for (y = 0; y < height; y++) { + for (x = 0; x < (width + 7) / 8; x++) + data[x] = GREEN_MASK; + data += stride; + } + } + + cairo_set_source_rgb (cr, 0, 1, 0); /* green */ + cairo_mask_surface (cr, surface, 0, 0); + cairo_surface_destroy (surface); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/leaky-dash-quartz-ref.png b/test/leaky-dash-quartz-ref.png Binary files differnew file mode 100644 index 0000000..8343359 --- /dev/null +++ b/test/leaky-dash-quartz-ref.png diff --git a/test/leaky-polygon-ps-ref.png b/test/leaky-polygon-ps-ref.png Binary files differnew file mode 100644 index 0000000..5e8808c --- /dev/null +++ b/test/leaky-polygon-ps-ref.png diff --git a/test/line-width-scale-ps-argb32-ref.png b/test/line-width-scale-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 4b43302..0000000 --- a/test/line-width-scale-ps-argb32-ref.png +++ /dev/null diff --git a/test/line-width-scale-ps-ref.png b/test/line-width-scale-ps-ref.png Binary files differnew file mode 100644 index 0000000..9d95aaf --- /dev/null +++ b/test/line-width-scale-ps-ref.png diff --git a/test/line-width-scale-ps-rgb24-ref.png b/test/line-width-scale-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index 12c5b52..0000000 --- a/test/line-width-scale-ps-rgb24-ref.png +++ /dev/null diff --git a/test/line-width-scale-quartz-ref.png b/test/line-width-scale-quartz-ref.png Binary files differnew file mode 100644 index 0000000..7a31539 --- /dev/null +++ b/test/line-width-scale-quartz-ref.png diff --git a/test/linear-gradient-pdf-ref.png b/test/linear-gradient-pdf-ref.png Binary files differnew file mode 100644 index 0000000..ede7c90 --- /dev/null +++ b/test/linear-gradient-pdf-ref.png diff --git a/test/linear-gradient-ps-argb32-ref.png b/test/linear-gradient-ps-argb32-ref.png Binary files differdeleted file mode 100644 index e9202d8..0000000 --- a/test/linear-gradient-ps-argb32-ref.png +++ /dev/null diff --git a/test/linear-gradient-ps-ref.png b/test/linear-gradient-ps-ref.png Binary files differnew file mode 100644 index 0000000..c2fa71b --- /dev/null +++ b/test/linear-gradient-ps-ref.png diff --git a/test/linear-gradient-ps-rgb24-ref.png b/test/linear-gradient-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index e9202d8..0000000 --- a/test/linear-gradient-ps-rgb24-ref.png +++ /dev/null diff --git a/test/linear-gradient-quartz-ref.png b/test/linear-gradient-quartz-ref.png Binary files differnew file mode 100644 index 0000000..43fb508 --- /dev/null +++ b/test/linear-gradient-quartz-ref.png diff --git a/test/linear-gradient-reflect-pdf-argb32-ref.png b/test/linear-gradient-reflect-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..46e1c0f --- /dev/null +++ b/test/linear-gradient-reflect-pdf-argb32-ref.png diff --git a/test/linear-gradient-reflect-pdf-rgb24-ref.png b/test/linear-gradient-reflect-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..46e1c0f --- /dev/null +++ b/test/linear-gradient-reflect-pdf-rgb24-ref.png diff --git a/test/linear-gradient-reflect-ps-ref.png b/test/linear-gradient-reflect-ps-ref.png Binary files differnew file mode 100644 index 0000000..ea6d25c --- /dev/null +++ b/test/linear-gradient-reflect-ps-ref.png diff --git a/test/linear-gradient-reflect-quartz-ref.png b/test/linear-gradient-reflect-quartz-ref.png Binary files differnew file mode 100644 index 0000000..a0067ac --- /dev/null +++ b/test/linear-gradient-reflect-quartz-ref.png diff --git a/test/linear-gradient.c b/test/linear-gradient.c index 71a57f6..3dad477 100644 --- a/test/linear-gradient.c +++ b/test/linear-gradient.c @@ -58,8 +58,7 @@ static cairo_test_draw_function_t draw; cairo_test_t test = { "linear-gradient", - "Tests the drawing of linear gradients\n" - "PDF backend will not be tested due to limitations in poppler.", + "Tests the drawing of linear gradients\n", WIDTH, HEIGHT, draw }; diff --git a/test/long-dashed-lines-ps-ref.png b/test/long-dashed-lines-ps-ref.png Binary files differnew file mode 100644 index 0000000..82484f4 --- /dev/null +++ b/test/long-dashed-lines-ps-ref.png diff --git a/test/long-dashed-lines-quartz-ref.png b/test/long-dashed-lines-quartz-ref.png Binary files differnew file mode 100644 index 0000000..439263a --- /dev/null +++ b/test/long-dashed-lines-quartz-ref.png diff --git a/test/long-dashed-lines-ref.png b/test/long-dashed-lines-ref.png Binary files differnew file mode 100644 index 0000000..caf8b5e --- /dev/null +++ b/test/long-dashed-lines-ref.png diff --git a/test/long-dashed-lines.c b/test/long-dashed-lines.c new file mode 100644 index 0000000..fce6d79 --- /dev/null +++ b/test/long-dashed-lines.c @@ -0,0 +1,75 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * the author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "long-dashed-lines", + "Exercises _cairo_box_intersects_line_segment()", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + int i; + double dashes[] = {6, 3}; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + /* partially visible rectangle... */ + cairo_rectangle (cr, -0.5, -0.5, 61, 61); + + /* rectangles with intersecting segments... */ + cairo_save (cr); + cairo_translate (cr, 30, 30); + for (i = 0; i < 4; i++) { + cairo_rotate (cr, M_PI / 4); + cairo_rectangle (cr, -37, -15, 74, 30); + } + cairo_restore (cr); + + /* completely invisible rectangle */ + cairo_rectangle (cr, -5, -5, 70, 70); + + cairo_set_dash (cr, dashes, sizeof (dashes) / sizeof (dashes[0]), 0.); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/mask-alpha-quartz-argb32-ref.png b/test/mask-alpha-quartz-argb32-ref.png Binary files differnew file mode 100644 index 0000000..a7fdc5f --- /dev/null +++ b/test/mask-alpha-quartz-argb32-ref.png diff --git a/test/mask-alpha-svg-argb32-ref.png b/test/mask-alpha-svg-argb32-ref.png Binary files differnew file mode 100644 index 0000000..3e56aa3 --- /dev/null +++ b/test/mask-alpha-svg-argb32-ref.png diff --git a/test/mask-pdf-argb32-ref.png b/test/mask-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..df630cd --- /dev/null +++ b/test/mask-pdf-argb32-ref.png diff --git a/test/mask-pdf-rgb24-ref.png b/test/mask-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..1ec222d --- /dev/null +++ b/test/mask-pdf-rgb24-ref.png diff --git a/test/mask-quartz-ref.png b/test/mask-quartz-ref.png Binary files differnew file mode 100644 index 0000000..a90218a --- /dev/null +++ b/test/mask-quartz-ref.png diff --git a/test/mask-quartz-rgb24-ref.png b/test/mask-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..b9c57c7 --- /dev/null +++ b/test/mask-quartz-rgb24-ref.png diff --git a/test/mask-ref.png b/test/mask-ref.png Binary files differindex 909d9f2..549c130 100644 --- a/test/mask-ref.png +++ b/test/mask-ref.png diff --git a/test/mask-svg-argb32-ref.png b/test/mask-svg-argb32-ref.png Binary files differindex a6ad0a8..c582859 100644 --- a/test/mask-svg-argb32-ref.png +++ b/test/mask-svg-argb32-ref.png diff --git a/test/meta-surface-pattern-ps-argb32-ref.png b/test/meta-surface-pattern-ps-argb32-ref.png Binary files differnew file mode 100644 index 0000000..fbd58ef --- /dev/null +++ b/test/meta-surface-pattern-ps-argb32-ref.png diff --git a/test/meta-surface-pattern-ps-rgb24-ref.png b/test/meta-surface-pattern-ps-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..84da8da --- /dev/null +++ b/test/meta-surface-pattern-ps-rgb24-ref.png diff --git a/test/meta-surface-pattern-quartz-ref.png b/test/meta-surface-pattern-quartz-ref.png Binary files differnew file mode 100644 index 0000000..755f281 --- /dev/null +++ b/test/meta-surface-pattern-quartz-ref.png diff --git a/test/meta-surface-pattern-quartz-rgb24-ref.png b/test/meta-surface-pattern-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..b71891e --- /dev/null +++ b/test/meta-surface-pattern-quartz-rgb24-ref.png diff --git a/test/meta-surface-pattern-svg-argb32-ref.png b/test/meta-surface-pattern-svg-argb32-ref.png Binary files differnew file mode 100644 index 0000000..6250f26 --- /dev/null +++ b/test/meta-surface-pattern-svg-argb32-ref.png diff --git a/test/meta-surface-pattern-svg-rgb24-ref.png b/test/meta-surface-pattern-svg-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..feda67d --- /dev/null +++ b/test/meta-surface-pattern-svg-rgb24-ref.png diff --git a/test/new-sub-path-ps-argb32-ref.png b/test/new-sub-path-ps-argb32-ref.png Binary files differindex 76c50fb..69257d9 100644 --- a/test/new-sub-path-ps-argb32-ref.png +++ b/test/new-sub-path-ps-argb32-ref.png diff --git a/test/new-sub-path-quartz-ref.png b/test/new-sub-path-quartz-ref.png Binary files differindex e9c40b9..4278017 100644 --- a/test/new-sub-path-quartz-ref.png +++ b/test/new-sub-path-quartz-ref.png diff --git a/test/operator-clear-pdf-argb32-ref.png b/test/operator-clear-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..d36de27 --- /dev/null +++ b/test/operator-clear-pdf-argb32-ref.png diff --git a/test/operator-clear-pdf-rgb24-ref.png b/test/operator-clear-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..2dec75c --- /dev/null +++ b/test/operator-clear-pdf-rgb24-ref.png diff --git a/test/operator-clear-ps-argb32-ref.png b/test/operator-clear-ps-argb32-ref.png Binary files differnew file mode 100644 index 0000000..d9a7769 --- /dev/null +++ b/test/operator-clear-ps-argb32-ref.png diff --git a/test/operator-clear-quartz-ref.png b/test/operator-clear-quartz-ref.png Binary files differindex d79d4c3..095f182 100644 --- a/test/operator-clear-quartz-ref.png +++ b/test/operator-clear-quartz-ref.png diff --git a/test/operator-clear-quartz-rgb24-ref.png b/test/operator-clear-quartz-rgb24-ref.png Binary files differindex d47ce75..f978967 100644 --- a/test/operator-clear-quartz-rgb24-ref.png +++ b/test/operator-clear-quartz-rgb24-ref.png diff --git a/test/operator-source-pdf-argb32-ref.png b/test/operator-source-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..821112a --- /dev/null +++ b/test/operator-source-pdf-argb32-ref.png diff --git a/test/operator-source-pdf-rgb24-ref.png b/test/operator-source-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..6faf143 --- /dev/null +++ b/test/operator-source-pdf-rgb24-ref.png diff --git a/test/operator-source-ps-argb32-ref.png b/test/operator-source-ps-argb32-ref.png Binary files differindex dda5e66..d5cb053 100644 --- a/test/operator-source-ps-argb32-ref.png +++ b/test/operator-source-ps-argb32-ref.png diff --git a/test/operator-source-ps-rgb24-ref.png b/test/operator-source-ps-rgb24-ref.png Binary files differindex 3137b15..eb73a9e 100644 --- a/test/operator-source-ps-rgb24-ref.png +++ b/test/operator-source-ps-rgb24-ref.png diff --git a/test/operator-source-quartz-ref.png b/test/operator-source-quartz-ref.png Binary files differnew file mode 100644 index 0000000..31fc441 --- /dev/null +++ b/test/operator-source-quartz-ref.png diff --git a/test/operator-source-quartz-rgb24-ref.png b/test/operator-source-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..358e951 --- /dev/null +++ b/test/operator-source-quartz-rgb24-ref.png diff --git a/test/operator-source-ref.png b/test/operator-source-ref.png Binary files differindex fe59f7f..8e2f5e6 100644 --- a/test/operator-source-ref.png +++ b/test/operator-source-ref.png diff --git a/test/over-above-source-quartz-ref.png b/test/over-above-source-quartz-ref.png Binary files differnew file mode 100644 index 0000000..79d3c93 --- /dev/null +++ b/test/over-above-source-quartz-ref.png diff --git a/test/over-above-source-quartz-rgb24-ref.png b/test/over-above-source-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..38e823e --- /dev/null +++ b/test/over-above-source-quartz-rgb24-ref.png diff --git a/test/over-around-source-ps-argb32-ref.png b/test/over-around-source-ps-argb32-ref.png Binary files differindex 3ad74cc..ea6de69 100644 --- a/test/over-around-source-ps-argb32-ref.png +++ b/test/over-around-source-ps-argb32-ref.png diff --git a/test/over-around-source-quartz-ref.png b/test/over-around-source-quartz-ref.png Binary files differnew file mode 100644 index 0000000..417c8a7 --- /dev/null +++ b/test/over-around-source-quartz-ref.png diff --git a/test/over-around-source-quartz-rgb24-ref.png b/test/over-around-source-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..3e4d764 --- /dev/null +++ b/test/over-around-source-quartz-rgb24-ref.png diff --git a/test/over-between-source-quartz-ref.png b/test/over-between-source-quartz-ref.png Binary files differnew file mode 100644 index 0000000..de954d5 --- /dev/null +++ b/test/over-between-source-quartz-ref.png diff --git a/test/over-between-source-quartz-rgb24-ref.png b/test/over-between-source-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..97dae07 --- /dev/null +++ b/test/over-between-source-quartz-rgb24-ref.png diff --git a/test/paint-source-alpha-pdf-ref.png b/test/paint-source-alpha-pdf-ref.png Binary files differnew file mode 100644 index 0000000..befab10 --- /dev/null +++ b/test/paint-source-alpha-pdf-ref.png diff --git a/test/paint-with-alpha-pdf-ref.png b/test/paint-with-alpha-pdf-ref.png Binary files differnew file mode 100644 index 0000000..9da63ad --- /dev/null +++ b/test/paint-with-alpha-pdf-ref.png diff --git a/test/pdf-surface-source-ref.png b/test/pdf-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/pdf-surface-source-ref.png diff --git a/test/pdf-surface-source.c b/test/pdf-surface-source.c new file mode 100644 index 0000000..680eeef --- /dev/null +++ b/test/pdf-surface-source.c @@ -0,0 +1,41 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" +#include <cairo-pdf.h> + +#define NAME "pdf" +#include "surface-source.c" + +static cairo_surface_t * +create_source_surface (int size) +{ + cairo_surface_t *surface; + + surface = cairo_pdf_surface_create ("pdf-surface-source.pdf", size, size); + cairo_surface_set_fallback_resolution (surface, 72., 72.); + + return surface; +} diff --git a/test/pdiff/Makefile.in b/test/pdiff/Makefile.in index bfbde4c..aa6f765 100644 --- a/test/pdiff/Makefile.in +++ b/test/pdiff/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. +# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,15 +14,11 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c @@ -56,25 +52,24 @@ perceptualdiff_OBJECTS = $(am_perceptualdiff_OBJECTS) perceptualdiff_LDADD = $(LDADD) perceptualdiff_DEPENDENCIES = libpdiff.la \ $(top_builddir)/src/libcairo.la -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libpdiff_la_SOURCES) $(perceptualdiff_SOURCES) DIST_SOURCES = $(libpdiff_la_SOURCES) $(perceptualdiff_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,61 +78,7 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIROPERF_LIBS = @CAIROPERF_LIBS@ -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE@ -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE = @CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE@ -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE = @CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE@ -CAIRO_CAN_TEST_PDF_SURFACE_FALSE = @CAIRO_CAN_TEST_PDF_SURFACE_FALSE@ -CAIRO_CAN_TEST_PDF_SURFACE_TRUE = @CAIRO_CAN_TEST_PDF_SURFACE_TRUE@ -CAIRO_CAN_TEST_PS_SURFACE_FALSE = @CAIRO_CAN_TEST_PS_SURFACE_FALSE@ -CAIRO_CAN_TEST_PS_SURFACE_TRUE = @CAIRO_CAN_TEST_PS_SURFACE_TRUE@ -CAIRO_CAN_TEST_SVG_SURFACE_FALSE = @CAIRO_CAN_TEST_SVG_SURFACE_FALSE@ -CAIRO_CAN_TEST_SVG_SURFACE_TRUE = @CAIRO_CAN_TEST_SVG_SURFACE_TRUE@ -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE = @CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE@ -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE = @CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_HAS_ATSUI_FONT_FALSE = @CAIRO_HAS_ATSUI_FONT_FALSE@ -CAIRO_HAS_ATSUI_FONT_TRUE = @CAIRO_HAS_ATSUI_FONT_TRUE@ -CAIRO_HAS_BEOS_SURFACE_FALSE = @CAIRO_HAS_BEOS_SURFACE_FALSE@ -CAIRO_HAS_BEOS_SURFACE_TRUE = @CAIRO_HAS_BEOS_SURFACE_TRUE@ -CAIRO_HAS_DIRECTFB_SURFACE_FALSE = @CAIRO_HAS_DIRECTFB_SURFACE_FALSE@ -CAIRO_HAS_DIRECTFB_SURFACE_TRUE = @CAIRO_HAS_DIRECTFB_SURFACE_TRUE@ -CAIRO_HAS_FT_FONT_FALSE = @CAIRO_HAS_FT_FONT_FALSE@ -CAIRO_HAS_FT_FONT_TRUE = @CAIRO_HAS_FT_FONT_TRUE@ -CAIRO_HAS_GLITZ_SURFACE_FALSE = @CAIRO_HAS_GLITZ_SURFACE_FALSE@ -CAIRO_HAS_GLITZ_SURFACE_TRUE = @CAIRO_HAS_GLITZ_SURFACE_TRUE@ -CAIRO_HAS_LCOV_FALSE = @CAIRO_HAS_LCOV_FALSE@ -CAIRO_HAS_LCOV_TRUE = @CAIRO_HAS_LCOV_TRUE@ -CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE = @CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE@ -CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE = @CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@ -CAIRO_HAS_OS2_SURFACE_FALSE = @CAIRO_HAS_OS2_SURFACE_FALSE@ -CAIRO_HAS_OS2_SURFACE_TRUE = @CAIRO_HAS_OS2_SURFACE_TRUE@ -CAIRO_HAS_PDF_SURFACE_FALSE = @CAIRO_HAS_PDF_SURFACE_FALSE@ -CAIRO_HAS_PDF_SURFACE_TRUE = @CAIRO_HAS_PDF_SURFACE_TRUE@ -CAIRO_HAS_PNG_FUNCTIONS_FALSE = @CAIRO_HAS_PNG_FUNCTIONS_FALSE@ -CAIRO_HAS_PNG_FUNCTIONS_TRUE = @CAIRO_HAS_PNG_FUNCTIONS_TRUE@ -CAIRO_HAS_PS_SURFACE_FALSE = @CAIRO_HAS_PS_SURFACE_FALSE@ -CAIRO_HAS_PS_SURFACE_TRUE = @CAIRO_HAS_PS_SURFACE_TRUE@ -CAIRO_HAS_QUARTZ_SURFACE_FALSE = @CAIRO_HAS_QUARTZ_SURFACE_FALSE@ -CAIRO_HAS_QUARTZ_SURFACE_TRUE = @CAIRO_HAS_QUARTZ_SURFACE_TRUE@ -CAIRO_HAS_SVG_SURFACE_FALSE = @CAIRO_HAS_SVG_SURFACE_FALSE@ -CAIRO_HAS_SVG_SURFACE_TRUE = @CAIRO_HAS_SVG_SURFACE_TRUE@ -CAIRO_HAS_TEST_SURFACES_FALSE = @CAIRO_HAS_TEST_SURFACES_FALSE@ -CAIRO_HAS_TEST_SURFACES_TRUE = @CAIRO_HAS_TEST_SURFACES_TRUE@ -CAIRO_HAS_WIN32_FONT_FALSE = @CAIRO_HAS_WIN32_FONT_FALSE@ -CAIRO_HAS_WIN32_FONT_TRUE = @CAIRO_HAS_WIN32_FONT_TRUE@ -CAIRO_HAS_WIN32_SURFACE_FALSE = @CAIRO_HAS_WIN32_SURFACE_FALSE@ -CAIRO_HAS_WIN32_SURFACE_TRUE = @CAIRO_HAS_WIN32_SURFACE_TRUE@ -CAIRO_HAS_XCB_SURFACE_FALSE = @CAIRO_HAS_XCB_SURFACE_FALSE@ -CAIRO_HAS_XCB_SURFACE_TRUE = @CAIRO_HAS_XCB_SURFACE_TRUE@ -CAIRO_HAS_XLIB_SURFACE_FALSE = @CAIRO_HAS_XLIB_SURFACE_FALSE@ -CAIRO_HAS_XLIB_SURFACE_TRUE = @CAIRO_HAS_XLIB_SURFACE_TRUE@ -CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE = @CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE@ -CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE = @CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@ CAIRO_LDADD = @CAIRO_LDADD@ CAIRO_LIBS = @CAIRO_LIBS@ CAIRO_NONPKGCONFIG_CFLAGS = @CAIRO_NONPKGCONFIG_CFLAGS@ @@ -158,16 +99,12 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DISABLE_SOME_FLOATING_POINT_FALSE = @DISABLE_SOME_FLOATING_POINT_FALSE@ -DISABLE_SOME_FLOATING_POINT_TRUE = @DISABLE_SOME_FLOATING_POINT_TRUE@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@ -ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ @@ -187,11 +124,8 @@ GLITZ_WGL_CFLAGS = @GLITZ_WGL_CFLAGS@ GLITZ_WGL_LIBS = @GLITZ_WGL_LIBS@ GREP = @GREP@ GS = @GS@ -GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@ -GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@ -HAVE_PTHREAD_FALSE = @HAVE_PTHREAD_FALSE@ -HAVE_PTHREAD_TRUE = @HAVE_PTHREAD_TRUE@ HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -208,10 +142,9 @@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ -OS_WIN32_FALSE = @OS_WIN32_FALSE@ -OS_WIN32_TRUE = @OS_WIN32_TRUE@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -237,13 +170,13 @@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -255,6 +188,7 @@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ directfb_CFLAGS = @directfb_CFLAGS@ @@ -291,8 +225,11 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ xcb_CFLAGS = @xcb_CFLAGS@ xcb_LIBS = @xcb_LIBS@ xlib_CFLAGS = @xlib_CFLAGS@ @@ -357,10 +294,10 @@ clean-noinstLTLIBRARIES: rm -f "$${dir}/so_locations"; \ done libpdiff.la: $(libpdiff_la_OBJECTS) $(libpdiff_la_DEPENDENCIES) - $(LINK) $(libpdiff_la_LDFLAGS) $(libpdiff_la_OBJECTS) $(libpdiff_la_LIBADD) $(LIBS) + $(LINK) $(libpdiff_la_OBJECTS) $(libpdiff_la_LIBADD) $(LIBS) perceptualdiff$(EXEEXT): $(perceptualdiff_OBJECTS) $(perceptualdiff_DEPENDENCIES) @rm -f perceptualdiff$(EXEEXT) - $(LINK) $(perceptualdiff_LDFLAGS) $(perceptualdiff_OBJECTS) $(perceptualdiff_LDADD) $(LIBS) + $(LINK) $(perceptualdiff_OBJECTS) $(perceptualdiff_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -374,22 +311,22 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perceptualdiff.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< @@ -400,17 +337,13 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS @@ -422,8 +355,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ @@ -433,13 +366,12 @@ ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique @@ -453,22 +385,21 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ @@ -516,7 +447,7 @@ distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -530,12 +461,20 @@ info-am: install-data-am: +install-dvi: install-dvi-am + install-exec-am: +install-html: install-html-am + install-info: install-info-am install-man: +install-pdf: install-pdf-am + +install-ps: install-ps-am + installcheck-am: maintainer-clean: maintainer-clean-am @@ -556,19 +495,22 @@ ps: ps-am ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-info-am + pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/test/pixman-rotate-ps-argb32-ref.png b/test/pixman-rotate-ps-argb32-ref.png Binary files differdeleted file mode 100644 index 1d6ad04..0000000 --- a/test/pixman-rotate-ps-argb32-ref.png +++ /dev/null diff --git a/test/pixman-rotate-ps-rgb24-ref.png b/test/pixman-rotate-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index d8ecce9..0000000 --- a/test/pixman-rotate-ps-rgb24-ref.png +++ /dev/null diff --git a/test/png.c b/test/png.c new file mode 100644 index 0000000..65e465d --- /dev/null +++ b/test/png.c @@ -0,0 +1,149 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "cairo-test.h" + +#include <cairo.h> +#include <stdio.h> +#include <stdint.h> +#include <assert.h> + +/* Test the idempotency of write_png->read_png */ + +#define RGB_MASK 0x00ffffff + +static cairo_bool_t +image_surface_equals (cairo_surface_t *A, cairo_surface_t *B) +{ + if (cairo_image_surface_get_format (A) != + cairo_image_surface_get_format (B)) + return 0; + + if (cairo_image_surface_get_width (A) != + cairo_image_surface_get_width (B)) + return 0; + + if (cairo_image_surface_get_height (A) != + cairo_image_surface_get_height (B)) + return 0; + + return 1; +} + +static const char * +format_to_string (cairo_format_t format) +{ + switch (format) { + case CAIRO_FORMAT_A1: return "a1"; + case CAIRO_FORMAT_A8: return "a8"; + case CAIRO_FORMAT_RGB24: return "rgb24"; + case CAIRO_FORMAT_ARGB32: return "argb32"; + default: return "???"; + } +} + +static void +print_surface (cairo_surface_t *surface) +{ + printf ("%s (%dx%d)\n", + format_to_string (cairo_image_surface_get_format (surface)), + cairo_image_surface_get_width (surface), + cairo_image_surface_get_height (surface)); +} + +int +main (void) +{ + cairo_surface_t *surface0, *surface1; + cairo_status_t status; + uint32_t argb32 = 0xdeadbede; + + surface0 = cairo_image_surface_create_for_data ((unsigned char *) &argb32, + CAIRO_FORMAT_ARGB32, + 1, 1, 4); + assert (cairo_surface_status (surface0) == CAIRO_STATUS_SUCCESS); + status = cairo_surface_write_to_png (surface0, "png-test.png"); + if (status) { + printf ("Error writing 'png-test.png': %s\n", + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + surface1 = cairo_image_surface_create_from_png ("png-test.png"); + status = cairo_surface_status (surface1); + if (status) { + printf ("Error reading 'png-test.png': %s\n", + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + + if (! image_surface_equals (surface0, surface1)) { + printf ("Error surface mismatch.\n"); + printf ("to png: "); print_surface (surface0); + printf ("from png: "); print_surface (surface1); + return CAIRO_TEST_FAILURE; + } + assert (*(uint32_t *) cairo_image_surface_get_data (surface1) == argb32); + + cairo_surface_destroy (surface0); + cairo_surface_destroy (surface1); + + + surface0 = cairo_image_surface_create_for_data ((unsigned char *) &argb32, + CAIRO_FORMAT_RGB24, + 1, 1, 4); + assert (cairo_surface_status (surface0) == CAIRO_STATUS_SUCCESS); + status = cairo_surface_write_to_png (surface0, "png-test.png"); + if (status) { + printf ("Error writing 'png-test.png': %s\n", + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + surface1 = cairo_image_surface_create_from_png ("png-test.png"); + status = cairo_surface_status (surface1); + if (status) { + printf ("Error reading 'png-test.png': %s\n", + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + + if (! image_surface_equals (surface0, surface1)) { + printf ("Error surface mismatch.\n"); + printf ("to png: "); print_surface (surface0); + printf ("from png: "); print_surface (surface1); + return CAIRO_TEST_FAILURE; + } + assert ((*(uint32_t *) cairo_image_surface_get_data (surface1) & RGB_MASK) + == (argb32 & RGB_MASK)); + + cairo_surface_destroy (surface0); + cairo_surface_destroy (surface1); + + + return CAIRO_TEST_SUCCESS; +} diff --git a/test/ps-surface-source-ref.png b/test/ps-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/ps-surface-source-ref.png diff --git a/test/ps-surface-source.c b/test/ps-surface-source.c new file mode 100644 index 0000000..8f584d6 --- /dev/null +++ b/test/ps-surface-source.c @@ -0,0 +1,41 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" +#include <cairo-ps.h> + +#define NAME "ps" +#include "surface-source.c" + +static cairo_surface_t * +create_source_surface (int size) +{ + cairo_surface_t *surface; + + surface = cairo_ps_surface_create ("ps-surface-source.ps", size, size); + cairo_surface_set_fallback_resolution (surface, 72., 72.); + + return surface; +} diff --git a/test/push-group-pdf-ref.png b/test/push-group-pdf-ref.png Binary files differnew file mode 100644 index 0000000..e016dbd --- /dev/null +++ b/test/push-group-pdf-ref.png diff --git a/test/push-group-pdf-rgb24-ref.png b/test/push-group-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..7e84ec8 --- /dev/null +++ b/test/push-group-pdf-rgb24-ref.png diff --git a/test/push-group-ref.png b/test/push-group-ref.png Binary files differindex 4d38ac3..84bc184 100644 --- a/test/push-group-ref.png +++ b/test/push-group-ref.png diff --git a/test/push-group-rgb24-ref.png b/test/push-group-rgb24-ref.png Binary files differindex 18adc4b..cababd9 100644 --- a/test/push-group-rgb24-ref.png +++ b/test/push-group-rgb24-ref.png diff --git a/test/radial-gradient-pdf-ref.png b/test/radial-gradient-pdf-ref.png Binary files differnew file mode 100644 index 0000000..18368c1 --- /dev/null +++ b/test/radial-gradient-pdf-ref.png diff --git a/test/radial-gradient-quartz-ref.png b/test/radial-gradient-quartz-ref.png Binary files differnew file mode 100644 index 0000000..be420f8 --- /dev/null +++ b/test/radial-gradient-quartz-ref.png diff --git a/test/random-intersections-ps-argb32-ref.png b/test/random-intersections-ps-argb32-ref.png Binary files differdeleted file mode 100644 index faffd15..0000000 --- a/test/random-intersections-ps-argb32-ref.png +++ /dev/null diff --git a/test/random-intersections-ps-ref.png b/test/random-intersections-ps-ref.png Binary files differnew file mode 100644 index 0000000..590c832 --- /dev/null +++ b/test/random-intersections-ps-ref.png diff --git a/test/random-intersections-ps-rgb24-ref.png b/test/random-intersections-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index 2a199ff..0000000 --- a/test/random-intersections-ps-rgb24-ref.png +++ /dev/null diff --git a/test/random-intersections-quartz-ref.png b/test/random-intersections-quartz-ref.png Binary files differnew file mode 100644 index 0000000..ef76cba --- /dev/null +++ b/test/random-intersections-quartz-ref.png diff --git a/test/random-intersections-ref.png b/test/random-intersections-ref.png Binary files differindex 9f1134a..3188ede 100644 --- a/test/random-intersections-ref.png +++ b/test/random-intersections-ref.png diff --git a/test/rectilinear-miter-limit-ps-ref.png b/test/rectilinear-miter-limit-ps-ref.png Binary files differnew file mode 100644 index 0000000..8213060 --- /dev/null +++ b/test/rectilinear-miter-limit-ps-ref.png diff --git a/test/reflected-stroke-ps-ref.png b/test/reflected-stroke-ps-ref.png Binary files differnew file mode 100644 index 0000000..6290a17 --- /dev/null +++ b/test/reflected-stroke-ps-ref.png diff --git a/test/reflected-stroke-quartz-ref.png b/test/reflected-stroke-quartz-ref.png Binary files differnew file mode 100644 index 0000000..7568a99 --- /dev/null +++ b/test/reflected-stroke-quartz-ref.png diff --git a/test/reflected-stroke-ref.png b/test/reflected-stroke-ref.png Binary files differnew file mode 100644 index 0000000..20f89c8 --- /dev/null +++ b/test/reflected-stroke-ref.png diff --git a/test/reflected-stroke.c b/test/reflected-stroke.c new file mode 100644 index 0000000..aa32098 --- /dev/null +++ b/test/reflected-stroke.c @@ -0,0 +1,100 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * the author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE AUTHOR. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "reflected-stroke", + "Exercises the stroker with a reflected ctm", + 200, 200, + draw +}; + +static void +draw_symbol (cairo_t *cr) +{ + double dash[] = {6, 3}; + + cairo_rectangle (cr, -25, -25, 50, 50); + cairo_stroke (cr); + + cairo_move_to (cr, 0, -25); + cairo_curve_to (cr, 12.5, -12.5, 12.5, -12.5, 0, 0); + cairo_curve_to (cr, -12.5, 12.5, -12.5, 12.5, 0, 25); + cairo_curve_to (cr, 12.5, 12.5, 12.5, 12.5, 0, 0); + cairo_stroke (cr); + + cairo_save (cr); + cairo_set_dash (cr, dash, sizeof (dash) / sizeof (dash[0]), 0.); + cairo_move_to (cr, 0, 0); + cairo_arc (cr, 0, 0, 12.5, 0, 3 * M_PI / 2); + cairo_close_path (cr); + cairo_stroke (cr); + cairo_restore (cr); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 0, 0, 0); + + cairo_save (cr); + cairo_translate (cr, 50, 50); + cairo_scale (cr, 1, 1); + draw_symbol (cr); + cairo_restore (cr); + + cairo_save (cr); + cairo_translate (cr, 150, 50); + cairo_scale (cr, -1, 1); + draw_symbol (cr); + cairo_restore (cr); + + cairo_save (cr); + cairo_translate (cr, 150, 150); + cairo_scale (cr, -1, -1); + draw_symbol (cr); + cairo_restore (cr); + + cairo_save (cr); + cairo_translate (cr, 50, 150); + cairo_scale (cr, 1, -1); + draw_symbol (cr); + cairo_restore (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/rotate-image-surface-paint-pdf-rgb24-ref.png b/test/rotate-image-surface-paint-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..5cd7bf6 --- /dev/null +++ b/test/rotate-image-surface-paint-pdf-rgb24-ref.png diff --git a/test/rotate-image-surface-paint-ps-argb32-ref.png b/test/rotate-image-surface-paint-ps-argb32-ref.png Binary files differdeleted file mode 100644 index a57a317..0000000 --- a/test/rotate-image-surface-paint-ps-argb32-ref.png +++ /dev/null diff --git a/test/rotate-image-surface-paint-ps-ref.png b/test/rotate-image-surface-paint-ps-ref.png Binary files differnew file mode 100644 index 0000000..5b9b98c --- /dev/null +++ b/test/rotate-image-surface-paint-ps-ref.png diff --git a/test/rotate-image-surface-paint-ps-rgb24-ref.png b/test/rotate-image-surface-paint-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index 4ddcfae..0000000 --- a/test/rotate-image-surface-paint-ps-rgb24-ref.png +++ /dev/null diff --git a/test/rotate-image-surface-paint-quartz-ref.png b/test/rotate-image-surface-paint-quartz-ref.png Binary files differnew file mode 100644 index 0000000..f7ec95c --- /dev/null +++ b/test/rotate-image-surface-paint-quartz-ref.png diff --git a/test/rotate-image-surface-paint-ref.png b/test/rotate-image-surface-paint-ref.png Binary files differindex a63e9cb..bd20481 100644 --- a/test/rotate-image-surface-paint-ref.png +++ b/test/rotate-image-surface-paint-ref.png diff --git a/test/scale-source-surface-paint-pdf-rgb24-ref.png b/test/scale-source-surface-paint-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..3e873ab --- /dev/null +++ b/test/scale-source-surface-paint-pdf-rgb24-ref.png diff --git a/test/select-font-face-ps-ref.png b/test/select-font-face-ps-ref.png Binary files differnew file mode 100644 index 0000000..6c2f361 --- /dev/null +++ b/test/select-font-face-ps-ref.png diff --git a/test/select-font-face-quartz-ref.png b/test/select-font-face-quartz-ref.png Binary files differnew file mode 100644 index 0000000..8f285b8 --- /dev/null +++ b/test/select-font-face-quartz-ref.png diff --git a/test/self-copy-ps-ref.png b/test/self-copy-ps-ref.png Binary files differnew file mode 100644 index 0000000..5c9dd57 --- /dev/null +++ b/test/self-copy-ps-ref.png diff --git a/test/show-text-current-point-ps-ref.png b/test/show-text-current-point-ps-ref.png Binary files differnew file mode 100644 index 0000000..b42c48e --- /dev/null +++ b/test/show-text-current-point-ps-ref.png diff --git a/test/show-text-current-point-quartz-ref.png b/test/show-text-current-point-quartz-ref.png Binary files differnew file mode 100644 index 0000000..538b0d1 --- /dev/null +++ b/test/show-text-current-point-quartz-ref.png diff --git a/test/skew-extreme-ps-ref.png b/test/skew-extreme-ps-ref.png Binary files differnew file mode 100644 index 0000000..69f1d37 --- /dev/null +++ b/test/skew-extreme-ps-ref.png diff --git a/test/smask-fill-pdf-ref.png b/test/smask-fill-pdf-ref.png Binary files differnew file mode 100644 index 0000000..dc87a5f --- /dev/null +++ b/test/smask-fill-pdf-ref.png diff --git a/test/smask-fill-ref.png b/test/smask-fill-ref.png Binary files differnew file mode 100644 index 0000000..c778a79 --- /dev/null +++ b/test/smask-fill-ref.png diff --git a/test/smask-fill-svg-ref.png b/test/smask-fill-svg-ref.png Binary files differnew file mode 100644 index 0000000..06ab12a --- /dev/null +++ b/test/smask-fill-svg-ref.png diff --git a/test/smask-fill.c b/test/smask-fill.c new file mode 100644 index 0000000..980018e --- /dev/null +++ b/test/smask-fill.c @@ -0,0 +1,83 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-fill", + "Test the support of \"soft\" masks with fills", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *mask; + cairo_pattern_t *pattern; + cairo_t *cr2; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); + cairo_fill (cr2); + cairo_destroy (cr2); + + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 1.0, 0, 0); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask-image-mask-pdf-ref.png b/test/smask-image-mask-pdf-ref.png Binary files differnew file mode 100644 index 0000000..54baefd --- /dev/null +++ b/test/smask-image-mask-pdf-ref.png diff --git a/test/smask-image-mask-ref.png b/test/smask-image-mask-ref.png Binary files differnew file mode 100644 index 0000000..858b209 --- /dev/null +++ b/test/smask-image-mask-ref.png diff --git a/test/smask-image-mask.c b/test/smask-image-mask.c new file mode 100644 index 0000000..5c805e1 --- /dev/null +++ b/test/smask-image-mask.c @@ -0,0 +1,92 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-image-mask", + "Test the support of \"soft\" masks with a secondary image mask", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + static uint32_t data[] = { + 0xaa000000, 0x55000000, + 0x55000000, 0xaa000000, + }; + + cairo_surface_t *mask, *mask2; + cairo_pattern_t *pattern; + cairo_t *cr2; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + mask2 = cairo_image_surface_create_for_data ((unsigned char *) data, + CAIRO_FORMAT_ARGB32, 2, 2, 8); + pattern = cairo_pattern_create_for_surface (mask2); + cairo_surface_destroy (mask2); + cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); + cairo_mask (cr2, pattern); + cairo_pattern_destroy (pattern); + cairo_destroy (cr2); + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 1.0, 0, 0); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask-mask-pdf-ref.png b/test/smask-mask-pdf-ref.png Binary files differnew file mode 100644 index 0000000..94dac1d --- /dev/null +++ b/test/smask-mask-pdf-ref.png diff --git a/test/smask-mask-ref.png b/test/smask-mask-ref.png Binary files differnew file mode 100644 index 0000000..eabd2d6 --- /dev/null +++ b/test/smask-mask-ref.png diff --git a/test/smask-mask-svg-ref.png b/test/smask-mask-svg-ref.png Binary files differnew file mode 100644 index 0000000..0820cd1 --- /dev/null +++ b/test/smask-mask-svg-ref.png diff --git a/test/smask-mask.c b/test/smask-mask.c new file mode 100644 index 0000000..3d8cb05 --- /dev/null +++ b/test/smask-mask.c @@ -0,0 +1,107 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-mask", + "Test the support of \"soft\" masks with a secondary mask", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *mask, *mask2; + cairo_pattern_t *pattern; + cairo_t *cr2; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + + mask2 = cairo_surface_create_similar (mask, + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask2); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + cairo_paint (cr2); + cairo_destroy (cr2); + + + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_radial ( + 0.5 * width, 0.5 * height, 0, + 0.5 * width, 0.5 * height, 0.5 *height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 1., 1., 1.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_mask_surface (cr2, mask2, 0, 0); + cairo_surface_destroy (mask2); + cairo_destroy (cr2); + + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 1.0, 0, 0); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask-paint-pdf-ref.png b/test/smask-paint-pdf-ref.png Binary files differnew file mode 100644 index 0000000..7d82db9 --- /dev/null +++ b/test/smask-paint-pdf-ref.png diff --git a/test/smask-paint-ref.png b/test/smask-paint-ref.png Binary files differnew file mode 100644 index 0000000..4381209 --- /dev/null +++ b/test/smask-paint-ref.png diff --git a/test/smask-paint-svg-ref.png b/test/smask-paint-svg-ref.png Binary files differnew file mode 100644 index 0000000..09c01de --- /dev/null +++ b/test/smask-paint-svg-ref.png diff --git a/test/smask-paint.c b/test/smask-paint.c new file mode 100644 index 0000000..c075ade --- /dev/null +++ b/test/smask-paint.c @@ -0,0 +1,90 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-paint", + "Test the support of \"soft\" masks with paints", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *mask; + cairo_pattern_t *pattern; + cairo_t *cr2; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_paint (cr2); + cairo_destroy (cr2); + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + pattern = cairo_pattern_create_radial ( + 0.5 * width, 0.5 * height, 0, + 0.5 * width, 0.5 * height, 0.5 *height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 0., 0., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 0., 0., .5); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 0., 0., 1.); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask-pdf-ref.png b/test/smask-pdf-ref.png Binary files differnew file mode 100644 index 0000000..7d82db9 --- /dev/null +++ b/test/smask-pdf-ref.png diff --git a/test/smask-ps-ref.png b/test/smask-ps-ref.png Binary files differnew file mode 100644 index 0000000..c006bbd --- /dev/null +++ b/test/smask-ps-ref.png diff --git a/test/smask-ref.png b/test/smask-ref.png Binary files differnew file mode 100644 index 0000000..2d98e43 --- /dev/null +++ b/test/smask-ref.png diff --git a/test/smask-stroke-pdf-ref.png b/test/smask-stroke-pdf-ref.png Binary files differnew file mode 100644 index 0000000..ac9b5a1 --- /dev/null +++ b/test/smask-stroke-pdf-ref.png diff --git a/test/smask-stroke-ref.png b/test/smask-stroke-ref.png Binary files differnew file mode 100644 index 0000000..0d3f7fe --- /dev/null +++ b/test/smask-stroke-ref.png diff --git a/test/smask-stroke.c b/test/smask-stroke.c new file mode 100644 index 0000000..c70825a --- /dev/null +++ b/test/smask-stroke.c @@ -0,0 +1,83 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-stroke", + "Test the support of \"soft\" masks with strokes", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *mask; + cairo_pattern_t *pattern; + cairo_t *cr2; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.4 * height, 0, 2 * M_PI); + cairo_stroke (cr2); + cairo_destroy (cr2); + + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 1.0, 0, 0); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask-svg-ref.png b/test/smask-svg-ref.png Binary files differnew file mode 100644 index 0000000..f188561 --- /dev/null +++ b/test/smask-svg-ref.png diff --git a/test/smask-text-pdf-ref.png b/test/smask-text-pdf-ref.png Binary files differnew file mode 100644 index 0000000..7542d3d --- /dev/null +++ b/test/smask-text-pdf-ref.png diff --git a/test/smask-text-ps-ref.png b/test/smask-text-ps-ref.png Binary files differnew file mode 100644 index 0000000..ae61325 --- /dev/null +++ b/test/smask-text-ps-ref.png diff --git a/test/smask-text-ref.png b/test/smask-text-ref.png Binary files differnew file mode 100644 index 0000000..2649c65 --- /dev/null +++ b/test/smask-text-ref.png diff --git a/test/smask-text-svg-ref.png b/test/smask-text-svg-ref.png Binary files differnew file mode 100644 index 0000000..2665370 --- /dev/null +++ b/test/smask-text-svg-ref.png diff --git a/test/smask-text.c b/test/smask-text.c new file mode 100644 index 0000000..589c71d --- /dev/null +++ b/test/smask-text.c @@ -0,0 +1,92 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask-text", + "Test the support of \"soft\" masks with text", + 120, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *mask; + cairo_pattern_t *pattern; + cairo_t *cr2; + cairo_text_extents_t extents; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_select_font_face (cr2, + "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (cr2, 0.5 * height); + + cairo_text_extents (cr2, "cairo", &extents); + cairo_move_to (cr2, + floor ((width - extents.width) / 2 + 0.5) - extents.x_bearing, + floor ((height - extents.height) / 2 - 0.5) - extents.y_bearing); + cairo_show_text (cr2, "cairo"); + cairo_destroy (cr2); + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 1.0, 0, 0); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/smask.c b/test/smask.c new file mode 100644 index 0000000..28eaed0 --- /dev/null +++ b/test/smask.c @@ -0,0 +1,130 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "smask", + "Test the support of \"soft\" masks", + 60, 60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + static uint32_t data[] = { + 0x80000000, 0x80000000, + 0x80000000, 0x80000000, + }; + + cairo_surface_t *mask, *mask2; + cairo_pattern_t *pattern; + cairo_t *cr2; + cairo_text_extents_t extents; + + mask = cairo_surface_create_similar (cairo_get_group_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask); + + cairo_save (cr2); { + cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr2); + } cairo_restore (cr2); + + pattern = cairo_pattern_create_linear (0, 0, 0, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.0); + cairo_pattern_add_color_stop_rgba (pattern, 0.80, 0., 0., 0., 0.0); + cairo_pattern_add_color_stop_rgba (pattern, 0.90, 1., 1., 1., 0.25); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 1., 1., 1.0); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_paint (cr2); + + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 1., 1., .5); + cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1., 1., 1., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 0., 0., 0., 0.); + cairo_set_source (cr2, pattern); + cairo_pattern_destroy (pattern); + + mask2 = cairo_image_surface_create_for_data ((unsigned char *) data, + CAIRO_FORMAT_ARGB32, 2, 2, 8); + pattern = cairo_pattern_create_for_surface (mask2); + cairo_surface_destroy (mask2); + cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); + cairo_mask (cr2, pattern); + cairo_pattern_destroy (pattern); + + cairo_arc (cr2, 0.5 * width, 0.5 * height - 10, 0.2 * height, 0, 2 * M_PI); + cairo_fill (cr2); + + cairo_arc (cr2, 0.5 * width, 0.5 * height - 10, 0.25 * height, 0, 2 * M_PI); + cairo_stroke (cr2); + + cairo_select_font_face (cr2, + "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (cr2, 0.3 * height); + + cairo_text_extents (cr2, "FG", &extents); + cairo_move_to (cr2, + floor ((width - extents.width) / 2 + 0.5) - extents.x_bearing, + floor (height - extents.height - 0.5) - extents.y_bearing - 5); + cairo_show_text (cr2, "FG"); + cairo_destroy (cr2); + + cairo_set_source_rgb (cr, 0, 0, 1.0); + cairo_paint (cr); + + pattern = cairo_pattern_create_radial ( + 0.5 * width, 0.5 * height, 0, + 0.5 * width, 0.5 * height, 0.5 *height); + cairo_pattern_add_color_stop_rgba (pattern, 0.00, 0., 0., 0., 0.); + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1., 0., 0., 1.); + cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1., 0., 0., .5); + cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1., 0., 0., 1.); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} + diff --git a/test/source-clip-scale-pdf-ref.png b/test/source-clip-scale-pdf-ref.png Binary files differnew file mode 100644 index 0000000..78c7710 --- /dev/null +++ b/test/source-clip-scale-pdf-ref.png diff --git a/test/stroke-ctm-caps-ps-ref.png b/test/stroke-ctm-caps-ps-ref.png Binary files differnew file mode 100644 index 0000000..63c1064 --- /dev/null +++ b/test/stroke-ctm-caps-ps-ref.png diff --git a/test/stroke-ctm-caps-quartz-ref.png b/test/stroke-ctm-caps-quartz-ref.png Binary files differnew file mode 100644 index 0000000..45ea145 --- /dev/null +++ b/test/stroke-ctm-caps-quartz-ref.png diff --git a/test/stroke-ctm-caps-ref.png b/test/stroke-ctm-caps-ref.png Binary files differnew file mode 100644 index 0000000..f364357 --- /dev/null +++ b/test/stroke-ctm-caps-ref.png diff --git a/test/stroke-ctm-caps.c b/test/stroke-ctm-caps.c new file mode 100644 index 0000000..07a918e --- /dev/null +++ b/test/stroke-ctm-caps.c @@ -0,0 +1,86 @@ +/* + * Copyright © 2008 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson <ajohnson@redneon.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define SIZE 100 +#define PAD 2 +#define WIDTH (PAD + SIZE + PAD) +#define HEIGHT WIDTH + +/* This test is designed to test that PDF viewers use the correct + * alpha values in an Alpha SMasks. Some viewers use the color values + * instead of the alpha. The test draws a triangle and rectangle in a + * group then draws the group using cairo_mask(). The mask consists of + * a circle with the rgba (0.4, 0.4, 0.4, 0.8) and the background rgba + * (0.8, 0.8, 0.8, 0.4). + */ + +cairo_test_t test = { + "stroke-ctm-caps", + "Test that the stroker correctly passes the device-space vector to the stroker for endcaps", + WIDTH, HEIGHT, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + /* flip the CTM, which most clearly shows the problem */ + cairo_translate (cr, 0, HEIGHT); + cairo_scale (cr, 1, -1); + + cairo_set_source_rgb (cr, 0, 0, 0); + + cairo_set_line_width (cr, 10); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); + + cairo_move_to (cr, 20, 20); + cairo_line_to (cr, 20, 70); + cairo_stroke (cr); + + cairo_move_to (cr, 40, 20); + cairo_line_to (cr, 70, 70); + cairo_stroke (cr); + + cairo_move_to (cr, 60, 20); + cairo_line_to (cr, 90, 20); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/stroke-image-pdf-ref.png b/test/stroke-image-pdf-ref.png Binary files differnew file mode 100644 index 0000000..f3eb75d --- /dev/null +++ b/test/stroke-image-pdf-ref.png diff --git a/test/stroke-image-ps-ref.png b/test/stroke-image-ps-ref.png Binary files differnew file mode 100644 index 0000000..f557c75 --- /dev/null +++ b/test/stroke-image-ps-ref.png diff --git a/test/stroke-image-quartz-ref.png b/test/stroke-image-quartz-ref.png Binary files differnew file mode 100644 index 0000000..db1f5a7 --- /dev/null +++ b/test/stroke-image-quartz-ref.png diff --git a/test/stroke-image-ref.png b/test/stroke-image-ref.png Binary files differnew file mode 100644 index 0000000..c8b9417 --- /dev/null +++ b/test/stroke-image-ref.png diff --git a/test/stroke-image.c b/test/stroke-image.c new file mode 100644 index 0000000..20b868c --- /dev/null +++ b/test/stroke-image.c @@ -0,0 +1,78 @@ +/* + * Copyright © 2006 Mozilla Corporation + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Mozilla Corporation not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Mozilla Corporation makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Vladimir Vukicevic <vladimir@pobox.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define PAD 10 +#define SIZE 100 +#define IMAGE_SIZE (SIZE-PAD*2) +#define LINE_WIDTH 10 + +cairo_test_t test = { + "stroke-image", + "Test stroking with an image source, with a non-identity CTM", + SIZE, SIZE, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *isurf = cairo_image_surface_create (CAIRO_FORMAT_RGB24, IMAGE_SIZE, IMAGE_SIZE); + cairo_t *cr_image = cairo_create (isurf); + + /* Create the image */ + cairo_set_source_rgb (cr_image, 0, 0, 0); + cairo_paint (cr_image); + cairo_set_source_rgb (cr_image, 0, 1, 0); + cairo_set_line_width (cr_image, LINE_WIDTH); + cairo_arc (cr_image, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH/2, 0, M_PI * 2.0); + cairo_stroke (cr_image); + cairo_destroy (cr_image); + + /* Now stroke with it */ + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + cairo_translate (cr, PAD, PAD); + + cairo_set_source_surface (cr, isurf, 0, 0); + cairo_surface_destroy (isurf); + + cairo_new_path (cr); + cairo_set_line_width (cr, LINE_WIDTH); + cairo_arc (cr, IMAGE_SIZE/2, IMAGE_SIZE/2, IMAGE_SIZE/2 - LINE_WIDTH/2, 0, M_PI * 2.0); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/surface-pattern-scale-down-quartz-ref.png b/test/surface-pattern-scale-down-quartz-ref.png Binary files differnew file mode 100644 index 0000000..93a34da --- /dev/null +++ b/test/surface-pattern-scale-down-quartz-ref.png diff --git a/test/surface-source.c b/test/surface-source.c new file mode 100644 index 0000000..5a034ad --- /dev/null +++ b/test/surface-source.c @@ -0,0 +1,101 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; +static cairo_surface_t *create_source_surface (int size); + +#define SIZE 90 + +cairo_test_t test = { + NAME "-surface-source", + "Test using various surfaces as the source", + SIZE, SIZE, + draw +}; + +static void +draw_pattern (cairo_surface_t *surface, int surface_size) +{ + cairo_t *cr = cairo_create (surface); + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_rectangle (cr, + 0, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr); + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_rectangle (cr, + surface_size / 2, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr); + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_rectangle (cr, + 0, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr); + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_rectangle (cr, + surface_size / 2, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr); + + cairo_destroy (cr); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *surface; + int surface_size; + + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + surface_size = SIZE - 30; + surface = create_source_surface (surface_size); + draw_pattern (surface, surface_size); + + cairo_set_source_surface (cr, surface, 15, 15); + cairo_surface_destroy (surface); + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + cairo_surface_t *surface; + + surface = create_source_surface (SIZE); + if (surface == NULL) /* can't create the source so skip the test */ + return CAIRO_TEST_SUCCESS; + + cairo_surface_destroy (surface); + + return cairo_test (&test); +} diff --git a/test/svg-surface-source-ref.png b/test/svg-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/svg-surface-source-ref.png diff --git a/test/svg-surface-source.c b/test/svg-surface-source.c new file mode 100644 index 0000000..c8042c4 --- /dev/null +++ b/test/svg-surface-source.c @@ -0,0 +1,41 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" +#include <cairo-svg.h> + +#define NAME "svg" +#include "surface-source.c" + +static cairo_surface_t * +create_source_surface (int size) +{ + cairo_surface_t *surface; + + surface = cairo_svg_surface_create ("svg-surface-source.svg", size, size); + cairo_surface_set_fallback_resolution (surface, 72., 72.); + + return surface; +} diff --git a/test/text-antialias-gray-quartz-ref.png b/test/text-antialias-gray-quartz-ref.png Binary files differnew file mode 100644 index 0000000..573848d --- /dev/null +++ b/test/text-antialias-gray-quartz-ref.png diff --git a/test/text-antialias-none-quartz-ref.png b/test/text-antialias-none-quartz-ref.png Binary files differnew file mode 100644 index 0000000..bcee5da --- /dev/null +++ b/test/text-antialias-none-quartz-ref.png diff --git a/test/text-antialias-subpixel-quartz-ref.png b/test/text-antialias-subpixel-quartz-ref.png Binary files differnew file mode 100644 index 0000000..ffd487f --- /dev/null +++ b/test/text-antialias-subpixel-quartz-ref.png diff --git a/test/text-pattern-pdf-argb32-ref.png b/test/text-pattern-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..2a70deb --- /dev/null +++ b/test/text-pattern-pdf-argb32-ref.png diff --git a/test/text-pattern-pdf-rgb24-ref.png b/test/text-pattern-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..2933f34 --- /dev/null +++ b/test/text-pattern-pdf-rgb24-ref.png diff --git a/test/text-pattern-ps-argb32-ref.png b/test/text-pattern-ps-argb32-ref.png Binary files differindex fa887f9..fa68f64 100644 --- a/test/text-pattern-ps-argb32-ref.png +++ b/test/text-pattern-ps-argb32-ref.png diff --git a/test/text-pattern-ps-rgb24-ref.png b/test/text-pattern-ps-rgb24-ref.png Binary files differindex 2412bcb..943149c 100644 --- a/test/text-pattern-ps-rgb24-ref.png +++ b/test/text-pattern-ps-rgb24-ref.png diff --git a/test/text-pattern-quartz-ref.png b/test/text-pattern-quartz-ref.png Binary files differnew file mode 100644 index 0000000..5cb5874 --- /dev/null +++ b/test/text-pattern-quartz-ref.png diff --git a/test/text-pattern-quartz-rgb24-ref.png b/test/text-pattern-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..7eae4c8 --- /dev/null +++ b/test/text-pattern-quartz-rgb24-ref.png diff --git a/test/text-pattern-svg-argb32-ref.png b/test/text-pattern-svg-argb32-ref.png Binary files differindex 73e3edf..97d7534 100644 --- a/test/text-pattern-svg-argb32-ref.png +++ b/test/text-pattern-svg-argb32-ref.png diff --git a/test/text-pattern.c b/test/text-pattern.c index 99ac9fd..15a909d 100644 --- a/test/text-pattern.c +++ b/test/text-pattern.c @@ -32,8 +32,7 @@ static cairo_test_draw_function_t draw; cairo_test_t test = { "text-pattern", - "Patterned Text\n" - "PDF backend will not be tested due to limitations in poppler.", + "Patterned Text\n", IMAGE_WIDTH, IMAGE_HEIGHT, draw }; diff --git a/test/text-rotate-ps-argb32-ref.png b/test/text-rotate-ps-argb32-ref.png Binary files differdeleted file mode 100644 index a6eb5ea..0000000 --- a/test/text-rotate-ps-argb32-ref.png +++ /dev/null diff --git a/test/text-rotate-ps-ref.png b/test/text-rotate-ps-ref.png Binary files differnew file mode 100644 index 0000000..5a724c9 --- /dev/null +++ b/test/text-rotate-ps-ref.png diff --git a/test/text-rotate-ps-rgb24-ref.png b/test/text-rotate-ps-rgb24-ref.png Binary files differdeleted file mode 100644 index 3c6759e..0000000 --- a/test/text-rotate-ps-rgb24-ref.png +++ /dev/null diff --git a/test/text-rotate-quartz-ref.png b/test/text-rotate-quartz-ref.png Binary files differnew file mode 100644 index 0000000..6fb7f3d --- /dev/null +++ b/test/text-rotate-quartz-ref.png diff --git a/test/text-transform-pdf-ref.png b/test/text-transform-pdf-ref.png Binary files differnew file mode 100644 index 0000000..46076bd --- /dev/null +++ b/test/text-transform-pdf-ref.png diff --git a/test/text-transform-ps-ref.png b/test/text-transform-ps-ref.png Binary files differnew file mode 100644 index 0000000..6f33fb6 --- /dev/null +++ b/test/text-transform-ps-ref.png diff --git a/test/text-transform-ref.png b/test/text-transform-ref.png Binary files differnew file mode 100644 index 0000000..6f36b9d --- /dev/null +++ b/test/text-transform-ref.png diff --git a/test/text-transform.c b/test/text-transform.c new file mode 100644 index 0000000..78a68d7 --- /dev/null +++ b/test/text-transform.c @@ -0,0 +1,111 @@ +/* + * Copyright © 2006 Mozilla Corporation + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Mozilla Corporation not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Mozilla Corporation makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Vladimir Vukicevic <vladimir@pobox.com> + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +#define SIZE 100 +#define PAD 5 + +#define FONT_SIZE 32.0 + +const char png_filename[] = "romedalen.png"; + +cairo_test_t test = { + "text-transform", + "Test various applications of the font matrix", + SIZE, SIZE, + draw +}; + +static void +draw_text (cairo_t *cr) +{ + cairo_matrix_t tm; + + /* skew */ + cairo_matrix_init (&tm, 1, 0, + -0.25, 1, + 0, 0); + cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE); + cairo_set_font_matrix (cr, &tm); + + cairo_new_path (cr); + cairo_move_to (cr, 50, SIZE-PAD); + cairo_show_text (cr, "A"); + + /* rotate and scale */ + cairo_matrix_init_rotate (&tm, M_PI / 2); + cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE * 2.0); + cairo_set_font_matrix (cr, &tm); + + cairo_new_path (cr); + cairo_move_to (cr, PAD, PAD + 25); + cairo_show_text (cr, "A"); + + cairo_matrix_init_rotate (&tm, M_PI / 2); + cairo_matrix_scale (&tm, FONT_SIZE * 2.0, FONT_SIZE); + cairo_set_font_matrix (cr, &tm); + + cairo_new_path (cr); + cairo_move_to (cr, PAD, PAD + 50); + cairo_show_text (cr, "A"); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_set_source_rgb (cr, 1., 1., 1.); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 0., 0., 0.); + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + draw_text (cr); + + cairo_translate (cr, SIZE, SIZE); + cairo_rotate (cr, M_PI); + + pattern = cairo_test_create_pattern_from_png (png_filename); + cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + + draw_text (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} diff --git a/test/text-zero-len-ref.png b/test/text-zero-len-ref.png Binary files differdeleted file mode 100644 index 4bd2d04..0000000 --- a/test/text-zero-len-ref.png +++ /dev/null diff --git a/test/text-zero-len.c b/test/text-zero-len.c index 6c2a836..fff9783 100644 --- a/test/text-zero-len.c +++ b/test/text-zero-len.c @@ -40,8 +40,6 @@ #include "cairo-test.h" -#define WIDTH 60 -#define HEIGHT 60 #define NUM_TEXT 20 #define TEXT_SIZE 12 @@ -50,7 +48,7 @@ static cairo_test_draw_function_t draw; cairo_test_t test = { "text-zero-len", "Tests show_text and text_path with a zero-sized string", - WIDTH, HEIGHT, + 0, 0, draw }; diff --git a/test/transforms-ps-ref.png b/test/transforms-ps-ref.png Binary files differnew file mode 100644 index 0000000..6d195aa --- /dev/null +++ b/test/transforms-ps-ref.png diff --git a/test/trap-clip-pdf-argb32-ref.png b/test/trap-clip-pdf-argb32-ref.png Binary files differnew file mode 100644 index 0000000..c3ee997 --- /dev/null +++ b/test/trap-clip-pdf-argb32-ref.png diff --git a/test/trap-clip-pdf-rgb24-ref.png b/test/trap-clip-pdf-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..f787011 --- /dev/null +++ b/test/trap-clip-pdf-rgb24-ref.png diff --git a/test/trap-clip-ps-argb32-ref.png b/test/trap-clip-ps-argb32-ref.png Binary files differindex aecd0f8..8bbd1fd 100644 --- a/test/trap-clip-ps-argb32-ref.png +++ b/test/trap-clip-ps-argb32-ref.png diff --git a/test/trap-clip-ps-rgb24-ref.png b/test/trap-clip-ps-rgb24-ref.png Binary files differindex 5bff374..f3ded80 100644 --- a/test/trap-clip-ps-rgb24-ref.png +++ b/test/trap-clip-ps-rgb24-ref.png diff --git a/test/trap-clip-quartz-ref.png b/test/trap-clip-quartz-ref.png Binary files differindex 28f5977..d1acd31 100644 --- a/test/trap-clip-quartz-ref.png +++ b/test/trap-clip-quartz-ref.png diff --git a/test/trap-clip-ref.png b/test/trap-clip-ref.png Binary files differindex 9330297..2cbbdb7 100644 --- a/test/trap-clip-ref.png +++ b/test/trap-clip-ref.png diff --git a/test/trap-clip.c b/test/trap-clip.c index a33985f..3712c90 100644 --- a/test/trap-clip.c +++ b/test/trap-clip.c @@ -168,8 +168,7 @@ static cairo_test_draw_function_t draw; cairo_test_t test = { "trap-clip", - "Trapezoid clipping\n" - "PDF backend will not be tested due to limitations in poppler.", + "Trapezoid clipping\n", IMAGE_WIDTH, IMAGE_HEIGHT, draw }; diff --git a/test/unantialiased-shapes-quartz-ref.png b/test/unantialiased-shapes-quartz-ref.png Binary files differnew file mode 100644 index 0000000..0760505 --- /dev/null +++ b/test/unantialiased-shapes-quartz-ref.png diff --git a/test/unantialiased-shapes-ref.png b/test/unantialiased-shapes-ref.png Binary files differindex d350ad9..128a2a1 100644 --- a/test/unantialiased-shapes-ref.png +++ b/test/unantialiased-shapes-ref.png diff --git a/test/unbounded-operator-quartz-ref.png b/test/unbounded-operator-quartz-ref.png Binary files differnew file mode 100644 index 0000000..b0501db --- /dev/null +++ b/test/unbounded-operator-quartz-ref.png diff --git a/test/unbounded-operator-quartz-rgb24-ref.png b/test/unbounded-operator-quartz-rgb24-ref.png Binary files differnew file mode 100644 index 0000000..f8dae18 --- /dev/null +++ b/test/unbounded-operator-quartz-rgb24-ref.png diff --git a/test/xlib-surface-source-ref.png b/test/xlib-surface-source-ref.png Binary files differnew file mode 100644 index 0000000..3fa8bbe --- /dev/null +++ b/test/xlib-surface-source-ref.png diff --git a/test/xlib-surface-source.c b/test/xlib-surface-source.c new file mode 100644 index 0000000..3a70a4d --- /dev/null +++ b/test/xlib-surface-source.c @@ -0,0 +1,76 @@ +/* + * Copyright © 2008 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" +#include <cairo-xlib.h> +#if CAIRO_HAS_XLIB_XRENDER_SURFACE +#include <cairo-xlib-xrender.h> +#endif + +#define NAME "xlib" +#include "surface-source.c" + +static cairo_user_data_key_t closure_key; + +struct closure { + Display *dpy; + Pixmap pix; +}; + +static void +cleanup (void *data) +{ + struct closure *arg = data; + + XFreePixmap (arg->dpy, arg->pix); + XCloseDisplay (arg->dpy); + + free (arg); +} + +static cairo_surface_t * +create_source_surface (int size) +{ + XRenderPictFormat *xrender_format; + struct closure *data; + cairo_surface_t *surface; + + data = xmalloc (sizeof (struct closure)); + + data->dpy = XOpenDisplay (NULL); + xrender_format = XRenderFindStandardFormat (data->dpy, PictStandardARGB32); + + data->pix = XCreatePixmap (data->dpy, DefaultRootWindow (data->dpy), + size, size, xrender_format->depth); + + surface = cairo_xlib_surface_create_with_xrender_format (data->dpy, + data->pix, + DefaultScreenOfDisplay (data->dpy), + xrender_format, + size, size); + cairo_surface_set_user_data (surface, &closure_key, data, cleanup); + + return surface; +} diff --git a/test/xlib-surface.c b/test/xlib-surface.c index d958349..eda085f 100644 --- a/test/xlib-surface.c +++ b/test/xlib-surface.c @@ -39,6 +39,63 @@ cairo_bool_t result = 0; +#if CAIRO_HAS_XLIB_XRENDER_SURFACE + +#include "cairo-xlib-xrender.h" + +/* Vladimir Vukicevic reported that surfaces were being created with + * mismatching Visuals and XRenderPictFormats. + */ +static cairo_bool_t +surface_compare_visual_and_format (cairo_surface_t *surface) +{ + Display *dpy; + Visual *visual; + XRenderPictFormat *format; + + dpy = cairo_xlib_surface_get_display (surface); + + visual = cairo_xlib_surface_get_visual (surface); + if (visual == NULL) + return TRUE; + + format = cairo_xlib_surface_get_xrender_format (surface); + if (format == NULL) + return TRUE; + + return format == XRenderFindVisualFormat (dpy, visual); + +} +#else + +static cairo_bool_t +surface_compare_visual_and_format (cairo_surface_t *surface) +{ + return TRUE; +} + +#endif + +static cairo_bool_t +check_similar_visual_and_format (cairo_surface_t *surface) +{ + cairo_surface_t *similar; + cairo_bool_t ret; + + similar = cairo_surface_create_similar (surface, + CAIRO_CONTENT_COLOR_ALPHA, + 1, 1); + if (cairo_surface_status (similar)) + return FALSE; + + ret = surface_compare_visual_and_format (similar); + + cairo_surface_destroy (similar); + + return ret; +} + + static void draw_pattern (cairo_surface_t *surface) { @@ -123,6 +180,9 @@ do_test (Display *dpy, DefaultVisual (dpy, screen), SIZE, SIZE); + if (! surface_compare_visual_and_format (surface)) + return CAIRO_TEST_FAILURE; + if (!use_render) cairo_boilerplate_xlib_surface_disable_render (surface); @@ -134,6 +194,9 @@ do_test (Display *dpy, return CAIRO_TEST_FAILURE; } + if (! check_similar_visual_and_format (surface)) + return CAIRO_TEST_FAILURE; + draw_pattern (surface); test_surface = cairo_image_surface_create_for_data (test_data, @@ -210,6 +273,19 @@ check_visual (Display *dpy) return 0; } +#undef xcalloc +static void * +xcalloc (size_t a, size_t b) +{ + void *ptr = calloc (a, b); + if (ptr == NULL) { + cairo_test_log ("xlib-surface: unable to allocate memory, skipping\n"); + cairo_test_fini (); + exit (0); + } + return ptr; +} + int main (void) { @@ -222,6 +298,7 @@ main (void) cairo_bool_t set_size; cairo_bool_t offscreen; cairo_test_status_t status, result = CAIRO_TEST_SUCCESS; + int stride; cairo_test_init ("xlib-surface"); @@ -238,14 +315,16 @@ main (void) return 0; } - reference_data = malloc (SIZE * SIZE * 4); - test_data = malloc (SIZE * SIZE * 4); - diff_data = malloc (SIZE * SIZE * 4); + stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, SIZE); + + reference_data = xcalloc (SIZE, stride); + test_data = xcalloc (SIZE, stride); + diff_data = xcalloc (SIZE, stride); reference_surface = cairo_image_surface_create_for_data (reference_data, CAIRO_FORMAT_RGB24, SIZE, SIZE, - SIZE * 4); + stride); draw_pattern (reference_surface); cairo_surface_destroy (reference_surface); |