Text support on trunk

Thanks to Fabien Menager we now support drawing text in Explorer Canvas. You can now use the following methods: fillText, strokeText and measureText.

The implementation uses VML text paths which allows text to be drawn on any path. For canvas we don't really need to support text on arbitrary paths so we just use a simple VML line element here.

Scaling is currently not working correctly but we know how to fix that and we expect to have that fixed within a few days.

The code is based on Canvas Text, another open source project by Fabien which adds text support for old browsers that have canvas without text support.


New Explorer Canvas Release

The main reason for this release is Internet Explorer 8.0 support. IE8 slightly changed how it does VML so we had to do some fixes. We wanted to make sure that things worked OK in the final release of IE8 so we held of the release until IE8 was out.

Another big change in the Explorer Canvas project is that we moved to Google Code project hosting.

Besides from the IE8 support we've fixed a lot of bugs and improved Explorer Canvas in several ways. We'd like to thank everyone wh contributed to Explorer Canvas by providing bug reports, patches and or participated on the mailing lists.

The third release was cut from revision 48 and below is the change list for this relaese.

  • Implement transform and setTransform. This passes all the tests in the HTML5 canvas tests for 2d.transformation.*
  • Remove fallback content that caused some issues when resizing the canvas element.
  • Fix issue where strokeRect, fillRect and clearRect incorrectly cleared the current path.
  • Added 2 new tests and modified an existing test to ensure that the new code works as expected and tested this in all modern browsers
  • Fix for IE8. This involved passing one more argument to namespaces.add as well as ensuring all CSS lengths have units (px). Passes all the test cases in all modes in IE8.
  • Fixes for linear gradients.
  • Added two test cases for linear gradients.
  • Changed the calculation method of line width. An averaged line width is calculated from the determinant of matrix, which is valid even when transform() method is implemented someday.
  • Improved the rendering of lines. Lines with the width less than 1px look better now.
  • Fixed the bug that stroke() ignored lineCap, lineJoin and miterLimit when fillStyle attribute was set.
  • Removed the settings of strokeweight, strokecolor and fillcolor. They are unnecessary since they are overridden by the weight and color attributes in and .
  • This fixes issues where translate, rotate and scale is used during a path is being constructed. Previously we did the coord translations just before we draw the path. That is incorrect and now we do the translations when we add each individual piece to the path
  • Added very limited support for scaling of the stroke width. Currently we do the scaling by calculating the position in the final coordinate space and we therefore cannot do non uniform scaling of the stroke. For now we just do the max x/y scale factor.
  • Fix stroke. It should not close the path
  • Fix memory leaks
  • Fix issue where the path was not closed when strokeRect/fillRect was called.
  • Use the document.createElement('canvas') hack that was exposed by Sjoerd Visscher last week. This allows us to remove fixElement_ completely.
  • Added globalAlpha to the list of attributes copied for save/restore, as per the canvas specification.