Re: drawImage() shouldn't throw INVALID_STATE_ERR

On Fri, 28 Aug 2009 03:03:19 +0200, Ian Hickson <ian@hixie.ch> wrote:

> On Mon, 17 Aug 2009, Simon Pieters wrote:
>> On Fri, 14 Aug 2009 03:54:08 +0200, Ian Hickson <ian@hixie.ch> wrote:
>> > On Thu, 6 Aug 2009, Simon Pieters wrote:
>> > >
>> > > The spec says that canvas drawImage() should throw INVALID_STATE_ERR
>> > > when the image isn't loaded yet or video isn't enough loaded. I
>> > > think this is a bad idea.
>> > >
>> > > I expect authors to just draw a video on a canvas when they see fit,
>> > > test locally or on a stable network, see that it works fine. Then
>> > > the script will stop working completely for some users because of
>> > > the uncaught exception when the script tries to drawImage() a video
>> > > that's not ready yet.
>> > >
>> > > Moreover, Opera has lazy loading of images (only loading images that
>> > > are rendered or have some event handlers or were created with new
>> > > Image() etc), so we'd probably want to just load the image when the
>> > > script tries to draw it instead of throwing.
>> > >
>> > > Therefore I suggest that the spec be changed to not throw
>> > > INVALID_STATE_ERR for drawImage() (and createPattern()).
>> > >
>> > > The method could be changed from void to return a boolean,
>> > > indicating whether the image was successfully drawn, so scripts can
>> > > detect it easily.
>> >
>> > What should createPattern() return in this situation?
>>
>> It should return null, which will be ignored when set on fillStyle and
>> strokeStyle.
>
> Done. (It still doesn't return false, though, since you can detect this
> case yourself if you really care.)
>

It looks like you missed two instances of INVALID_STATE_ERR, in the green  
boxes for context.drawImage and context.createPattern. I can't tell if  
these boxes are normative spec text or just a summary of the information  
below, but that's not the point here...

-- 
Philip Jägenstedt
Core Developer
Opera Software

Received on Monday, 31 August 2009 14:02:41 UTC