[whatwg] Proposal: change 2D canvas currentTransform to getter method

Simon Sarris simon.sarris at gmail.com
Thu Mar 20 11:18:00 PDT 2014

On Thu, Mar 20, 2014 at 1:52 PM, Justin Novosad <junov at google.com> wrote:

> Hello all,
> The recently added currentTransform attribute on CanvasRenderingContext2D
> gives shared access to the rendering context's transform. By "shared", I
> mean:
> a) this code modifies the CTM:
> var matrix = context.currentTransform;
> matrix.a = 2;
> b) In this code, the second line modifies matrix:
> var matrix = context.currentTransform;
> context.scale(2, 2);
> This behavior is probably not what most developers would expect.
> I would like to propose changing this to a getter method instead.  We
> already have a setter method (setTransform).
> In another thread entitled "Canvas Path.addPath SVGMatrix not optimal",
> Dirk Schulze proposed using the name getCTM, which would be consistent with
> the SVGLocatable interface, where getCTM returns an SVGMatrix. On the other
> hand, we could call it getTransform to be consistent with the existing
> setTransform on CRC2D. Opinions? Perhaps we should also have an overload of
> setTransform (or setCTM) that would take an SVGMatrix.
> First of all, have any browsers shipped currentTransform yet?
> Thoughts?
>     -Justin Novosad

FF (at least Aurora/Nightlies) has for some time had mozCurrentTransform
(and mozCurrentTransformInverse), which return an Array (so not
spec-compliant, since spec wants SVGMatrix). It is not shared, so it does
not do what your a) and b) examples do.

I agree that changing it to a getter method would be better, it would be
more intuitive and clear for developers.

More information about the whatwg mailing list