Roadmap Scratchpad:cairo

From MozillaWiki
Jump to navigation Jump to search

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)