The index 0 is a legitimate index used for character codes that do not
correspond to any glyph in the font. Instead, the API reserves 0xFFFF
(kCGFontIndexInvalid) as the invalid index and defines 0xFFFE
(kCGFontIndexMax = kCGGlyphMax) as the maximum legal index.
Fixes text-glyph-range.
Unicode characters in the Supplementary Multilingual Plane are encoded
as surrogate pairs in UTF-16. This test tries to verify that backends
do not perform UCS4 to UTF-16 conversion by truncation.
Test case for bug 89232 - painting a recording surface to a
pdf/ps surface omits objects on the recording surface with negative
coordinates even though the pattern matrix has transformed the objects
to within the page extents.
The image surface also fails when the recording surface is bounded.
In read_file(), we see:
*data = malloc (*len);
...
if (fread(*data, *len, 1, fp) != 1) {
free(data);
...
The free call needs to be free(*data), to match the malloc call.
Matthias Clasen found this via Coverity and proposed the fix.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91381
This makes the results of the test suite more stable across different
environments, because it does not rely anymore on
CAIRO_FONT_FAMILY_DEFAULT (which on Windows is "Arial", on Mac
"Helvetica").
This change should not affect Linux environments, assuming that the
default font is already set to "DejaVu Sans".
The pointer 'filename' is already freed and still used as a function
argument. This patch will free the pointer 'filename' only after it is
used.
Also, the patch ensures that it frees the pointer 'filename' before any
return of this function.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91206
Signed-off-by: Arpit Jain <jain.arpit@samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Commit 4e3ef57bc8 added
coverage-intersecting-triangles with an incorrect reference and
generator. The test checks the rasterization of two overlapping
triangles in the following position:
. .
|\ /|
| X |
|/ \|
.---.
Since the triangles have both vertical and horizontal sides of size
x/WIDTH, the expected coverage is 3/4 (75%) of (x/WIDTH)^2. The
original code, instead, was checking for a coverage of 0.75*x/WIDTH,
as if one of the sides was always 1 unit long.
The image and xlib backends still suffer from some jitter, caused by
the approximation of the actual coverage by means of sampling. For
this reason their references are still considered XFAIL, even though
their result now looks mostly consistent with the expected reference.
The make-cairo-test-constructors.sh script executes several commands
without checking their success. This can lead to undetected errors,
like those fixed in 86fad78fcd.
The script now exits with an error status if no file is
input. Moreover, it sets the '-e' flag, so that if a command fails,
the whole script is immediately terminated with an error.
In the Makefile.am, the script result is now checked and the target
file is removed upon error. This ensures that the
'cairo-test-constructors.c' target completes succesfully only if no
error occurred.
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
files. Because of this, the generated cairo-test-constructor only
contained a few tests and the test suite was thus incomplete.
Original patch by Andrea Canciani <ranma42@gmail.com>
When running the cairo-test-suite, valgrind reports each of the
registered test as a leak, because they are _list_prepend()'ed, but
the tests list is never _list_free()'d.
Fixes the following valgrind error:
malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
cairo_boilerplate_xmalloc (cairo-boilerplate-system.c:47)
cairo_test_register (cairo-test-runner.c:131)
_cairo_test_runner_register_tests (cairo-test-constructors.c:1112)
main (cairo-test-runner.c:714)
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
The pattern created by cairo_pattern_create_rgb() is owned by the
caller, hence it needs to be released.
Fixes the following valgrind error:
malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
_cairo_pattern_create_solid (cairo-pattern.c:605)
_cairo_pattern_create_in_error (cairo-pattern.c:628)
cairo_pop_group (cairo.c:552)
test_cairo_push_group (api-special-cases.c:157)
preamble (api-special-cases.c:1766)
main (cairo-test-runner.c:228)
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
These two images are mis-rendered (clearly evident from visual
inspection). By removing them, the test will fall back to the more
general format-specific images, huge-radial.argb32.ref.png and
huge-radial.rgb24.ref.png.
Note that the huge-radial.pdf tests still fail to pass, but the pdiff
looks more sensible.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66218
Signed-off-by: Bryce Harrington <bryce@bryceharrington.org>
The pixman downscaling "95" tests attempt to rescale a 96x96 pixmap to
95x95. Ideally the borders between color areas should be sharp, but for
this use case we allow for 1 pixel of blur between the areas as
acceptable. The choice of what color to use for this blurred region is
not important, and in fact varies from backend to backend.
The old reference images were generated by Krzysztof Kosiński's
downscaling algorithm. These new images are against the algorithms
written by Bill Spitzak.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
There are cases where the rendered output of a test can vary from
backend to backend in ways which are visually acceptable. This is why
we have reference images in the first place. In these cases, changes to
the rendering logic can result in slight differences in the output that
is also within acceptable visual limits.
We see this in the pixman downscaling tests. This script is introduced
as a way to more easily update the reference images after a renderer
change.
This script is intended to be expanded to handle updating of references
for other tests as we identify similar issues. The intent is that this
script then serves as a way to document these exceptional cases.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
When investing the symmetry of the raterisation, we want to have a
simple replay of all of the original geometry through a the flipped
recording surface. This reduces the worry about artifacts from the
clipped rendering.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>