mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 13:28:03 +02:00
ROADMAP/TODO: Update with 1.4.4 and 1.6 items from recent meeting
This commit is contained in:
parent
d801aa59f8
commit
94460a9790
2 changed files with 184 additions and 218 deletions
168
ROADMAP
168
ROADMAP
|
|
@ -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
234
TODO
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue