ROADMAP/TODO: Update with 1.4.4 and 1.6 items from recent meeting

This commit is contained in:
Carl Worth 2007-04-05 16:35:03 -07:00
parent d801aa59f8
commit 94460a9790
2 changed files with 184 additions and 218 deletions

168
ROADMAP
View file

@ -1,9 +1,97 @@
This is the cairo roadmap.
This is the cairo roadmap
Everything here is subject to change, but it is hoped that all of it
will be useful. If you want to influence, please feel free to get
involved with cairo (see http://cairographics.org ).
will be useful. If you want to influence the roadmap, please feel free
to get involved with cairo (see http://cairographics.org ).
cairo 1.4.4 (scheduled for 2007-04-09)
======================================
• Mathias Hasselmann's "static region" patch series, (to be reviewed
by behdad, and performance tested by cworth)
• Chris Wilson's many recent cleanups, (to be reviewed by behdad and cworth)
• 10508 Painting regression in 1.4.x (cworth)
• 5777 fbcompose.c broken for some composite operations post r1.5
(choose one of the existing patches)
✓ 10531 cairo nquartz backend floating point precision issues (bewins)
cairo 1.4.x (not scheduled, may become part of 1.6)
===================================================
• David Turner's cairo-ft rewrite. (behdad)
• Fix all remaining XFAIL failures from the test suite
a8mask has a patch available on the list
• Implement CAIRO_EXTEND_PAD for surface patterns
• Work around bug in X server causing extend-reflect test to hang it
• Eliminate problems with "unsupported image formats" for xlib,
(very frequently duplicated bug reports and a regression since
cairo 1.0.x apparently)
7735 cairo doesn't support 8-bit truecolor visuals
9993 Cairo fails with 555 X server visual
• Discard trapezoids that lie outside the clip region (cworth)
• Review and land AltiVec patches
• Update bindings chapter of documentation to reflect new APIs
(get_reference_count() and user_data for all)
cairo 1.6 (scheduled for July 2007, targeting firefox and GNOME)
================================================================
• Change from 16.16 to 24.8 (or so) for fixed-point storage (cworth)
• Implement a faster lookup-table-based rasterizer (cworth)
• New cairo-xlib API to support IncludeInferior Pictures (see bug
10329 for one proposal --- perhaps do
cairo_xlib_surface_create_for_picture instead)
• Make cairo-quartz a supported backend (vlad)
• Make cairo-xcb a supported backend (Jamey Sharp)
• A significant improvement to pixman compositing code (jrmuizel)
jrmuizel's recent work and other ideas going on).
• User-font API (behdad, krh)
http://lists.freedesktop.org/archives/cairo/2007-February/009539.html
http://lists.freedesktop.org/archives/cairo/2006-May/006893.html
http://lists.freedesktop.org/archives/cairo/2006-May/006888.html
• cairo_font_options_[gs]et_writing_mode() (behdad)
http://lists.freedesktop.org/archives/cairo/2007-January/009372.html
• cairo_font_metrics_t (behdad)
http://lists.freedesktop.org/archives/cairo/2007-January/009373.html
• New text API that allows for perfect text extraction in PDF (behdad)
• Set PS Level for the PS backend (adrianj)
• EPS output from the PS backend (adrianj)
• API to allow enable/disabling certain subsetters (adrianj)
http://bugs.freedesktop.org/show_bug.cgi?id=8180#c28
This would also be useful feature to control via an environment
variable as it would allow the user to override the application
settings.
• Debug environment variable to disable PDF compression (adrianj)
http://lists.freedesktop.org/archives/cairo/2007-February/009492.html
For other ideas that have been proposed for cairo but are not yet
scheduled on the roadmap of any particular release, please see the
TODO file next to this ROADMAP file.
Where does the information on this roadmap come from?
=====================================================
The intent is for this to be a living document. We want both the users
of cairo, (GTK+, GNOME, Mozilla, Mono, etc. etc.) to let us know
features they need and dates by which they are needed so that we can
@ -19,68 +107,14 @@ Targets
=======
Firefox 3.0 - http://www.mozilla.org/projects/firefox/roadmap.html
------------------------------------------------------------------
Firefox 3 (scheduled for early 2007?) is the first release expected to
use cairo for all rendering. In the meantime, development builds using
cairo are available. Satisfying firefox 3 well requiring releasing a a
new version of cairo some months before the firefox 3 release data
with much-improved performance.
Firefox 3 is the first release expected to use cairo for all
rendering. In the meantime, development builds using cairo are
available. Late June 2007 appears to be a rough deadline for when
mozilla would like to freeze on a cairo release, (as mentioned by
Vladimir in a cairo meeting on 2007-04-02). No new cairo API is
needed, but performance improvements are always appreciated.
Gnome 2.18 - http://live.gnome.org/TwoPointSeventeen
----------------------------------------------------
Looks like early January would be a great time to get cairo 1.4 out.
Themes and Schedules
====================
cairo-1.4 (January 2006): Better performance
✓ New tessellator
- New rasterization
- Finer-grained fallbacks for PS/PDF
cairo 1.4.2
===========
- [Bug 9994] performance opportunities in cairo
- [Bug 10150] Support inline with Sun Studio compiler
- AltiVec patches
- Kmaraas's warning cleanups
- Mathias's Mutex cleanup patch
- Update bindings chapter of documentation to reflect new APIs
(get_reference_count() and user_data for all)
- Work around bug in X server causing extend-reflect test to hang it
- Fix a8mask (patch available)
- Possibly remove pdiff
- Make font backends separable from their native surfaces
cairo 1.4.0 ideas (think performance!)
======================================
✓ Implement framework for performance regression testing
Investigate "low-hanging fruit" identified by David Turner (write test case for each)
✓ Look into speeding up pixman gradients
✓ Look into improving text positioning/placement on ARM (with no hardware floating-point)
Look into speeding up dashing used for GTK+ focus rectangle
✓ Look into other GTK+ performance regressions as identified on performance-list
xlib backend
Switch to server-side gradients for xlib backend
Fix X server to make server-side gradients faster
Switch to using XRenderAddTraps rather than XRenderCompositeTrapezoids
Implement a non-trapezoid based rasterizer for use with xlib and other backends
Cull geometry outside clip region bounds
✓ New tessellator
Bugs to fix
-----------
CAIRO_EXTEND_PAD is not implemented for surface patterns
✓CAIRO_FORMAT_RGB16_565 should be deprecated
✓8379 infinite loop when stroking (see 8379 branch in cworth tree)
For other ideas that have been proposed for cairo but are not yet
scheduled on the roadmap of any particular release, please see the
TODO file next to this ROADMAP file.
GNOME - http://live.gnome.org/TwoPointSeventeen
-----------------------------------------------
GNOME has a regular (6 month) release schedule, so there's always
another GNOME release coming up soon.

234
TODO
View file

@ -1,126 +1,73 @@
This file contains a list of some things that have been suggested
This file contains a list of some things that have been proposed for
inclusion in cairo. None of these items have been scheduled for a
particular release, (see the ROADMAP file next to this TODO file for
those).
Changes that are expected to impact the public API
==================================================
If you'd like to see an item on this list get into a particular
release, let us know that you're planning on working on it, (see
http://cairographics.org/lists ), and we can move the item to ROADMAP
with your name on it.
Patch submitted to mailing list?
/ Documentation included in patch?
|/ Review of patch completed?
||/ Test case included?
|||/ Committed.
||||/
Backwards compatible (API additions only)
-----------------------------------------
Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD
Add support for programmatic patterns, (ie. arbitrary gradients)
P Add cairo_arc_to.
Add support for custom caps (see below for details)
Add CAIRO_STATUS_DESTROYED
See New Api below
Changes that add new API (API changes/removals will not be considered)
======================================================================
• Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD
Details on some of the above changes
------------------------------------
* support for custom caps:
• Add support for programmatic patterns, (ie. arbitrary gradients)
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.
Changes that do not affect the public API
=========================================
* Change stroke code to go through one giant polygon. This will fix
problems with stroking self-intersecting paths.
* Fix the intersection problem, (see reference to Hobby's paper
mentioned in cairo_traps.c).
* Should add geometry pruning as appropriate.
* Fix/define tolerance for PS/PDF/SVG backends
* Fix CAIRO_EXTEND_REFLECT in pixman and remove the current hack
Other changes (this text used to be in RODMAP)
==============================================
Fairly severe bugs
6806 cairo 1.0.4 crash progressbar in window
PDF: minefield shows too-tiny bitmapped fonts in image fallback
PDF: minefield shows strangely hinted glyph shapes (only without truetype subsetting)
PDF: minefield has broken selection (only with truetype subsetting code)
4630 Fonts too large when drawing to image surface while printing
4863 stroking problems with wide dashed lines
Fix all expected failures (XFAIL) in the test suite
Fix disabled tests in the test suite
show-glyphs-many
Win32 backend
✓1. Incorporate into test suite
2. Correct output for the entire suite
a. self-copy
b. trap-clip
[There is some mailing-list discussion about possible fixes
for these.]
New API
cairo_arc_to
• Add cairo_arc_to.
see http://lists.freedesktop.org/archives/cairo/2005-August/004801.html
or see arc_to branch in bedhad's repository
cairo_font_options_[gs]et_writing_mode()
http://lists.freedesktop.org/archives/cairo/2007-January/009372.html
cairo_font_metrics_t
http://lists.freedesktop.org/archives/cairo/2007-January/009373.html
cairo_surface_show_page() and cairo_surface_copy_page()
show_page is a surface operation and should have been there instead of
• Add support for custom caps
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.
• cairo_surface_show_page() and cairo_surface_copy_page()
how_page is a surface operation and should have been there instead of
cairo_show_page() from the beginning. Same about copy_page().
Implement the right API now.
User-font API---a couple of threads of interest:
http://lists.freedesktop.org/archives/cairo/2007-February/009539.html
http://lists.freedesktop.org/archives/cairo/2006-May/006893.html
http://lists.freedesktop.org/archives/cairo/2006-May/006888.html
Polling API (cairo_get_serial and cairo_changed)
PS/PDF improvements
- Make image fallbacks finer-grained than a whole page
- Fix extend modes in PDF
- Fix encoding "issues" reported here:
http://lists.freedesktop.org/archives/cairo/2006-December/008985.html
- Use glyph advances to generate more compact PS/PDF (done for PDF)
- Look into generating EPS. That may be done using a new constructor
for the PS backend, or better, using an API similar to
cairo_svg_surface_restrict_to_version. The PDF backend needs a
restrict_to API at some point too.
• Polling API (cairo_get_serial and cairo_changed)
Xlib backend
- xlib backend requires xrender to compile, while it can perform without
xrender at run time. Make it compile without it. see
http://lists.freedesktop.org/archives/cairo/2006-October/008075.html
- Cache patterns (maybe solid ones only). see
http://lists.freedesktop.org/archives/cairo/2006-December/008916.html
http://lists.freedesktop.org/archives/cairo/2007-February/009825.html
Performance improvements
========================
• Add dashing support to the fast-path rectilinear stroking
code, (will help GTK+ focus rectangle, for example)
Quartz backend (maintainer needed!)
- Mark Quartz backend as supported:
a. Incorporate into test suite
b. Correct output for the entire suite
• Improve software polygon compositing by doing it in a
single scanline pass rather than tessellating, rasterizing, then
compositing the entire polygon.
Some known bugs (this text used to be in BUGS)
==============================================
XXX: Many of these bugs are likely no longer valid. We should
invesitgate each and either move it up into TODO (above) or ROADMAP or
else just delete it.
• Clip trapezoids that are partially outside the clip region
--
Other fixes
===========
• Fix/define tolerance for PS/PDF/SVG backends
The caches need to be invalidated at font destruction time.
• Fix CAIRO_EXTEND_REFLECT in pixman and remove the current hack
--
• Fix disabled show-glyphs-many case in cairo test suite
The polygon tessellation routine has problems. It appears that the
following paper has the right answers:
• Get pixman merged up with X server fb implementation
• Possibly remove pdiff (slows down the test suite with little
benefit)
• Make font backends separable from their native surfaces
• Fix cairo so that a degenerate matrix draws nothing rather than
triggering an error state. That is: cairo_scale (cr, 0, 0); should
not cause an error, (though maybe it shouldn't actually draw
_nothing_ for painting an infinite source pattern---compute the
average color for a surface-based source pattern perhaps?).
• The new tessellator has greatly improved performance, robustness,
and code readability, but may still suffer from "missed
intersections" as described here:
http://cm.bell-labs.com/cm/cs/doc/93/2-27.ps.gz
@ -128,52 +75,37 @@ following paper has the right answers:
Finite Precision Output, Computation Geometry Theory and
Applications, 13(4), 1999.
Recent improvements to make the intersection code more robust (using
128-bit arithmetic where needed), have exposed some of the weakness in
the current tessellation implementation. So, for now, filling some
polygons will cause "leaking" until we implement Hobby's algorithm.
We could do multi-pass Bentley-Ottmann or add a tolerance-square
pass as described by Hobby in the paper above.
--
• Fix vertical metric and TrueType subsetting:
Text drawn with vertical metrics cannot currently use TrueType
subsetting for PDF/PS output as the code doesn't write out the
necessary VHEA or VMTX entries to the TrueType font
objects. As a result, cairo uses Type3 fonts which generates
slightly different outlines. Type1 has the same problem.
Stroke width of 0 might do bad things.
• Make image fallbacks finer-grained than a whole page (most of the
This is work to be done in the cairo-analysis-surface layer
and will benefit ps, pdf, svg, and any other
analysis-surface-using backends.
--
Backend-specific improvements
==============================
Win32 backend
• Fix self-copy test
• Fix trap-clip test
Could there be a bug in PS backend exposed by?:
cairo_save
cairo_clip
cairo_restore
...
This needs a new testcase.
--
This puts the cairo_t in an error state:
cairo_scale (cr, 0, 0);
--
Text drawn with vertical metrics cannot currently use TrueType
subsetting for PDF/PS output as the code doesn't write out the necessary
VHEA or VMTX entries to the TrueType font objects. As a result, cairo uses
Type3 fonts which generates slightly different outlines. Type1 has the same
problem.
--
Text transformations is a mess in PS/PDF backends. Many combinations of
rotated/scaled ctm, rotated/scaled font_matrix, and subsetting code used
(Type1/Type3/TrueType) are broken.
--
Move docs inline. see
http://lists.freedesktop.org/archives/cairo/2006-July/007431.html
--
Look into the glyph cache. Moreover, make sure we are reusing scaled fonts
enough.
PS/PDF improvements
• Fix extend modes in PDF
• Fix encoding "issues" reported here:
http://lists.freedesktop.org/archives/cairo/2006-December/008985.html
• Use glyph advances to generate more compact PostScript (done for PDF)
Xlib backend
• xlib backend requires xrender to compile, while it can perform without
xrender at run time. Make it compile without it. see
http://lists.freedesktop.org/archives/cairo/2006-October/008075.html
• Switch to server-side gradients
• Switch to using XRenderAddTraps rather than XRenderCompositeTrapezoids
• Use XlibRectStretch for nearest-neighbor image scaling.