From MozillaWiki
Jump to: navigation, search

Graphics Plan

The following is the rough plan that we're trying to follow for building out the new graphics platform. Please run changes/additions/etc by me before making them so that we can make sure we're all on the same page.



We missed our end-of-January landing due to VC8 migration, build machine problems, talkback issues, etc.

We plan to flip the switch on Windows as soon as we have talkback working. I'm hoping to have this done before Feb 25, 2006.

Linux will follow within a week or two and Mac a bit further out.

Detailed work-item breakdown

The Plan(tm)

  1. Things to do first
    • Move to cairo 1.111
    • Expose thebes
      • Update thebes to use new cairo
      • Document thebes
    • Convert gfx/src/cairo to gfx/src/thebes
  2. Next
    • Put simple thebes accessor on nsIRenderingContext for doing native drawing with thebes
    • Fix fonts
      • New font APIs
        • Create new thebes font apis
        • add textrun api
      • Windows
        • Rewrite to use Uniscribe
          • Fix bugs (font selection, etc).
      • Linux
        • Use Pango code and drop XFT in favor of cairo
      • Mac
        • Rewrite to use ATSUI
    • Work out remaining problems with thebes gfx backend
      • incorrect rendering
      • aliasing problems
      • color problems
      • double buffering
  3. Reorg
    • Move useful old GFX APIs and implementations to Widget
      • nsIScreen* bug 322942
      • parts of nsIPrint*, nsIDeviceContextSpec
  4. Zoom zoom
    • Make cairo fast enough to use
      • Optimize all cairo native backends
        • Windows
        • Linux
        • Mac
      • Optimize core cairo code paths
  5. Now for the hard part...
    • Printing
      • Windows GDI printing bug 323927
        • Images scaling too large
      • Linux PDF/PS cairo printing bug 323928
        • Need to hook up CUPS output
      • Mac
        • ????
  6. Landing
  7. Cleanup
    • Fix fallout
  8. Conversion - Part 1
    • Convert canvas from cairo to thebes (done, not checked in..)
    • Convert SVG from cairo to thebes
  9. Conversion -- Part 2
    • Convert layout and other places from the old gfx apis (nsIRenderingContext and friends) to the new Thebes APIs.
  10. Roll credits
    • Remove old graphics code!
    • Have party

Additional Stuff

  • Downloadable fonts
  • Glitz
    • Windows
      • Get working
    • Linux
      • Get working
      • Fix plugins
    • Mac
      • Get working

Future Stuff

  • 3D and beyond