Changeset 59613 in webkit


Ignore:
Timestamp:
May 17, 2010 10:32:46 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-05-17 Andreas Kling <andreas.kling@nokia.com>

Reviewed by Kenneth Rohde Christiansen.

Add a test to verify proper behavior of createImageData(ImageData)
and createImageData(width, height) with negative arguments.
https://bugs.webkit.org/show_bug.cgi?id=39189

Spec link:
http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-createimagedata

  • fast/canvas/canvas-createImageData-expected.txt: Added.
  • fast/canvas/canvas-createImageData.html: Added.
  • fast/canvas/script-tests/canvas-createImageData.js: Added.

2010-05-17 Andreas Kling <andreas.kling@nokia.com>

Reviewed by Kenneth Rohde Christiansen.

Bring CanvasRenderingContext2D's createImageData() in line with HTML5 spec
Added createImageData(ImageData) which returns a new ImageData with the same size as the one passed.
Changed createImageData(width, height) to use the absolute values of width and height.

https://bugs.webkit.org/show_bug.cgi?id=39189

Spec link:
http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-createimagedata

Test: fast/canvas/canvas-createImageData.html

  • bindings/js/JSCanvasRenderingContext2DCustom.cpp: (WebCore::JSCanvasRenderingContext2D::createImageData):
  • html/canvas/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::createImageData):
  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2D.idl:
Location:
trunk
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r59602 r59613  
     12010-05-17  Andreas Kling  <andreas.kling@nokia.com>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        Add a test to verify proper behavior of createImageData(ImageData)
     6        and createImageData(width, height) with negative arguments.
     7        https://bugs.webkit.org/show_bug.cgi?id=39189
     8
     9        Spec link:
     10        http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-createimagedata
     11
     12        * fast/canvas/canvas-createImageData-expected.txt: Added.
     13        * fast/canvas/canvas-createImageData.html: Added.
     14        * fast/canvas/script-tests/canvas-createImageData.js: Added.
     15
    1162010-05-14  Jeremy Orlow  <jorlow@chromium.org>
    217
  • trunk/WebCore/ChangeLog

    r59612 r59613  
     12010-05-17  Andreas Kling  <andreas.kling@nokia.com>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        Bring CanvasRenderingContext2D's createImageData() in line with HTML5 spec
     6        Added createImageData(ImageData) which returns a new ImageData with the same size as the one passed.
     7        Changed createImageData(width, height) to use the absolute values of width and height.
     8
     9        https://bugs.webkit.org/show_bug.cgi?id=39189
     10
     11        Spec link:
     12        http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-createimagedata
     13
     14        Test: fast/canvas/canvas-createImageData.html
     15
     16        * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
     17        (WebCore::JSCanvasRenderingContext2D::createImageData):
     18        * html/canvas/CanvasRenderingContext2D.cpp:
     19        (WebCore::CanvasRenderingContext2D::createImageData):
     20        * html/canvas/CanvasRenderingContext2D.h:
     21        * html/canvas/CanvasRenderingContext2D.idl:
     22
    1232010-05-17  Antti Koivisto  <koivisto@iki.fi>
    224
  • trunk/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp

    r57889 r59613  
    362362}
    363363
     364JSValue JSCanvasRenderingContext2D::createImageData(ExecState* exec, const ArgList& args)
     365{
     366    // createImageData has two variants
     367    // createImageData(ImageData)
     368    // createImageData(width, height)
     369    CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(impl());
     370    RefPtr<ImageData> imageData = 0;
     371
     372    ExceptionCode ec = 0;
     373    if (args.size() == 1)
     374        imageData = context->createImageData(toImageData(args.at(0)), ec);
     375    else if (args.size() == 2)
     376        imageData = context->createImageData(args.at(0).toFloat(exec), args.at(1).toFloat(exec), ec);
     377
     378    setDOMException(exec, ec);
     379    return toJS(exec, globalObject(), WTF::getPtr(imageData));
     380}
     381
    364382JSValue JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
    365383{
  • trunk/WebCore/html/canvas/CanvasRenderingContext2D.cpp

    r59582 r59613  
    13431343}
    13441344
     1345PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(PassRefPtr<ImageData> imageData, ExceptionCode& ec) const
     1346{
     1347    if (!imageData) {
     1348        ec = NOT_SUPPORTED_ERR;
     1349        return 0;
     1350    }
     1351
     1352    IntSize size(imageData->width(), imageData->height());
     1353    return createEmptyImageData(size);
     1354}
     1355
    13451356PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(float sw, float sh, ExceptionCode& ec) const
    13461357{
     
    13551366    }
    13561367
    1357     FloatSize unscaledSize(sw, sh);
     1368    FloatSize unscaledSize(fabs(sw), fabs(sh));
    13581369    IntSize scaledSize = canvas()->convertLogicalToDevice(unscaledSize);
    13591370    if (scaledSize.width() < 1)
  • trunk/WebCore/html/canvas/CanvasRenderingContext2D.h

    r57889 r59613  
    182182        PassRefPtr<CanvasPattern> createPattern(HTMLCanvasElement*, const String& repetitionType, ExceptionCode&);
    183183       
     184        PassRefPtr<ImageData> createImageData(PassRefPtr<ImageData> imageData, ExceptionCode&) const;
    184185        PassRefPtr<ImageData> createImageData(float width, float height, ExceptionCode&) const;
    185186        PassRefPtr<ImageData> getImageData(float sx, float sy, float sw, float sh, ExceptionCode&) const;
  • trunk/WebCore/html/canvas/CanvasRenderingContext2D.idl

    r57889 r59613  
    149149        void putImageData(in ImageData imagedata, in float dx, in float dy, in [Optional] float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
    150150            raises(DOMException);
     151        ImageData createImageData(in ImageData imagedata)
     152            raises (DOMException);
     153        ImageData createImageData(in float sw, in float sh)
     154            raises (DOMException);
    151155#else
    152156        // FIXME: Remove 'else' once JSC supports overloads too.
     
    161165        [Custom] void createPattern(/* 2 */);
    162166        [Custom] void putImageData(/* in ImageData imagedata, in float dx, in float dy [, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight] */);
     167        [Custom] ImageData createImageData(/* 3 */);
    163168#endif // defined(V8_BINDING)
    164169
     
    167172
    168173        // pixel manipulation
    169         ImageData createImageData(in float sw, in float sh)
    170             raises (DOMException);
    171174        ImageData getImageData(in float sx, in float sy, in float sw, in float sh)
    172175            raises(DOMException);
Note: See TracChangeset for help on using the changeset viewer.