cairo/TODO

112 lines
4.4 KiB
Text
Raw Normal View History

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).
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.
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
• Add support for programmatic patterns, (ie. arbitrary gradients)
• Add cairo_arc_to.
see http://lists.freedesktop.org/archives/cairo/2005-August/004801.html
or see arc_to branch in bedhad's repository
• 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.
• Polling API (cairo_get_serial and cairo_changed)
Performance improvements
========================
• Add dashing support to the fast-path rectilinear stroking
code, (will help GTK+ focus rectangle, for example)
• Improve software polygon compositing by doing it in a
single scanline pass rather than tessellating, rasterizing, then
compositing the entire polygon.
• Clip trapezoids that are partially outside the clip region
Other fixes
===========
• Fix/define tolerance for PS/PDF/SVG backends
• Fix CAIRO_EXTEND_REFLECT in pixman and remove the current hack
• Fix disabled show-glyphs-many case in cairo test suite
• 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?).
2006-08-18 18:55:52 -04:00
• The new tessellator has greatly improved performance, robustness,
and code readability, but may still suffer from "missed
intersections" as described here:
2006-08-18 18:55:52 -04:00
http://cm.bell-labs.com/cm/cs/doc/93/2-27.ps.gz
2006-08-18 18:55:52 -04:00
[Hobby93c] John D. Hobby, Practical Segment Intersection with
Finite Precision Output, Computation Geometry Theory and
Applications, 13(4), 1999.
2006-08-18 18:55:52 -04:00
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.
• 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
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.