Commit graph

170 commits

Author SHA1 Message Date
Carl Worth
d7f08794ef Add many missing slim_hidden calls to bypass PLT entries for local use of public functions 2006-09-05 17:22:00 -07:00
Carl Worth
53f74e59fa Fix close-path failure by adding explicit move_to after close_path.
Besides the bug fix, this is a user-visible change since the new
move_to element after the close_path element can be seen in the
results of cairo_copy_path, so we document that here.

We are also careful to fix up _cairo_path_fixed_line_to to defer to
_cairo_path_fixed_move_to to avoid letting the last_move_point state
get stale. This avoids introducing the second bug that is also tested
by the close-path test case.
2006-08-18 06:32:12 -07:00
Behdad Esfahbod
caba7f6bda Document a few more functions
cairo_show_page
	cairo_copy_page
	cairo_in_stroke
	cairo_in_fill
2006-08-08 02:24:16 -04:00
Behdad Esfahbod
5e0f46cdeb Standardize on unsigned for ref_count type and add CAIRO_REF_COUNT_INVALID
The CAIRO_REF_COUNT_INVALID macro simply hides the ((unsigned int)-1) cast
to avoid warnings about comparison between signed and unsigned values.
2006-07-28 15:41:11 -07:00
Behdad Esfahbod
e5f4b92261 Make "double *dash" argument const in cairo_set_dash 2006-07-27 15:20:14 -04:00
Behdad Esfahbod
f8eeca9768 Tiny doc typo fix. 2006-07-13 11:48:42 -04:00
Behdad Esfahbod
ccb54b35ed Small doc fix. 2006-07-10 10:35:42 -04:00
Behdad Esfahbod
320ce67d63 Add "Since: 1.2" to docs for most new API functions. 2006-06-30 02:21:49 +02:00
Carl Worth
58a60ed9fd Prefer sub-path over subpath in documentation. 2006-06-25 16:53:13 +02:00
Carl Worth
8f0dd658b1 Add documentation for how degenerate segments and sub-paths are treated. 2006-06-25 16:49:45 +02:00
Jonathon Jongsma
8b6fcaf8ff Fix a minor documentation typo in cairo_pop_group_to_source 2006-06-23 08:29:17 -05:00
Carl Worth
b129f747c5 Change {x,y}_device_offset values to a device_transform matrix.
This is a step toward allowing device scaling in addition to device offsets.
So far, the scale values are still always 1.0 so only the translation is
actually being used. But most of the code is in place for doing scaling as
well and it just needs to be hooked up.

There are some fragile parts in this code, all of which involve using the
translation without the scale, (so grep for device_transform.x0 or
device_transform->x0). Some of these are likely bugs that will hopefully
be obvious once we start using the scale. Others are OK if only because
we 'know' that we aren't ever setting device scaling on a surface that
has a device offset (we only set device scaling on surfaces we create
internally and we don't export device scaling to the user).

All of these fragile parts in the code have been marked with comments of
the form: XXX: FRAGILE.
2006-06-10 00:12:51 -07:00
Carl Worth
999315cc0a Rename device_{x,y}_offset to {x,y}_device_offset for better consitency/grepability 2006-06-09 21:12:44 -07:00
Carl Worth
746f66c3fc Fix bogus cairo_rectangle_fixed_t to be cairo_rectangle_int16_t.
This rectangle has regular integer values, not fixed-point values.
So the old name was horribly wrong and misleading, (and yes I think
it was even I that had suggested it).
2006-06-06 16:54:03 -07:00
Carl Worth
ef10a0403a Remove initial, final, and duplicate blank lines.
This patch was produced by running git-stripspace on all *.[ch] files
within cairo. Note that this script would have also created all the changes
from the previous commits to remove trailing whitespace.
2006-06-06 15:50:33 -07:00
Carl Worth
5278de0997 Remove all remaining trailing whitespace.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e 's/[ \t]+$//'

run on all *.[ch] files within cairo.

Note that the above script would have also created all the changes
from the previous commits to remove trailing whitespace.
2006-06-06 15:41:31 -07:00
Carl Worth
4670366ede Remove trailing whitespace from lines that look like comments.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e '/^[ \t]*\/?\*/ s/[ \t]+$//'

run on all *.[ch] files within cairo, (though I manually excluded
src/cairo-atsui-font.c which has a code line that appears as a comment
to this script).
2006-06-06 15:35:48 -07:00
Carl Worth
80b8deb1e4 Remove extraneous whitespace from "blank" lines.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e 's/^[ \t]+$//'

run on all *.[ch] files within cairo.
2006-06-06 15:25:49 -07:00
Carl Worth
59885c6a12 Clarify the documentation for cairo_set_dash
Note that dash length units are evaluated in the user space
at the time of the stroke operation, (not the user space at
the time of cairo_set_dash).
2006-05-23 12:13:20 -07:00
Carl Worth
b1231e2ef3 Codify 1.0 behavior of cairo_set_line_width as a feature, not a bug.
Clarify the documentation of cairo_set_line_width to indicate that the
value will be interpreted within the user space at the time of the
stroke.

Also adjust the comments in test/line-width-scale as well as the
reference images for that test to match.
2006-05-23 12:13:19 -07:00
Carl Worth
b948683917 Flesh out the documentation for cairo_push_group, cairo_pop_group and friends 2006-05-04 22:43:22 -07:00
Robert O'Callahan
7bcf957b4e Rename cairo_rectangle_t to cairo_rectangle_fixed_t.
This is in preparation for a later function addition for extracting
clip rectangles from a cairo_t, (which will add a public
cairo_rectangle_t).
2006-05-04 03:43:34 -07:00
Vladimir Vukicevic
fb7f7c2f27 Fix up clip at pop_group time, to keep it in surface backend coordinates
We keep the clip in surface-backend coordinates always, so it needs
fixing whenever we change the target surface out in the gstate.  The
only place this happens is in push_group, so fix it as part of
gstate_redirect().
2006-05-04 03:02:27 -07:00
Vladimir Vukicevic
ee02c1b914 Implement push_group/pop_group
This patch adds the following API calls:

 cairo_push_group
 cairo_push_group_with_content
 cairo_pop_group
 cairo_pop_group_to_source
 cairo_get_group_target

These methods support implementing layers on top of a cairo context,
allowing for drawing with transparency and temporary buffering.
cairo_get_group_target allows an app to get access to the actual surface
created by the last push_group call, in case itneeds to perform native
drawing to it.
2006-05-04 02:52:38 -07:00
Carl Worth
09dfd6c3c1 PS: Add three new public functions for emitting DSC comments.
This commit adds the following new functions to the cairo-ps API:

	cairo_ps_surface_dsc_comment
	cairo_ps_surface_dsc_begin_setup
	cairo_ps_surface_dsc_begin_page_setup

Many thanks are due to Michael Sweet who provided invaluble guidance
during the design of this API.

It is hoped that with this API in place, basically all printer control
that is likely to be desired to be performed with cairo PostScript
output is now possible.

This commit augments the ps-features test to exercise the new API.
2006-05-03 00:26:22 -07:00
Carl Worth
5821d88119 Correct documentation to say "user space", not "user-space" where appropriate. 2006-04-27 11:45:26 -07:00
Carl Worth
448e904b2a Merge branch 'cairo' into new-sub-path
Conflicts:

	src/cairo-path-stroke.c
	src/cairo-pdf-surface.c
	src/cairo-ps-surface.c
2006-04-18 15:18:31 -07:00
Behdad Esfahbod
d0356a87f7 Implement cairo_set_scaled_font(). 2006-04-15 03:58:42 -04:00
Kristian Høgsberg
523f9e46d8 Make cairo_t and cairo_output_stream_t destructors handle NULL.
All other cairo destructors and reference functions accept and ignore NULL,
so fix up cairo_destroy(), cairo_reference(), and cairo_output_stream_destroy()
to do so too.
2006-04-11 20:49:55 -04:00
Carl Worth
1cffb39ff0 cairo_show_glyphs: Do nothing if num_glyphs == 0 2006-03-08 08:16:49 -08:00
Carl Worth
cb778760cb cairo_close_path: Document that there will be a current point after
cairo_close_path.
2006-02-23 22:07:13 -08:00
Carl Worth
1dc1b57b4e cairo_new_sub_path: Making cairo_arc easier to use and more.
This adds a new function which has as its only effect the elimination
of
the current point. This makes it much easier to use the various
cairo_arc calls when the initial line_to is not actually desired.

This function also unifies and generalizes the long-existing behavior
of cairo_line_to being treated as cairo_move_to when there is no
current point. With the addition of cairo_new_sub_path this becomes a
documented feature with similar behavior in cairo_curve_to as well.
2006-02-23 22:01:07 -08:00
Carl Worth
ba69dfefa7 Fix documentation of cairo_arc which erroneously claimed M_PI radians == 90 degrees to correctly say that M_PI/2.0 radians == 90 degrees. This closes bug #5649 (with thanks to kengruven@gmail.com). 2006-01-18 09:46:42 +00:00
Billy Biggs
7fdf45ce61 Add documentation for the extend modes.
Document the extend functions for patterns.
Remove some redundancy in the documentation.
2005-10-10 09:16:21 +00:00
Billy Biggs
985d8571d2 Fix some minor typos in the doc. 2005-08-24 06:09:11 +00:00
Carl Worth
77a0ae7439 Fix cairo_show_text to advance the current point. Add documentation for cairo_show_text.
Add test to verify that the current-point-advancing behavior of cairo_show_text is working.
Remove bug about cairo_show_text not advancing the current point.
2005-08-24 01:13:36 +00:00
Carl Worth
5ac2d216ab Update documentation for most path construction functions. Add discussion of the effects on the current point to all functions. Rephrase the wording of the relative functions. Big rewrite of cairo_arc description. Add discussion of join not caps to cairo_close_path. 2005-08-24 00:19:52 +00:00
Billy Biggs
86889a55de Document the rest of the path functions (except the two text ones, which should coordinate with their corresponding non-path versions).
Minor shuffling.
2005-08-23 21:10:39 +00:00
Billy Biggs
326911a749 Update the long description of cairo_matrix_t to match the current sources.
Add cairo_path_data_t.
Some documentation updates and improvements.
2005-08-23 19:52:09 +00:00
Carl Worth
f219b83466 if users attempt to twice destroy or re-reference a destroyed object. The condition for detecting this case is a ref_count of 0.
Reviewed by: otaylor Fixes bug #4198
2005-08-23 14:04:28 +00:00
Carl Worth
65bfc03e72 Remove discussion of the BAD_NESTING restriction from the documentation of cairo_create. No such restriction exists anymore. 2005-08-23 00:03:09 +00:00
Billy Biggs
fdb5e2aa47 Optimize away calls to cairo_paint_with_alpha() if the alpha value given is <= 0.
Add a new macro CAIRO_ALPHA_IS_ZERO.
2005-08-21 21:04:52 +00:00
Carl Worth
7468ed35a1 Fixes for a general problem of which bug #4094 was a specific instance:
Don't change the status value if it already holds an error. This avoids destroying "first error" information and also avoids attempting to write read-only data, (eg. from nil objects).
Don't set an error on the same object if it is in an error state to begin with, just return immediately. This is intended to reduce (eventual) error prints to the first cause of an error for any given object, instead of a continual spew.
2005-08-19 12:08:42 +00:00
Carl Worth
2b72a4eee8 Fix for bug #2729:
Adjust negative offsets up to their equivalent positive value. Add error checking for dash values, (must each be non-negative and must not be all zero).
Add documentation.
Add new CAIRO_STATUS_INVALID_DASH.
Add dash-offfset-negative test from Owen.
churn
2005-08-19 12:02:14 +00:00
Carl Worth
435fb3c65f Fix for bug #4088:
New function to return the current nil pattern depending on the status.
Add missing early bailout on surface->status with error propagation to the pattern.
Related cleanups for cairo_pattern_t:
Don't check other->status since this is a static function.
Add missing early bailout on other->status.
Cleanup identifier names.
Track rename of nil patterns.
Don't call _cairo_error for pre-existing errors.
Take care to initialize some fields to that _cairo_pattern_release_surface will work even after an error.
Track rename of cairo_solid_pattern_nil to cairo_pattern_nil.
New test to ensure that a file-not-found error will propagate from a surface, through a pattern, and onto a cairo_t.
2005-08-18 23:10:37 +00:00
Carl Worth
fd8a70f4b6 Add missing notes on soname and user-space locking for cairo_set_source() to the 0.9.0 release notes.
Document cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgba, cairo_pattern_set_matrix, and cairo_pattern_get_matrix.
Add note on user-space locking to the documentation for cairo_set_source().
2005-08-13 04:17:36 +00:00
Carl Worth
ae63b95211 Augment existing CAIRO_VERSION_MAJOR/MINOR/MICRO and CAIRO_VERSION_STRING with CAIRO_VERSION_ENCODE and CAIRO_VERSION. Add functions for run-time access:
cairo_version cairo_version_string
2005-08-10 15:58:25 +00:00
Billy Biggs
53444c286e Add a new API for disabling antialiasing of shapes drawn by cairo. This is a hint and is not supported by all backends.
Store the antialiasing mode in the gstate and pass it to the backend for trapezoid rendering and for clipping.
Pass the antialiasing parameter down to the backend where appropriate.
Pass the antialiasing parameter down to the backend where appropriate.
Add support for A1 format trapezoid rendering, and remove the _create_mask_image function, creating a temporary image from memory we allocate and clear.
Support A1 masks to disable antialiasing using the RENDER extension when requested.
Support A1 masks to disable antialiasing using the RENDER extension when requested.
Blindly pass through the antialising parameter.
Add the antialiasing parameter but don't support it.
Add a test case and a reference image from the latest libpixman.
Add the new antialiasing disabling API to the docs.
Update progress on a parameter to disable antialiasing.
reviewed by: cworth, otaylor
2005-08-08 18:35:22 +00:00
Carl Worth
2f1024f83f Fix to return &_cairo_font_face_nil instead of NULL on error. 2005-08-06 16:38:33 +00:00
Carl Worth
4ad365f183 Document the implicit closing of sub-paths for cairo_fill and cairo_fill_preserve. 2005-08-05 20:15:19 +00:00