Commit graph

4460 commits

Author SHA1 Message Date
Chris Wilson
ae1e044e32 [cairo-matrix] Use isfinite() to check matrix determinant.
The current NaN check is insufficient as it classifies inf as a valid
determinant. We can improve the test by using isfinite() - but only
when it is available. We use the feature test macros as being the
simplest way of determining the presence of isfinite() as it may be
implemented as a macro, making checking for its usability troublesome
during configure.
2008-01-12 00:40:59 +00:00
Kouhei Sutou
3610841910 Fix typo in comment. 2008-01-11 14:40:06 -08:00
Chris Wilson
0b91240692 [check-plt.sh] Ensure that $MAKE is defined.
Copy the check from check-def.sh now that $MAKE is also used in
check-plt.sh
2008-01-11 21:58:09 +00:00
Chris Wilson
92c744978f [Makefile.am] Tweak the flags passed to CPP.
Adjust the flags passed to $(CPP) to match those used in the
surrounding targets (splint and sparse), which should improve their
reliability.
2008-01-11 21:58:09 +00:00
Behdad Esfahbod
36f5d69a11 [src/Makefile.am] Tweak includes a bit 2008-01-11 16:48:55 -05:00
Chris Wilson
ed113ef422 [check] Move the hidden symbol check into check-{def,plt}.sh
Behdad, once again the arbiter of good taste, objected to the use of
the dotfile within the Makefile, and suggested that one calls $MAKE to
pre-process the source file from within the check scripts.

Doing so removes the ugly wart added to Makefile.am...
2008-01-11 21:21:34 +00:00
Carl Worth
bcf0c442b9 Merge branch 'master' of git.cairographics.org:/git/cairo into cairo 2008-01-11 12:30:15 -08:00
Carl Worth
ecb895803b Migrate glyph mask to A8 in case of mixed-format glyphs.
This fixes the remaining image-backend problems with bug 13479:

	Ugly Courier New font with cairo 1.4.12
	https://bugs.freedesktop.org/show_bug.cgi?id=13479

although the xlib-backend had been fixed previously.

Specifically, if an A1 glyph is first encountered, then subsequent
glyphs will still be rendered with antialiasing, (previously they
would be rendered very poorly without antialiasing).

Similarly, if the first glyph encountered has component-alpha
sub-pixel antialiasing and then an A1 or A8 glyph is encountered
then all glyphs will rendered in A8 (grayscale antialiasing).
Previously, the non-subpixel-antialiased glyphs would not appear
at all.
2008-01-11 12:28:49 -08:00
Chris Wilson
8a6a0b43dc [check] Replace compiled symbol visibility checker with shell script.
Behdad Esfahbod objected to the execution of a compiled program to check
symbol visibility as it makes cross-compilation more difficult.

Instead of executing the program, this method conditionally exports
a variable if cairo uses symbol hiding and scans the executable for
that symbol in a similar manner to check-def.sh. This has the slight
advantage of using the Makefile for performing the compilation, rather
than attempting to invoke $(CPP) from a shell script within the test
environment.
2008-01-11 20:27:23 +00:00
Chris Wilson
982f65081f [cairoint.h] Compile time check for a font backend.
Add a paranoid check that at least one font backend is available - this
should have been already caught by configure, but it should help if a new
font backend is ever added.
2008-01-11 17:25:33 +00:00
Chris Wilson
6d3ed950ea [check] Skip def/plt tests if the compiler doesn't support symbol hiding.
Compile a trivial program such that it reports whether cairo is hiding
its internal symbols and skip the tests that depend upon it.

This prevents false errors, such as bug 12726, where the user is
presented with a scary make check failure.
2008-01-11 16:16:20 +00:00
Chris Wilson
be146f02e0 [Makefile.am] Update cairo.def after the set of enabled features is modified.
Bug 13342 corresponds with a rebuild of cairo after removing
--enable-glitz from the configure line. Under these circumstances,
the remaining installable headers are not modified and therefore
cairo.def is not rebuilt and still expects to find a reference to
cairo_glitz_surface_create. The solution is to rebuild cairo.def after
any modification to the 'public' headers (installable or otherwise).
2008-01-11 15:45:22 +00:00
Chris Wilson
c26784dbb6 [configure] Version bump for $(EXEEXT)
Adrian Johnson found that adding $(EXEEXT) to TESTS broke the build
under mingw. After a bit of investigation, the issue was tracked down
to being caused by automake-1.7. Bump the autotools version
requirements to avoid the breakage.
2008-01-11 14:05:46 +00:00
Adrian Johnson
2574cc35b3 win32-printing: Do not clip and paint with an empty path
For non solid patterns _fill and _show_glyphs sets a clip
path then paints the pattern. Previously if the path is empty
SelectClipPath did not set clip. This was probably the cause
of bug 13657 where the entire page was black.

Fix this by not painting anything if the path is empty.
2008-01-11 22:07:26 +10:30
Adrian Johnson
7ef4caaf11 win32-printing: use fill instead of clip for non win32 fonts
Non Windows fonts are drawn by getting the outline path, setting
this is the clip path, and painting the source pattern. For
solid colors this can avoid the clip and just do a fill.
2008-01-11 22:06:51 +10:30
Adrian Johnson
ef56a6fd93 PS: Don't use language level check in EPS
As 'showpage' and 'quit' can not be used in EPS.
2008-01-11 22:05:54 +10:30
Adrian Johnson
b703199525 Type1-subset: Font name may be NULL
If the FreeType face->family_name is NULL use a CairoFont-x-y name.
2008-01-11 22:05:13 +10:30
Chris Wilson
6418a8be87 [test/.valgrind-suppressions] Update for amd64/sid
Update the valgrind suppressions for the libz and Xrm spam.
2008-01-10 22:14:31 +00:00
Chris Wilson
2e5f278da1 [cairo-pattern] Free the copied pattern on error.
Free the locally allocated pattern if the copy fails.
2008-01-10 22:11:42 +00:00
Chris Wilson
db246f2fa2 [cairo-traps] Typo caught by valgrind.
==3429== Conditional jump or move depends on uninitialised value(s)
==3429==    at 0x4E3FB0F: _cairo_box_round_to_rectangle (cairo-fixed-private.h:196)
==3429==    by 0x4E34B29: _cairo_clip_intersect_to_rectangle (cairo-clip.c:162)
==3429==    by 0x4E31943: cairo_push_group_with_content (cairo.c:495)
==3429==    by 0x403044: draw (clip-zero.c:48)
==3429==    by 0x404221: cairo_test_expecting (cairo-test.c:377)
==3429==    by 0x64701C3: (below main) (libc-start.c:222)

Caused by setting extents->p2.y to zero twice.
2008-01-10 21:32:47 +00:00
Chris Wilson
10f6ef98f6 [gitignore] Add mkinstalldirs.
Ignore another autoconf utility script.
2008-01-10 17:59:33 +00:00
Chris Wilson
da769b53e8 [configure.in] Fixup usage of _CHECK_FUNCS_WITH_FLAGS within PKG_CHECK_MODULE.
An unwanted side-effect of the recent fix for the paranoid extra check
for a usable library was that it broke the logic for the absence of the
module.
2008-01-10 17:59:22 +00:00
Chris Wilson
409e91b576 [cairo-pdf-surface] Review error handling.
Ensure all errors are propagated back to the caller with locally
allocated resources destroy as required.
2008-01-10 17:11:04 +00:00
Chris Wilson
6134600988 [cairo-pdf-surface] Skip emitting the font subset if not among resources.
Do not emit the font_subset if we did not successfully add it to the list
of font resources - can only happen after an error
2008-01-10 17:10:52 +00:00
Chris Wilson
755a4bb51b [test] Win32 printing backend testing depends upon ghostscript
Using the Win32 printing backend requires ghostscript, so only enable
those tests if we detect 'gs' during configure.
2008-01-10 17:10:41 +00:00
Chris Wilson
02b0743458 [cairo-pattern] Rearrange CAIRO_MUTEX_INITIALIZE.
test/pattern-get-type exposes a bug whereby we try to acquire the
_cairo_pattern_solid_pattern_cache_lock before initializing the
mutexes. To fix this move the CAIRO_MUTEX_INITIALIZE() from the
depths of _cairo_pattern_init() and perform it at the public entry
points.
2008-01-10 17:10:30 +00:00
Chris Wilson
cbe8d3855e [test] Fixup make check for mingw
Add EXEEXT to TESTS so that mingw builds the correct target.
2008-01-10 17:10:12 +00:00
Chris Wilson
9ae4b219e1 [test/solid-pattern-cache-stress] Check for drand48().
Apply an alternative rand() function if drand48() is not available for
the platform.
2008-01-10 14:47:16 +00:00
Chris Wilson
648289c639 [configure.in] Add paranoid double checking for (svg|pdf)2png
Due to my incomplete cross-build environment, configure detects the
presence of rsvg and poppler, but they cannot be used. To make my life
easier, add a check similar to that used for fontconfig to ensure the
libraries are usable before compiling the optional test utilites.
2008-01-10 14:36:57 +00:00
Chris Wilson
909c57ce15 [cairo-pdf-operators] Be consistent in error checks.
Consistently check the output status at the end of each function -
helps with early error detection and even improves test code coverage!
2008-01-10 14:22:38 +00:00
Chris Wilson
4ffb0a80b3 [cairo-paginated-surface] Call the abstract cairo_surface_show_page ().
Use the generic surface layer cairo_surface_show_page() instead of
directly calling cairo_paginated_surface_show_page(), as the higher
level performs more error checking.
2008-01-10 14:22:28 +00:00
Chris Wilson
9d49c4b10e [configure] Print version info in summary.
Add the cairo version to the configure summary.
2008-01-10 14:18:25 +00:00
Chris Wilson
ea4dec08f7 [configure.in] Fixup fontconfig check.
Correct the check for FcFini() so that the result is actually used.
2008-01-10 13:50:42 +00:00
Chris Wilson
f4e7e7d6b4 [cairo-path-bounds] _cairo_path_fixed_bounds() should never fail.
_cairo_path_fixed_bounds() should never fail so change return type
to void and update caller.
2008-01-10 13:14:28 +00:00
Chris Wilson
5fad969317 [cairo-ft-font] Destroy unscaled font ref on error.
Destroy the local reference taken to the unscaled font if we encounter
an error whilst creating the derived scaled font.
2008-01-10 13:11:09 +00:00
Chris Wilson
3b1411167c [headers] Brute force fixup of including cairoint.h from boilerplate.
More the majority of the typedefs from cairoint.h to
cairo-types-private.h and fixup cairo-pdf-operators-private.h to
avoid including cairoint.h.

A better approach would seem to be to rationalise cairoint.h so that it
only provides the symbol aliasing, moving the types and functions to
more appropriate private headers. However, this fixes the immediate
problem of running make check!
2008-01-10 12:57:36 +00:00
Adrian Johnson
40142d4bf4 Set the PS level to to minimum required
A problem with the previous commit for checking the PS level is that
with the default PS level of 3 it prevents PS files from printing on
Level 2 printers even if no Level 3 operators are used.

As the PS header is created after the page content has been generated,
it is easy to check the PS Level actually required and set this in the
header and PS level check code.
2008-01-10 02:57:30 +10:30
Adrian Johnson
9bccc96846 Add PS Level check to PS output
http://bugzilla.mozilla.org/show_bug.cgi?id=406376

reported problems with cairo PostScipt output printing black boxes
instead of images. This was found to caused by printing Level 3
PostScript to a Level 2 printer.

Add some PostScript code to to the cairo PS prolog to check the
language level of the printer. If the printer can not print the job, a
message stating the required language level is printed and the job is
aborted.
2008-01-10 02:34:02 +10:30
Adrian Johnson
f20a1a40c3 Fix MSVC 2008 compiler warnings - bug 13698 2008-01-09 01:20:34 +10:30
Adrian Johnson
47bebc8f1d Fix win32-font problems with Type 1 fonts
This should fix the problems reported in

http://lists.cairographics.org/archives/cairo/2007-November/012172.html

The problem is that GetCharacterPlacement() used in
_win32_scaled_font_text_to_glyphs returns utf16 instead of glyph
indices when Type 1 fonts are used.

This has been fixed by using GetGlyphIndices instead of
GetCharacterPlacement if the font is a Type 1.

_win32_scaled_font_map_glyphs_to_unicode has been fixed work with Type 1
glyph indices. It now uses GetFontUnicodeRanges and GetGlyphIndices
to do the reverse lookup.
2008-01-09 01:18:44 +10:30
Adrian Johnson
25f24e79f8 PDF: Update the PDF page structure comment 2008-01-07 21:19:35 +10:30
Adrian Johnson
21f842f0df PDF: Remove copy_page
Now that the content stream is no longer split into multiple streams
it is not possible to implement a copy_page function that shares the
common content between pages.

Remove this function so the paginated surface will rewrite the
content from the meta surface.
2008-01-07 21:17:26 +10:30
Adrian Johnson
e2adb921f8 PDF: Put each fallback image in a separate group
Each fallback image needs to be in a separate group in the knockout
group. Otherwise transparent edges of adjacent fallback images will
composite with each other creating visible seams between the images.
2008-01-07 21:15:18 +10:30
Adrian Johnson
d6a84302a0 Fix analysis of transformed meta surfaces 2008-01-07 21:11:46 +10:30
Adrian Johnson
3c725d50db PDF: Make _SOURCE operator work inside meta surface patterns 2008-01-07 21:09:04 +10:30
Adrian Johnson
6d6b74ac4c PDF: Support _OPERATOR_SOURCE when nothing under the operation
CAIRO_OPERATOR_SOURCE operations on the PDF backend are now natively
supported when there is nothing already underneath the operation.
2008-01-07 21:08:09 +10:30
Adrian Johnson
e195cb551c Add FALLBACK mode to paginated surface
The PDF surface needs to know when the fallback images start so it can
close off the content stream and create a knockout transparency group
for the fallback images. Currently it does this by looking for
operations with CAIRO_OPERATOR_SOURCE. PDF returns unsupported for
_SOURCE during the analysis phase so _SOURCE will never appear during
native operations. However this prevents the PDF surface from
supporting _SOURCE operations that can be natively supported. For
example a _SOURCE operation with nothing painting under it can be
converted to _OVER and natively supported.

A third mode, CAIRO_PAGINATED_MODE_FALLBACK, has been added. The
paginated surface will set this mode before it paints finer-grained
fallback images.
2008-01-07 21:05:36 +10:30
Adrian Johnson
d2a5d1ace6 PDF: Remove the remaining code for splitting the content
across multiple streams. This fixes the problem reported here

http://lists.cairographics.org/archives/cairo/2007-December/012197.html
2008-01-07 21:04:06 +10:30
Adrian Johnson
099810b6c3 PDF: Perform all clipping in the content stream
Previously this was done in a separate group. Now that the PDF backend
has been re-organized to not interrupt the content stream the clipping
can be done in the same stream.
2008-01-07 20:59:22 +10:30
Adrian Johnson
83630b1c70 PDF: Emit all patterns after content stream
To fix this performance issue

http://lists.cairographics.org/archives/cairo/2007-December/012197.html

the PDF surface needs to avoid starting and stopping the content
stream every time it emits a pattern. This patch makes the PDF surface
store a list of all patterns used while the content stream is written
out then write out all the patterns after the content stream is
closed.
2008-01-07 20:55:56 +10:30