Changeset 224255 in webkit


Ignore:
Timestamp:
Oct 31, 2017 3:33:27 PM (6 years ago)
Author:
dino@apple.com
Message:

Accept Settings object in ImageBitmapRenderingContext constructor and getContext
https://bugs.webkit.org/show_bug.cgi?id=179075
<rdar://problem/35279965>

Reviewed by Sam Weinig.

Allow getContext("bitmaprenderer") to take a dictionary as another argument, and
pass that on to the ImageBitmapRenderingContext constructor.

Unfortunately this meant having to move ImageBitmapRenderingContext::Settings out into
a stand-alone struct, since it needs to be defined in HTMLCanvasElement, which itself
needs to be defined for ImageBitmapRenderingContext.

  • DerivedSources.make: Add new IDL.
  • WebCore.xcodeproj/project.pbxproj: New files.
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::getContextBitmapRenderer):

Accept the ImageBitmapRenderingContextSettings object, and pass it on.

  • html/HTMLCanvasElement.h:
  • html/canvas/ImageBitmapRenderingContext.cpp:

(WebCore::ImageBitmapRenderingContext::ImageBitmapRenderingContext):

  • html/canvas/ImageBitmapRenderingContext.h:
  • html/canvas/ImageBitmapRenderingContext.idl:
  • html/canvas/ImageBitmapRenderingContextSettings.h: Copied from Source/WebCore/html/canvas/ImageBitmapRenderingContext.idl.
  • html/canvas/ImageBitmapRenderingContextSettings.idl: Added.
Location:
trunk/Source/WebCore
Files:
1 added
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r224254 r224255  
     12017-10-31  Dean Jackson  <dino@apple.com>
     2
     3        Accept Settings object in ImageBitmapRenderingContext constructor and getContext
     4        https://bugs.webkit.org/show_bug.cgi?id=179075
     5        <rdar://problem/35279965>
     6
     7        Reviewed by Sam Weinig.
     8
     9        Allow getContext("bitmaprenderer") to take a dictionary as another argument, and
     10        pass that on to the ImageBitmapRenderingContext constructor.
     11
     12        Unfortunately this meant having to move ImageBitmapRenderingContext::Settings out into
     13        a stand-alone struct, since it needs to be defined in HTMLCanvasElement, which itself
     14        needs to be defined for ImageBitmapRenderingContext.
     15
     16        * DerivedSources.make: Add new IDL.
     17        * WebCore.xcodeproj/project.pbxproj: New files.
     18
     19        * html/HTMLCanvasElement.cpp:
     20        (WebCore::HTMLCanvasElement::createContextBitmapRenderer):
     21        (WebCore::HTMLCanvasElement::getContextBitmapRenderer):
     22
     23            Accept the ImageBitmapRenderingContextSettings object, and pass it on.
     24
     25        * html/HTMLCanvasElement.h:
     26        * html/canvas/ImageBitmapRenderingContext.cpp:
     27        (WebCore::ImageBitmapRenderingContext::ImageBitmapRenderingContext):
     28        * html/canvas/ImageBitmapRenderingContext.h:
     29        * html/canvas/ImageBitmapRenderingContext.idl:
     30        * html/canvas/ImageBitmapRenderingContextSettings.h: Copied from Source/WebCore/html/canvas/ImageBitmapRenderingContext.idl.
     31        * html/canvas/ImageBitmapRenderingContextSettings.idl: Added.
     32
    1332017-10-31  Tim Horton  <timothy_horton@apple.com>
    234
  • trunk/Source/WebCore/DerivedSources.make

    r224186 r224255  
    644644    $(WebCore)/html/canvas/EXTsRGB.idl \
    645645    $(WebCore)/html/canvas/ImageBitmapRenderingContext.idl \
     646    $(WebCore)/html/canvas/ImageBitmapRenderingContextSettings.idl \
    646647    $(WebCore)/html/canvas/ImageSmoothingQuality.idl \
    647648    $(WebCore)/html/canvas/OESElementIndexUint.idl \
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r224244 r224255  
    871871                31815A311F9A6C8F00FCBF89 /* ImageBitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D26BBF1F86D189008FF255 /* ImageBitmap.h */; settings = {ATTRIBUTES = (Private, ); }; };
    872872                318891611AB7EEA100EA627B /* missingImage@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = CDF419991AB0DA14004E64E1 /* missingImage@3x.png */; };
     873                318EAD4D1FA91380008CEF86 /* ImageBitmapRenderingContextSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 318EAD4A1FA91157008CEF86 /* ImageBitmapRenderingContextSettings.h */; settings = {ATTRIBUTES = (Private, ); }; };
    873874                31955A88160D199200858025 /* RenderSnapshottedPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 31E8D8BB160BC94C004CE8F5 /* RenderSnapshottedPlugIn.h */; settings = {ATTRIBUTES = (Private, ); }; };
    874875                319848011A1D817B00A13318 /* AnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 319847FF1A1D816700A13318 /* AnimationEvent.h */; };
     
    65956596                31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimulatedClickOptions.h; sourceTree = "<group>"; };
    65966597                3189E6DB16B2103500386EA3 /* plugIns.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = plugIns.css; sourceTree = "<group>"; };
     6598                318EAD4A1FA91157008CEF86 /* ImageBitmapRenderingContextSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageBitmapRenderingContextSettings.h; sourceTree = "<group>"; };
     6599                318EAD4C1FA91352008CEF86 /* ImageBitmapRenderingContextSettings.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ImageBitmapRenderingContextSettings.idl; sourceTree = "<group>"; };
    65976600                319847FE1A1D816700A13318 /* AnimationEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationEvent.cpp; sourceTree = "<group>"; };
    65986601                319847FF1A1D816700A13318 /* AnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationEvent.h; sourceTree = "<group>"; };
     
    1658716590                                7C7903B01F86F95C00463A70 /* ImageBitmapRenderingContext.h */,
    1658816591                                7C7903B21F86F95C00463A70 /* ImageBitmapRenderingContext.idl */,
     16592                                318EAD4A1FA91157008CEF86 /* ImageBitmapRenderingContextSettings.h */,
     16593                                318EAD4C1FA91352008CEF86 /* ImageBitmapRenderingContextSettings.idl */,
    1658916594                                7C193BAF1F5E0EB40088F3E6 /* ImageSmoothingQuality.h */,
    1659016595                                7C193BA81F5E0EAF0088F3E6 /* ImageSmoothingQuality.idl */,
     
    2705727062                                31815A311F9A6C8F00FCBF89 /* ImageBitmap.h in Headers */,
    2705827063                                7C7903B31F86F95C00463A70 /* ImageBitmapRenderingContext.h in Headers */,
     27064                                318EAD4D1FA91380008CEF86 /* ImageBitmapRenderingContextSettings.h in Headers */,
    2705927065                                B2A10B920B3818BD00099AA4 /* ImageBuffer.h in Headers */,
    2706027066                                22BD9F7F1353625C009BD102 /* ImageBufferData.h in Headers */,
  • trunk/Source/WebCore/html/HTMLCanvasElement.cpp

    r224195 r224255  
    505505}
    506506
    507 // FIXME: Needs to accept ImageBitmapRenderingContext::Settings.
    508 ImageBitmapRenderingContext* HTMLCanvasElement::createContextBitmapRenderer(const String& type)
     507ImageBitmapRenderingContext* HTMLCanvasElement::createContextBitmapRenderer(const String& type, ImageBitmapRenderingContextSettings&& settings)
    509508{
    510509    ASSERT_UNUSED(type, HTMLCanvasElement::isBitmapRendererType(type));
    511510    ASSERT(!m_context);
    512511
    513     m_context = std::make_unique<ImageBitmapRenderingContext>(*this);
     512    m_context = std::make_unique<ImageBitmapRenderingContext>(*this, WTFMove(settings));
    514513
    515514#if USE(IOSURFACE_CANVAS_BACKING_STORE) || ENABLE(ACCELERATED_2D_CANVAS)
     
    521520}
    522521
    523 ImageBitmapRenderingContext* HTMLCanvasElement::getContextBitmapRenderer(const String& type)
     522ImageBitmapRenderingContext* HTMLCanvasElement::getContextBitmapRenderer(const String& type, ImageBitmapRenderingContextSettings&& settings)
    524523{
    525524    ASSERT_UNUSED(type, HTMLCanvasElement::isBitmapRendererType(type));
    526525    if (!m_context)
    527         return createContextBitmapRenderer(type);
     526        return createContextBitmapRenderer(type, WTFMove(settings));
    528527    return static_cast<ImageBitmapRenderingContext*>(m_context.get());
    529528}
  • trunk/Source/WebCore/html/HTMLCanvasElement.h

    r224195 r224255  
    3030#include "FloatRect.h"
    3131#include "HTMLElement.h"
     32#include "ImageBitmapRenderingContextSettings.h"
    3233#include "IntSize.h"
    3334#include <memory>
     
    120121
    121122    static bool isBitmapRendererType(const String&);
    122     ImageBitmapRenderingContext* createContextBitmapRenderer(const String&);
    123     ImageBitmapRenderingContext* getContextBitmapRenderer(const String&);
     123    ImageBitmapRenderingContext* createContextBitmapRenderer(const String&, ImageBitmapRenderingContextSettings&& = { });
     124    ImageBitmapRenderingContext* getContextBitmapRenderer(const String&, ImageBitmapRenderingContextSettings&& = { });
    124125
    125126    WEBCORE_EXPORT ExceptionOr<UncachedString> toDataURL(const String& mimeType, JSC::JSValue quality);
  • trunk/Source/WebCore/html/canvas/ImageBitmapRenderingContext.cpp

    r224195 r224255  
    3838#endif
    3939
    40 ImageBitmapRenderingContext::ImageBitmapRenderingContext(HTMLCanvasElement& canvas)
     40ImageBitmapRenderingContext::ImageBitmapRenderingContext(HTMLCanvasElement& canvas, ImageBitmapRenderingContextSettings&& settings)
    4141    : CanvasRenderingContext(canvas)
     42    , m_settings(WTFMove(settings))
    4243{
    4344    setOutputBitmap(nullptr);
  • trunk/Source/WebCore/html/canvas/ImageBitmapRenderingContext.h

    r224195 r224255  
    2929
    3030#include "ExceptionOr.h"
     31#include "ImageBitmapRenderingContextSettings.h"
    3132#include "ImageBufferData.h"
    3233#include <wtf/RefPtr.h>
     
    3940class ImageBitmapRenderingContext final : public CanvasRenderingContext {
    4041public:
    41     struct Settings {
    42         bool alpha = true;
    43     };
    4442
    4543    enum class BitmapMode {
     
    4846    };
    4947
    50     ImageBitmapRenderingContext(HTMLCanvasElement&);
     48    ImageBitmapRenderingContext(HTMLCanvasElement&, ImageBitmapRenderingContextSettings&&);
    5149    ~ImageBitmapRenderingContext();
    5250
     
    6361
    6462    BitmapMode m_bitmapMode { BitmapMode::Blank };
    65     Settings m_settings;
     63    ImageBitmapRenderingContextSettings m_settings;
    6664};
    6765
  • trunk/Source/WebCore/html/canvas/ImageBitmapRenderingContext.idl

    r224195 r224255  
    3232};
    3333
    34 dictionary ImageBitmapRenderingContextSettings {
    35     boolean alpha = true;
    36 };
  • trunk/Source/WebCore/html/canvas/ImageBitmapRenderingContextSettings.h

    r224254 r224255  
    2424 */
    2525
    26 [
    27     Exposed=Window
    28 ] interface ImageBitmapRenderingContext {
    29     readonly attribute HTMLCanvasElement canvas;
     26#pragma once
    3027
    31     [MayThrowException] void transferFromImageBitmap(ImageBitmap? bitmap);
     28namespace WebCore {
     29
     30struct ImageBitmapRenderingContextSettings {
     31    bool alpha = true;
    3232};
    3333
    34 dictionary ImageBitmapRenderingContextSettings {
    35     boolean alpha = true;
    36 };
     34}
Note: See TracChangeset for help on using the changeset viewer.