Roadmap Scratchpad:cairo

Revision as of 01:54, 6 December 2005 by Shaver (talk | contribs)

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:

  1. Transformation of windowless plugins
  2. 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)