mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-19 11:40:37 +01:00
130 lines
4.4 KiB
Text
130 lines
4.4 KiB
Text
API Shakeup work
|
|
----------------
|
|
Patch? Reviewed?
|
|
yes yes user data (was Re: [cairo] Patch improving fallbacks)
|
|
cairo_paint
|
|
yes yes setters and getters
|
|
cairo_current_matrix
|
|
Renaming the terms of the rendering equation
|
|
Making set_source consistent
|
|
Eliminating cairo_show_surface
|
|
cairo_mask
|
|
cairo_begin_group, cairo_end_group, cairo_get_group
|
|
yes yes cairo_output_stream_t and cairo_surface_finish()
|
|
cairo_create and eliminating cairo_set_target_surface
|
|
cairo_fill_preserve, cairo_stroke_preserve, cairo_clip_preserve
|
|
default matrix
|
|
cairo_current_path -> cairo_copy_path_data
|
|
cairo_surface_finish, cairo_surface_flush
|
|
cairo_<device>_surface_mark_dirty
|
|
Eliminating cairo_copy
|
|
Eliminating cairo_surface_set_repeat/matrix/filter
|
|
A hidden offset for the xlib backend
|
|
cairo_stroke_path -> cairo_stroke_to_path
|
|
Simplifying the operator set
|
|
Abbreviation hunt: cairo_init_clip and cairo_concat_matrix
|
|
Consistent error handling for all objects
|
|
|
|
* Add support for non-antialiased rendering. API ?
|
|
|
|
* Clean up the cache code a bit, (there is at least one redundant
|
|
level of cacheing, and there are some minor style issues).
|
|
|
|
* Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD
|
|
|
|
* Fix clipping to work for all operators. The equation we have come up
|
|
with is:
|
|
|
|
((src Op dest) In clip) Add (dest Out clip)
|
|
|
|
* Replace PNG backend with an image_surface function to save a PNG
|
|
image.
|
|
|
|
* Clean up the API in preparation for freezing and release.
|
|
|
|
* Make a more interesting PS backend, (other than the current
|
|
"giant-image for every page" approach).
|
|
|
|
* Figure out what to do with DPI for image/png backends.
|
|
|
|
* Change stroke code to go through one giant polygon. This will fix
|
|
problems with stroking self-intersecting paths.
|
|
|
|
* Re-work the backend clipping interface to use geometry rather than
|
|
images.
|
|
|
|
* Fix the intersection problem, (see reference to Hobby's paper
|
|
mentioned in cairo_traps.c).
|
|
|
|
* Add a new cairo_text_glyphs function (a sort of bridge between the
|
|
toy and the real text API):
|
|
|
|
> void
|
|
> cairo_text_glyphs (cairo_t *cr, const unsigned char *utf8,
|
|
> cairo_glyph_t *glyphs, int *num_glyphs);
|
|
>
|
|
> with num_glyphs as an input-output parameter. The behavior of this
|
|
> function would be such that calling:
|
|
>
|
|
> cairo_text_glyphs (cr, string, glyphs, &num_glyphs);
|
|
> cairo_show_glyphs (cr, glyphs, num_glyphs);
|
|
>
|
|
> would be equivalent too:
|
|
>
|
|
> cairo_show_text (cr, string);
|
|
>
|
|
> as long as the original size of glyphs/num_glyphs was large
|
|
> enough.
|
|
|
|
* Implement dashing for cairo_curve_to.
|
|
|
|
* Implement support for programmatic patterns, (ie. figure out how to
|
|
do gradients the Right Way).
|
|
|
|
* Implement cairo_arc_to.
|
|
|
|
* Re-implement the trapezoid rasterization algorithm according to the
|
|
new "specification".
|
|
|
|
* Stroking closed, degenerate paths should still draw caps. Round
|
|
caps are easy; square should probably draw an axis-aligned square.
|
|
|
|
* It would be nice if the user had a mechanism to reliably draw custom
|
|
caps. One approach here would be to provide the coordinates of the
|
|
butt cap faces so that the user can append seamless caps to the
|
|
current path. We may also need to provide the coordinates of the
|
|
faces of every dash as well.
|
|
|
|
* Should add geometry pruning as appropriate.
|
|
|
|
* We need a way to get at the image data after something
|
|
like cairo_surface_create_similar with the image backend.
|
|
|
|
* Three suggestions from Owen that will help GTK+ performance:
|
|
|
|
- The ability have an additional rectangle-list clip in the
|
|
Xlib surface. Frequently during an expose event, GTK+ is
|
|
drawing L shaped areas
|
|
|
|
XXXXXX
|
|
X.....
|
|
X.....
|
|
|
|
And passing the real clip to the server is going to save
|
|
a lot of pixel operations that will be thrown away.
|
|
|
|
- The ability to pass in a width/height to cairo_xlib_surface_create()
|
|
to avoid a round-trip. (Round-trips are bad to the point where
|
|
querying the the server is something you don't want to do in
|
|
production software)
|
|
|
|
- More of a future thing, the ability to hint to to cairo that
|
|
the contents of the Xlib surface passed to
|
|
cairo_xlib_surface_create() are a solid fill ... this is
|
|
very much the normal case for GTK+ usage and allows for
|
|
big optimization in the no-RENDER case.
|
|
(see http://mail.gnome.org/archives/gtk-devel-list/2003-March/msg00045.html
|
|
|
|
* Verification, profiling, optimization.
|
|
|
|
centi_unfinished.svg may provide a good test case.
|