Commit graph

6251 commits

Author SHA1 Message Date
Carl Worth
53554ea889 Add ps2-specific reference images for trap-clip test.
These are quite similar to the existing ps3-specific reference images.
I definitely don't see any reason why this output should be considered
a failure.
2008-10-28 15:50:44 -07:00
Carl Worth
10fd16a05d Mark user-font-mask as XFAIL.
This test is expected to fail due to a couple of known bugs. Chris
has fixes for both bugs, but is holding off on them until after 1.8.2
to prevent introducing any possible new bugs with his fixes.
2008-10-28 15:41:40 -07:00
Carl Worth
655546243f Rename user-font-image test to user-font-mask.
Otherwise the reference image (user-font-image-ref.png) gets
interpreted as an image-specific reference image for the
user-font test case resulting in a bogus failure.
2008-10-28 15:35:35 -07:00
Carl Worth
42d2d1b6d3 Correct NEWS to say 'release' instead of 'snapshot' for 1.8.0
A copy-and-paste bug strikes again.
2008-10-28 12:48:03 -07:00
Chris Wilson
1327ec232c [image] Remove invalid assert.
The assert can fail for an error surface.

TODO: Decide what values should be returned from getters for error
surfaces.
2008-10-28 10:00:38 +00:00
Chris Wilson
9481d999df [image] Check create_for_data() to ensure a valid minimum stride.
Double check that the user is not being silly by passing in a stride that
is too small for the width. evince/poppler is one such example...
2008-10-28 09:59:01 +00:00
Chris Wilson
88f628b397 [perf] Fix rectangular case of unaligned-clip.
Janoos spotted that the unaligned clip actually degenerated to an empty
clip due to a typo when constructing the second rectangle. Simply use a
cairo_rectangle() instead.
2008-10-28 09:06:25 +00:00
Behdad Esfahbod
1522805f39 [Makefile.am.releasing] Fix typo 2008-10-27 20:57:56 -04:00
Carl Worth
3386794d96 Add creation of a versioned manual to the release-publish target.
This arranges so that a versioned manual will be available of the form:

	http://cairographics.org/manual-X.Y.Z

for all future releases and snapshots. We're going through the process
of manually doing all former releases, such as:

	http://cairographics.org/manual-1.2.0/

which the LSB folks wanted to reference.
2008-10-27 14:09:19 -07:00
Adrian Johnson
a1a7ec6a05 Change ps to ps3 in test/README
The ps target no longer exists.
2008-10-27 23:13:05 +10:30
Adrian Johnson
670d942fe3 Change user-font-image test to use a pattern
This can be used to expose a bug in _cairo_rectangle_intersect() by
changing:

  fixed_scale = 1024 to 1 in cairo-user-font.c

and

cairo_matrix_translate (&matrix, 0, -8) to (&matrix, 0, -9) in
user-font-image.c

This will cause cairo_text_extents (cr, text, &extents) in
user-font-image.c to return a height of 8388683.
2008-10-27 23:04:16 +10:30
Adrian Johnson
cdacf55e1b Add user-font-image test
Draws bitmap glyphs using cairo_mask(). This test exposes a bug in the
calculation of the glyph extents.
2008-10-27 22:07:04 +10:30
Chris Wilson
22e2dac819 [stroke] Ensure we record the first face for a dashed path.
If the first face was outside the bounds then we skipped it, and so a
close would incorrectly connect to the first visible face.
2008-10-26 10:25:31 +00:00
Chris Wilson
64fb3290f0 [stroke] _cairo_stroker_line_to_dashed() whitespace
A couple of comment spelling mistakes and rearrange whitespace to more
closely match CODING_STYLE.
2008-10-26 10:25:26 +00:00
Chris Wilson
88935947d1 [test] Add leaky-dashed-stroke
A test case for a leak whilst closing a dashed stroke extracted from the
report by Jeff Muizelaar who found the artifact whilst looking at
  firefox http://people.mozilla.com/~jmuizelaar/BerlinDistricts-check.svg
2008-10-26 05:30:56 +00:00
Chris Wilson
195fd27cc6 [build] Use AC_LINK_IFELSE for testing linker flags.
Richard Hult reported that -Wl,--allow-shlib-undefined was incorrectly
being identified as supported by gcc under Mac OS/X:

configure:25103: checking whether gcc supports -Wl,--allow-shlib-undefined
configure:25117: gcc -c -Werror -Wl,--allow-shlib-undefined  conftest.c
>&5
i686-apple-darwin9-gcc-4.0.1: --allow-shlib-undefined: linker input file
unused because linking not done

So instead of just checking whether the compiler accepts the flag, check
that we can actually link a dummy file.
2008-10-23 11:16:40 +01:00
Behdad Esfahbod
d692284ab8 [test/user-font] Exercise glyph 0
Previously there was a bug in cairo and/or poppler causing glyph 0 of
user fonts to not show up.  This is fixed now, so we exercise glyph 0.
2008-10-23 01:45:35 -04:00
Chris Wilson
e6219f7116 [win32] Correct error paths in text_to_glyphs().
Carl spotted that 1db894 introduced an error into text_to_glyphs() such
that following an allocation error the code would attempt to thaw an
unfrozen glyph cache, leading to an attempt to unlock an unlocked mutex -
which causes a deadlock under win32.
2008-10-22 17:55:44 +01:00
Chris Wilson
09651a1c1a Twin perf case 2008-10-22 16:38:12 +01:00
Chris Wilson
954ebacb71 Map toy font face to implementation.
Quartz fonts and user fonts use an indirect font face when creating a
scaled font for the toy font face. This means that they insert a scaled
font into the font map that has a different font face to the one that is
initially searched upon. The result is that when we try to create an
identical scaled font, we fail to find the existing scaled font and
attempt to insert a duplicate into the hash table - which triggers an
assert.

In order to avoid creating duplicate fonts, we add a new method to the
font backends that allows cairo_scaled_font_create() to peek at the
font_face that will be used to actually implement the scaled font
constructor - thus we are able to use the correct font_face as part of the
hash key.
2008-10-22 16:38:12 +01:00
Adrian Johnson
5e4a1cb0b8 Don't add a notdef glyph to Type 3 font subsets
This allows user-fonts to use glyph 0 when embedding in PS/PDF.
According to ISO32000 Type 3 fonts do not require a notdef glyph.
2008-10-22 22:00:31 +10:30
Chris Wilson
170686d4b0 [cairoint] Remove the duplicate prototype.
In the previous commit I added comments and a duplicate prototype. Remove
the duplicate - but keep the comments.
2008-10-22 01:01:06 +01:00
Chris Wilson
1db8949f2b Ensure that the scaled font is frozen for the lifetime of the scaled glyph.
After discussing the scaled font locking with Behdad, it transpired that it
is not sufficient for a font to be locked for the lifetime of a scaled glyph,
but that the scaled font's glyph cache must be frozen for the glyph'
lifetime.  If the cache is not frozen, then there is a possibility that the
glyph may be evicted before the reference goes out of scope i.e. the glyph
becomes invalid whilst we are trying to use it.

Since the freezing of the cache is the stronger barrier, we remove the
locking/unlocking of the mutex from the backends and instead move the
mutex acquisition into the freeze/thaw routines. Then update the rule on
acquiring glyphs to enforce that the cache is frozen and review the usage
of freeze/thaw by all the backends to ensure that the cache is frozen for
the lifetime of the glyph.
2008-10-22 00:53:55 +01:00
Chris Wilson
b2cbbceb4c [test/meta-surface-pattern] Propagate errors.
Use cairo_get_target() to propagate any errors from the secondary context.
2008-10-21 20:01:23 +01:00
Behdad Esfahbod
9d4262ebe0 [build] Use dolt
Dolt is a hack to speed up libtool-based build systems:

	http://dolt.freedesktop.org/

It's completely transparent to the user.  Brings make time
of cairo from 70s down to 20s.  Yay!
2008-10-21 17:45:54 -04:00
Chris Wilson
5a822046cc [test/xlib-expose-event] Propagate errors.
Use cairo_get_target() to propagate errors from secondary contexts.
2008-10-21 11:31:12 +01:00
Chris Wilson
21223cc12c [test/unbounded-operator] Propagate errors.
Use cairo_get_target() to propagate errors from secondary contexts.
2008-10-21 11:31:11 +01:00
Chris Wilson
4c8de6d99d [test/surface-pattern-scale-up] Propagate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:11 +01:00
Chris Wilson
e8de7d1c36 [test/surface-pattern-scale-down] Propagate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:11 +01:00
Chris Wilson
b5551cfce2 [test/rotate-image-surface-paint] Proapgate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:11 +01:00
Chris Wilson
6d41ffbbed [test/pixman-rotate] Propagate errors
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:10 +01:00
Chris Wilson
64949b8173 [test/operator-source] Propagate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:06 +01:00
Chris Wilson
971f030b7d [test/operator-clear] Propagate errors.
Use cairo_get_target() to propagate errors from secondary contexts.
2008-10-21 11:31:06 +01:00
Chris Wilson
9b919b0e91 [test/extend-pad] Propagate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:31:06 +01:00
Chris Wilson
69415b4fc6 [test/device-offset-scale] Propagate errors
Use cairo_get_target() to propagate errors from the secondary contexts.
2008-10-21 11:31:06 +01:00
Chris Wilson
9ab296123e [test/device-offset-positive] Propagate errors.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:14:01 +01:00
Chris Wilson
594fa0836f [test/device-offset] Propagate error.
Use cairo_get_target() to propagate errors from the secondary context.
2008-10-21 11:12:11 +01:00
Chris Wilson
29da47be60 [ps] Check for an empty font subset.
Return early before trying to emit an empty subset into the document -
avoids a potential use of an uninitialised status variable.
2008-10-21 10:42:41 +01:00
Chris Wilson
fd1f3c27e0 [configure] Check for atomic xchg.
Bug 18140 identifies a case where we have an atomic increment, but not an
atomic exchange. We need both to implement atomic reference counting, so
add a second check to detect whether __sync_val_compare_and_swap
generates a non-atomic instruction.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18140.
2008-10-21 09:23:15 +01:00
Chris Wilson
71e4f7e3a1 Add API documentation for NULL filenames and write_funcs.
Mention in the API docs that you can pass a NULL filename to
cairo_(pdf|ps|svg)_surface_create in order to construct a queryable
surface without generating any temporary files. Similarly when passing a
NULL write_func to cairo_pdf_surface_create_for_stream et al.
2008-10-20 23:54:57 +01:00
Chris Wilson
6cb2b29434 [mutex] s/HOLDS_MUTEX/MUTEX_IS_LOCKED/
Behdad prefers the latter to keep a clean namespace.
2008-10-20 23:32:44 +01:00
Chris Wilson
ae9d17c015 [directfb] Unbounded operators are unsupported.
Currently the emulation of Porter-Duff operators does not correctly
handle the unbounded operators.
2008-10-20 23:32:34 +01:00
Chris Wilson
1f35f31c4e [directfb] Fallback for SATURATE
We're unable to satisfactorily emulate SATURATE using the src/dst blend
modes, so fallback. (Might just be a bug in libdirectfb...)
2008-10-20 23:20:25 +01:00
Chris Wilson
c7951c4a36 [directfb] Perfom text fallback if emulating clip regions.
Fallback if we have a clip that is not a simple region.
2008-10-20 23:20:25 +01:00
Chris Wilson
98933fd4b8 [directfb] When blitting check if we need the un-premultiplied color.
When blitting whether we need to use the premultiplied color is dependent
upon the destination surface capabilities.
2008-10-20 23:20:24 +01:00
Chris Wilson
4af8aa5f4d [directfb] Apply clip to release_dest_image()
We need to respect the current clip when copying the fallback image back to
the target surface.
2008-10-20 23:20:24 +01:00
Chris Wilson
0ba5085ba0 [directfb] Fix OBO in clip.
DirectFB seems to use inclusive upper bounds.
2008-10-20 23:20:24 +01:00
Chris Wilson
2743e84171 [directfb] Force NEAREST.
The current version of DirectFB does not support any filters, so set
NEAREST on the source patterns so that we can fully optimize the pattern
inside core.
2008-10-20 23:20:24 +01:00
Chris Wilson
f1669d31c0 [directfb] Track the empty clip rectangle.
A region with no extents means everything should be clipped out, so we
need an extra flag to disambiguate when we have 0 clip rectangles.
2008-10-20 23:20:24 +01:00
Chris Wilson
ebe3048f9b [directfb] Cap the maximum surface size to use for the font cache.
Fallback if we need to create a cache larger than the maximum usable
surface.
2008-10-20 23:20:23 +01:00