summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLoïc Minier <lool@dooz.org>2009-04-15 00:04:39 +0200
committerLoïc Minier <lool@dooz.org>2009-04-15 00:04:39 +0200
commitf4713253ccf85d454c2d7ae0322ff63c5144bbc9 (patch)
tree8b2bb39ee4d40ad5e22de698f5ec45393910e867 /test
parent0b7f8018c0813104d5ed151ba3ddebd84a9b42ef (diff)
Imported Upstream version 1.6.4
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am264
-rw-r--r--test/Makefile.in1409
-rw-r--r--test/Makefile.win32139
-rw-r--r--test/README162
-rw-r--r--test/a1-image-sample.c2
-rw-r--r--test/a1-mask-ref.pngbin0 -> 131 bytes
-rw-r--r--test/a1-mask.c198
-rw-r--r--test/a8-mask.c31
-rw-r--r--test/big-line-ps-ref.pngbin0 -> 1148 bytes
-rw-r--r--test/big-line-ps-rgb24-ref.pngbin0 -> 830 bytes
-rw-r--r--test/big-line-quartz-ref.pngbin0 -> 1075 bytes
-rw-r--r--test/big-line-quartz-rgb24-ref.pngbin0 -> 941 bytes
-rw-r--r--test/big-line-ref.pngbin0 -> 1486 bytes
-rw-r--r--test/big-line-rgb24-ref.pngbin0 -> 1308 bytes
-rw-r--r--test/big-line.c70
-rw-r--r--test/bilevel-image-ref.pngbin0 -> 131 bytes
-rw-r--r--test/bilevel-image.c68
-rw-r--r--test/bitmap-font.c2
-rw-r--r--test/buffer-diff.c24
-rw-r--r--test/caps-joins-ps-ref.pngbin0 -> 1459 bytes
-rw-r--r--test/clip-fill-rule-ps-argb32-ref.pngbin322 -> 310 bytes
-rw-r--r--test/clip-fill-rule-ps-rgb24-ref.pngbin309 -> 302 bytes
-rw-r--r--test/clip-operator-pdf-argb32-ref.pngbin0 -> 11145 bytes
-rw-r--r--test/clip-operator-pdf-rgb24-ref.pngbin0 -> 6530 bytes
-rw-r--r--test/clip-operator-ps-argb32-ref.pngbin8594 -> 9102 bytes
-rw-r--r--test/clip-operator-ps-rgb24-ref.pngbin0 -> 4620 bytes
-rw-r--r--test/clip-operator-quartz-ref.pngbin0 -> 9539 bytes
-rw-r--r--test/clip-operator-quartz-rgb24-ref.pngbin0 -> 4412 bytes
-rw-r--r--test/clip-operator-ref.pngbin8262 -> 8271 bytes
-rw-r--r--test/clip-twice-ref.pngbin1191 -> 1362 bytes
-rw-r--r--test/clip-twice-rgb24-ref.pngbin1120 -> 1198 bytes
-rw-r--r--test/close-path-ps-ref.pngbin0 -> 309 bytes
-rw-r--r--test/copy-path-ps-argb32-ref.pngbin442 -> 0 bytes
-rw-r--r--test/copy-path-ps-ref.pngbin0 -> 474 bytes
-rw-r--r--test/copy-path-ps-rgb24-ref.pngbin440 -> 0 bytes
-rw-r--r--test/dash-caps-joins-ps-argb32-ref.pngbin3854 -> 3870 bytes
-rw-r--r--test/dash-caps-joins-ps-rgb24-ref.pngbin3852 -> 3870 bytes
-rw-r--r--test/dash-curve-ps-ref.pngbin0 -> 27293 bytes
-rw-r--r--test/dash-curve-quartz-ref.pngbin0 -> 47965 bytes
-rw-r--r--test/dash-scale-quartz-ref.pngbin0 -> 8079 bytes
-rw-r--r--test/dash-scale-ref.pngbin7908 -> 8058 bytes
-rw-r--r--test/dash-state-ps-argb32-ref.pngbin8652 -> 0 bytes
-rw-r--r--test/dash-state-ps-ref.pngbin0 -> 10219 bytes
-rw-r--r--test/dash-state-ps-rgb24-ref.pngbin8650 -> 0 bytes
-rw-r--r--test/dash-state-quartz-ref.pngbin0 -> 8698 bytes
-rw-r--r--test/dash-zero-length-ps-argb32-ref.pngbin319 -> 0 bytes
-rw-r--r--test/dash-zero-length-ps-ref.pngbin0 -> 319 bytes
-rw-r--r--test/dash-zero-length-ps-rgb24-ref.pngbin0 -> 304 bytes
-rw-r--r--test/degenerate-path-quartz-ref.pngbin0 -> 232 bytes
-rw-r--r--test/degenerate-path-quartz-rgb24-ref.pngbin0 -> 198 bytes
-rw-r--r--test/degenerate-pen-ps-argb32-ref.pngbin390 -> 0 bytes
-rw-r--r--test/degenerate-pen-ps-ref.pngbin0 -> 865 bytes
-rw-r--r--test/degenerate-pen-quartz-ref.pngbin0 -> 1144 bytes
-rw-r--r--test/degenerate-pen-ref.pngbin278 -> 1139 bytes
-rw-r--r--test/degenerate-pen.c7
-rw-r--r--test/extend-reflect-ps-ref.pngbin0 -> 153322 bytes
-rw-r--r--test/extend-reflect-similar-ps-ref.pngbin0 -> 153322 bytes
-rw-r--r--test/filter-bilinear-extents-ref.pngbin0 -> 1340 bytes
-rw-r--r--test/filter-bilinear-extents.c91
-rw-r--r--test/finer-grained-fallbacks-ps-argb32-ref.pngbin0 -> 1047 bytes
-rw-r--r--test/finer-grained-fallbacks-ps-rgb24-ref.pngbin0 -> 819 bytes
-rw-r--r--test/finer-grained-fallbacks-ref.pngbin0 -> 796 bytes
-rw-r--r--test/finer-grained-fallbacks-rgb24-ref.pngbin0 -> 590 bytes
-rw-r--r--test/finer-grained-fallbacks.c111
-rw-r--r--test/font-matrix-translation-ps-argb32-ref.pngbin785 -> 748 bytes
-rw-r--r--test/font-matrix-translation-ps-rgb24-ref.pngbin783 -> 748 bytes
-rw-r--r--test/font-matrix-translation-quartz-ref.pngbin0 -> 1090 bytes
-rw-r--r--test/font-matrix-translation.c2
-rw-r--r--test/font-options.c65
-rw-r--r--test/ft-show-glyphs-positioning-pdf-ref.pngbin0 -> 3114 bytes
-rw-r--r--test/ft-show-glyphs-positioning-ps-ref.pngbin0 -> 2269 bytes
-rw-r--r--test/ft-show-glyphs-positioning-ref.pngbin0 -> 3444 bytes
-rw-r--r--test/ft-show-glyphs-positioning-svg-ref.pngbin0 -> 6590 bytes
-rw-r--r--test/ft-show-glyphs-positioning.c167
-rw-r--r--test/ft-show-glyphs-table-ps-ref.pngbin0 -> 5687 bytes
-rw-r--r--test/ft-show-glyphs-table-ref.pngbin0 -> 11439 bytes
-rw-r--r--test/ft-show-glyphs-table.c116
-rw-r--r--test/ft-text-vertical-layout-type1-pdf-ref.pngbin0 -> 3604 bytes
-rw-r--r--test/ft-text-vertical-layout-type1-ps-argb32-ref.pngbin1879 -> 0 bytes
-rw-r--r--test/ft-text-vertical-layout-type1-ps-ref.pngbin0 -> 1910 bytes
-rw-r--r--test/ft-text-vertical-layout-type3-pdf-ref.pngbin0 -> 3634 bytes
-rw-r--r--test/ft-text-vertical-layout-type3-ps-argb32-ref.pngbin1882 -> 0 bytes
-rw-r--r--test/ft-text-vertical-layout-type3-ps-ref.pngbin0 -> 1867 bytes
-rw-r--r--test/get-path-extents.c159
-rw-r--r--test/get-xrender-format.c3
-rw-r--r--test/glitz-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/glitz-surface-source.c201
-rw-r--r--test/glyph-cache-pressure-ps-ref.pngbin0 -> 1454 bytes
-rw-r--r--test/glyph-cache-pressure-quartz-ref.pngbin0 -> 3654 bytes
-rw-r--r--test/gradient-alpha-pdf-argb32-ref.pngbin0 -> 126 bytes
-rw-r--r--test/gradient-alpha-pdf-rgb24-ref.pngbin0 -> 121 bytes
-rw-r--r--test/gradient-alpha-ps-argb32-ref.pngbin187 -> 189 bytes
-rw-r--r--test/gradient-alpha-ps-rgb24-ref.pngbin184 -> 179 bytes
-rw-r--r--test/gradient-alpha.c3
-rw-r--r--test/image-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/image-surface-source.c35
-rw-r--r--test/infinite-join-ps-ref.pngbin0 -> 218 bytes
-rw-r--r--test/invalid-matrix.c179
-rw-r--r--test/large-source-ref.pngbin0 -> 137 bytes
-rw-r--r--test/large-source.c109
-rw-r--r--test/leaky-dash-quartz-ref.pngbin0 -> 241 bytes
-rw-r--r--test/leaky-polygon-ps-ref.pngbin0 -> 354 bytes
-rw-r--r--test/line-width-scale-ps-argb32-ref.pngbin3903 -> 0 bytes
-rw-r--r--test/line-width-scale-ps-ref.pngbin0 -> 3911 bytes
-rw-r--r--test/line-width-scale-ps-rgb24-ref.pngbin3901 -> 0 bytes
-rw-r--r--test/line-width-scale-quartz-ref.pngbin0 -> 6434 bytes
-rw-r--r--test/linear-gradient-pdf-ref.pngbin0 -> 935 bytes
-rw-r--r--test/linear-gradient-ps-argb32-ref.pngbin613 -> 0 bytes
-rw-r--r--test/linear-gradient-ps-ref.pngbin0 -> 779 bytes
-rw-r--r--test/linear-gradient-ps-rgb24-ref.pngbin613 -> 0 bytes
-rw-r--r--test/linear-gradient-quartz-ref.pngbin0 -> 1164 bytes
-rw-r--r--test/linear-gradient-reflect-pdf-argb32-ref.pngbin0 -> 248 bytes
-rw-r--r--test/linear-gradient-reflect-pdf-rgb24-ref.pngbin0 -> 248 bytes
-rw-r--r--test/linear-gradient-reflect-ps-ref.pngbin0 -> 314 bytes
-rw-r--r--test/linear-gradient-reflect-quartz-ref.pngbin0 -> 878 bytes
-rw-r--r--test/linear-gradient.c3
-rw-r--r--test/long-dashed-lines-ps-ref.pngbin0 -> 1516 bytes
-rw-r--r--test/long-dashed-lines-quartz-ref.pngbin0 -> 2313 bytes
-rw-r--r--test/long-dashed-lines-ref.pngbin0 -> 2116 bytes
-rw-r--r--test/long-dashed-lines.c75
-rw-r--r--test/mask-alpha-quartz-argb32-ref.pngbin0 -> 641 bytes
-rw-r--r--test/mask-alpha-svg-argb32-ref.pngbin0 -> 615 bytes
-rw-r--r--test/mask-pdf-argb32-ref.pngbin0 -> 7834 bytes
-rw-r--r--test/mask-pdf-rgb24-ref.pngbin0 -> 7383 bytes
-rw-r--r--test/mask-quartz-ref.pngbin0 -> 10682 bytes
-rw-r--r--test/mask-quartz-rgb24-ref.pngbin0 -> 8418 bytes
-rw-r--r--test/mask-ref.pngbin8381 -> 8476 bytes
-rw-r--r--test/mask-svg-argb32-ref.pngbin8389 -> 8527 bytes
-rw-r--r--test/meta-surface-pattern-ps-argb32-ref.pngbin0 -> 3257 bytes
-rw-r--r--test/meta-surface-pattern-ps-rgb24-ref.pngbin0 -> 3873 bytes
-rw-r--r--test/meta-surface-pattern-quartz-ref.pngbin0 -> 4572 bytes
-rw-r--r--test/meta-surface-pattern-quartz-rgb24-ref.pngbin0 -> 4063 bytes
-rw-r--r--test/meta-surface-pattern-svg-argb32-ref.pngbin0 -> 3924 bytes
-rw-r--r--test/meta-surface-pattern-svg-rgb24-ref.pngbin0 -> 4593 bytes
-rw-r--r--test/new-sub-path-ps-argb32-ref.pngbin559 -> 556 bytes
-rw-r--r--test/new-sub-path-quartz-ref.pngbin386 -> 383 bytes
-rw-r--r--test/operator-clear-pdf-argb32-ref.pngbin0 -> 1438 bytes
-rw-r--r--test/operator-clear-pdf-rgb24-ref.pngbin0 -> 1170 bytes
-rw-r--r--test/operator-clear-ps-argb32-ref.pngbin0 -> 1435 bytes
-rw-r--r--test/operator-clear-quartz-ref.pngbin1195 -> 1459 bytes
-rw-r--r--test/operator-clear-quartz-rgb24-ref.pngbin1244 -> 1293 bytes
-rw-r--r--test/operator-source-pdf-argb32-ref.pngbin0 -> 4694 bytes
-rw-r--r--test/operator-source-pdf-rgb24-ref.pngbin0 -> 3848 bytes
-rw-r--r--test/operator-source-ps-argb32-ref.pngbin3885 -> 3890 bytes
-rw-r--r--test/operator-source-ps-rgb24-ref.pngbin3548 -> 3181 bytes
-rw-r--r--test/operator-source-quartz-ref.pngbin0 -> 4637 bytes
-rw-r--r--test/operator-source-quartz-rgb24-ref.pngbin0 -> 3533 bytes
-rw-r--r--test/operator-source-ref.pngbin4422 -> 4420 bytes
-rw-r--r--test/over-above-source-quartz-ref.pngbin0 -> 530 bytes
-rw-r--r--test/over-above-source-quartz-rgb24-ref.pngbin0 -> 456 bytes
-rw-r--r--test/over-around-source-ps-argb32-ref.pngbin637 -> 632 bytes
-rw-r--r--test/over-around-source-quartz-ref.pngbin0 -> 612 bytes
-rw-r--r--test/over-around-source-quartz-rgb24-ref.pngbin0 -> 491 bytes
-rw-r--r--test/over-between-source-quartz-ref.pngbin0 -> 570 bytes
-rw-r--r--test/over-between-source-quartz-rgb24-ref.pngbin0 -> 467 bytes
-rw-r--r--test/paint-source-alpha-pdf-ref.pngbin0 -> 473 bytes
-rw-r--r--test/paint-with-alpha-pdf-ref.pngbin0 -> 466 bytes
-rw-r--r--test/pdf-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/pdf-surface-source.c41
-rw-r--r--test/pdiff/Makefile.in184
-rw-r--r--test/pixman-rotate-ps-argb32-ref.pngbin411 -> 0 bytes
-rw-r--r--test/pixman-rotate-ps-rgb24-ref.pngbin392 -> 0 bytes
-rw-r--r--test/png.c149
-rw-r--r--test/ps-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/ps-surface-source.c41
-rw-r--r--test/push-group-pdf-ref.pngbin0 -> 2807 bytes
-rw-r--r--test/push-group-pdf-rgb24-ref.pngbin0 -> 2714 bytes
-rw-r--r--test/push-group-ref.pngbin3005 -> 3126 bytes
-rw-r--r--test/push-group-rgb24-ref.pngbin2849 -> 2961 bytes
-rw-r--r--test/radial-gradient-pdf-ref.pngbin0 -> 79490 bytes
-rw-r--r--test/radial-gradient-quartz-ref.pngbin0 -> 92334 bytes
-rw-r--r--test/random-intersections-ps-argb32-ref.pngbin89416 -> 0 bytes
-rw-r--r--test/random-intersections-ps-ref.pngbin0 -> 89253 bytes
-rw-r--r--test/random-intersections-ps-rgb24-ref.pngbin89414 -> 0 bytes
-rw-r--r--test/random-intersections-quartz-ref.pngbin0 -> 197778 bytes
-rw-r--r--test/random-intersections-ref.pngbin132210 -> 148722 bytes
-rw-r--r--test/rectilinear-miter-limit-ps-ref.pngbin0 -> 221 bytes
-rw-r--r--test/reflected-stroke-ps-ref.pngbin0 -> 3898 bytes
-rw-r--r--test/reflected-stroke-quartz-ref.pngbin0 -> 5293 bytes
-rw-r--r--test/reflected-stroke-ref.pngbin0 -> 5704 bytes
-rw-r--r--test/reflected-stroke.c100
-rw-r--r--test/rotate-image-surface-paint-pdf-rgb24-ref.pngbin0 -> 207 bytes
-rw-r--r--test/rotate-image-surface-paint-ps-argb32-ref.pngbin276 -> 0 bytes
-rw-r--r--test/rotate-image-surface-paint-ps-ref.pngbin0 -> 275 bytes
-rw-r--r--test/rotate-image-surface-paint-ps-rgb24-ref.pngbin274 -> 0 bytes
-rw-r--r--test/rotate-image-surface-paint-quartz-ref.pngbin0 -> 257 bytes
-rw-r--r--test/rotate-image-surface-paint-ref.pngbin209 -> 232 bytes
-rw-r--r--test/scale-source-surface-paint-pdf-rgb24-ref.pngbin0 -> 198 bytes
-rw-r--r--test/select-font-face-ps-ref.pngbin0 -> 959 bytes
-rw-r--r--test/select-font-face-quartz-ref.pngbin0 -> 2970 bytes
-rw-r--r--test/self-copy-ps-ref.pngbin0 -> 335 bytes
-rw-r--r--test/show-text-current-point-ps-ref.pngbin0 -> 1356 bytes
-rw-r--r--test/show-text-current-point-quartz-ref.pngbin0 -> 3093 bytes
-rw-r--r--test/skew-extreme-ps-ref.pngbin0 -> 1048 bytes
-rw-r--r--test/smask-fill-pdf-ref.pngbin0 -> 1075 bytes
-rw-r--r--test/smask-fill-ref.pngbin0 -> 1223 bytes
-rw-r--r--test/smask-fill-svg-ref.pngbin0 -> 1166 bytes
-rw-r--r--test/smask-fill.c83
-rw-r--r--test/smask-image-mask-pdf-ref.pngbin0 -> 421 bytes
-rw-r--r--test/smask-image-mask-ref.pngbin0 -> 643 bytes
-rw-r--r--test/smask-image-mask.c92
-rw-r--r--test/smask-mask-pdf-ref.pngbin0 -> 3731 bytes
-rw-r--r--test/smask-mask-ref.pngbin0 -> 2523 bytes
-rw-r--r--test/smask-mask-svg-ref.pngbin0 -> 2529 bytes
-rw-r--r--test/smask-mask.c107
-rw-r--r--test/smask-paint-pdf-ref.pngbin0 -> 3800 bytes
-rw-r--r--test/smask-paint-ref.pngbin0 -> 2639 bytes
-rw-r--r--test/smask-paint-svg-ref.pngbin0 -> 2612 bytes
-rw-r--r--test/smask-paint.c90
-rw-r--r--test/smask-pdf-ref.pngbin0 -> 3800 bytes
-rw-r--r--test/smask-ps-ref.pngbin0 -> 3669 bytes
-rw-r--r--test/smask-ref.pngbin0 -> 3587 bytes
-rw-r--r--test/smask-stroke-pdf-ref.pngbin0 -> 449 bytes
-rw-r--r--test/smask-stroke-ref.pngbin0 -> 1845 bytes
-rw-r--r--test/smask-stroke.c83
-rw-r--r--test/smask-svg-ref.pngbin0 -> 3634 bytes
-rw-r--r--test/smask-text-pdf-ref.pngbin0 -> 1806 bytes
-rw-r--r--test/smask-text-ps-ref.pngbin0 -> 2023 bytes
-rw-r--r--test/smask-text-ref.pngbin0 -> 1739 bytes
-rw-r--r--test/smask-text-svg-ref.pngbin0 -> 1886 bytes
-rw-r--r--test/smask-text.c92
-rw-r--r--test/smask.c130
-rw-r--r--test/source-clip-scale-pdf-ref.pngbin0 -> 113 bytes
-rw-r--r--test/stroke-ctm-caps-ps-ref.pngbin0 -> 1079 bytes
-rw-r--r--test/stroke-ctm-caps-quartz-ref.pngbin0 -> 1109 bytes
-rw-r--r--test/stroke-ctm-caps-ref.pngbin0 -> 1057 bytes
-rw-r--r--test/stroke-ctm-caps.c86
-rw-r--r--test/stroke-image-pdf-ref.pngbin0 -> 1554 bytes
-rw-r--r--test/stroke-image-ps-ref.pngbin0 -> 1786 bytes
-rw-r--r--test/stroke-image-quartz-ref.pngbin0 -> 1802 bytes
-rw-r--r--test/stroke-image-ref.pngbin0 -> 1866 bytes
-rw-r--r--test/stroke-image.c78
-rw-r--r--test/surface-pattern-scale-down-quartz-ref.pngbin0 -> 3188 bytes
-rw-r--r--test/surface-source.c101
-rw-r--r--test/svg-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/svg-surface-source.c41
-rw-r--r--test/text-antialias-gray-quartz-ref.pngbin0 -> 1041 bytes
-rw-r--r--test/text-antialias-none-quartz-ref.pngbin0 -> 300 bytes
-rw-r--r--test/text-antialias-subpixel-quartz-ref.pngbin0 -> 1065 bytes
-rw-r--r--test/text-pattern-pdf-argb32-ref.pngbin0 -> 1823 bytes
-rw-r--r--test/text-pattern-pdf-rgb24-ref.pngbin0 -> 508 bytes
-rw-r--r--test/text-pattern-ps-argb32-ref.pngbin997 -> 966 bytes
-rw-r--r--test/text-pattern-ps-rgb24-ref.pngbin969 -> 924 bytes
-rw-r--r--test/text-pattern-quartz-ref.pngbin0 -> 2158 bytes
-rw-r--r--test/text-pattern-quartz-rgb24-ref.pngbin0 -> 1874 bytes
-rw-r--r--test/text-pattern-svg-argb32-ref.pngbin1749 -> 1733 bytes
-rw-r--r--test/text-pattern.c3
-rw-r--r--test/text-rotate-ps-argb32-ref.pngbin7198 -> 0 bytes
-rw-r--r--test/text-rotate-ps-ref.pngbin0 -> 6878 bytes
-rw-r--r--test/text-rotate-ps-rgb24-ref.pngbin7196 -> 0 bytes
-rw-r--r--test/text-rotate-quartz-ref.pngbin0 -> 17820 bytes
-rw-r--r--test/text-transform-pdf-ref.pngbin0 -> 3796 bytes
-rw-r--r--test/text-transform-ps-ref.pngbin0 -> 4154 bytes
-rw-r--r--test/text-transform-ref.pngbin0 -> 6200 bytes
-rw-r--r--test/text-transform.c111
-rw-r--r--test/text-zero-len-ref.pngbin130 -> 0 bytes
-rw-r--r--test/text-zero-len.c4
-rw-r--r--test/transforms-ps-ref.pngbin0 -> 418 bytes
-rw-r--r--test/trap-clip-pdf-argb32-ref.pngbin0 -> 5809 bytes
-rw-r--r--test/trap-clip-pdf-rgb24-ref.pngbin0 -> 5768 bytes
-rw-r--r--test/trap-clip-ps-argb32-ref.pngbin5700 -> 5591 bytes
-rw-r--r--test/trap-clip-ps-rgb24-ref.pngbin5616 -> 5512 bytes
-rw-r--r--test/trap-clip-quartz-ref.pngbin5814 -> 6041 bytes
-rw-r--r--test/trap-clip-ref.pngbin5723 -> 5772 bytes
-rw-r--r--test/trap-clip.c3
-rw-r--r--test/unantialiased-shapes-quartz-ref.pngbin0 -> 4394 bytes
-rw-r--r--test/unantialiased-shapes-ref.pngbin3968 -> 4459 bytes
-rw-r--r--test/unbounded-operator-quartz-ref.pngbin0 -> 4066 bytes
-rw-r--r--test/unbounded-operator-quartz-rgb24-ref.pngbin0 -> 1918 bytes
-rw-r--r--test/xlib-surface-source-ref.pngbin0 -> 268 bytes
-rw-r--r--test/xlib-surface-source.c76
-rw-r--r--test/xlib-surface.c87
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
new file mode 100644
index 0000000..ac4d97a
--- /dev/null
+++ b/test/a1-mask-ref.png
Binary files differ
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
new file mode 100644
index 0000000..2a4f57c
--- /dev/null
+++ b/test/big-line-ps-ref.png
Binary files differ
diff --git a/test/big-line-ps-rgb24-ref.png b/test/big-line-ps-rgb24-ref.png
new file mode 100644
index 0000000..d3d2356
--- /dev/null
+++ b/test/big-line-ps-rgb24-ref.png
Binary files differ
diff --git a/test/big-line-quartz-ref.png b/test/big-line-quartz-ref.png
new file mode 100644
index 0000000..b8dfe8b
--- /dev/null
+++ b/test/big-line-quartz-ref.png
Binary files differ
diff --git a/test/big-line-quartz-rgb24-ref.png b/test/big-line-quartz-rgb24-ref.png
new file mode 100644
index 0000000..c4fc158
--- /dev/null
+++ b/test/big-line-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/big-line-ref.png b/test/big-line-ref.png
new file mode 100644
index 0000000..7bfb379
--- /dev/null
+++ b/test/big-line-ref.png
Binary files differ
diff --git a/test/big-line-rgb24-ref.png b/test/big-line-rgb24-ref.png
new file mode 100644
index 0000000..f1fc49d
--- /dev/null
+++ b/test/big-line-rgb24-ref.png
Binary files differ
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
new file mode 100644
index 0000000..cae76d6
--- /dev/null
+++ b/test/bilevel-image-ref.png
Binary files differ
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
new file mode 100644
index 0000000..1d473ac
--- /dev/null
+++ b/test/caps-joins-ps-ref.png
Binary files differ
diff --git a/test/clip-fill-rule-ps-argb32-ref.png b/test/clip-fill-rule-ps-argb32-ref.png
index f06a1a2..67a8988 100644
--- a/test/clip-fill-rule-ps-argb32-ref.png
+++ b/test/clip-fill-rule-ps-argb32-ref.png
Binary files differ
diff --git a/test/clip-fill-rule-ps-rgb24-ref.png b/test/clip-fill-rule-ps-rgb24-ref.png
index 60e43c4..0697a42 100644
--- a/test/clip-fill-rule-ps-rgb24-ref.png
+++ b/test/clip-fill-rule-ps-rgb24-ref.png
Binary files differ
diff --git a/test/clip-operator-pdf-argb32-ref.png b/test/clip-operator-pdf-argb32-ref.png
new file mode 100644
index 0000000..b00cc00
--- /dev/null
+++ b/test/clip-operator-pdf-argb32-ref.png
Binary files differ
diff --git a/test/clip-operator-pdf-rgb24-ref.png b/test/clip-operator-pdf-rgb24-ref.png
new file mode 100644
index 0000000..f9377fa
--- /dev/null
+++ b/test/clip-operator-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/clip-operator-ps-argb32-ref.png b/test/clip-operator-ps-argb32-ref.png
index 1d49920..35014bd 100644
--- a/test/clip-operator-ps-argb32-ref.png
+++ b/test/clip-operator-ps-argb32-ref.png
Binary files differ
diff --git a/test/clip-operator-ps-rgb24-ref.png b/test/clip-operator-ps-rgb24-ref.png
new file mode 100644
index 0000000..1736e4b
--- /dev/null
+++ b/test/clip-operator-ps-rgb24-ref.png
Binary files differ
diff --git a/test/clip-operator-quartz-ref.png b/test/clip-operator-quartz-ref.png
new file mode 100644
index 0000000..1726944
--- /dev/null
+++ b/test/clip-operator-quartz-ref.png
Binary files differ
diff --git a/test/clip-operator-quartz-rgb24-ref.png b/test/clip-operator-quartz-rgb24-ref.png
new file mode 100644
index 0000000..a18c6f2
--- /dev/null
+++ b/test/clip-operator-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/clip-operator-ref.png b/test/clip-operator-ref.png
index 9f4eff0..4ea1842 100644
--- a/test/clip-operator-ref.png
+++ b/test/clip-operator-ref.png
Binary files differ
diff --git a/test/clip-twice-ref.png b/test/clip-twice-ref.png
index bd3e3db..8dc86f3 100644
--- a/test/clip-twice-ref.png
+++ b/test/clip-twice-ref.png
Binary files differ
diff --git a/test/clip-twice-rgb24-ref.png b/test/clip-twice-rgb24-ref.png
index 7485594..3f1c013 100644
--- a/test/clip-twice-rgb24-ref.png
+++ b/test/clip-twice-rgb24-ref.png
Binary files differ
diff --git a/test/close-path-ps-ref.png b/test/close-path-ps-ref.png
new file mode 100644
index 0000000..e43821c
--- /dev/null
+++ b/test/close-path-ps-ref.png
Binary files differ
diff --git a/test/copy-path-ps-argb32-ref.png b/test/copy-path-ps-argb32-ref.png
deleted file mode 100644
index 647fafb..0000000
--- a/test/copy-path-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/copy-path-ps-ref.png b/test/copy-path-ps-ref.png
new file mode 100644
index 0000000..f66015b
--- /dev/null
+++ b/test/copy-path-ps-ref.png
Binary files differ
diff --git a/test/copy-path-ps-rgb24-ref.png b/test/copy-path-ps-rgb24-ref.png
deleted file mode 100644
index aa27262..0000000
--- a/test/copy-path-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/dash-caps-joins-ps-argb32-ref.png b/test/dash-caps-joins-ps-argb32-ref.png
index 513fb68..baadcb4 100644
--- a/test/dash-caps-joins-ps-argb32-ref.png
+++ b/test/dash-caps-joins-ps-argb32-ref.png
Binary files differ
diff --git a/test/dash-caps-joins-ps-rgb24-ref.png b/test/dash-caps-joins-ps-rgb24-ref.png
index c62f48d..baadcb4 100644
--- a/test/dash-caps-joins-ps-rgb24-ref.png
+++ b/test/dash-caps-joins-ps-rgb24-ref.png
Binary files differ
diff --git a/test/dash-curve-ps-ref.png b/test/dash-curve-ps-ref.png
new file mode 100644
index 0000000..25a768b
--- /dev/null
+++ b/test/dash-curve-ps-ref.png
Binary files differ
diff --git a/test/dash-curve-quartz-ref.png b/test/dash-curve-quartz-ref.png
new file mode 100644
index 0000000..18a506e
--- /dev/null
+++ b/test/dash-curve-quartz-ref.png
Binary files differ
diff --git a/test/dash-scale-quartz-ref.png b/test/dash-scale-quartz-ref.png
new file mode 100644
index 0000000..8fc897b
--- /dev/null
+++ b/test/dash-scale-quartz-ref.png
Binary files differ
diff --git a/test/dash-scale-ref.png b/test/dash-scale-ref.png
index 60aab2f..a0f004b 100644
--- a/test/dash-scale-ref.png
+++ b/test/dash-scale-ref.png
Binary files differ
diff --git a/test/dash-state-ps-argb32-ref.png b/test/dash-state-ps-argb32-ref.png
deleted file mode 100644
index 01d32fa..0000000
--- a/test/dash-state-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/dash-state-ps-ref.png b/test/dash-state-ps-ref.png
new file mode 100644
index 0000000..ec6904e
--- /dev/null
+++ b/test/dash-state-ps-ref.png
Binary files differ
diff --git a/test/dash-state-ps-rgb24-ref.png b/test/dash-state-ps-rgb24-ref.png
deleted file mode 100644
index e655974..0000000
--- a/test/dash-state-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/dash-state-quartz-ref.png b/test/dash-state-quartz-ref.png
new file mode 100644
index 0000000..f5f712a
--- /dev/null
+++ b/test/dash-state-quartz-ref.png
Binary files differ
diff --git a/test/dash-zero-length-ps-argb32-ref.png b/test/dash-zero-length-ps-argb32-ref.png
deleted file mode 100644
index 6c334e1..0000000
--- a/test/dash-zero-length-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/dash-zero-length-ps-ref.png b/test/dash-zero-length-ps-ref.png
new file mode 100644
index 0000000..68fd3fb
--- /dev/null
+++ b/test/dash-zero-length-ps-ref.png
Binary files differ
diff --git a/test/dash-zero-length-ps-rgb24-ref.png b/test/dash-zero-length-ps-rgb24-ref.png
new file mode 100644
index 0000000..8a4a40f
--- /dev/null
+++ b/test/dash-zero-length-ps-rgb24-ref.png
Binary files differ
diff --git a/test/degenerate-path-quartz-ref.png b/test/degenerate-path-quartz-ref.png
new file mode 100644
index 0000000..d1d8f2f
--- /dev/null
+++ b/test/degenerate-path-quartz-ref.png
Binary files differ
diff --git a/test/degenerate-path-quartz-rgb24-ref.png b/test/degenerate-path-quartz-rgb24-ref.png
new file mode 100644
index 0000000..d6ff7eb
--- /dev/null
+++ b/test/degenerate-path-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/degenerate-pen-ps-argb32-ref.png b/test/degenerate-pen-ps-argb32-ref.png
deleted file mode 100644
index 6117f0f..0000000
--- a/test/degenerate-pen-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/degenerate-pen-ps-ref.png b/test/degenerate-pen-ps-ref.png
new file mode 100644
index 0000000..2d0f07b
--- /dev/null
+++ b/test/degenerate-pen-ps-ref.png
Binary files differ
diff --git a/test/degenerate-pen-quartz-ref.png b/test/degenerate-pen-quartz-ref.png
new file mode 100644
index 0000000..cc25b88
--- /dev/null
+++ b/test/degenerate-pen-quartz-ref.png
Binary files differ
diff --git a/test/degenerate-pen-ref.png b/test/degenerate-pen-ref.png
index 0ad3325..5961ddd 100644
--- a/test/degenerate-pen-ref.png
+++ b/test/degenerate-pen-ref.png
Binary files differ
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
new file mode 100644
index 0000000..b33b38d
--- /dev/null
+++ b/test/extend-reflect-ps-ref.png
Binary files differ
diff --git a/test/extend-reflect-similar-ps-ref.png b/test/extend-reflect-similar-ps-ref.png
new file mode 100644
index 0000000..b33b38d
--- /dev/null
+++ b/test/extend-reflect-similar-ps-ref.png
Binary files differ
diff --git a/test/filter-bilinear-extents-ref.png b/test/filter-bilinear-extents-ref.png
new file mode 100644
index 0000000..61e416b
--- /dev/null
+++ b/test/filter-bilinear-extents-ref.png
Binary files differ
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
new file mode 100644
index 0000000..402f01b
--- /dev/null
+++ b/test/finer-grained-fallbacks-ps-argb32-ref.png
Binary files differ
diff --git a/test/finer-grained-fallbacks-ps-rgb24-ref.png b/test/finer-grained-fallbacks-ps-rgb24-ref.png
new file mode 100644
index 0000000..e821344
--- /dev/null
+++ b/test/finer-grained-fallbacks-ps-rgb24-ref.png
Binary files differ
diff --git a/test/finer-grained-fallbacks-ref.png b/test/finer-grained-fallbacks-ref.png
new file mode 100644
index 0000000..7dce860
--- /dev/null
+++ b/test/finer-grained-fallbacks-ref.png
Binary files differ
diff --git a/test/finer-grained-fallbacks-rgb24-ref.png b/test/finer-grained-fallbacks-rgb24-ref.png
new file mode 100644
index 0000000..7328482
--- /dev/null
+++ b/test/finer-grained-fallbacks-rgb24-ref.png
Binary files differ
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
index 9f6a252..41d05a0 100644
--- a/test/font-matrix-translation-ps-argb32-ref.png
+++ b/test/font-matrix-translation-ps-argb32-ref.png
Binary files differ
diff --git a/test/font-matrix-translation-ps-rgb24-ref.png b/test/font-matrix-translation-ps-rgb24-ref.png
index 330a1b5..41d05a0 100644
--- a/test/font-matrix-translation-ps-rgb24-ref.png
+++ b/test/font-matrix-translation-ps-rgb24-ref.png
Binary files differ
diff --git a/test/font-matrix-translation-quartz-ref.png b/test/font-matrix-translation-quartz-ref.png
new file mode 100644
index 0000000..90fd962
--- /dev/null
+++ b/test/font-matrix-translation-quartz-ref.png
Binary files differ
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
new file mode 100644
index 0000000..11f6953
--- /dev/null
+++ b/test/ft-show-glyphs-positioning-pdf-ref.png
Binary files differ
diff --git a/test/ft-show-glyphs-positioning-ps-ref.png b/test/ft-show-glyphs-positioning-ps-ref.png
new file mode 100644
index 0000000..c5fbf30
--- /dev/null
+++ b/test/ft-show-glyphs-positioning-ps-ref.png
Binary files differ
diff --git a/test/ft-show-glyphs-positioning-ref.png b/test/ft-show-glyphs-positioning-ref.png
new file mode 100644
index 0000000..21b9a4e
--- /dev/null
+++ b/test/ft-show-glyphs-positioning-ref.png
Binary files differ
diff --git a/test/ft-show-glyphs-positioning-svg-ref.png b/test/ft-show-glyphs-positioning-svg-ref.png
new file mode 100644
index 0000000..43b83cb
--- /dev/null
+++ b/test/ft-show-glyphs-positioning-svg-ref.png
Binary files differ
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
new file mode 100644
index 0000000..5143663
--- /dev/null
+++ b/test/ft-show-glyphs-table-ps-ref.png
Binary files differ
diff --git a/test/ft-show-glyphs-table-ref.png b/test/ft-show-glyphs-table-ref.png
new file mode 100644
index 0000000..92a3527
--- /dev/null
+++ b/test/ft-show-glyphs-table-ref.png
Binary files differ
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
new file mode 100644
index 0000000..1fa9ecd
--- /dev/null
+++ b/test/ft-text-vertical-layout-type1-pdf-ref.png
Binary files differ
diff --git a/test/ft-text-vertical-layout-type1-ps-argb32-ref.png b/test/ft-text-vertical-layout-type1-ps-argb32-ref.png
deleted file mode 100644
index 56943e4..0000000
--- a/test/ft-text-vertical-layout-type1-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/ft-text-vertical-layout-type1-ps-ref.png b/test/ft-text-vertical-layout-type1-ps-ref.png
new file mode 100644
index 0000000..388ae73
--- /dev/null
+++ b/test/ft-text-vertical-layout-type1-ps-ref.png
Binary files differ
diff --git a/test/ft-text-vertical-layout-type3-pdf-ref.png b/test/ft-text-vertical-layout-type3-pdf-ref.png
new file mode 100644
index 0000000..04e679b
--- /dev/null
+++ b/test/ft-text-vertical-layout-type3-pdf-ref.png
Binary files differ
diff --git a/test/ft-text-vertical-layout-type3-ps-argb32-ref.png b/test/ft-text-vertical-layout-type3-ps-argb32-ref.png
deleted file mode 100644
index 08581e5..0000000
--- a/test/ft-text-vertical-layout-type3-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/ft-text-vertical-layout-type3-ps-ref.png b/test/ft-text-vertical-layout-type3-ps-ref.png
new file mode 100644
index 0000000..7e84d12
--- /dev/null
+++ b/test/ft-text-vertical-layout-type3-ps-ref.png
Binary files differ
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
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/glitz-surface-source-ref.png
Binary files differ
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
new file mode 100644
index 0000000..88fa447
--- /dev/null
+++ b/test/glyph-cache-pressure-ps-ref.png
Binary files differ
diff --git a/test/glyph-cache-pressure-quartz-ref.png b/test/glyph-cache-pressure-quartz-ref.png
new file mode 100644
index 0000000..88d3db6
--- /dev/null
+++ b/test/glyph-cache-pressure-quartz-ref.png
Binary files differ
diff --git a/test/gradient-alpha-pdf-argb32-ref.png b/test/gradient-alpha-pdf-argb32-ref.png
new file mode 100644
index 0000000..bf9c69a
--- /dev/null
+++ b/test/gradient-alpha-pdf-argb32-ref.png
Binary files differ
diff --git a/test/gradient-alpha-pdf-rgb24-ref.png b/test/gradient-alpha-pdf-rgb24-ref.png
new file mode 100644
index 0000000..7985273
--- /dev/null
+++ b/test/gradient-alpha-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/gradient-alpha-ps-argb32-ref.png b/test/gradient-alpha-ps-argb32-ref.png
index 8b93c05..323238b 100644
--- a/test/gradient-alpha-ps-argb32-ref.png
+++ b/test/gradient-alpha-ps-argb32-ref.png
Binary files differ
diff --git a/test/gradient-alpha-ps-rgb24-ref.png b/test/gradient-alpha-ps-rgb24-ref.png
index c3c96cb..430052c 100644
--- a/test/gradient-alpha-ps-rgb24-ref.png
+++ b/test/gradient-alpha-ps-rgb24-ref.png
Binary files differ
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
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/image-surface-source-ref.png
Binary files differ
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
new file mode 100644
index 0000000..6fba8f4
--- /dev/null
+++ b/test/infinite-join-ps-ref.png
Binary files differ
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
new file mode 100644
index 0000000..5d96dd3
--- /dev/null
+++ b/test/large-source-ref.png
Binary files differ
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
new file mode 100644
index 0000000..8343359
--- /dev/null
+++ b/test/leaky-dash-quartz-ref.png
Binary files differ
diff --git a/test/leaky-polygon-ps-ref.png b/test/leaky-polygon-ps-ref.png
new file mode 100644
index 0000000..5e8808c
--- /dev/null
+++ b/test/leaky-polygon-ps-ref.png
Binary files differ
diff --git a/test/line-width-scale-ps-argb32-ref.png b/test/line-width-scale-ps-argb32-ref.png
deleted file mode 100644
index 4b43302..0000000
--- a/test/line-width-scale-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/line-width-scale-ps-ref.png b/test/line-width-scale-ps-ref.png
new file mode 100644
index 0000000..9d95aaf
--- /dev/null
+++ b/test/line-width-scale-ps-ref.png
Binary files differ
diff --git a/test/line-width-scale-ps-rgb24-ref.png b/test/line-width-scale-ps-rgb24-ref.png
deleted file mode 100644
index 12c5b52..0000000
--- a/test/line-width-scale-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/line-width-scale-quartz-ref.png b/test/line-width-scale-quartz-ref.png
new file mode 100644
index 0000000..7a31539
--- /dev/null
+++ b/test/line-width-scale-quartz-ref.png
Binary files differ
diff --git a/test/linear-gradient-pdf-ref.png b/test/linear-gradient-pdf-ref.png
new file mode 100644
index 0000000..ede7c90
--- /dev/null
+++ b/test/linear-gradient-pdf-ref.png
Binary files differ
diff --git a/test/linear-gradient-ps-argb32-ref.png b/test/linear-gradient-ps-argb32-ref.png
deleted file mode 100644
index e9202d8..0000000
--- a/test/linear-gradient-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/linear-gradient-ps-ref.png b/test/linear-gradient-ps-ref.png
new file mode 100644
index 0000000..c2fa71b
--- /dev/null
+++ b/test/linear-gradient-ps-ref.png
Binary files differ
diff --git a/test/linear-gradient-ps-rgb24-ref.png b/test/linear-gradient-ps-rgb24-ref.png
deleted file mode 100644
index e9202d8..0000000
--- a/test/linear-gradient-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/linear-gradient-quartz-ref.png b/test/linear-gradient-quartz-ref.png
new file mode 100644
index 0000000..43fb508
--- /dev/null
+++ b/test/linear-gradient-quartz-ref.png
Binary files differ
diff --git a/test/linear-gradient-reflect-pdf-argb32-ref.png b/test/linear-gradient-reflect-pdf-argb32-ref.png
new file mode 100644
index 0000000..46e1c0f
--- /dev/null
+++ b/test/linear-gradient-reflect-pdf-argb32-ref.png
Binary files differ
diff --git a/test/linear-gradient-reflect-pdf-rgb24-ref.png b/test/linear-gradient-reflect-pdf-rgb24-ref.png
new file mode 100644
index 0000000..46e1c0f
--- /dev/null
+++ b/test/linear-gradient-reflect-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/linear-gradient-reflect-ps-ref.png b/test/linear-gradient-reflect-ps-ref.png
new file mode 100644
index 0000000..ea6d25c
--- /dev/null
+++ b/test/linear-gradient-reflect-ps-ref.png
Binary files differ
diff --git a/test/linear-gradient-reflect-quartz-ref.png b/test/linear-gradient-reflect-quartz-ref.png
new file mode 100644
index 0000000..a0067ac
--- /dev/null
+++ b/test/linear-gradient-reflect-quartz-ref.png
Binary files differ
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
new file mode 100644
index 0000000..82484f4
--- /dev/null
+++ b/test/long-dashed-lines-ps-ref.png
Binary files differ
diff --git a/test/long-dashed-lines-quartz-ref.png b/test/long-dashed-lines-quartz-ref.png
new file mode 100644
index 0000000..439263a
--- /dev/null
+++ b/test/long-dashed-lines-quartz-ref.png
Binary files differ
diff --git a/test/long-dashed-lines-ref.png b/test/long-dashed-lines-ref.png
new file mode 100644
index 0000000..caf8b5e
--- /dev/null
+++ b/test/long-dashed-lines-ref.png
Binary files differ
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
new file mode 100644
index 0000000..a7fdc5f
--- /dev/null
+++ b/test/mask-alpha-quartz-argb32-ref.png
Binary files differ
diff --git a/test/mask-alpha-svg-argb32-ref.png b/test/mask-alpha-svg-argb32-ref.png
new file mode 100644
index 0000000..3e56aa3
--- /dev/null
+++ b/test/mask-alpha-svg-argb32-ref.png
Binary files differ
diff --git a/test/mask-pdf-argb32-ref.png b/test/mask-pdf-argb32-ref.png
new file mode 100644
index 0000000..df630cd
--- /dev/null
+++ b/test/mask-pdf-argb32-ref.png
Binary files differ
diff --git a/test/mask-pdf-rgb24-ref.png b/test/mask-pdf-rgb24-ref.png
new file mode 100644
index 0000000..1ec222d
--- /dev/null
+++ b/test/mask-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/mask-quartz-ref.png b/test/mask-quartz-ref.png
new file mode 100644
index 0000000..a90218a
--- /dev/null
+++ b/test/mask-quartz-ref.png
Binary files differ
diff --git a/test/mask-quartz-rgb24-ref.png b/test/mask-quartz-rgb24-ref.png
new file mode 100644
index 0000000..b9c57c7
--- /dev/null
+++ b/test/mask-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/mask-ref.png b/test/mask-ref.png
index 909d9f2..549c130 100644
--- a/test/mask-ref.png
+++ b/test/mask-ref.png
Binary files differ
diff --git a/test/mask-svg-argb32-ref.png b/test/mask-svg-argb32-ref.png
index a6ad0a8..c582859 100644
--- a/test/mask-svg-argb32-ref.png
+++ b/test/mask-svg-argb32-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-ps-argb32-ref.png b/test/meta-surface-pattern-ps-argb32-ref.png
new file mode 100644
index 0000000..fbd58ef
--- /dev/null
+++ b/test/meta-surface-pattern-ps-argb32-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-ps-rgb24-ref.png b/test/meta-surface-pattern-ps-rgb24-ref.png
new file mode 100644
index 0000000..84da8da
--- /dev/null
+++ b/test/meta-surface-pattern-ps-rgb24-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-quartz-ref.png b/test/meta-surface-pattern-quartz-ref.png
new file mode 100644
index 0000000..755f281
--- /dev/null
+++ b/test/meta-surface-pattern-quartz-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-quartz-rgb24-ref.png b/test/meta-surface-pattern-quartz-rgb24-ref.png
new file mode 100644
index 0000000..b71891e
--- /dev/null
+++ b/test/meta-surface-pattern-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-svg-argb32-ref.png b/test/meta-surface-pattern-svg-argb32-ref.png
new file mode 100644
index 0000000..6250f26
--- /dev/null
+++ b/test/meta-surface-pattern-svg-argb32-ref.png
Binary files differ
diff --git a/test/meta-surface-pattern-svg-rgb24-ref.png b/test/meta-surface-pattern-svg-rgb24-ref.png
new file mode 100644
index 0000000..feda67d
--- /dev/null
+++ b/test/meta-surface-pattern-svg-rgb24-ref.png
Binary files differ
diff --git a/test/new-sub-path-ps-argb32-ref.png b/test/new-sub-path-ps-argb32-ref.png
index 76c50fb..69257d9 100644
--- a/test/new-sub-path-ps-argb32-ref.png
+++ b/test/new-sub-path-ps-argb32-ref.png
Binary files differ
diff --git a/test/new-sub-path-quartz-ref.png b/test/new-sub-path-quartz-ref.png
index e9c40b9..4278017 100644
--- a/test/new-sub-path-quartz-ref.png
+++ b/test/new-sub-path-quartz-ref.png
Binary files differ
diff --git a/test/operator-clear-pdf-argb32-ref.png b/test/operator-clear-pdf-argb32-ref.png
new file mode 100644
index 0000000..d36de27
--- /dev/null
+++ b/test/operator-clear-pdf-argb32-ref.png
Binary files differ
diff --git a/test/operator-clear-pdf-rgb24-ref.png b/test/operator-clear-pdf-rgb24-ref.png
new file mode 100644
index 0000000..2dec75c
--- /dev/null
+++ b/test/operator-clear-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/operator-clear-ps-argb32-ref.png b/test/operator-clear-ps-argb32-ref.png
new file mode 100644
index 0000000..d9a7769
--- /dev/null
+++ b/test/operator-clear-ps-argb32-ref.png
Binary files differ
diff --git a/test/operator-clear-quartz-ref.png b/test/operator-clear-quartz-ref.png
index d79d4c3..095f182 100644
--- a/test/operator-clear-quartz-ref.png
+++ b/test/operator-clear-quartz-ref.png
Binary files differ
diff --git a/test/operator-clear-quartz-rgb24-ref.png b/test/operator-clear-quartz-rgb24-ref.png
index d47ce75..f978967 100644
--- a/test/operator-clear-quartz-rgb24-ref.png
+++ b/test/operator-clear-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/operator-source-pdf-argb32-ref.png b/test/operator-source-pdf-argb32-ref.png
new file mode 100644
index 0000000..821112a
--- /dev/null
+++ b/test/operator-source-pdf-argb32-ref.png
Binary files differ
diff --git a/test/operator-source-pdf-rgb24-ref.png b/test/operator-source-pdf-rgb24-ref.png
new file mode 100644
index 0000000..6faf143
--- /dev/null
+++ b/test/operator-source-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/operator-source-ps-argb32-ref.png b/test/operator-source-ps-argb32-ref.png
index dda5e66..d5cb053 100644
--- a/test/operator-source-ps-argb32-ref.png
+++ b/test/operator-source-ps-argb32-ref.png
Binary files differ
diff --git a/test/operator-source-ps-rgb24-ref.png b/test/operator-source-ps-rgb24-ref.png
index 3137b15..eb73a9e 100644
--- a/test/operator-source-ps-rgb24-ref.png
+++ b/test/operator-source-ps-rgb24-ref.png
Binary files differ
diff --git a/test/operator-source-quartz-ref.png b/test/operator-source-quartz-ref.png
new file mode 100644
index 0000000..31fc441
--- /dev/null
+++ b/test/operator-source-quartz-ref.png
Binary files differ
diff --git a/test/operator-source-quartz-rgb24-ref.png b/test/operator-source-quartz-rgb24-ref.png
new file mode 100644
index 0000000..358e951
--- /dev/null
+++ b/test/operator-source-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/operator-source-ref.png b/test/operator-source-ref.png
index fe59f7f..8e2f5e6 100644
--- a/test/operator-source-ref.png
+++ b/test/operator-source-ref.png
Binary files differ
diff --git a/test/over-above-source-quartz-ref.png b/test/over-above-source-quartz-ref.png
new file mode 100644
index 0000000..79d3c93
--- /dev/null
+++ b/test/over-above-source-quartz-ref.png
Binary files differ
diff --git a/test/over-above-source-quartz-rgb24-ref.png b/test/over-above-source-quartz-rgb24-ref.png
new file mode 100644
index 0000000..38e823e
--- /dev/null
+++ b/test/over-above-source-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/over-around-source-ps-argb32-ref.png b/test/over-around-source-ps-argb32-ref.png
index 3ad74cc..ea6de69 100644
--- a/test/over-around-source-ps-argb32-ref.png
+++ b/test/over-around-source-ps-argb32-ref.png
Binary files differ
diff --git a/test/over-around-source-quartz-ref.png b/test/over-around-source-quartz-ref.png
new file mode 100644
index 0000000..417c8a7
--- /dev/null
+++ b/test/over-around-source-quartz-ref.png
Binary files differ
diff --git a/test/over-around-source-quartz-rgb24-ref.png b/test/over-around-source-quartz-rgb24-ref.png
new file mode 100644
index 0000000..3e4d764
--- /dev/null
+++ b/test/over-around-source-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/over-between-source-quartz-ref.png b/test/over-between-source-quartz-ref.png
new file mode 100644
index 0000000..de954d5
--- /dev/null
+++ b/test/over-between-source-quartz-ref.png
Binary files differ
diff --git a/test/over-between-source-quartz-rgb24-ref.png b/test/over-between-source-quartz-rgb24-ref.png
new file mode 100644
index 0000000..97dae07
--- /dev/null
+++ b/test/over-between-source-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/paint-source-alpha-pdf-ref.png b/test/paint-source-alpha-pdf-ref.png
new file mode 100644
index 0000000..befab10
--- /dev/null
+++ b/test/paint-source-alpha-pdf-ref.png
Binary files differ
diff --git a/test/paint-with-alpha-pdf-ref.png b/test/paint-with-alpha-pdf-ref.png
new file mode 100644
index 0000000..9da63ad
--- /dev/null
+++ b/test/paint-with-alpha-pdf-ref.png
Binary files differ
diff --git a/test/pdf-surface-source-ref.png b/test/pdf-surface-source-ref.png
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/pdf-surface-source-ref.png
Binary files differ
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
deleted file mode 100644
index 1d6ad04..0000000
--- a/test/pixman-rotate-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/pixman-rotate-ps-rgb24-ref.png b/test/pixman-rotate-ps-rgb24-ref.png
deleted file mode 100644
index d8ecce9..0000000
--- a/test/pixman-rotate-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
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
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/ps-surface-source-ref.png
Binary files differ
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
new file mode 100644
index 0000000..e016dbd
--- /dev/null
+++ b/test/push-group-pdf-ref.png
Binary files differ
diff --git a/test/push-group-pdf-rgb24-ref.png b/test/push-group-pdf-rgb24-ref.png
new file mode 100644
index 0000000..7e84ec8
--- /dev/null
+++ b/test/push-group-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/push-group-ref.png b/test/push-group-ref.png
index 4d38ac3..84bc184 100644
--- a/test/push-group-ref.png
+++ b/test/push-group-ref.png
Binary files differ
diff --git a/test/push-group-rgb24-ref.png b/test/push-group-rgb24-ref.png
index 18adc4b..cababd9 100644
--- a/test/push-group-rgb24-ref.png
+++ b/test/push-group-rgb24-ref.png
Binary files differ
diff --git a/test/radial-gradient-pdf-ref.png b/test/radial-gradient-pdf-ref.png
new file mode 100644
index 0000000..18368c1
--- /dev/null
+++ b/test/radial-gradient-pdf-ref.png
Binary files differ
diff --git a/test/radial-gradient-quartz-ref.png b/test/radial-gradient-quartz-ref.png
new file mode 100644
index 0000000..be420f8
--- /dev/null
+++ b/test/radial-gradient-quartz-ref.png
Binary files differ
diff --git a/test/random-intersections-ps-argb32-ref.png b/test/random-intersections-ps-argb32-ref.png
deleted file mode 100644
index faffd15..0000000
--- a/test/random-intersections-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/random-intersections-ps-ref.png b/test/random-intersections-ps-ref.png
new file mode 100644
index 0000000..590c832
--- /dev/null
+++ b/test/random-intersections-ps-ref.png
Binary files differ
diff --git a/test/random-intersections-ps-rgb24-ref.png b/test/random-intersections-ps-rgb24-ref.png
deleted file mode 100644
index 2a199ff..0000000
--- a/test/random-intersections-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/random-intersections-quartz-ref.png b/test/random-intersections-quartz-ref.png
new file mode 100644
index 0000000..ef76cba
--- /dev/null
+++ b/test/random-intersections-quartz-ref.png
Binary files differ
diff --git a/test/random-intersections-ref.png b/test/random-intersections-ref.png
index 9f1134a..3188ede 100644
--- a/test/random-intersections-ref.png
+++ b/test/random-intersections-ref.png
Binary files differ
diff --git a/test/rectilinear-miter-limit-ps-ref.png b/test/rectilinear-miter-limit-ps-ref.png
new file mode 100644
index 0000000..8213060
--- /dev/null
+++ b/test/rectilinear-miter-limit-ps-ref.png
Binary files differ
diff --git a/test/reflected-stroke-ps-ref.png b/test/reflected-stroke-ps-ref.png
new file mode 100644
index 0000000..6290a17
--- /dev/null
+++ b/test/reflected-stroke-ps-ref.png
Binary files differ
diff --git a/test/reflected-stroke-quartz-ref.png b/test/reflected-stroke-quartz-ref.png
new file mode 100644
index 0000000..7568a99
--- /dev/null
+++ b/test/reflected-stroke-quartz-ref.png
Binary files differ
diff --git a/test/reflected-stroke-ref.png b/test/reflected-stroke-ref.png
new file mode 100644
index 0000000..20f89c8
--- /dev/null
+++ b/test/reflected-stroke-ref.png
Binary files differ
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
new file mode 100644
index 0000000..5cd7bf6
--- /dev/null
+++ b/test/rotate-image-surface-paint-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/rotate-image-surface-paint-ps-argb32-ref.png b/test/rotate-image-surface-paint-ps-argb32-ref.png
deleted file mode 100644
index a57a317..0000000
--- a/test/rotate-image-surface-paint-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/rotate-image-surface-paint-ps-ref.png b/test/rotate-image-surface-paint-ps-ref.png
new file mode 100644
index 0000000..5b9b98c
--- /dev/null
+++ b/test/rotate-image-surface-paint-ps-ref.png
Binary files differ
diff --git a/test/rotate-image-surface-paint-ps-rgb24-ref.png b/test/rotate-image-surface-paint-ps-rgb24-ref.png
deleted file mode 100644
index 4ddcfae..0000000
--- a/test/rotate-image-surface-paint-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/rotate-image-surface-paint-quartz-ref.png b/test/rotate-image-surface-paint-quartz-ref.png
new file mode 100644
index 0000000..f7ec95c
--- /dev/null
+++ b/test/rotate-image-surface-paint-quartz-ref.png
Binary files differ
diff --git a/test/rotate-image-surface-paint-ref.png b/test/rotate-image-surface-paint-ref.png
index a63e9cb..bd20481 100644
--- a/test/rotate-image-surface-paint-ref.png
+++ b/test/rotate-image-surface-paint-ref.png
Binary files differ
diff --git a/test/scale-source-surface-paint-pdf-rgb24-ref.png b/test/scale-source-surface-paint-pdf-rgb24-ref.png
new file mode 100644
index 0000000..3e873ab
--- /dev/null
+++ b/test/scale-source-surface-paint-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/select-font-face-ps-ref.png b/test/select-font-face-ps-ref.png
new file mode 100644
index 0000000..6c2f361
--- /dev/null
+++ b/test/select-font-face-ps-ref.png
Binary files differ
diff --git a/test/select-font-face-quartz-ref.png b/test/select-font-face-quartz-ref.png
new file mode 100644
index 0000000..8f285b8
--- /dev/null
+++ b/test/select-font-face-quartz-ref.png
Binary files differ
diff --git a/test/self-copy-ps-ref.png b/test/self-copy-ps-ref.png
new file mode 100644
index 0000000..5c9dd57
--- /dev/null
+++ b/test/self-copy-ps-ref.png
Binary files differ
diff --git a/test/show-text-current-point-ps-ref.png b/test/show-text-current-point-ps-ref.png
new file mode 100644
index 0000000..b42c48e
--- /dev/null
+++ b/test/show-text-current-point-ps-ref.png
Binary files differ
diff --git a/test/show-text-current-point-quartz-ref.png b/test/show-text-current-point-quartz-ref.png
new file mode 100644
index 0000000..538b0d1
--- /dev/null
+++ b/test/show-text-current-point-quartz-ref.png
Binary files differ
diff --git a/test/skew-extreme-ps-ref.png b/test/skew-extreme-ps-ref.png
new file mode 100644
index 0000000..69f1d37
--- /dev/null
+++ b/test/skew-extreme-ps-ref.png
Binary files differ
diff --git a/test/smask-fill-pdf-ref.png b/test/smask-fill-pdf-ref.png
new file mode 100644
index 0000000..dc87a5f
--- /dev/null
+++ b/test/smask-fill-pdf-ref.png
Binary files differ
diff --git a/test/smask-fill-ref.png b/test/smask-fill-ref.png
new file mode 100644
index 0000000..c778a79
--- /dev/null
+++ b/test/smask-fill-ref.png
Binary files differ
diff --git a/test/smask-fill-svg-ref.png b/test/smask-fill-svg-ref.png
new file mode 100644
index 0000000..06ab12a
--- /dev/null
+++ b/test/smask-fill-svg-ref.png
Binary files differ
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
new file mode 100644
index 0000000..54baefd
--- /dev/null
+++ b/test/smask-image-mask-pdf-ref.png
Binary files differ
diff --git a/test/smask-image-mask-ref.png b/test/smask-image-mask-ref.png
new file mode 100644
index 0000000..858b209
--- /dev/null
+++ b/test/smask-image-mask-ref.png
Binary files differ
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
new file mode 100644
index 0000000..94dac1d
--- /dev/null
+++ b/test/smask-mask-pdf-ref.png
Binary files differ
diff --git a/test/smask-mask-ref.png b/test/smask-mask-ref.png
new file mode 100644
index 0000000..eabd2d6
--- /dev/null
+++ b/test/smask-mask-ref.png
Binary files differ
diff --git a/test/smask-mask-svg-ref.png b/test/smask-mask-svg-ref.png
new file mode 100644
index 0000000..0820cd1
--- /dev/null
+++ b/test/smask-mask-svg-ref.png
Binary files differ
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
new file mode 100644
index 0000000..7d82db9
--- /dev/null
+++ b/test/smask-paint-pdf-ref.png
Binary files differ
diff --git a/test/smask-paint-ref.png b/test/smask-paint-ref.png
new file mode 100644
index 0000000..4381209
--- /dev/null
+++ b/test/smask-paint-ref.png
Binary files differ
diff --git a/test/smask-paint-svg-ref.png b/test/smask-paint-svg-ref.png
new file mode 100644
index 0000000..09c01de
--- /dev/null
+++ b/test/smask-paint-svg-ref.png
Binary files differ
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
new file mode 100644
index 0000000..7d82db9
--- /dev/null
+++ b/test/smask-pdf-ref.png
Binary files differ
diff --git a/test/smask-ps-ref.png b/test/smask-ps-ref.png
new file mode 100644
index 0000000..c006bbd
--- /dev/null
+++ b/test/smask-ps-ref.png
Binary files differ
diff --git a/test/smask-ref.png b/test/smask-ref.png
new file mode 100644
index 0000000..2d98e43
--- /dev/null
+++ b/test/smask-ref.png
Binary files differ
diff --git a/test/smask-stroke-pdf-ref.png b/test/smask-stroke-pdf-ref.png
new file mode 100644
index 0000000..ac9b5a1
--- /dev/null
+++ b/test/smask-stroke-pdf-ref.png
Binary files differ
diff --git a/test/smask-stroke-ref.png b/test/smask-stroke-ref.png
new file mode 100644
index 0000000..0d3f7fe
--- /dev/null
+++ b/test/smask-stroke-ref.png
Binary files differ
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
new file mode 100644
index 0000000..f188561
--- /dev/null
+++ b/test/smask-svg-ref.png
Binary files differ
diff --git a/test/smask-text-pdf-ref.png b/test/smask-text-pdf-ref.png
new file mode 100644
index 0000000..7542d3d
--- /dev/null
+++ b/test/smask-text-pdf-ref.png
Binary files differ
diff --git a/test/smask-text-ps-ref.png b/test/smask-text-ps-ref.png
new file mode 100644
index 0000000..ae61325
--- /dev/null
+++ b/test/smask-text-ps-ref.png
Binary files differ
diff --git a/test/smask-text-ref.png b/test/smask-text-ref.png
new file mode 100644
index 0000000..2649c65
--- /dev/null
+++ b/test/smask-text-ref.png
Binary files differ
diff --git a/test/smask-text-svg-ref.png b/test/smask-text-svg-ref.png
new file mode 100644
index 0000000..2665370
--- /dev/null
+++ b/test/smask-text-svg-ref.png
Binary files differ
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
new file mode 100644
index 0000000..78c7710
--- /dev/null
+++ b/test/source-clip-scale-pdf-ref.png
Binary files differ
diff --git a/test/stroke-ctm-caps-ps-ref.png b/test/stroke-ctm-caps-ps-ref.png
new file mode 100644
index 0000000..63c1064
--- /dev/null
+++ b/test/stroke-ctm-caps-ps-ref.png
Binary files differ
diff --git a/test/stroke-ctm-caps-quartz-ref.png b/test/stroke-ctm-caps-quartz-ref.png
new file mode 100644
index 0000000..45ea145
--- /dev/null
+++ b/test/stroke-ctm-caps-quartz-ref.png
Binary files differ
diff --git a/test/stroke-ctm-caps-ref.png b/test/stroke-ctm-caps-ref.png
new file mode 100644
index 0000000..f364357
--- /dev/null
+++ b/test/stroke-ctm-caps-ref.png
Binary files differ
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
new file mode 100644
index 0000000..f3eb75d
--- /dev/null
+++ b/test/stroke-image-pdf-ref.png
Binary files differ
diff --git a/test/stroke-image-ps-ref.png b/test/stroke-image-ps-ref.png
new file mode 100644
index 0000000..f557c75
--- /dev/null
+++ b/test/stroke-image-ps-ref.png
Binary files differ
diff --git a/test/stroke-image-quartz-ref.png b/test/stroke-image-quartz-ref.png
new file mode 100644
index 0000000..db1f5a7
--- /dev/null
+++ b/test/stroke-image-quartz-ref.png
Binary files differ
diff --git a/test/stroke-image-ref.png b/test/stroke-image-ref.png
new file mode 100644
index 0000000..c8b9417
--- /dev/null
+++ b/test/stroke-image-ref.png
Binary files differ
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
new file mode 100644
index 0000000..93a34da
--- /dev/null
+++ b/test/surface-pattern-scale-down-quartz-ref.png
Binary files differ
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
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/svg-surface-source-ref.png
Binary files differ
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
new file mode 100644
index 0000000..573848d
--- /dev/null
+++ b/test/text-antialias-gray-quartz-ref.png
Binary files differ
diff --git a/test/text-antialias-none-quartz-ref.png b/test/text-antialias-none-quartz-ref.png
new file mode 100644
index 0000000..bcee5da
--- /dev/null
+++ b/test/text-antialias-none-quartz-ref.png
Binary files differ
diff --git a/test/text-antialias-subpixel-quartz-ref.png b/test/text-antialias-subpixel-quartz-ref.png
new file mode 100644
index 0000000..ffd487f
--- /dev/null
+++ b/test/text-antialias-subpixel-quartz-ref.png
Binary files differ
diff --git a/test/text-pattern-pdf-argb32-ref.png b/test/text-pattern-pdf-argb32-ref.png
new file mode 100644
index 0000000..2a70deb
--- /dev/null
+++ b/test/text-pattern-pdf-argb32-ref.png
Binary files differ
diff --git a/test/text-pattern-pdf-rgb24-ref.png b/test/text-pattern-pdf-rgb24-ref.png
new file mode 100644
index 0000000..2933f34
--- /dev/null
+++ b/test/text-pattern-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/text-pattern-ps-argb32-ref.png b/test/text-pattern-ps-argb32-ref.png
index fa887f9..fa68f64 100644
--- a/test/text-pattern-ps-argb32-ref.png
+++ b/test/text-pattern-ps-argb32-ref.png
Binary files differ
diff --git a/test/text-pattern-ps-rgb24-ref.png b/test/text-pattern-ps-rgb24-ref.png
index 2412bcb..943149c 100644
--- a/test/text-pattern-ps-rgb24-ref.png
+++ b/test/text-pattern-ps-rgb24-ref.png
Binary files differ
diff --git a/test/text-pattern-quartz-ref.png b/test/text-pattern-quartz-ref.png
new file mode 100644
index 0000000..5cb5874
--- /dev/null
+++ b/test/text-pattern-quartz-ref.png
Binary files differ
diff --git a/test/text-pattern-quartz-rgb24-ref.png b/test/text-pattern-quartz-rgb24-ref.png
new file mode 100644
index 0000000..7eae4c8
--- /dev/null
+++ b/test/text-pattern-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/text-pattern-svg-argb32-ref.png b/test/text-pattern-svg-argb32-ref.png
index 73e3edf..97d7534 100644
--- a/test/text-pattern-svg-argb32-ref.png
+++ b/test/text-pattern-svg-argb32-ref.png
Binary files differ
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
deleted file mode 100644
index a6eb5ea..0000000
--- a/test/text-rotate-ps-argb32-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/text-rotate-ps-ref.png b/test/text-rotate-ps-ref.png
new file mode 100644
index 0000000..5a724c9
--- /dev/null
+++ b/test/text-rotate-ps-ref.png
Binary files differ
diff --git a/test/text-rotate-ps-rgb24-ref.png b/test/text-rotate-ps-rgb24-ref.png
deleted file mode 100644
index 3c6759e..0000000
--- a/test/text-rotate-ps-rgb24-ref.png
+++ /dev/null
Binary files differ
diff --git a/test/text-rotate-quartz-ref.png b/test/text-rotate-quartz-ref.png
new file mode 100644
index 0000000..6fb7f3d
--- /dev/null
+++ b/test/text-rotate-quartz-ref.png
Binary files differ
diff --git a/test/text-transform-pdf-ref.png b/test/text-transform-pdf-ref.png
new file mode 100644
index 0000000..46076bd
--- /dev/null
+++ b/test/text-transform-pdf-ref.png
Binary files differ
diff --git a/test/text-transform-ps-ref.png b/test/text-transform-ps-ref.png
new file mode 100644
index 0000000..6f33fb6
--- /dev/null
+++ b/test/text-transform-ps-ref.png
Binary files differ
diff --git a/test/text-transform-ref.png b/test/text-transform-ref.png
new file mode 100644
index 0000000..6f36b9d
--- /dev/null
+++ b/test/text-transform-ref.png
Binary files differ
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
deleted file mode 100644
index 4bd2d04..0000000
--- a/test/text-zero-len-ref.png
+++ /dev/null
Binary files differ
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
new file mode 100644
index 0000000..6d195aa
--- /dev/null
+++ b/test/transforms-ps-ref.png
Binary files differ
diff --git a/test/trap-clip-pdf-argb32-ref.png b/test/trap-clip-pdf-argb32-ref.png
new file mode 100644
index 0000000..c3ee997
--- /dev/null
+++ b/test/trap-clip-pdf-argb32-ref.png
Binary files differ
diff --git a/test/trap-clip-pdf-rgb24-ref.png b/test/trap-clip-pdf-rgb24-ref.png
new file mode 100644
index 0000000..f787011
--- /dev/null
+++ b/test/trap-clip-pdf-rgb24-ref.png
Binary files differ
diff --git a/test/trap-clip-ps-argb32-ref.png b/test/trap-clip-ps-argb32-ref.png
index aecd0f8..8bbd1fd 100644
--- a/test/trap-clip-ps-argb32-ref.png
+++ b/test/trap-clip-ps-argb32-ref.png
Binary files differ
diff --git a/test/trap-clip-ps-rgb24-ref.png b/test/trap-clip-ps-rgb24-ref.png
index 5bff374..f3ded80 100644
--- a/test/trap-clip-ps-rgb24-ref.png
+++ b/test/trap-clip-ps-rgb24-ref.png
Binary files differ
diff --git a/test/trap-clip-quartz-ref.png b/test/trap-clip-quartz-ref.png
index 28f5977..d1acd31 100644
--- a/test/trap-clip-quartz-ref.png
+++ b/test/trap-clip-quartz-ref.png
Binary files differ
diff --git a/test/trap-clip-ref.png b/test/trap-clip-ref.png
index 9330297..2cbbdb7 100644
--- a/test/trap-clip-ref.png
+++ b/test/trap-clip-ref.png
Binary files differ
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
new file mode 100644
index 0000000..0760505
--- /dev/null
+++ b/test/unantialiased-shapes-quartz-ref.png
Binary files differ
diff --git a/test/unantialiased-shapes-ref.png b/test/unantialiased-shapes-ref.png
index d350ad9..128a2a1 100644
--- a/test/unantialiased-shapes-ref.png
+++ b/test/unantialiased-shapes-ref.png
Binary files differ
diff --git a/test/unbounded-operator-quartz-ref.png b/test/unbounded-operator-quartz-ref.png
new file mode 100644
index 0000000..b0501db
--- /dev/null
+++ b/test/unbounded-operator-quartz-ref.png
Binary files differ
diff --git a/test/unbounded-operator-quartz-rgb24-ref.png b/test/unbounded-operator-quartz-rgb24-ref.png
new file mode 100644
index 0000000..f8dae18
--- /dev/null
+++ b/test/unbounded-operator-quartz-rgb24-ref.png
Binary files differ
diff --git a/test/xlib-surface-source-ref.png b/test/xlib-surface-source-ref.png
new file mode 100644
index 0000000..3fa8bbe
--- /dev/null
+++ b/test/xlib-surface-source-ref.png
Binary files differ
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);