mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:47:34 +00:00
LibWeb: Extract CanvasImageData class from CRC2D
This commit is contained in:
parent
270c60c5e8
commit
53b9f36413
4 changed files with 48 additions and 9 deletions
26
Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h
Normal file
26
Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/HTML/ImageData.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/canvas.html#canvasdrawpath
|
||||
class CanvasImageData {
|
||||
public:
|
||||
virtual ~CanvasImageData() = default;
|
||||
|
||||
virtual RefPtr<ImageData> create_image_data(int width, int height) const = 0;
|
||||
virtual DOM::ExceptionOr<RefPtr<ImageData>> get_image_data(int x, int y, int width, int height) const = 0;
|
||||
virtual void put_image_data(ImageData const&, float x, float y) = 0;
|
||||
|
||||
protected:
|
||||
CanvasImageData() = default;
|
||||
};
|
||||
|
||||
}
|
14
Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl
Normal file
14
Userland/Libraries/LibWeb/HTML/Canvas/CanvasImageData.idl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#import <HTML/ImageData.idl>
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/canvas.html#canvasimagedata
|
||||
interface mixin CanvasImageData {
|
||||
// FIXME: Should be `ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});`
|
||||
ImageData createImageData(long sw, long sh);
|
||||
// FIXME: ImageData createImageData(ImageData imagedata);
|
||||
|
||||
// FIXME: Should be `ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {});`
|
||||
ImageData getImageData(long sx, long sy, long sw, long sh);
|
||||
|
||||
undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy);
|
||||
// FIXME: undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight);
|
||||
};
|
|
@ -19,6 +19,7 @@
|
|||
#include <LibWeb/HTML/Canvas/CanvasDrawImage.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasDrawPath.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasFillStrokeStyles.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasImageData.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasPath.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasRect.h>
|
||||
#include <LibWeb/HTML/Canvas/CanvasState.h>
|
||||
|
@ -44,7 +45,8 @@ class CanvasRenderingContext2D
|
|||
, public CanvasRect
|
||||
, public CanvasDrawPath
|
||||
, public CanvasText
|
||||
, public CanvasDrawImage {
|
||||
, public CanvasDrawImage
|
||||
, public CanvasImageData {
|
||||
|
||||
AK_MAKE_NONCOPYABLE(CanvasRenderingContext2D);
|
||||
AK_MAKE_NONMOVABLE(CanvasRenderingContext2D);
|
||||
|
@ -74,9 +76,9 @@ public:
|
|||
virtual void fill(String const& fill_rule) override;
|
||||
virtual void fill(Path2D& path, String const& fill_rule) override;
|
||||
|
||||
RefPtr<ImageData> create_image_data(int width, int height) const;
|
||||
DOM::ExceptionOr<RefPtr<ImageData>> get_image_data(int x, int y, int width, int height) const;
|
||||
void put_image_data(ImageData const&, float x, float y);
|
||||
virtual RefPtr<ImageData> create_image_data(int width, int height) const override;
|
||||
virtual DOM::ExceptionOr<RefPtr<ImageData>> get_image_data(int x, int y, int width, int height) const override;
|
||||
virtual void put_image_data(ImageData const&, float x, float y) override;
|
||||
|
||||
virtual void reset_to_default_state() override;
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#import <HTML/HTMLCanvasElement.idl>
|
||||
#import <HTML/ImageData.idl>
|
||||
#import <HTML/Canvas/CanvasDrawImage.idl>
|
||||
#import <HTML/Canvas/CanvasDrawPath.idl>
|
||||
#import <HTML/Canvas/CanvasFillStrokeStyles.idl>
|
||||
#import <HTML/Canvas/CanvasImageData.idl>
|
||||
#import <HTML/Canvas/CanvasPath.idl>
|
||||
#import <HTML/Canvas/CanvasRect.idl>
|
||||
#import <HTML/Canvas/CanvasState.idl>
|
||||
|
@ -15,10 +15,6 @@ interface CanvasRenderingContext2D {
|
|||
|
||||
attribute double lineWidth;
|
||||
|
||||
ImageData createImageData(long sw, long sh);
|
||||
ImageData getImageData(long sx, long sy, long sw, long sh);
|
||||
undefined putImageData(ImageData imagedata, double dx, double dy);
|
||||
|
||||
[ImplementedAs=canvas_for_binding] readonly attribute HTMLCanvasElement canvas;
|
||||
|
||||
};
|
||||
|
@ -30,4 +26,5 @@ CanvasRenderingContext2D includes CanvasRect;
|
|||
CanvasRenderingContext2D includes CanvasDrawPath;
|
||||
CanvasRenderingContext2D includes CanvasText;
|
||||
CanvasRenderingContext2D includes CanvasDrawImage;
|
||||
CanvasRenderingContext2D includes CanvasImageData;
|
||||
CanvasRenderingContext2D includes CanvasPath;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue