mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-03 10:30:24 +01:00
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).
This commit is contained in:
parent
2f1024f83f
commit
1fadb80656
5 changed files with 34 additions and 100 deletions
29
BUGS
29
BUGS
|
|
@ -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).
|
||||
|
||||
|
|
|
|||
16
ChangeLog
16
ChangeLog
|
|
@ -1,3 +1,19 @@
|
|||
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
|
||||
|
|
|
|||
22
ROADMAP
22
ROADMAP
|
|
@ -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.
|
||||
|
|
|
|||
65
TODO
65
TODO
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue