diff options
author | Carl Worth <cworth@cworth.org> | 2005-08-06 16:57:14 +0000 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2005-08-06 16:57:14 +0000 |
commit | 1fadb8065600d5b9cbab9a14232e08daec450e4d (patch) | |
tree | 723fcd1d8f4b31809ba44eb606b5597eaebf8b35 | |
parent | 2f1024f83fc971516224b910cec8d3e787740c53 (diff) | |
download | cairo-1fadb8065600d5b9cbab9a14232e08daec450e4d.tar.gz |
Remove several bugs that have been fixed.
Slip group support off of the 1.0 roadmap. Update status of clipping work which otaylor is working on.
Update for progress on cairo_surface_mark_dirty (committed), non-antialiased rendering (patch), cairo_arc_to (patch), consistent error handling (committed), cairo_content_t (committed). Remove details for some completed items.
Don't crash if font_face is NULL, (this is a documented mechanism for returning to the default font_face).
-rw-r--r-- | BUGS | 29 | ||||
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | ROADMAP | 22 | ||||
-rw-r--r-- | TODO | 65 | ||||
-rw-r--r-- | src/cairo-gstate.c | 2 |
5 files changed, 34 insertions, 100 deletions
@@ -5,40 +5,11 @@ that display. -- -cairo_show_surface fails when given a non-default CTM, see the -show_surface.cairo snippet in: - - From: Per Bjornsson <perbj@stanford.edu> - To: Cairo mailing list <cairo@cairographics.org> - Date: Wed, 09 Feb 2005 20:05:35 -0800 - Message-Id: <1108008335.5349.46.camel@localhost.localdomain> - Subject: [cairo] How is cairo_show_surface supposed to work? - --- - cairo_image_surface_create should return a blank image (eg. transparent black) instead of an image with random data in it. -- -cairo_surface_create_for_image is claiming ownership of the user's data. - --- - -cairo_font_set_transform should be renamed cairo_font_set_matrix -cairo_font_current_transform should be renamed cairo_font_get_matrix - --- - -Alexis Georges reports a segfault on AMD64 with a simple program, -(that works in a 32bit chroot). - --- - -The caches need to have some locking (see: [cairo] Static caches and thread-safety) - --- - Scaling of surface patterns is all broken, (try xsvg gradPatt-pattern-BE-07.svg and zoom in and out). @@ -1,5 +1,21 @@ 2005-08-06 Carl Worth <cworth@cworth.org> + * BUGS: Remove several bugs that have been fixed. + + * ROADMAP: Slip group support off of the 1.0 roadmap. Update + status of clipping work which otaylor is working on. + + * TODO: Update for progress on cairo_surface_mark_dirty + (committed), non-antialiased rendering (patch), cairo_arc_to + (patch), consistent error handling (committed), cairo_content_t + (committed). Remove details for some completed items. + + * src/cairo-gstate.c (_cairo_gstate_set_font_face): Don't crash if + font_face is NULL, (this is a documented mechanism for returning + to the default font_face). + +2005-08-06 Carl Worth <cworth@cworth.org> + * src/cairo.c (cairo_get_font_face): Fix to return &_cairo_font_face_nil instead of NULL on error. @@ -4,7 +4,7 @@ Implementation work ------------------- I1. Fix clipping to be sane Dificulty: moderate - Status: cworth has started looking at this + Status: otalyor is working on this. I2. Real PostScript/PDF fallbacks (cairo_meta_surface_t) Difficulty: hard @@ -32,15 +32,6 @@ Implementation work API additions (more detail in TODO file) ---------------------------------------- - A3. Add cairo_begin/end/get_group - Difficulty: easy to hard (depending on how sophisticated an - implementation is acceptable, and whether the - cairo_meta_surface_t mentioned in [I2] is done) - - Status: cworth has a posted a preliminary patch, and keithp, - krh, and otaylor answered all the tough questions it - raised. There's not much work left to finish this one. - ✓A7. cairo_surface_mark_dirty and cairo_surface_flush Difficulty: trivial to add API, moderate to actually optimize based on it @@ -60,3 +51,14 @@ Performance work P3. Glyph measurement needs to be sped up. Status: Now planned as part of I4 above ("cache lock deadlock") + +Things that have been dropped from the 1.0 roadmap +================================================== + A3. Add cairo_begin/end/get_group + Difficulty: easy to hard (depending on how sophisticated an + implementation is acceptable, and whether the + cairo_meta_surface_t mentioned in [I2] is done) + + Status: cworth has a posted a preliminary patch, and keithp, + krh, and otaylor answered all the tough questions it + raised. There's not much work left to finish this one. @@ -10,12 +10,12 @@ Changes that are expected to impact the public API Backwards compatible (API additions only) ----------------------------------------- cairo_begin_group, cairo_end_group, cairo_get_group - cairo_surface_mark_dirty (see below for details) - Add support for non-antialiased rendering. API ? +PDR C cairo_surface_mark_dirty (see below for details) +PDR Add support for non-antialiased rendering. API ? Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD Add cairo_text_glyphs (see below for details) Add support for programmatic patterns, (ie. arbitrary gradients) - Add cairo_arc_to. +P Add cairo_arc_to. Add support for custom caps (see below for details) Add support for getting at image data from image surface Add CAIRO_STATUS_DESTROYED @@ -25,29 +25,12 @@ Backwards incompatible (API deletions or changes) ------------------------------------------------- PDR C cairo_surface_finish, cairo_surface_flush PDR C A hidden offset for the xlib backend -P Consistent error handling for all objects - Split cairo_format_t (see below for details) +PDR C Consistent error handling for all objects +PDRTC Split cairo_format_t (see below for details) P---C Remove cairo_status_string in favor of cairo_status_to_string Details on some of the above changes ------------------------------------ -* cairo_surface_mark_dirty - - One question is what the function should accept. A single - device-space rectangle seems like a consistent approach. That would - allow us to avoid needing backend-specific functions with - backend-specific region datatypes, (cf. clipping support) - - In order to get the intended efficiency benefits, we'll need to make - two changes: - - 1) In the fallback code, never fetch any data from the clean - region. - - 2) Mark clean any region drawn with device-pixel aligned - rectangles, (cairo_paint with no clip is the most iportant - one here). - * cairo_text_glyphs: It would function as a sort of bridge between the toy and the @@ -78,51 +61,13 @@ Details on some of the above changes current path. We may also need to provide the coordinates of the faces of every dash as well. -* split cairo_format_t into two things: - - - An enumeration that determines the "capabilities" of a surface - - A vs. ARGB. vs. RGB - - An enumeration that determines a specific in-memory representation - of data. (A1/A8/ARGB32/etc.. Could be extensible to things like - RGBA32_BYTES_NONPREMULTIPLIED. Some consistent naming convention would - be be good.) - - One issue here is that some interfaces, like cairo_surface_create_similar() - might be useful with either one. We might want to create an A1 surface - compatible with the backend (are there examples other than A1? Should - bilevel just be another "capability"?), or we might want to just create - an alpha surface without caring about the depth. - - If we want to support this, we could do something like: - - typedef enum cairo_pixel_format_t { - CAIRO_PIXEL_FORMAT_A8 = CAIRO_FORMAT_ALPHA, - CAIRO_PIXEL_FORMAT_RGB24 = CAIRO_FORMAT_RGB, - CAIRO_PIXEL_FORMAT_A1, - }; - - To allow passing either in. - - (I don't particularly like this idea for create_similar() because then you - aren't really saying ALPHA-dont-care, you are saying ALPHA-8. I think it - would be better to have a separate path for create_similar_with_pixel_format() - if we need that. But it might be useful for cairo_image_surface_create() ... - people are going to screw up and pass CAIRO_FORMAT_RGB into that, and if it - "just worked" that would save people trouble....) - Changes that do not affect the public API ========================================= -* Clean up the cache code a bit, (there is at least one redundant - level of cacheing, and there are some minor style issues). - * Fix clipping to work for all operators. The equation we have come up with is: ((src Op dest) In clip) Add (dest Out clip) -* Make a more interesting PS backend, (other than the current - "giant-image for every page" approach). - * Change stroke code to go through one giant polygon. This will fix problems with stroking self-intersecting paths. diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index 916b701fe..134586a5f 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -1649,7 +1649,7 @@ cairo_status_t _cairo_gstate_set_font_face (cairo_gstate_t *gstate, cairo_font_face_t *font_face) { - if (font_face->status) + if (font_face && font_face->status) return font_face->status; if (font_face != gstate->font_face) { |