mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 01:37:39 +03:00
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
|
/*
|
||
|
* Copyright (c) 2023, MacDue <macdue@dueutil.tech>
|
||
|
*
|
||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <LibGfx/PaintStyle.h>
|
||
|
#include <LibWeb/Bindings/PlatformObject.h>
|
||
|
#include <LibWeb/HTML/Canvas/CanvasDrawImage.h>
|
||
|
|
||
|
namespace Web::HTML {
|
||
|
|
||
|
class CanvasPatternPaintStyle final : public Gfx::PaintStyle {
|
||
|
public:
|
||
|
enum class Repetition {
|
||
|
Repeat,
|
||
|
RepeatX,
|
||
|
RepeatY,
|
||
|
NoRepeat
|
||
|
};
|
||
|
|
||
|
static NonnullRefPtr<CanvasPatternPaintStyle> create(Gfx::Bitmap const& bitmap, Repetition repetition)
|
||
|
{
|
||
|
return adopt_ref(*new CanvasPatternPaintStyle(bitmap, repetition));
|
||
|
}
|
||
|
|
||
|
virtual void paint(Gfx::IntRect physical_bounding_box, PaintFunction paint) const override;
|
||
|
|
||
|
private:
|
||
|
CanvasPatternPaintStyle(Gfx::Bitmap const& bitmap, Repetition repetition)
|
||
|
: m_bitmap(bitmap)
|
||
|
, m_repetition(repetition)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
NonnullRefPtr<Gfx::Bitmap const> m_bitmap;
|
||
|
Repetition m_repetition { Repetition::Repeat };
|
||
|
};
|
||
|
|
||
|
class CanvasPattern final : public Bindings::PlatformObject {
|
||
|
WEB_PLATFORM_OBJECT(CanvasPattern, Bindings::PlatformObject);
|
||
|
|
||
|
public:
|
||
|
static WebIDL::ExceptionOr<JS::GCPtr<CanvasPattern>> create(JS::Realm&, CanvasImageSource const& image, StringView repetition);
|
||
|
|
||
|
~CanvasPattern();
|
||
|
|
||
|
NonnullRefPtr<Gfx::PaintStyle> to_gfx_paint_style() { return m_pattern; }
|
||
|
|
||
|
private:
|
||
|
CanvasPattern(JS::Realm&, CanvasPatternPaintStyle&);
|
||
|
|
||
|
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
|
||
|
|
||
|
NonnullRefPtr<CanvasPatternPaintStyle> m_pattern;
|
||
|
};
|
||
|
|
||
|
}
|