xlib: Fix invocation of XRenderFindFormat()

The 'count' parameter is an indication to libXrender of the number of
matches to skip before reporting (rather than a limit on the number to
report). As we only want the first match, always pass 0.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
pdf: Fix crash

Bug 61451
[FT] Prefer downscaling bitmap glyphs to upscaling

Say, you have bitmap strikes for sizes 50ppem and 100ppem.
To render at 60ppem, it's much better to downscale the 100ppem
bitmap than upscale 50ppem one.  Prefer downscaling.
gl: Export query for EGLContext and EGLDisplay from device

Similar to glx, add query for the EGLContext and EGLDisplay to egl-based
cairo devices.
gl: Fix typo s/bool/cairo_bool_t/

One quickly gets used to having stdbool.h available.
gl: Setup operands when the vertex size changes

Previously _cairo_gl_composite_setup_vbo was overwriting the old context
vertex_size, while _cairo_gl_context_setup_operand was relying on it to
determine if the vertex size changed. Instead of a fragile ordering of
statements, pass whether the vertex size changed as an argument to enforce
the calling order via method parameters.
path: Fix a bug in line intersection

Before the intersection code was not taking into account that both
quotients are required to be in the range (0,1) for the segments to
intersect or handling the case of negative numerators and denominators.
stroke: Fix large line widths for fallback stroke shaper

Fix the test case line-width-tolerance for the fallback stroke shaper.
Instead of drawing quads between spline points, draw triangle based on
the actual spline edges. This roughly follows the approach of the
tristrip and polygonal shapers.
stroke: Use round-joins near inflection points of splines

Similar to b7bd5ae4f3da44131261711bb236cd7aa24a3ae3, but applied to the
fallback stroke shaper.
mempool: Reduce an assert into an error return for get_buddy()

If we ask for a buddy that is outside of our allocation that is an
error that should not happen with a power-of-two allocated zone...
However, since it has been seen in the wild, we can safely return that
there is no buddy rather than die in a too-late assert.

Reported-by: Anton Eliasson <devel@antoneliasson.se>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
cff-subset: Fix allocation of width arrays

fd_default_width and fd_nominal_width
are arrays of doubles not arrays of ints.
test: Fix CAIRO_REF_DIR

Ever since the test output was moved from test/ to test/output/, using
CAIRO_REF_DIR to make the test suite succeed no longer works. The test suite was
looking for the wrong file names.

This patch makes this work again. However, I am not sure that this really is the
correct fix. It just seems to work. :-)

Reported-by: Darxus <darxus@chaosreigns.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Adding a simple usage statement to cairo-perf-chart

Signed-off-by: Uli Schlachter <psychon@znc.in>
gitignore: negate gitignore for static pkgconfig files

Commit 781f253 adds a rule cairo-*.*.* to .gitignore in the root dir.
Unfortunately this matches several src/cairo-*.pc.in files in the
src directory.

The build system requires these files to be present, but the rule is
allowing them to be ignored. For example, when extracting a cgit
snapshot tarball and checking it into another git repository, these
files get left behind. Any accidental changes to these files will go
unnoticed by a 'git status' (possibly creating bad installs) and
any intentional changes could not be committed (git commit -a will
miss them, and every one will need to be forced). This is not really
desirable.

We don't want to unignore *.pc.in here since there are many, many
autogenerated files with this name, and the cairo-*.*.* rule is in
general quite useful and doesn't warrant modification (although it
could be made a little more specific), so we just make these 4 files
a special case and negate the match with full filenames in src/.

Signed-off-by: Matt Sealey <matt@genesi-usa.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
[test] Set font size

Previously this test was working because we were not scaling bitmap
fonts.  We do now, so adjust test.
gl: Fix typo in gles2 shader cache lookup

When comparing shader cache entries, it's important that we actually
compare the variable type hash.
[ft] I meant fabs(), not abs()
test: Fix handling of dots in CAIRO_TEST_TARGET

Before this, the following happened:

  $ CAIRO_TEST_TARGET=image,xcb-render-0.0 make test
  Cannot find target 'image'.
  Known targets: image, [...]

The reason for this is that _cairo_boilerplate_target_matches_name() doesn't get
a null-terminated string, but instead has a pointer to the end of the string.
However, strpbrk() expects a null-terminated argument and thus could return a
result which points past the end of the input.

This commit fixes exactly this.

Reported-by: Darxus <darxus@chaosreigns.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
boilerplate: rename xcb-render-0.0 to xcb-render-0_0

The test suite uses dots to separate the backend name from the content type.
Thus, the backend name must not contain any dots.

The xlib backend already calls its RENDER 0.0 target xlib-render-0_0 for this
reason. This commit makes the xcb backend match this.

Reported-by: Darxus <darxus@chaosreigns.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Fix "make check" standalone header check

This fixes the following error:

./cairo-fixed-private.h: In function ‘_slow_segment_intersection’:
./cairo-fixed-private.h:374:9: error: ‘FALSE’ undeclared (first use in this function)
./cairo-fixed-private.h:374:9: note: each undeclared identifier is reported only once for each function it appears in
./cairo-fixed-private.h:386:12: error: ‘TRUE’ undeclared (first use in this function)

Signed-off-by: Uli Schlachter <psychon@znc.in>