Commit graph

4592 commits

Author SHA1 Message Date
Adrian Johnson
4b2c74e285 PS: Use standard page size names for some common sizes
Some PS viewers like gv use the label in the %PageMedia DSC comment as
the displayed page size.

The page names and sizes were obtained from the list at:

http://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html
2009-09-28 22:57:10 +09:30
Adrian Johnson
db5e3db0a9 PS: Add DocumentMedia/PageMedia DSC comments
Provide default DocumentMedia and PageMedia DSC comments if the user
does not specify them using cairo_ps_surface_dsc_comment(). This is
required so that PostScript viewers such as gv use the correct page
size.
2009-09-25 23:24:36 +09:30
Benjamin Otte
caa9eed464 [xlib] Handle case in draw_image() where pixman format is not RGB
When an image cannot be expressed as masks, its data cannot be used in
an XImage. In that case, we use pixman to copy the image to the desired
format.
2009-09-25 00:16:39 +02:00
Benjamin Otte
9f5fe67115 [image] Return cairo_bool_t from _pixman_format_to_masks
Return FALSE when the pixman format does not support ARGB masks. In
particular, return FALSE for YUV formats.
2009-09-25 00:14:15 +02:00
Chris Wilson
c8a4f48671 [image] Do not trust user supplied data to be clear
Gah, more important than the whitespace was the reversal of is_clear...
2009-09-23 18:08:34 +01:00
Chris Wilson
03bce099ea [image] Tweak coding style
Whitespace spam.
2009-09-23 17:56:00 +01:00
Benjamin Otte
ab558fa843 [image] Move setting of is_clear to _create_with_pixman_format()
Simplifies code and ensures other users of that function don't run into
the same bug.
2009-09-23 17:40:45 +02:00
Chris Wilson
07ee9cfbf0 [image] Do assumption initial user data is cleared.
Benjamin Otte pointed out the error of my ways that a clear on a
cairo_image_surface_create_for_data() was not working. This is because I
modified the image surface to skip clears when it knows the target data
has been cleared. This flag must be reset when the user interacts with
the surface, such as providing the initial surface data.
2009-09-23 15:37:35 +01:00
Chris Wilson
30f45ce5f7 [gl] Handle an absent visual.
If we cannot find the correct visual for the fbconfig, return an error
instead of crashing. The difference is subtle, granted.
2009-09-22 15:46:56 +01:00
Adrian Johnson
e74cb7fa3e win32-printing: correct the use of the CAIRO_HAS_WIN32_FONT #ifdef
it was wrapping code required for non windows fonts.
2009-09-22 22:44:34 +09:30
Adrian Johnson
3dd2cc8f6d win32-printing: fix meta surface pattern regression caused by bed2701e 2009-09-22 22:40:53 +09:30
Adrian Johnson
7658635c65 win32-printing: Allow GDI CTM with scale < 1 to be set
To better support creating EMF files with the win32-printing surface,
allow a GDI CTM with scale < 1 to be used.

http://lists.cairographics.org/archives/cairo/2009-September/018110.html
2009-09-22 22:36:20 +09:30
Adrian Johnson
19c0916703 Make win32 fonts work in EMF files created by win32-printing 2009-09-22 22:35:33 +09:30
Adrian Johnson
f01a54266d Fix compiler warnings in win32-surface 2009-09-22 22:34:56 +09:30
Adrian Johnson
23663e2078 Fix compiler error on cygwin 2009-09-22 22:34:21 +09:30
Adrian Johnson
7ecd413fab Add WINVER defines to cairo-mutex-impl-privaye.h
The WINVER defines should always be defined before including windows.h
2009-09-22 22:33:14 +09:30
Adrian Johnson
605ec22ab5 Use _WIN32 to check for win32 mutex
Commit 535bcaa1 moved pthread after win32 to fix mingw build
problems. However this breaks cygwin builds.

On cygwin HAVE_WINDOWS_H is defined but _WIN32 is not. This was
causing windows.h to be included which defines _WIN32. As a result the
win32 code in cairo-misc.c was being compiled but the win32 declaration
in cairint.h was not included.

Fix this by using _WIN32 to enable the win32 mutex functions since
_WIN32 is defined by mingw, visual C++, and winegcc, but not
cygwin. On cygwin, posix functions are preferred as it is a unix
emulation environment.
2009-09-22 22:17:27 +09:30
Chris Wilson
e00d062749 [xlib] Fix recent bug in unbounded trapezoids
Gah! I had believed that the dst extents and the clip were correct to
enable unbounded fixup for the unbounded trapezoids. I was wrong, so I
need to requery the trapezoid extents. As this information is already
known, I should update the interface to pass along all relevant
information.
2009-09-21 13:50:00 +01:00
Chris Wilson
378b1e73d9 [fallback] Special case single composite rectangle
Avoid the overhead of region-from-traps extraction for the very frequent
case of using a single (possibly clipped) rectangle with a pattern source.
2009-09-21 04:26:01 +01:00
Chris Wilson
35daf95db8 [xlib] Trim a few redundant steps when uploading glyphs
Cleanup the glyph coercion routines to avoid the temporary cairo_t (as
we can just cairo_surface_paint() directly).
2009-09-21 04:26:01 +01:00
Chris Wilson
9b7c5d9505 [xlib] Cleanse creation of similar surfaces.
Reduce two nearly identical routines to one.
2009-09-20 20:10:34 +01:00
Chris Wilson
878cef62b5 [xlib] Interim CAIRO_DEBUG variable to specify xrender level
Use CAIRO_DEBUG=xrender-version=x.y to override what the server reports.
Useful to test cairo's behaviour against older servers.
2009-09-20 19:59:21 +01:00
Jeff Muizelaar
531e804598 Add a description of how we compute the spline_error_squared. 2009-09-18 12:17:46 -04:00
Behdad Esfahbod
f433635240 Set LC_ALL=C instead of LANG=C 2009-09-16 15:50:34 -04:00
Sebastian Dröge
56c9b2de7a Use __uint128_t and __int128_t if available
GCC uses a peculiar name for a real 128-bit integer on x86-64.

Speedups, xlib on a gm45
========================
poppler        41246.56 -> 35102.82: 1.18x speedup
swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-15 18:19:08 +01:00
M Joonas Pihlaja
4152cd90e2 [autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround.
Explain where the weird SIZEOF_VOID__ comes from.
2009-09-14 14:29:01 +03:00
M Joonas Pihlaja
1c7ac6c47a [build] Work around autoconf void* -> VOID__ name conversion bug.
The autoconf shipping with OpenBSD 4.5 converts sizeof(void*)
to SIZEOF_VOID__ rather than SIZEOF_VOID_P.  Work around that
by defining SIZEOF_VOID_P if required.
2009-09-14 13:32:18 +03:00
Chris Wilson
9c2790ccc4 [build] Add a default message for when GLEW isn't built
And it appears I touched the build system again and autoregenerated the
feature headers.
2009-09-14 10:10:45 +01:00
Chris Wilson
6d4f3c40ef Add a private copy of GLEW
This appears to be the simplest mechanism to build libglew at the moment -
should a system copy be unavailable.  Fortunately libglew is now distributed
under a permissive licence.

If you want to pass 'make -C src check' you have to use the system copy,
or spend quite a bit of time cairo-fying libglew.
2009-09-14 09:26:02 +01:00
Chris Wilson
19881012cb [image] Add pixel masks for BGRA formats
pixman introduced the BGRA pixel type not too long ago, and so we need to
update our pixman_format_code_t to cairo_format_masks_t translator.
2009-09-13 16:36:12 +01:00
Chris Wilson
6cb3ff9c19 [configure] --enable-symbol-lookup
There you go Joonas, I don't always ignore your suggestions! This is
simple patch to allow the user to disable symbol loops in case the
auto-detection fails on some obscure (perhaps OpenBSD) platform. Or in
case the user really wants to trim a few bytes from a library only used
during tracing!
2009-09-13 10:52:14 +01:00
Chris Wilson
33be73dfb7 [xlib] Fix big-line.
Project lines that exceed the 16.16 limits onto the XFixedLine, as we know
that top/bottom must fit within the confines of the surface and so will be
less than 16 bits.

Sadly this is a run-on patch that also does:
1. Make FillTiled the default for new GCs.
2. Stores extend mode as opposed to repeat, and thereby cleaning up some
inconsistent code.
3. Remove the special casing for unbounded trapezoids, as it is redundant
with the polygon clipping.
4. Tidy the logic for deciding when to use the core protocol
(_categorize_composite_operation)
2009-09-11 14:59:58 +01:00
Chris Wilson
6960162c5e [xlib] Discard clip if larger than glyph extents
Implement cheap calculation of glyph extents to see whether we can discard
the clip region. This is effective around 50% of the time for firefox (and
makes the xtrace so much neater).
2009-09-11 14:56:17 +01:00
Chris Wilson
b495e7eb2e [surface] Early return for (region IN white)
Fill a region using IN and a white source is a frequent reduction of a
complex clip (viz a path that covers the whole operation extents will be
reduced to a single rectangle), and we can simply discard the fill (as it
always has bounded semantics).
2009-09-10 19:25:14 +01:00
Chris Wilson
94aeae9b2e [clip] Simplify applying a box clip
If the clip path is a simple box, then for many operations it is entirely
representation by the alteration of extents and so we can skip a few steps
during reconstruction.
2009-09-10 19:11:36 +01:00
Chris Wilson
496e79b637 [xlib] Fix extraction of GC during XCloseDisplay()
Jeff Muizelaar reported a bug from his firefox builds that was causing a
double free during XCloseDisplay, and suggested it was related to
c0e01d9cd. Reviewing the cleanup, suggested that the cause may just be a
pair of missing parenthesis.
2009-09-10 17:36:46 +01:00
Chris Wilson
7fb0d5e209 [twin] Initialise all properties
Left a couple of uninitialised properties along the non-toy font
construction path.
2009-09-09 01:45:16 +01:00
Chris Wilson
4b221bd49a [spans] Correct offsets for trapezoids
Pass on the destination offset from composite_trapezoids() to
composite_polygon().
2009-09-08 19:02:04 +01:00
Chris Wilson
9389cb78a8 [build] Improve handling of missing test apparatus
Improve detection, reporting and disabling of test backends when we lack
the required libraries and utilities.
2009-09-08 17:51:33 +01:00
Chris Wilson
45759e5a0f [gl] Supply extents for acquire source image
I have no idea how we survived for so long without supplying the source
extents...
2009-09-08 09:19:53 +01:00
Chris Wilson
67d40e5c73 [xlib] Protect ourselves from liars that claim to have a 64k window
Found using webkit, who attempt to paint an width X page height window.
Please, please clip large windows to the visible area. Thanks.
2009-09-06 10:21:00 +01:00
Chris Wilson
310cebf194 [configure] Add option to disable trace.
Some environments may be broken beyond our capabilities to detect, or
maybe the user is just insane and doesn't want to build my nice shiny
cairo-trace. Whatever, give them the option to choose:

  $ ./configure --disable-trace
2009-09-05 15:21:50 +01:00
Chris Wilson
402a053948 [gl] compile fix.
Compiled fine during testing -- only I forgot I hadn't enable the gl surface.
2009-09-04 09:47:10 +01:00
Chris Wilson
b065303740 [xlib] Enable pad_reflect by default
If the XServer claims to support the required Render extension then send
it the operations. However for the cases where we know it does not work,
i.e. the current and previous generations (<=1.6) of Xorg servers, enable
the buggy_pad_reflect fallbacks.
2009-09-04 09:35:22 +01:00
Chris Wilson
de99f84188 [fallback] Only eliminate the clip if the operation is bounded
For unbounded operations we still need to pass along the clip in order to
correctly limit the extents of the operation.
2009-09-04 08:55:19 +01:00
Chris Wilson
00ca0780b8 [win32] Remove unused clone_similar()
The win32 backend handles surface sources directly and never calls
_cairo_pattern_acquire_surface() which is the only other possible user of
clone_similar().
2009-09-03 23:25:53 +01:00
Chris Wilson
535bcaa1a1 [mutex] Hook into pthread last
Check for native mutex types before hooking into pthread, as this
workarounds broken builds on mingw that confuse us by including the
pthread header file.
2009-09-03 20:12:41 +01:00
Chris Wilson
769f4a4f47 [gl] Allocate small number of rectangles on the stack
FillRectangle is most frequently used to fill an entire imagee with the
background colour, i.e. with just a single, or few, rectangle. Avoid
heap allocation for this common case by allocating enough space for 4
rectangles (vertices+colors) on the stack.
2009-09-03 20:12:41 +01:00
Chris Wilson
6ce200da9d [gl] Assert that the error is impossible.
As we created the image, it should not need coercing into a suitable
format and so we should be able to upload it without failure.
2009-09-03 20:12:40 +01:00
Chris Wilson
d3aeafb406 [gl] Remove reference to depth_stencil_tex
We no longer use a depth-stencil, so remove the vestigial reference.
2009-09-03 20:12:40 +01:00