W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2012

Re: [whatwg] I believe source rectangles for HTML5 Canvas drawImage are specified incorrectly

From: Rik Cabanier <cabanier@gmail.com>
Date: Mon, 17 Dec 2012 11:27:20 -0800
Message-ID: <CAGN7qDD7PDXQeSt4tmkpX43LX02AT8XNfdOuvf4y2OOmf9iEPg@mail.gmail.com>
To: Justin Novosad <junov@chromium.org>
Cc: whatwg@lists.whatwg.org, Jeff Muizelaar <jmuizelaar@mozilla.com>, Vladimir Vukicevic <vladimir@pobox.com>, Ian Hickson <ian@hixie.ch>, Kevin Gadd <kevin.gadd@gmail.com>
On Mon, Dec 17, 2012 at 7:23 AM, Justin Novosad <junov@chromium.org> wrote:

>
>
> On Sun, Dec 16, 2012 at 11:52 PM, Rik Cabanier <cabanier@gmail.com> wrote:
>
>>
>>
>> On Wed, Dec 12, 2012 at 10:24 AM, Justin Novosad <junov@chromium.org>wrote:
>>
>>>
>>>
>>> On Wed, Dec 12, 2012 at 12:39 PM, Rik Cabanier <cabanier@gmail.com>wrote:
>>>
>>>>
>>>> What would be the next step? Should we define a new version of
>>>> drawImage with the extra parameter?
>>>
>>>
>>> That is one option, but I think a context attribute (like
>>> imageSmoothingEnabled) is also worth considering.
>>> Perhaps image smoothing could be an enum rather than boolean with an
>>> additional mode that prevents color bleeding.
>>>
>>
>> It seems a bit too expensive to add a variable to the graphics context
>> that is checked for just this call.
>> Maybe just a new drawImage call (like drawNonSmoothedImage?) is all that
>> is needed.
>>
>
> Yes. That sounds quite reasonable to me, but we can find a better name.
> The name "drawNonSmoothedImage" suggests that the image won't be smoothed
> at all, which is not the case.  It's hard to find a name that correctly
> describes the right behavior without getting too technical.  I am thinking
> "drawSubImage", in the sense that the sub region delimited by the source
> rectangle is treated as if it were a whole image.
>

That sounds reasonable.


> This gives me another idea: we could just have a new Image constructor
> that creates a new image element that is a subregion of another:
> var mySprite = new Image(spriteMap, x, y, w, h);
> This can be implemented in a lightweight way that just references the data
> of the source image.
>

Isn't this the same as what Ian suggested: copy it to a temporary canvas
and use the temporary canvas scales.
It seems that you can optimize that case too.
Received on Monday, 17 December 2012 19:27:48 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:50 UTC