[whatwg] Canvas 2d methods

Hi,

I would like to second the request for returning the context in drawing
methods that currently return null.

I think the following example illustrates why "with" is considered harmful:

var lineWidth = 10;
var lineHeight = 20;
with(ctx){
    fillRect(0, 0, lineWidth, lineHeight);
}

Best regards,
Stefan Haustein

Andrew Fedoniouk wrote:
>
> ----- Original Message ----- From: "Ian Hickson" <ian at hixie.ch>
> To: "Andrew Fedoniouk" <news at terrainformatica.com>
> Cc: <vladimir at pobox.com>; "Benjamin Joffe" <canvasgame at gmail.com>; 
> <whatwg at whatwg.org>
> Sent: Sunday, July 02, 2006 2:18 PM
> Subject: Re: [whatwg] Canvas 2d methods
>
>
>> On Sun, 2 Jul 2006, Andrew Fedoniouk wrote:
>>>
>>> 1) if it is declared as
>>> var foo = something;  in current frame then
>>> foo.bar();
>>> foo.baz();
>>> then execution is quite efficient.
>>>
>>> But
>>> with(something)
>>> {
>>>    bar();
>>>    baz();
>>> }
>>>
>>> still requires scan of the whole universe in the worst case.
>>
>> But this isn't the worst case! It's the best case -- you know exactly 
>> what
>> a 2D context's members are.
>>
>>
>>> Consider this:
>>>
>>> with(ctx)
>>> {
>>>    bar( some_var_name );
>>> }
>>>
>>> runtime will scan full chain of ctx for some_var_name. What for?
>>
>> It will scan *exactly* the same places as it would have if you didn't 
>> have
>> the "with", plus the context itself.
>
> And that ctx is pretty heavy thing.
> Again, "with" was considered harmful - that was the inital idea of 
> discussion.
>
>>
>>
>> Anyway, this is all a straw man -- this isn't the reason that the spec
>> doesn't allow this. It doesn't allow this because Safari didn't do it 
>> this
>> way in the first place, and changing it would likely introduce bugs 
>> (while
>> still not helping authors for some time anyway).
>
> As far as I can see return value is not defined at all in:
> http://developer.apple.com/documentation/AppleApplications/Reference/SafariJSRef/Classes/Canvas.html#//apple_ref/js/Canvas.lineTo 
>
> So the proposal is just to define them as returning 'this' instead of 
> nothing.
>
> Andrew Fedoniouk.
> http://terrainformatioca.com
>
>
>
>

Received on Sunday, 2 July 2006 15:21:37 UTC