Commit graph

259 commits

Author SHA1 Message Date
Behdad Esfahbod
84606a900f [cairo-surface] Fix compiler warnings
by adding new status value to switch.
2008-05-15 19:41:49 -04:00
Behdad Esfahbod
4dd4d96fb1 [cairo-surface] Add cairo_surface_get_fallback_resolution() 2008-05-15 17:20:30 -04:00
Behdad Esfahbod
a6eb9be106 [_cairo_surface_get_extents()] return UNSUPPORTED if surface has no bounds
and set the extents to the infinite bounds.

A surface has no bounds if it does not provide get_extents(), or if its
get_extents() returns UNSUPPORTED.
2008-05-09 15:54:12 +02:00
Behdad Esfahbod
ca8b917102 [cairo-surface] Call backend->flush even if backend->finish is null
Trivial bug.
2008-05-09 15:54:11 +02:00
Behdad Esfahbod
eb63e5609e [_cairo_surface_set_device_scale] zero xy and yx matrix entries
Just in case...
2008-05-09 15:54:11 +02:00
Behdad Esfahbod
80c5906267 [cairo-surface] Tone down a Caution comment
We have tested the case of device transforms that have both translate and
scale.  So it basically works.  We just are not sure that we handle it in
all places (In fact we know we don't.)
2008-05-09 15:54:10 +02:00
Behdad Esfahbod
901c56cba2 [image surface] Rename cairo_image_surface_backend to _cairo_image_surface_backend 2008-05-09 15:54:10 +02:00
Behdad Esfahbod
5f63358018 [src/check-doc-syntax.sh] Fix some bugs in the check and fix errors found 2008-05-09 15:54:04 +02:00
Chris Wilson
e4fc5279cc [cairo-font-options] Eliminate internal use of cairo_font_options_create()
Within the library, we know the precise size of the struct and so can
allocate temporary font options on the stack - eliminating the need
to export an internal alias of cairo_font_options_(create|destory).
2008-04-11 15:39:11 +01:00
Carl Worth
e07e1b7bbb Document many more defaults
Including: fallback_resolution, fill_rule, line_cap, line_join,
miter_limit, font_face, font_size, and operator.
2008-04-06 02:47:32 -07:00
Adrian Johnson
5b8b3a9765 PS/PDF: Save/Restore surface clip when emitting a meta-surface pattern 2008-03-29 15:52:37 +10:30
Carl Worth
770633c05a Quiet warnings about unhandled enum values in _cairo_surface_create_in_error 2008-03-25 13:17:49 -07:00
Chris Wilson
e208f31236 [cairo-surface] Check surface status on internal paths as well.
Return any error status on the surface to the caller.
2008-02-20 10:56:53 +00:00
Chris Wilson
e5f0253b67 [cairo-surface] Hide the compiler warnings.
Assign the return value from _cairo_surface_set_error() to hide the
compiler warnings.
2008-02-15 13:50:41 +00:00
Behdad Esfahbod
b790c5a6bc [doc] Replace 'NOTE' by 'Note' and add it to test 2008-01-28 21:53:44 -05:00
Behdad Esfahbod
f0633f4449 [doc] Make sure all function names in docs are followed by () 2008-01-28 21:49:57 -05:00
Behdad Esfahbod
9ecde82d35 [doc] Make sure all macro names in docs are prefixed by % 2008-01-28 20:48:48 -05:00
Behdad Esfahbod
73b184fb9c [src] Fix gtk-doc warnings 2008-01-28 19:45:18 -05:00
Carl Worth
dc67de3d8b Add cairo_image_surface_stride_for_width
Document this function as a required call to get the correct
stride value before calling cairo_image_surface_create_for_data.
This means that previously-failing calls with non-multiple-of-4
stride values are now documented as errors. Also, we now have
the possibility of moving to more stringent alignment constraints,
(one can imagine doing 64-bit or 128-bit boundaries for example).
2008-01-28 15:39:36 -08:00
Behdad Esfahbod
756420a780 [cairo_surface_show/copy_page()] Make them return void, like cairo_show/copy_page() do 2008-01-25 19:38:27 -05:00
Nis Martensen
c4ec5539ca [cairo-surface] Fix doc typo 2008-01-25 19:13:13 -05:00
Chris Wilson
f638e5ea35 [cairo-region] Review status propagation.
Check that the error status is propagated from _cairo_region_*.
2008-01-17 11:50:51 +00:00
Chris Wilson
7111b18c27 [cairo-surface] Introduce _cairo_surface_create_in_error().
Unexport all the static error surfaces and use a function to select
the appropriate error surface for the status.
2008-01-16 16:51:32 +00:00
Adrian Johnson
b4e0864b96 Use _cairo_pattern_create_copy() in cairo-surface.c
Use _cairo_pattern_create_copy()/cairo_pattern_destroy() instead of
_cairo_pattern_init_copy()/_cairo_pattern_fini() so the PDF backend
can reference the patterns and destroy them later.
2008-01-07 20:42:15 +10:30
Chris Wilson
643834e7aa [cairo-surface] Return UNSUPPORTED for acquire_(dest|source)_image.
If the backend does not support fallbacks ie backend->acquire_dest_image
or backend->acquire_source_image is NULL, then return
CAIRO_INT_STATUS_UNSUPPORTED rather than attempt to jump to the NULL
hooks.
2007-12-20 17:51:56 +00:00
Chris Wilson
8343d6cc2a Replace various uses of CAIRO_STACK_BUF_SIZE with a single macro.
In http://bugs.freedesktop.org/show_bug.cgi?id=13699, Pavel Vozenilek
reports a duplicate define for computing the appropriate length for an
on-stack array. The macro in question, and a few other places, was
performing CAIRO_STACK_BUF_SIZE/sizeof(stack[0]) so we can simplify
them slightly by using a common macro.
2007-12-17 13:45:01 +00:00
Chris Wilson
2f0867b43f [cairo-surface] Handle the all clipped out case.
Explicitly handle a clip which represents that the entire surface is
clipped out.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=13084.
2007-11-06 14:26:28 +00:00
Chris Wilson
92a18464ba [cairo-surface] Avoid allocation for common case of 1 box.
_cairo_surface_fill_region(): avoid allocating the array of boxes if we
know that the region only contains one box and is therefore defined by its
extents.
2007-11-05 08:51:06 +00:00
Chris Wilson
0d42af2427 [cairo-surface] Fix typo in doc.
s/INVALUE_FORMAT/INVALID_FORMAT/
2007-10-30 11:13:44 +00:00
Chris Wilson
4a2ab87e1a [cairo-surface] Add the usual guards to _cairo_surface_set_font_options().
Adrian Johnson hit a SEGV after
_cairo_paginaged_surface_create_image_surface() tried to set the font
options on an error surface after running out of memory. So add the
usual checks that the surface is not a snapshot, or in an error state or
finished before modifying its font options.
2007-10-29 12:04:33 +00:00
Chris Wilson
41aab58f3a [cairo-surface] Add the usual guards to the API entry point.
Add the checks for unmodifiable surfaces (snapshots, finished and error) to
cairo_surface_set_fallback_resolution.
2007-10-05 15:25:32 +01:00
Chris Wilson
042821b566 [cairo-surface] Propagate fatal errors to the surface.
Store errors raised by the backend on the surface.
2007-10-04 20:07:36 +01:00
Chris Wilson
bed8239f03 [cairo-error] Clean up all the warnings and missing _cairo_error() calls.
Every time we assign or return a hard-coded error status wrap that value
with a call to _cairo_error(). So the idiom becomes:
    status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
or
    return _cairo_error (CAIRO_STATUS_INVALID_DASH);

This ensures that a breakpoint placed on _cairo_error() will trigger
immediately cairo detects the error.
2007-10-04 13:31:44 +01:00
Chris Wilson
71120727e1 [cairo-atomic] Use an atomic operation to set the status on a shared resource.
Since the objects can be shared and may be in use simultaneously across
multiple threads, setting the status needs to be atomic. We use a
locked compare and exchange in order to avoid overwriting an existing
error - that is we use an atomic operation that only sets the new status
value if the current value is CAIRO_STATUS_SUCCESS.
2007-10-04 11:26:44 +01:00
Chris Wilson
8ad56b308a [malloc/error] Add call to _cairo_error() after a failed malloc.
Blitz all allocations to ensure that they raise a
_cairo_error(CAIRO_STATUS_NO_MEMORY) on failure.
2007-10-04 00:42:30 +01:00
Chris Wilson
03be41151d [cairo-atomic] Rewrite reference counting using atomic ops.
Introduce an opaque cairo_reference_count_t and define operations on it
in terms of atomic ops. Update all users of reference counters to use
the new opaque type.
2007-09-25 16:29:54 +01:00
Vladimir Vukicevic
d8b0de01d6 fix trailing whitespace 2007-09-18 09:28:30 -07:00
Vladimir Vukicevic
284ed91ee4 Let surfaces specify their native resolution, for fallback purposes 2007-09-18 09:28:29 -07:00
Vladimir Vukicevic
9e975757a2 Export cairo_surface_{copy,show}_page
This patch adds cairo_surface_copy_page and cairo_surface_show_page
as public methods, leaving the previous cairo_show_page variants as
shorthands.  copy_page/show_page are specific to the surface, not
to the context, so they need to be surface methods.
2007-09-11 13:30:35 -07:00
Chris Wilson
c14cf02f61 [cairo-surface] Add a comment about why the glyph array is not const.
As penance for attempting to make the glyph array constant, add a
comment block to explain that the backends rely on being able to modify
the array.
2007-08-31 17:21:02 +01:00
Chris Wilson
e8e3bfc130 Revert "[cairo-gstate] Avoid copying untransformed glyphs."
This reverts commit 919bea6dbb.

Sadly as Behdad points out some backends do modify the glyph array and,
for example cairo-xlib-surface, hide this from the compiler with some
evil casts.
2007-08-31 16:53:21 +01:00
Chris Wilson
919bea6dbb [cairo-gstate] Avoid copying untransformed glyphs.
Skip the memory duplication of the incoming glyphs if we do not need
to transform them into the backend coordinate system.

As a consequence we need to constify the glyphs passed to the backend
functions.
2007-08-31 16:28:06 +01:00
Vladimir Vukicevic
93aee43690 Fix previous create_similar fallback patch
We can't use composite, as some backends don't implement it.
Use paint() instead.
2007-08-28 16:47:24 -07:00
Vladimir Vukicevic
69dae7ee4a Implement fallback for clone_similar 2007-08-28 10:54:19 -07:00
Emmanuel Pacaud
ac51fff0db Add a new fill_stroke surface backend method.
This method is for use in vector backends, where fill immediatly followed by
stroke command with the same path can be emited in the same backend command.
This commit also factorize the detection of such cases in the meta surface
backend and automatically call the fill_stroke method on replay.
2007-08-25 20:49:50 +02:00
Vladimir Vukicevic
0abe5324a5 [fixpt] Create cairo_region wrapper around pixman_region16_t
Insulate region-using code from implementation details;
at some point we'll want to switch to using 32-bit regions.
2007-07-18 22:46:46 +02:00
Vladimir Vukicevic
be3516335c [fixpt] Replace cairo_rectangle_int16_t with cairo_rectangle_int_t
Mostly s/cairo_rectangle_int16_t/cairo_rectangle_int_t/,
as well as definitions to pick cairo_rectangle_int_t.
2007-07-18 22:45:21 +02:00
Søren Sandmann Pedersen
ef967be630 Merge branch 'master' of git+ssh://sandmann@git.freedesktop.org/git/cairo
Conflicts:

	pixman/src/fbcompose.c
	pixman/src/icimage.c
	pixman/src/pixmanint.h
	pixman/src/pixregionint.h
	src/cairo-clip.c
2007-07-02 08:33:29 -07:00
Vladimir Vukicevic
5c7d2d14d7 [fix] Avoid int overflow when allocating large buffers
This patch introduces three macros: _cairo_malloc_ab,
_cairo_malloc_abc, _cairo_malloc_ab_plus_c and replaces various calls
to malloc(a*b), malloc(a*b*c), and malloc(a*b+c) with them.  The macros
return NULL if int overflow would occur during the allocation.  See
CODING_STYLE for more information.
2007-06-29 09:46:08 -07:00
Søren Sandmann
12cc32b674 [pixman] Initial port to standalone pixman library. 2007-06-21 22:21:11 -07:00