Eyes Above The Waves

Robert O'Callahan. Christian. Repatriate Kiwi. Hacker.

Tuesday 20 June 2006

The Future Is Now

I've recently done some work to modify Gecko's paint invalidation architecture to work with SVG foreignobject. I've also brought SVG foreignobject up to date with SVG changes and fixed some related bugs. The result is that the foreignobject demo I did at XTech last year is now fully functional on trunk cairo builds! In fact, it's more functional than last year since, thanks to Blake Kaplan's hard work, the caret is now painted correctly in transformed content.

There are still many bugs related to transformed content. Among them:

  • Popups (e.g. SELECT comboboxes) --- actually it's not 100% clear how these should work
  • Some theme problems
  • Scrolling
  • Some painting problems on Windows (apparently)
  • incredibly SLOW performance; some for reasons we understand and can fix, some for reasons that are fundamental (rotating images is slower than just drawing them normally), and probably some for reasons we don't understand yet
  • Seams between rotated rectangular areas (e.g. visible in the Google logo in the screenshot below). These are fundamental with cairo's coverage-based antialiasing strategy, and we may have to move to FSAA to get rid of them.

At least now we are at the point where we can test and fix some of these issues.

Download a trunk nightly (warning: these can be very unstable!) built with cairo (Windows should be), and try this testcase.

Obligatory screenshot:

Rotated All Blacks haka


Philip Withnall
Schweet! :-D
Very nice! Should we file bugs on this yet (and where?), or is it still at a point where that's not useful?
Robert O'Callahan
I think it's OK to file bugs now. Please make them block tracking bug https://bugzilla.mozilla.org/show_bug.cgi?id=342107
Ted Mielczarek
You can also try out my ridiculous rotating Google Maps demo: http://ted.mielczarek.org/code/gmaps/fun.html
Robert, this is indeed very cool (but I probably said this already).
There are indeed quite some painting bugs in windows at least, but nothing too serious as far as I can see.
Ted, that is really cool, that rotating Google Maps demo.
Jesse Ruderman
Does bug 328241 cover the border problems visible in this screenshot?
Robert O'Callahan
No. That bug is specifically about the edges between different pieces of a single CSS border. The problem visible in the screenshot is seams between the border and the image inside the border.