test: explicitly handle image formats in buffer_diff_core

In practice, the A and B images may be any mixture of RGB24 and
ARGB32 formats, so this change accepts all combinations of these
types, and converts the pixel values to a common (ARGB32) format
as needed.

Some of the newly added test failures are cases where the image
output is RGB24, but the matching reference image is ARGB32 with
noticeable transparency. Some of the newly passing tests are cases
where the unused 'alpha' channel of an RGB24 image was not equal
to 0xff, and the previous code had incorrectly used this channel
in max_diff calculations.
This commit is contained in:
Manuel Stoeckl 2021-08-25 21:08:36 -04:00
parent 0490607584
commit 6647511593
20 changed files with 600 additions and 588 deletions

View file

@ -1,26 +1,65 @@
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-source-cu
clip-device-offset
clip-fill-rule-pixel-aligned
clip-text
clip-unbounded
culled-glyphs
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
fill-and-stroke
fill-empty
fill-missed-stop
finer-grained-fallbacks
ft-color-font
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
new-sub-path
nil-surface
overlapping-boxes
overlapping-glyphs
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
radial-gradient-source
record1414x-select-font-face
record1414x-text-transform
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rel-path
scale-source-surface-paint
set-source
shifted-operator
show-glyphs-advance
source-surface-scale-paint
subsurface
subsurface-outside-target
subsurface-scale
text-antialias-subpixel
text-antialias-subpixel-bgr
@ -30,4 +69,7 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
thin-lines
user-font-mask
xcb-surface-source
xlib-surface-source

View file

@ -1,9 +1,15 @@
a1-bug
a1-clip-fill-rule
a1-tiger
aliasing
alpha-similar
arc-direction
arc-looping-dash
big-empty-box
big-empty-triangle
big-line
big-little-box
bitmap-font
bug-84115
bug-bo-ricotz
bug-extents
@ -19,11 +25,13 @@ caps-joins-alpha
caps-joins-curve
caps-tails-curve
clear-source
clip-device-offset
clip-disjoint
clip-disjoint-quad
clip-fill
clip-fill-eo-unbounded
clip-fill-nz-unbounded
clip-fill-rule-pixel-aligned
clip-image
clip-intersect
clip-operator
@ -33,6 +41,7 @@ clip-stroke
clip-stroke-unbounded
clip-text
clip-twice
clip-unbounded
close-path-current-point
copy-path
coverage-abutting
@ -54,6 +63,8 @@ degenerate-curve-to
degenerate-path
degenerate-pen
degenerate-rel-curve-to
device-offset
device-offset-positive
drunkard-tails
extended-blend
extended-blend-alpha
@ -69,6 +80,7 @@ fill-and-stroke
fill-and-stroke-alpha
fill-and-stroke-alpha-add
fill-degenerate-sort-order
fill-empty
fill-image
fill-missed-stop
fill-rule
@ -82,6 +94,8 @@ ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
group-unaligned
halo
halo-transform
@ -97,6 +111,7 @@ large-font
large-twin-antialias-mixed
leaky-dashed-stroke
linear-gradient
linear-gradient-one-stop
linear-gradient-reflect
linear-gradient-subset
line-width-overlap-offset
@ -115,6 +130,7 @@ mesh-pattern-fold
mesh-pattern-overlap
mesh-pattern-transformed
new-sub-path
nil-surface
operator-source
over-around-source
overlapping-boxes
@ -193,6 +209,7 @@ record-neg-extents-unbounded
record-paint-alpha
record-paint-alpha-clip
record-paint-alpha-clip-mask
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
@ -207,6 +224,7 @@ rounded-rectangle-fill
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
scale-source-surface-paint
select-font-face
set-source
shape-general-convex
@ -221,11 +239,13 @@ smask-mask
smask-paint
smask-stroke
smask-text
source-surface-scale-paint
spline-decomposition
stroke-ctm-caps
stroke-image
stroke-pattern
subsurface
subsurface-outside-target
subsurface-scale
surface-pattern
surface-pattern-operator
@ -242,6 +262,7 @@ text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tiger
tighten-bounds
transforms

View file

@ -9,30 +9,15 @@ fallback
filter-bilinear-extents
filter-nearest-offset
filter-nearest-transformed
font-matrix-translation
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
halo
halo-transform
inverse-text
large-font
linear-gradient-reflect
mask
operator-alpha-alpha
overlapping-glyphs
paint-with-alpha-clip
partial-clip-text-bottom
partial-clip-text-left
pixman-downscale-best-24
pixman-downscale-best-95
pixman-downscale-bilinear-24
pixman-downscale-fast-24
pixman-downscale-fast-95
pixman-downscale-good-24
pixman-downscale-nearest-24
pixman-downscale-nearest-95
pthread-same-source
pthread-show-text
@ -44,32 +29,19 @@ radial-gradient-source
record1414x-select-font-face
record1414x-text-transform
record2x-text-transform
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
record-replay-extend-reflect
record-replay-extend-repeat
rectilinear-dash
rectilinear-miter-limit
rectilinear-stroke
rotate-clip-image-surface-paint
rotate-image-surface-paint
select-font-face
self-copy
show-glyphs-advance
show-text-current-point
smask-text
smp-glyph
surface-pattern
surface-pattern-operator
surface-pattern-scale-down
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
trap-clip
twin
user-font-proxy
user-font-rescale

View file

@ -1,37 +1,44 @@
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-image-compositor
clear-source
clip-device-offset
clip-fill-rule-pixel-aligned
clip-text
culled-glyphs
device-offset
device-offset-positive
extended-blend-alpha-mask
extended-blend-solid
fill-empty
filter-bilinear-extents
filter-nearest-offset
filter-nearest-transformed
font-matrix-translation
ft-color-font
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
halo
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
inverse-text
large-font
image-surface-source
linear-gradient-one-stop
linear-gradient-reflect
mask
operator-alpha-alpha
mask-ctm
mask-surface-ctm
nil-surface
overlapping-boxes
overlapping-glyphs
paint-with-alpha-clip
partial-clip-text-bottom
partial-clip-text-left
pixman-downscale-best-24
pass-through
pdf-surface-source
pixman-downscale-best-95
pixman-downscale-bilinear-24
pixman-downscale-fast-24
pixman-downscale-fast-95
pixman-downscale-good-24
pixman-downscale-nearest-24
pixman-downscale-nearest-95
pixman-rotate
ps-surface-source
pthread-same-source
pthread-show-text
radial-gradient
@ -50,41 +57,30 @@ record2x-paint-alpha-clip-mask
record2x-select-font-face
record2x-text-transform
record90-paint-alpha-clip
record90-paint-alpha-clip-mask
record90-select-font-face
record90-text-transform
recordflip-select-font-face
recordflip-text-transform
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
recording-surface-extend-repeat
recording-surface-over
record-paint-alpha-clip
record-replay-extend-reflect
record-replay-extend-repeat
record-replay-extend-pad
record-select-font-face
record-text-transform
rectilinear-dash
rectilinear-miter-limit
rectilinear-stroke
rel-path
rotate-clip-image-surface-paint
rotate-image-surface-paint
select-font-face
self-copy
set-source
show-glyphs-advance
show-text-current-point
smask-text
smp-glyph
source-surface-scale-paint
surface-pattern
surface-pattern-scale-down
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
trap-clip
thin-lines
twin
user-font-proxy
user-font-rescale
xcb-surface-source
xlib-surface-source

View file

@ -14,6 +14,7 @@ ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
negative-stride-image
operator-www
pdf-operators-text
radial-gradient
radial-gradient-mask
radial-gradient-mask-source

View file

@ -1,21 +1,46 @@
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-448
bug-image-compositor
bug-source-cu
clip-device-offset
clip-fill-rule-pixel-aligned
clip-unbounded
coverage-rhombus
culled-glyphs
extended-blend-alpha
device-offset
device-offset-positive
extended-blend-alpha-mask
extended-blend-mask
extended-blend-solid-alpha
fill-and-stroke
fill-empty
fill-missed-stop
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
hatchings
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
negative-stride-image
nil-surface
operator-www
overlapping-boxes
pass-through
pdf-surface-source
ps-surface-source
quartz-surface-source
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
@ -37,15 +62,18 @@ record-mesh
record-neg-extents-bounded
record-neg-extents-unbounded
record-paint-alpha-clip-mask
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-text-transform
rel-path
scale-source-surface-paint
set-source
shifted-operator
simple-edge
source-surface-scale-paint
subsurface
subsurface-scale
text-antialias-subpixel
@ -54,4 +82,5 @@ text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-unhinted-metrics
thin-lines
user-font-proxy

View file

@ -1,23 +1,52 @@
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-source-cu
clear-source
clip-device-offset
clip-fill-rule-pixel-aligned
clip-text
clip-unbounded
coverage-rectangles
culled-glyphs
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
fill-and-stroke
fill-empty
fill-missed-stop
finer-grained-fallbacks
ft-color-font
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
new-sub-path
nil-surface
overlapping-boxes
overlapping-glyphs
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
pthread-same-source
radial-gradient-source
record1414x-fill-alpha
record1414x-select-font-face
record1414x-text-transform
@ -29,10 +58,20 @@ recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rel-path
scale-offset-similar
scale-source-surface-paint
set-source
show-glyphs-advance
source-surface-scale-paint
subsurface
subsurface-outside-target
subsurface-scale
text-antialias-subpixel
text-antialias-subpixel-bgr
@ -42,3 +81,6 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
thin-lines
xcb-surface-source
xlib-surface-source

View file

@ -1,124 +1,44 @@
a1-bug
a1-fill
arc-looping-dash
bilevel-image
bitmap-font
bug-51910
bug-84115
bug-seams
caps
caps-05
caps-1
caps-2
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
caps-tails-curve
checkerboard
clear-source
clip-device-offset
clip-disjoint-quad
clip-image
clip-mixed-antialias
clip-polygons
clip-push-group
clip-text
close-path
close-path-current-point
composite-integer-translate-over-repeat
copy-path
coverage-abutting
coverage-intersecting-quads
coverage-intersecting-triangles
coverage-rectangles
culled-glyphs
dash-caps-joins
dash-curve
dash-infinite-loop
dash-scale
dash-state
degenerate-curve-to
degenerate-linear-gradient
degenerate-pen
degenerate-radial-gradient
degenerate-rel-curve-to
device-offset-scale
extend-pad-border
fill-and-stroke-alpha
fill-and-stroke-alpha-add
filter-bilinear-extents
font-matrix-translation
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-antialias-none
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
halo
halo-transform
huge-radial
image-surface-source
infinite-join
inverse-text
joins
large-font
large-source
large-twin-antialias-mixed
leaky-dashed-rectangle
leaky-dashed-stroke
leaky-polygon
linear-gradient-extend
linear-gradient-reflect
line-width-scale
line-width-tolerance
long-dashed-lines
map-all-to-image
map-bit-to-image
map-to-image-fill
mask-transformed-image
mask-transformed-similar
mesh-pattern
mesh-pattern-conical
mesh-pattern-control-points
mesh-pattern-fold
mesh-pattern-overlap
mesh-pattern-transformed
negative-stride-image
operator-alpha-alpha
overlapping-glyphs
paint-source-alpha
paint-with-alpha
paint-with-alpha-clip
paint-with-alpha-solid-clip
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-half-reference
partial-coverage-reference
partial-coverage-three-quarter-reference
path-stroke-twice
pdf-surface-source
ps-surface-source
pthread-show-text
push-group-color
radial-gradient
radial-gradient-extend
radial-gradient-mask
radial-gradient-mask-source
radial-gradient-one-stop
radial-gradient-source
record1414x-paint-alpha
record1414x-paint-alpha-clip
record1414x-paint-alpha-solid-clip
record1414x-select-font-face
record1414x-text-transform
record2x-paint-alpha
record2x-paint-alpha-clip
record2x-paint-alpha-solid-clip
record2x-select-font-face
record2x-text-transform
record90-paint-alpha-clip-mask
record90-select-font-face
record90-text-transform
recordflip-select-font-face
@ -130,61 +50,37 @@ recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-mesh
record-neg-extents-bounded
record-paint-alpha-clip
record-paint-alpha-solid-clip
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-text-transform
rectilinear-miter-limit
reflected-stroke
scale-offset-image
scale-offset-similar
select-font-face
self-copy
shape-sierpinski
show-glyphs-advance
show-text-current-point
smask
smask-image-mask
smask-mask
smask-paint
smask-text
stride-12-image
stroke-ctm-caps
subsurface
subsurface-scale
surface-pattern
surface-pattern-scale-up
text-antialias-gray
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
transforms
twin
twin-antialias-gray
twin-antialias-mixed
twin-antialias-none
twin-antialias-subpixel
unclosed-strokes
user-font
user-font-proxy
user-font-rescale
world-map
world-map-fill
world-map-stroke
xcb-stress-cache
xcb-surface-source
xcomposite-projection
xlib-surface-source

View file

@ -13,16 +13,12 @@ ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
halo-transform
linear-gradient-reflect
mask-transformed-image
operator-alpha-alpha
overlapping-glyphs
paint-source-alpha
paint-with-alpha
paint-with-alpha-clip
paint-with-alpha-clip-mask
pthread-similar
radial-gradient
radial-gradient-mask
record1414x-fill-alpha
record1414x-paint-alpha
record1414x-paint-alpha-clip
@ -45,14 +41,7 @@ record-paint-alpha-clip
record-paint-alpha-clip-mask
scale-offset-image
scale-source-surface-paint
self-copy
show-glyphs-advance
smask
smask-image-mask
smask-mask
smask-paint
smask-stroke
smask-text
surface-pattern
surface-pattern-operator
surface-pattern-scale-up

View file

@ -1,39 +1,72 @@
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-source-cu
clear-source
clip-device-offset
clip-fill-eo-unbounded
clip-fill-nz-unbounded
clip-fill-rule-pixel-aligned
clip-operator
clip-stroke-unbounded
clip-text
clip-unbounded
culled-glyphs
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
extended-blend-solid
extended-blend-solid-alpha
fill-and-stroke
fill-empty
fill-missed-stop
filter-bilinear-extents
filter-nearest-offset
filter-nearest-transformed
finer-grained-fallbacks
ft-color-font
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
image-surface-source
linear-gradient-one-stop
linear-gradient-reflect
mask
mask-transformed-image
mask-ctm
mask-surface-ctm
new-sub-path
nil-surface
operator-alpha-alpha
operator-source
overlapping-boxes
overlapping-glyphs
paint-source-alpha
paint-with-alpha
paint-with-alpha-clip
paint-with-alpha-clip-mask
pthread-similar
radial-gradient
radial-gradient-mask
pass-through
pdf-surface-source
pixman-rotate
ps-surface-source
radial-gradient-mask-source
radial-gradient-source
record1414x-fill-alpha
record1414x-paint
record1414x-paint-alpha
record1414x-paint-alpha-clip
record1414x-paint-alpha-clip-mask
record1414x-paint-alpha-solid-clip
record1414x-select-font-face
record1414x-self-intersecting
record1414x-text-transform
record2x-paint-alpha
record2x-paint-alpha-clip
@ -46,24 +79,32 @@ recordflip-paint-alpha-clip-mask
recordflip-whole-paint-alpha
recordflip-whole-paint-alpha-clip
recordflip-whole-paint-alpha-clip-mask
recording-surface-extend-none
recording-surface-extend-reflect
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-paint-alpha
record-paint-alpha-clip
record-paint-alpha-clip-mask
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
rel-path
scale-offset-image
scale-source-surface-paint
self-copy
set-source
show-glyphs-advance
smask
smask-image-mask
smask-mask
smask-paint
smask-stroke
smask-text
source-surface-scale-paint
surface-pattern
surface-pattern-operator
surface-pattern-scale-up
text-pattern
text-rotate
text-unhinted-metrics
thin-lines
tighten-bounds
unbounded-operator
xcb-surface-source
xlib-surface-source

View file

@ -1,23 +1,63 @@
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
clip-device-offset
clip-fill-rule-pixel-aligned
clip-text
clip-unbounded
coverage-intersecting-triangles
culled-glyphs
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-and-stroke
fill-empty
fill-missed-stop
finer-grained-fallbacks
ft-color-font
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
new-sub-path
nil-surface
overlapping-boxes
overlapping-glyphs
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
record1414x-select-font-face
record1414x-text-transform
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rel-path
scale-source-surface-paint
set-source
show-glyphs-advance
source-surface-scale-paint
subsurface
subsurface-outside-target
subsurface-scale
text-antialias-subpixel
text-antialias-subpixel-bgr
@ -27,3 +67,6 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
thin-lines
xcb-surface-source
xlib-surface-source

View file

@ -1,23 +1,53 @@
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-source-cu
clip-device-offset
clip-disjoint-hatching
clip-fill-eo-unbounded
clip-fill-nz-unbounded
clip-fill-rule-pixel-aligned
clip-operator
clip-polygons
clip-shape
clip-stroke-unbounded
clip-twice
clip-unbounded
coverage-intersecting-triangles
culled-glyphs
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-and-stroke
fill-empty
fill-missed-stop
finer-grained-fallbacks
ft-color-font
ft-text-vertical-layout-type1
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
hatchings
mask
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
new-sub-path
operator-source
nil-surface
overlapping-boxes
overlapping-glyphs
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
@ -25,18 +55,25 @@ radial-gradient-source
random-clip
record1414x-select-font-face
record1414x-text-transform
recording-surface-extend-none
recording-surface-over
record-neg-extents-bounded
record-neg-extents-unbounded
record-paint-alpha-solid-clip
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rel-path
rotated-clip
scale-source-surface-paint
set-source
source-surface-scale-paint
subsurface-outside-target
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
trap-clip
text-pattern
thin-lines
xcb-surface-source
xlib-surface-source

View file

@ -1,19 +1,16 @@
a1-clip-fill-rule
a1-tiger
arc-looping-dash
bug-51910
bug-84115
bug-image-compositor
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-431
bug-spline
caps-05
caps-1
caps-2
caps-joins-05
caps-joins-1
caps-joins-2
clear-source
clip-device-offset
clip-fill-rule-pixel-aligned
clip-operator
clip-text
coverage-abutting
clip-unbounded
coverage-column-triangles
coverage-intersecting-quads
coverage-intersecting-triangles
@ -22,37 +19,32 @@ coverage-rhombus
coverage-row-triangles
coverage-triangles
culled-glyphs
dash-curve
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-empty
fill-image
filter-bilinear-extents
font-matrix-translation
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo
halo-transform
hatchings
inverse-text
large-font
linear-gradient
linear-gradient-subset
mask
mask-transformed-image
mask-transformed-similar
operator-alpha-alpha
operator-clear
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
nil-surface
operator-source
overlapping-boxes
overlapping-dash-caps
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
@ -61,70 +53,44 @@ radial-outer-focus
random-clip
record1414x-fill-alpha
record1414x-self-intersecting
record1414x-text-transform
record2x-fill-alpha
record2x-paint-alpha-clip-mask
record90-fill-alpha
record90-paint-alpha-clip
record90-paint-alpha-solid-clip
record90-self-intersecting
recordflip-fill-alpha
recordflip-paint-alpha-clip-mask
recordflip-self-intersecting
recordflip-whole-fill-alpha
recordflip-whole-paint-alpha-clip-mask
recordflip-whole-self-intersecting
recording-surface-extend-none
recording-surface-extend-pad
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
record-self-intersecting
reflected-stroke
rotated-clip
select-font-face
show-glyphs-advance
show-text-current-point
scale-source-surface-paint
set-source
simple-edge
smask
smask-fill
smask-image-mask
smask-mask
smask-paint
smask-stroke
smp-glyph
source-surface-scale-paint
stroke-clipped
stroke-image
subsurface
subsurface-scale
surface-pattern-operator
surface-pattern-scale-up
text-antialias-gray
subsurface-outside-target
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
thin-lines
tighten-bounds
trap-clip
twin
twin-antialias-gray
twin-antialias-none
twin-antialias-subpixel
unantialiased-shapes
unbounded-operator
user-font
user-font-proxy
world-map
world-map-fill
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -1,16 +1,15 @@
arc-looping-dash
bug-51910
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-431
bug-spline
caps-05
caps-1
caps-2
caps-joins-05
caps-joins-1
caps-joins-2
clear-source
clip-device-offset
clip-fill-rule-pixel-aligned
clip-operator
clip-text
coverage-abutting
clip-unbounded
coverage-column-triangles
coverage-intersecting-quads
coverage-intersecting-triangles
@ -18,97 +17,70 @@ coverage-rectangles
coverage-row-triangles
coverage-triangles
culled-glyphs
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-empty
fill-image
filter-bilinear-extents
font-matrix-translation
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo
halo-transform
inverse-text
linear-gradient
linear-gradient-subset
mask
mask-transformed-image
mask-transformed-similar
operator-alpha-alpha
operator-clear
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
nil-surface
operator-source
overlapping-boxes
overlapping-dash-caps
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
radial-outer-focus
record1414x-fill-alpha
record1414x-self-intersecting
record1414x-text-transform
record2x-fill-alpha
record2x-paint-alpha-clip-mask
record90-fill-alpha
record90-paint-alpha-clip
record90-paint-alpha-solid-clip
record90-self-intersecting
recordflip-fill-alpha
recordflip-paint-alpha-clip-mask
recordflip-self-intersecting
recordflip-whole-fill-alpha
recordflip-whole-paint-alpha-clip-mask
recordflip-whole-self-intersecting
recording-surface-extend-none
recording-surface-extend-pad
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
record-self-intersecting
reflected-stroke
rotated-clip
select-font-face
show-glyphs-advance
show-text-current-point
scale-source-surface-paint
set-source
simple-edge
smask
smask-fill
smask-image-mask
smask-mask
smask-paint
smask-stroke
smp-glyph
source-surface-scale-paint
stroke-clipped
stroke-image
subsurface
subsurface-scale
surface-pattern-operator
surface-pattern-scale-up
text-antialias-gray
subsurface-outside-target
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
thin-lines
tighten-bounds
trap-clip
twin
twin-antialias-gray
twin-antialias-none
twin-antialias-subpixel
unantialiased-shapes
unbounded-operator
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -1,16 +1,15 @@
arc-looping-dash
bug-51910
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-431
bug-spline
caps-05
caps-1
caps-2
caps-joins-05
caps-joins-1
caps-joins-2
clear-source
clip-device-offset
clip-fill-rule-pixel-aligned
clip-operator
clip-text
coverage-abutting
clip-unbounded
coverage-column-triangles
coverage-intersecting-quads
coverage-intersecting-triangles
@ -18,99 +17,72 @@ coverage-rectangles
coverage-row-triangles
coverage-triangles
culled-glyphs
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-empty
fill-image
filter-bilinear-extents
font-matrix-translation
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo
halo-transform
inverse-text
linear-gradient
linear-gradient-subset
mask
mask-transformed-image
mask-transformed-similar
operator-alpha-alpha
operator-clear
image-surface-source
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
nil-surface
operator-source
overlapping-boxes
overlapping-dash-caps
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
push-group
push-group-color
radial-outer-focus
record1414x-fill-alpha
record1414x-self-intersecting
record1414x-text-transform
record2x-fill-alpha
record2x-paint-alpha-clip-mask
record90-fill-alpha
record90-paint-alpha-clip
record90-paint-alpha-solid-clip
record90-self-intersecting
recordflip-fill-alpha
recordflip-paint-alpha-clip-mask
recordflip-self-intersecting
recordflip-whole-fill-alpha
recordflip-whole-paint-alpha-clip-mask
recordflip-whole-self-intersecting
recording-surface-extend-none
recording-surface-extend-pad
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
record-self-intersecting
reflected-stroke
rotated-clip
select-font-face
show-glyphs-advance
show-text-current-point
scale-source-surface-paint
set-source
simple-edge
smask
smask-fill
smask-image-mask
smask-mask
smask-paint
smask-stroke
smp-glyph
source-surface-scale-paint
stroke-clipped
stroke-image
subsurface
subsurface-scale
surface-pattern-operator
surface-pattern-scale-up
text-antialias-gray
subsurface-outside-target
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
thin-lines
tighten-bounds
trap-clip
twin
twin-antialias-gray
twin-antialias-none
twin-antialias-subpixel
unantialiased-shapes
unbounded-operator
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -1,112 +1,88 @@
arc-looping-dash
bug-51910
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-seams
caps
caps-05
caps-1
caps-2
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
clear-source
clip-disjoint-quad
clip-image
clip-mixed-antialias
clip-polygons
clip-push-group
clip-device-offset
clip-fill-rule-pixel-aligned
clip-text
close-path
close-path-current-point
copy-path
coverage-abutting
coverage-intersecting-quads
clip-unbounded
culled-glyphs
dash-caps-joins
dash-infinite-loop
dash-scale
dash-zero-length
degenerate-curve-to
degenerate-path
degenerate-pen
degenerate-rel-curve-to
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-and-stroke
fill-empty
fill-missed-stop
filter-bilinear-extents
finer-grained-fallbacks
font-matrix-translation
ft-color-font
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
infinite-join
inverse-text
joins
image-surface-source
large-twin-antialias-mixed
leaky-dashed-stroke
leaky-polygon
line-width-scale
line-width-tolerance
long-dashed-lines
mask-transformed-image
mask-transformed-similar
linear-gradient-one-stop
mask-ctm
mask-surface-ctm
new-sub-path
operator-alpha-alpha
nil-surface
over-above-source
over-around-source
over-between-source
overlapping-boxes
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
path-stroke-twice
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
pthread-show-text
pthread-similar
push-group-color
record1414x-select-font-face
record1414x-text-transform
recording-surface-extend-none
recording-surface-over
rectilinear-miter-limit
reflected-stroke
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rel-path
select-font-face
self-copy
scale-source-surface-paint
set-source
shifted-operator
show-glyphs-advance
show-text-current-point
smask
smask-image-mask
smask-mask
smask-paint
smask-text
smp-glyph
stroke-ctm-caps
source-surface-scale-paint
subsurface
subsurface-outside-target
subsurface-scale
surface-pattern-scale-down-extend-none
surface-pattern-scale-up
text-antialias-gray
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
transforms
twin
thin-lines
twin-antialias-gray
twin-antialias-mixed
twin-antialias-none
twin-antialias-subpixel
unclosed-strokes
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -1,48 +1,82 @@
caps-sub-paths
clear-source
a1-clip-fill-rule
alpha-similar
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-361
bug-431
bug-source-cu
clip-device-offset
clip-fill-rule-pixel-aligned
clip-operator
clipped-group
clip-push-group
clip-text
clip-unbounded
coverage-intersecting-triangles
culled-glyphs
curve-to-as-line-to
dash-zero-length
degenerate-path
device-offset
device-offset-positive
extended-blend-alpha-mask
fallback
fill-and-stroke
fill-and-stroke-alpha
fill-and-stroke-alpha-add
fill-empty
fill-missed-stop
finer-grained-fallbacks
ft-color-font
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo-transform
horizontal-clip
infinite-join
image-surface-source
large-twin-antialias-mixed
leaky-polygon
linear-gradient-one-stop
mask
mask-ctm
mask-surface-ctm
new-sub-path
nil-surface
operator-clear
operator-source
overlapping-boxes
overlapping-glyphs
pass-through
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
pthread-show-text
radial-gradient-source
radial-outer-focus
record1414x-select-font-face
record1414x-text-transform
rectilinear-miter-limit
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
rectilinear-stroke
rel-path
scale-source-surface-paint
set-source
show-glyphs-advance
smask
smask-text
source-surface-scale-paint
subsurface
subsurface-outside-target
subsurface-scale
surface-pattern-operator
text-antialias-gray
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
@ -51,8 +85,11 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
thin-lines
twin-antialias-gray
twin-antialias-mixed
twin-antialias-none
twin-antialias-subpixel
unbounded-operator
xcb-surface-source
xlib-surface-source

View file

@ -1,22 +1,26 @@
a1-clip-fill-rule
aliasing
alpha-similar
arc-looping-dash
bug-51910
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-84115
bug-extents
bug-image-compositor
bug-spline
caps-joins-05
caps-joins-curve
caps-tails-curve
clear-source
clip-device-offset
clip-disjoint
clip-fill-rule-pixel-aligned
clip-operator
clip-shape
clip-stroke
clip-stroke-unbounded
clip-text
clip-unbounded
close-path-current-point
coverage-abutting
coverage-column-triangles
coverage-rhombus
culled-glyphs
@ -26,54 +30,50 @@ dash-scale
degenerate-curve-to
degenerate-pen
degenerate-rel-curve-to
device-offset
device-offset-positive
drunkard-tails
extended-blend-alpha-mask
extended-blend-mask
fallback
fill-and-stroke
fill-and-stroke-alpha
fill-and-stroke-alpha-add
fill-empty
fill-image
filter-bilinear-extents
font-matrix-translation
ft-color-font
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo
halo-transform
hatchings
infinite-join
inverse-text
image-surface-source
joins
joins-loop
joins-retrace
joins-star
large-font
large-twin-antialias-mixed
leaky-dashed-stroke
linear-gradient
linear-gradient-subset
linear-gradient-one-stop
line-width-scale
line-width-tolerance
long-dashed-lines
mask
mask-transformed-image
mask-transformed-similar
miter-precision
mask-ctm
mask-surface-ctm
new-sub-path
operator-alpha-alpha
operator-clear
nil-surface
operator-source
overlapping-boxes
overlapping-dash-caps
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
pass-through
path-stroke-twice
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
pthread-show-text
radial-gradient
radial-gradient-mask
@ -93,13 +93,11 @@ record2x-fill-alpha
record2x-paint-alpha-clip-mask
record2x-select-font-face
record2x-text-transform
record90-fill-alpha
record90-paint-alpha-clip
record90-paint-alpha-solid-clip
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-fill-alpha
recordflip-paint-alpha-clip-mask
recordflip-select-font-face
recordflip-self-intersecting
@ -109,12 +107,7 @@ recordflip-whole-paint-alpha-clip-mask
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
recording-surface-extend-none
recording-surface-extend-pad
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
@ -126,57 +119,46 @@ record-self-intersecting
record-text-transform
reflected-stroke
rel-path
rotated-clip
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
select-font-face
scale-source-surface-paint
set-source
shape-general-convex
shape-sierpinski
shifted-operator
show-glyphs-advance
show-text-current-point
simple-edge
smask
smask-fill
smask-image-mask
smask-mask
smask-paint
smask-stroke
smask-text
smp-glyph
source-surface-scale-paint
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-pattern
subsurface
subsurface-outside-target
subsurface-scale
surface-pattern-operator
surface-pattern-scale-up
text-antialias-gray
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tighten-bounds
trap-clip
twin
twin-antialias-gray
twin-antialias-mixed
twin-antialias-none
twin-antialias-subpixel
unbounded-operator
unclosed-strokes
user-font
user-font-proxy
world-map
world-map-fill
world-map-stroke
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -1,19 +1,24 @@
a1-clip-fill-rule
aliasing
alpha-similar
arc-looping-dash
bug-51910
big-empty-box
big-empty-triangle
big-little-box
bitmap-font
bug-extents
bug-spline
caps-joins-05
caps-joins-curve
clear-source
clip-device-offset
clip-disjoint
clip-fill-rule-pixel-aligned
clip-operator
clip-shape
clip-stroke
clip-stroke-unbounded
clip-text
clip-unbounded
close-path-current-point
coverage-abutting
coverage-column-triangles
coverage-intersecting-quads
coverage-intersecting-triangles
@ -26,52 +31,49 @@ dash-scale
degenerate-curve-to
degenerate-pen
degenerate-rel-curve-to
device-offset
device-offset-positive
drunkard-tails
extended-blend-alpha-mask
extended-blend-mask
fallback
fill-and-stroke
fill-and-stroke-alpha
fill-and-stroke-alpha-add
fill-empty
fill-image
filter-bilinear-extents
font-matrix-translation
ft-color-font
ft-show-glyphs-positioning
ft-show-glyphs-table
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
glyph-cache-pressure
gradient-alpha
gradient-constant-alpha
gradient-zero-stops
gradient-zero-stops-mask
halo
halo-transform
infinite-join
inverse-text
image-surface-source
joins
joins-loop
joins-retrace
joins-star
large-twin-antialias-mixed
leaky-dashed-stroke
linear-gradient
linear-gradient-subset
linear-gradient-one-stop
line-width-scale
line-width-tolerance
long-dashed-lines
mask
mask-transformed-image
mask-transformed-similar
miter-precision
mask-ctm
mask-surface-ctm
new-sub-path
operator-alpha-alpha
operator-clear
nil-surface
operator-source
overlapping-boxes
overlapping-dash-caps
overlapping-glyphs
partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
pass-through
path-stroke-twice
pdf-surface-source
pixman-downscale-best-24
pixman-rotate
ps-surface-source
pthread-show-text
radial-outer-focus
record1414x-fill-alpha
@ -82,13 +84,11 @@ record2x-fill-alpha
record2x-paint-alpha-clip-mask
record2x-select-font-face
record2x-text-transform
record90-fill-alpha
record90-paint-alpha-clip
record90-paint-alpha-solid-clip
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-fill-alpha
recordflip-paint-alpha-clip-mask
recordflip-select-font-face
recordflip-self-intersecting
@ -98,12 +98,7 @@ recordflip-whole-paint-alpha-clip-mask
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
recording-surface-extend-none
recording-surface-extend-pad
recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-none
@ -115,51 +110,41 @@ record-self-intersecting
record-text-transform
reflected-stroke
rel-path
rotated-clip
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
select-font-face
scale-source-surface-paint
set-source
shape-general-convex
shifted-operator
show-glyphs-advance
show-text-current-point
simple-edge
smask
smask-fill
smask-image-mask
smask-mask
smask-paint
smask-stroke
smask-text
smp-glyph
source-surface-scale-paint
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-pattern
subsurface
subsurface-outside-target
subsurface-scale
surface-pattern-operator
surface-pattern-scale-up
text-antialias-gray
text-antialias-subpixel
text-antialias-subpixel-bgr
text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tighten-bounds
trap-clip
twin
twin-antialias-gray
twin-antialias-mixed
twin-antialias-none
twin-antialias-subpixel
unbounded-operator
unclosed-strokes
xcomposite-projection
xcb-surface-source
xlib-surface-source

View file

@ -25,6 +25,7 @@
#include "config.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
@ -48,15 +49,14 @@
* result_ret.
*
* This function should be rewritten to compare all formats supported by
* cairo_format_t instead of taking a mask as a parameter.
* cairo_format_t.
*/
static void
buffer_diff_core (const unsigned char *_buf_a, int stride_a,
const unsigned char *_buf_b, int stride_b,
unsigned char *_buf_diff, int stride_diff,
buffer_diff_core (const unsigned char *_buf_a, int stride_a, cairo_format_t format_a,
const unsigned char *_buf_b, int stride_b, cairo_format_t format_b,
unsigned char *_buf_diff, int stride_diff, cairo_format_t format_diff,
int width,
int height,
uint32_t mask,
buffer_diff_result_t *result_ret)
{
const uint32_t *buf_a = (const uint32_t*) _buf_a;
@ -65,6 +65,10 @@ buffer_diff_core (const unsigned char *_buf_a, int stride_a,
int x, y;
buffer_diff_result_t result = {0, 0};
assert (format_a == CAIRO_FORMAT_RGB24 || format_a == CAIRO_FORMAT_ARGB32);
assert (format_b == CAIRO_FORMAT_RGB24 || format_b == CAIRO_FORMAT_ARGB32);
assert (format_diff == CAIRO_FORMAT_RGB24 || format_diff == CAIRO_FORMAT_ARGB32);
stride_a /= sizeof (uint32_t);
stride_b /= sizeof (uint32_t);
stride_diff /= sizeof (uint32_t);
@ -74,24 +78,32 @@ buffer_diff_core (const unsigned char *_buf_a, int stride_a,
uint32_t *row = buf_diff + y * stride_diff;
for (x = 0; x < width; x++) {
uint32_t pixel_a = row_a[x];
uint32_t pixel_b = row_b[x];
/* convert pixel data to ARGB32 if necessary */
if (format_a == CAIRO_FORMAT_RGB24)
pixel_a |= 0xff000000;
if (format_b == CAIRO_FORMAT_RGB24)
pixel_b |= 0xff000000;
/* check if the pixels are the same */
if ((row_a[x] & mask) != (row_b[x] & mask)) {
if (pixel_a != pixel_b) {
int channel;
uint32_t diff_pixel = 0;
/* calculate a difference value for all 4 channels */
for (channel = 0; channel < 4; channel++) {
int value_a = (row_a[x] >> (channel*8)) & 0xff;
int value_b = (row_b[x] >> (channel*8)) & 0xff;
int value_a = (pixel_a >> (channel*8)) & 0xff;
int value_b = (pixel_b >> (channel*8)) & 0xff;
unsigned int diff;
diff = abs (value_a - value_b);
if (diff > result.max_diff)
result.max_diff = diff;
diff *= 4; /* emphasize */
if (diff)
diff += 128; /* make sure it's visible */
diff += 128; /* make sure it's visible */
if (diff > 255)
diff = 255;
diff = 255;
diff_pixel |= diff << (channel*8);
}
@ -141,13 +153,15 @@ compare_surfaces (const cairo_test_context_t *ctx,
*/
buffer_diff_core (cairo_image_surface_get_data (surface_a),
cairo_image_surface_get_stride (surface_a),
cairo_image_surface_get_format (surface_a),
cairo_image_surface_get_data (surface_b),
cairo_image_surface_get_stride (surface_b),
cairo_image_surface_get_format (surface_b),
cairo_image_surface_get_data (surface_diff),
cairo_image_surface_get_stride (surface_diff),
cairo_image_surface_get_format (surface_diff),
cairo_image_surface_get_width (surface_a),
cairo_image_surface_get_height (surface_a),
cairo_surface_get_content (surface_a) & CAIRO_CONTENT_ALPHA ? 0xffffffff : 0x00ffffff,
result);
if (result->pixels_changed == 0)
return;
@ -185,11 +199,10 @@ buffer_diff_noalpha (const unsigned char *buf_a,
int stride,
buffer_diff_result_t *result)
{
buffer_diff_core(buf_a, stride,
buf_b, stride,
buf_diff, stride,
buffer_diff_core(buf_a, stride, CAIRO_FORMAT_RGB24,
buf_b, stride, CAIRO_FORMAT_RGB24,
buf_diff, stride, CAIRO_FORMAT_RGB24,
width, height,
0x00ffffff,
result);
}