W3C home > Mailing lists > Public > whatwg@whatwg.org > October 2013

Re: [whatwg] Canvas - Somewhat inconsistent rules in the spec for drawImage

From: Ian Hickson <ian@hixie.ch>
Date: Wed, 16 Oct 2013 22:48:48 +0000 (UTC)
To: Simon Sarris <simon.sarris@gmail.com>, Justin Novosad <junov@google.com>, Robert O'Callahan <robert@ocallahan.org>
Message-ID: <alpine.DEB.2.00.1310162239290.1896@ps20323.dreamhostps.com>
Cc: WHATWG List <whatwg@whatwg.org>
On Fri, 20 Sep 2013, Simon Sarris wrote:
> Summary: You can draw zero-sized Images and objects with zero-sized 
> source rects to the canvas context. You cannot draw zero-sized Canvases, 
> you get an InvalidStateError. According to the spec this is right, but I 
> think there should be more consistency in handling these cases.
> [...]
> The bothersome thing is that:
> 1. Zero-sized Images do not have any such error

I didn't actually think you could create a zero-sized image that was not 
in the broken state. But you can, using SVG, in some browsers:


Safari and Chrome don't treat it as 0x0, but Firefox does.

Firefox throws an exception when you try to use it in drawImage(), just 
like with a zero-dimension <canvas>.

> 2. calling drawImage with a source rectangle, using 
> context.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh), when the 
> source rectangle has zero width or height, does not give an error. Per 
> the spec: [...]
> So zero-sized sources are fine if they are an HTMLImageElement or a 
> source rectangle, but not fine if they are HTMLCanvasElement.

Zero-sized source rectangles were fine with <canvas> too. It's the actual 
<canvas> itself that matters here.

On Sat, 21 Sep 2013, Robert O'Callahan wrote:
> I agree. I commented on this a while ago, and I still think it's simpler 
> and more robust for drawing a zero-size "anything" to just draw nothing.

I've changed the spec to allow it explicitly for both images and canvases.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
Received on Wednesday, 16 October 2013 22:49:13 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:12 UTC