Roadmap Scratchpad:cairo
This page describes the work items required to convert our rendering to use the cairo graphics library, as wrapped by thebes.
There are two categories of items here: those required before the default rendering is switched to cairo/thebes (marked with "TO"), and those required before we can ship a beta build for wider consumption (marked with "19B").
Major dependencies:
The graphics plan currently has a pair of large and poorly-understood dependencies related to Mac development. There is also a significant unknown regarding the extent to which we wish to support arbitrarily-transformed content.
Quartz back end for cairo
We will need an engineer to complete (likely: build completely) a cairo back end for the Mac platform, using Quartz and ATSUI. We do not have a credible estimate of the time required for this to reach basic functionality or ship-ready completeness.
Cocoa widgets
Though it is possible to make cairo-based graphics work with a Carbon Mac widget layer, Cocoa widgets have already been identified as a needed item for Gecko 1.9, and we would greatly prefer to avoid writing Carbon widget code only to discard it before a beta anyway.
Transformed content
Two issues related to transformed content which may affect schedule materially, if we decide to support these cases fully:
- Transformation of windowless plugins
- Native-theme fidelity for transformed content
Work-unit sketch
- Font API (textrun): 1-2w (19B)
- Font selection:
- Win: 2-3w (TO)
- Lin: 1-2w (TO)
- XFT back-end (Lin): 1w (19B)
- Thebes debug/polish: 1w (TO); 2w (19B)
- gfx removal and full thebification: 5w (19B)
- nsIDeviceContext -> widget: 1wk (TO)
- nsIPrint* -> widget: 2wk (TO)
- cairo maintenance/improvement:
- Win: 1w (19B)
- Common: 1w (TO); 1w (19B)
- minimal SVG thebification: 1wk (TO); 2w (19B)
- Printing:
- Win (GDI): 4wk (19B)
- Common: 2-4wk (TO)
- Plugins:
- Win: 1wk (19B)
- Lin: 1wk (19B)
- Common: 4wk (19B)
- imagelib API conversion: 2wk (19B)
- glitzification:
- Win: 1wk (19B)
- Lin: 1wk (19B)
- Common: 2wk (19B)
- Text performance:
- Win: 1wk (19B)
- Lin: 2wk (19B)
- Common: 1wk (19B)
- Image perf:
- Win: 1wk (TO)
- Lin: 1wk (TO)
- Common: 1wk (TO)
- DirectX back end for cairo: 2wk (19B)
- removal of old gfx/full thebification: 5wk (19B)