summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO105
1 files changed, 74 insertions, 31 deletions
diff --git a/TODO b/TODO
index f0edbc309..ea44263ed 100644
--- a/TODO
+++ b/TODO
@@ -1,29 +1,42 @@
-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
+API Shakeup planning
+--------------------
+ Patch submitted to mailing list?
+/ Documentation included in patch?
+|/ Review of patch completed?
+||/ Test case included?
+|||/ Committed.
+||||/
+New functionality (more-or-less)
+--------------------------------
+ cairo_begin_group, cairo_end_group, cairo_get_group
+ cairo_<device>_surface_mark_dirty
+ Consistent error handling for all objects
+
+Somewhat backwards-compatible changes
+-----------------------------------
+PDRTC user data (was Re: [cairo] Patch improving fallbacks)
+PDRTC setters and getters
+PDRTC cairo_output_stream_t and cairo_surface_finish()
+PDRTC cairo_current_path -> cairo_copy_path_data
+PDR C cairo_surface_finish, cairo_surface_flush
+PDRTC Abbreviation hunt: cairo_init_clip and cairo_concat_matrix
+PDRTC Renaming the terms of the rendering equation
+PDRTC default matrix
+PDRTC cairo_paint
+PDRTC Making set_source consistent
+PDRTC cairo_stroke_path -> cairo_stroke_to_path
+PDRTC cairo_current_matrix
+PDRTC cairo_mask
+PDRTC cairo_fill_preserve, cairo_stroke_preserve, cairo_clip_preserve
+PDR C A hidden offset for the xlib backend
+
+Backwards incompatible
+----------------------
+PDRTC Simplifying the operator set
+PDRTC cairo_create and eliminating cairo_set_target_surface
+PDRTC Eliminating cairo_copy
+PDRTC Eliminating cairo_surface_set_repeat/matrix/filter
+PDRTC Eliminating cairo_show_surface
* Add support for non-antialiased rendering. API ?
@@ -37,8 +50,37 @@ yes yes cairo_output_stream_t and cairo_surface_finish()
((src Op dest) In clip) Add (dest Out clip)
-* Replace PNG backend with an image_surface function to save a PNG
- image.
+* 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....)
* Clean up the API in preparation for freezing and release.
@@ -83,9 +125,6 @@ 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.
@@ -128,3 +167,7 @@ do gradients the Right Way).
* Verification, profiling, optimization.
centi_unfinished.svg may provide a good test case.
+
+* Implement copy-on-write regions in pixman as a more complete
+ solution than the BAD_NESTING stuff to Owen's "Clip region problems"
+ thread.