[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