Commit graph

581 commits

Author SHA1 Message Date
David Reveman
e314e86cc1 Use frame buffer objects for accelerated offscreen drawing in glitz backend 2005-07-04 03:58:43 +00:00
Kristian Høgsberg
7a923e6ddd Rewrite postscript backend to generate more interesting output than the current big-image implementation, using meta surfaces for font subsetting and image fallbacks.
Remove obsolete comment.
Make a couple of stylistic changes and add _cairo_output_stream_write_hex_string.
Add _cairo_surface_intersect_clip_path so we can replay path clipping.
2005-07-01 12:45:35 +00:00
Kristian Høgsberg
7ab5dbfa75 Add meta surface implementation.
Add cairo-meta-surface.c and cairo-meta-surface-private.h
2005-07-01 12:22:23 +00:00
Carl Worth
4e01c4aa2f Remove debugging printfs. 2005-06-29 17:05:31 +00:00
Carl Worth
aad6dce6bc Add _cairo_hash_table_random_entry.
Fix to update live_entries.
style changes.
Add code to shrink table as well as to grow it.
Call new version of resize so that table will grow or shrink as needed on insert and remove.
2005-06-29 17:02:37 +00:00
Carl Worth
e7ffbb4179 Rewrite hash table to use a single cairo_hash_entry_t* rather than void *key and void *value. This is slightly more painful to use, but lends itself to a more memory-efficient implementation. Add documentation. 2005-06-29 15:02:10 +00:00
Carl Worth
82f244eca8 Rework the cache code as a hast table with a much simpler interface, (no object derviation is required to use it).
Remove extraneous prototype for non-existent _cairo_cache_reference.
2005-06-29 07:04:34 +00:00
Kristian Høgsberg
5ab8a3085e New functions to create a cairo_pattern_t corresponding to a solid color and a translucent color respectively. Document a few pattern functions. 2005-06-28 15:58:42 +00:00
Tor Lillqvist
e7442a4523 Implement.
reviewed by: otaylor
2005-06-28 15:03:53 +00:00
Owen Taylor
6d65ee6fc4 Also flag older XFree86 servers as buggy-repeat. 2005-06-28 13:28:53 +00:00
Tor Lillqvist
e0982300ca Prevent crash on empty string. 2005-06-28 11:52:42 +00:00
Keith Packard
3b0c3d0ee8 Provide locking macros, implement with pthreads.
Add _cairo_cache_shrink_to which reduces cache memory usage to a specified level.
Change global glyph and xlib glyphset caches behaviour to only shrink cache on unlock. This is done by telling the cache code to never shrink (max_memory == 0), and then manually shrinking using _cairo_cache_shrink_to from the unlock function.
Fix Carl's variable renaming mixing (cache = cache).
reviewed by: cworth
2005-06-25 23:24:19 +00:00
Owen Taylor
5f0e8de3e5 Add mostly useless (other than perhaps 90-degree rotation) code for transforming bitmap glyphs. 2005-06-25 13:51:22 +00:00
Carl Worth
13a27d19d4 From: J. Ali Harlow" <ali@avrc.city.ac.uk> Reviewed by: Vladimir Vukicevic <vladimirv@gmail.com>
Update win32 backend to match current API, so it actually builds once again.
2005-06-25 02:00:17 +00:00
Carl Worth
d469cc18eb Remove stray character. 2005-06-24 15:14:31 +00:00
Carl Worth
05e2ffa00a Prefer descriptive variable names over single-character names. Remove unneeded XGlpyhInfo field from glyphset_cache_entry_t. 2005-06-24 15:09:41 +00:00
Owen Taylor
87008a44d3 Handle rendering bitmap glyphslots as well as outline glyphslots.
When setting the scale for a non-scalable font, use the nearest available size (FreeType won't set the glyph metrics otherwise.)
2005-06-24 15:06:40 +00:00
Owen Taylor
ff27263f39 Only unpremultiply ARGB32 data. Call png_write_info() *before* we set up the write conversion... it doesn't work after. 2005-06-23 12:58:49 +00:00
Carl Worth
b04b434db1 Update ROADMAP with some comments on 0.5.2.
Add documentation for cairo_set_source_surface and fix some typos in other documentation blocks.
2005-06-22 17:09:08 +00:00
Kristian Høgsberg
b1130276d5 Split out font subsetting code from here,
and put it here.
2005-06-21 15:38:51 +00:00
Tor Lillqvist
7283ba6d47 allow building against < 10.3 SDK. 2005-06-21 09:54:58 +00:00
Owen Taylor
ea2a04d901 Workaround for https://bugs.freedesktop.org/show_bug.cgi?id=3566
Detect servers with a bug in repeating surfaces by checking vendor string and version.
For such surfaces
Save clip rects when setting a clip region on a surface so that we set the right clip for the surface's GC if we create it later.
2005-06-20 15:48:46 +00:00
Carl Worth
1ce9be9541 Make out parameters optional. Style cleanup. 2005-06-20 12:54:15 +00:00
Carl Worth
ab668278b0 Abstract CAIRO_ALPHA_IS_OPAQUE out for general internal use.
Optimize to defer to cairo_paint if the alpha value is actually opaque.
2005-06-20 11:09:51 +00:00
Carl Worth
f15ec64e7f Rip out cairo_set_error_notfiy function as it is clear that it is not the right approach.
Remove error-notify test.
2005-06-20 09:59:23 +00:00
Carl Worth
3b8da5f213 Remove references to repeat and matrix fields that no longer exist. 2005-06-17 23:22:20 +00:00
Owen Taylor
92222f8bca Fix width/height typo. 2005-06-17 16:19:08 +00:00
Kristian Høgsberg
66f8b1202e Remove matrix, filter and repeat from the cairo_surface_t struct. 2005-06-17 13:25:19 +00:00
Carl Worth
9318742aa4 cairo_reference and cairo_destroy shouldn't behave differently when cr->status indicates an error. Fix this bug that just slipped back in.
Remove useless conditional return at the end of a void function.
Fix so that after calling _cairo_error the most that any cairo entry function ever does is return a previously computed value.
2005-06-17 11:24:24 +00:00
Carl Worth
d6eca5a45f Reorder fields of cairo_private_t to match initialization order.
Call error_notify callback if set. (cairo_create): Initialize error_notify callback to NULL. (cairo_set_error_notify): New function to allow the user to set an error notify callback.
New cairo_set_error_notify prototye.
New test for cairo_set_error_notify.
2005-06-16 12:20:46 +00:00
Carl Worth
18c2d12b9e Add CAIRO_STATUS_DESTROYED to TODO list.
Note progress on consistent error handling.
Fix typo in documentation comment for _cairo_surface_get_current_clip_serial.
2005-06-15 16:52:11 +00:00
Owen Taylor
615d509767 Remove --only-section-tmpl; it doesn't really work currently :-(. 2005-06-15 16:04:19 +00:00
Owen Taylor
a3906e65aa Use a clip region when rendering a non-solid pattern through a rectangular path ... trapezoid rasterization is just too slow to use that path when we aren't forced to do so. 2005-06-15 12:44:52 +00:00
Carl Worth
4834b8e7f0 Remove cairo_status_string function which can now be replaced by:
cairo_status_to_string (cairo_status (cr));
This allows consistent handling of status values for things like cairo_pattern_status where there is now cairo_pattern_status_string function.
2005-06-15 10:52:01 +00:00
Carl Worth
e3c92f2613 Add _cairo_error so we have a single function which all errors can pass through. This allows the user to set a breakpoint on error and will allow us to augment error handling later as necessary.
Make all assignements to cr->status go through the new _cairo_error function. Remove CAIRO_CHECK_SANITY macro.
2005-06-15 10:46:49 +00:00
Kristian Høgsberg
476fe9a66e Implement path clipping and refactor _cairo_gstate_clip() out in three different functions corresponding to the three different clipping modes.
Add NULL pointers for intersect_clip_path.
New test case to exercise PDF clipping code.
2005-06-14 19:45:22 +00:00
Carl Worth
663e39a63c Remove Boolean 'drawable' parameter from the create_similar surface backend function since nothing anywhere is actually using this parameter. 2005-06-14 15:38:15 +00:00
Tor Lillqvist
d2ddfe42a9 Correct extents for text with a general tranform. 2005-06-14 14:12:00 +00:00
Carl Worth
bb7eeeb749 Remove comment suggesting ambiguity of whether cairo_get_target references the surface, (we decided as part of the API shakeup that cairo functions returning pointers to internal objects do not automatically take a reference). 2005-06-14 11:58:14 +00:00
Carl Worth
8084fb9b09 Add new _cairo_pattern_create_in_error.
Propagate error values from cr->status to pattern->status.
2005-06-13 16:53:52 +00:00
Carl Worth
14ae3ce3ad No longer need to check for NULL after creating a pattern.
Propagate status errors from pattern->status to cr->status.
Originally 2005-05-08 Owen Taylor <otaylor@redhat.com>:
src/cairo-pattern.c src/cairoint.h: If allocation of pattern objects fails, return special static nil pattern objects.
If adding a color stop fails to allocate memory, set pattern->status. (And fix a memory leak.) Make public functions return when pattern->status is set, (and no longer return a cairo_status_t).
src/cairo-pattern.c src/cairo.h doc/public/cairo-sections.txt: Add cairo_pattern_status()
Check the status of gstate->source and of mask patterns passed in.
2005-06-13 16:36:40 +00:00
Carl Worth
15fb5e0d27 Originally 2005-05-08 Owen Taylor <otaylor@redhat.com>:
If cairo_create() fails, return a special static object, cairo_nil.
Don't return early if cr->status is set. cr->status should not affect reference counting.
Ignore any magic object with a reference count of -1.
2005-06-13 16:35:03 +00:00
Carl Worth
01e1844e9c Originally 2005-06-02 Carl Worth <cworth@cworth.org>:
Add a status field to cairo_path_t.
Add documentation for the new approach for handling errors in these functions---always returning a valid pointer with at least a status. (cairo_append_path): Propagate path status errors to the context. Add note to documentation on initializing path->status.
Add missing cairo_private qualifier to a couple functions.
Track new status field in cairo_path_t. (cairo_path_destroy): Don't destroy cairo_path_nil. Add documentation. (_cairo_path_data_create): (_cairo_path_data_create_flat): (_cairo_path_data_append_to_context): Add documentation. (_cairo_path_data_create_in_error): New function to create a placeholder cairo_path_t just to propagate a cairo_status_t error.
2005-06-13 16:29:26 +00:00
Carl Worth
730fb40455 Make these functions static, which allows slightly less awkward error handling within them. 2005-06-11 01:09:15 +00:00
Carl Worth
df19a5aa7e Provide font-backend-specific macros for FONT_FAMILY_DEFAULT. Change CAIRO_FT_FONT_FAMILY_DEFAULT from "serif" to "" to allow the actual default to come from the system/user configuration. 2005-06-11 00:06:04 +00:00
Carl Worth
ff2dee65bd Pull the enum out from inside cairo_path_data_t and give it a name of cairo_path_data_type_t. This allows C++ programs to see the enum values. It also allows variables to be declared of this type for manually constructing a cairo_path_t. 2005-06-10 23:47:23 +00:00
Carl Worth
6cd484a4c0 Originally: 2005-06-09 Carl Worth <cworth@cworth.org>
Rework occurrences of 'if (status == CAIRO_STATUS_SUCCESS)' to use 'if (status)' instead where trivial.
2005-06-10 12:46:49 +00:00
Carl Worth
31dcb954fe Remove STATUS_OK macro which was not being used universally. 2005-06-10 12:18:20 +00:00
Carl Worth
e6eef09115 Remove trailing comma from enum values which gcc 4.0 does not want to see (Luis Villa). Closes bug #3502. 2005-06-09 12:27:02 +00:00
Keith Packard
c1c8c57b90 Font matrix was output incorrectly; the implicit mirror-in-y transformation was not computed correctly, missing a negation of the 'xy' component. 2005-06-07 23:28:12 +00:00