Cairo's TODO list

The TODO list for cairo is separated into things to improve this website and things to improve the cairo library itself.

Website improvements

Library improvements

This is an attempt to collect all good ideas that have been proposed for inclusion in cairo. None of these items have been scheduled for a particular release, (see roadmap 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, (via the mailing list), and you can move the item to roadmap with your name on it.

Changes that add new API (API changes/removals will not be considered)

Further comparison of cairo with other vector graphics languages, and in particular features that cairo lacks, can be found in missing.

Performance improvements

To quote Carl, "We can take the maximum single length from the dash sequence, (either drawn or not), and compute its maximum size in device space. (We should have code for that part in cairo_pen.c).

Then if that length is less than the tolerance, multiplying the current alpha by the percentage of the dash sequence that's lit, then stroking a solid line should be sufficient."

An incomplete patch can be found here:

A remaining task is "One approach that would work is a sliding integral over the pattern with a 1-pixel-wide window, checking for a constant value at every position, (after rounding based on the maximum 8-bit alpha depth)."

Again profiling, and a perf-case showing the improvements are also necessary.

A list of pixman projects (a core component for Cairo) is available here.

A list of known performance issues with Cairo

Other fixes

Backend-specific improvements

Implement a fully hardware accelerated backend. Glitz is only designed to be an implementation of XRender on top of OpenGL, and therefore only provides accelerated composition. The goal of a future OpenGL backend would be to investigate offloading more computation, such as rasterization, to the GPU. There have been a number of experiments along this direction - see drm, opengl, gl and gral. They each have their own limitations...

Instead of adding an OpenGL backend, an alternative would to write a cairo state tracker for gallium.

New backend to output Printer Command Language.

Cross-platform backend to generate Windows Meta Files.

Vladimir Vukicevic has written an initial patch to hook up Skia [git clone annarchy:~joonas/skia] as a new backend.

Mozilla wrote a backend to interface with QT so that they could port their applications to Qtopia.

The implementation is here: mozilla-central updates, an old patch for cairo.

Outstanding issues: * No test suite integration. * Use of C++ badly breaks autotools when linking without it included.

Test-suite improvements

Integration improvements

Not strictly in cairo-land, but noted lest we forget.