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

Dirk Schulze dschulze at adobe.com
Sat Mar 22 00:45:15 PDT 2014



Sent from my iPhone

> On Mar 22, 2014, at 5:11 AM, "Rik Cabanier" <cabanier at gmail.com> wrote:
> 
> On Thu, Mar 20, 2014 at 11:18 AM, Simon Sarris <simon.sarris at gmail.com>wrote:
> 
>> 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.
> 
> Looking over this thread, getTransform gets the most support.
> we could add the following methods:
> 
> SVGMatrix getTransform();
> 
> void setTransform(SVGMatrix);

The getter does. I would still vote for interoperability and name it getCTM() which returns an SVGMatrix in SVG too.

Greetings
Dirk


More information about the whatwg mailing list