We now use the LRC generated based on the canvas' font where previously we used the canvas element's, if it was connected, otherwise the document's. We also move this method from being static to a member of `CanvasTextDrawingStyles` since it will eventually be used by `OffscreenCanvasRenderingContext2D` (and needs access to member methods)
41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2023, Bastiaan van der Plaat <bastiaan.v.d.plaat@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/HTML/Canvas/AbstractCanvasMixin.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
// https://html.spec.whatwg.org/multipage/canvas.html#canvastextdrawingstyles
|
|
template<typename CanvasType>
|
|
class CanvasTextDrawingStyles : protected virtual AbstractCanvasMixin {
|
|
public:
|
|
~CanvasTextDrawingStyles() = default;
|
|
ByteString font() const;
|
|
void set_font(StringView font);
|
|
|
|
// https://html.spec.whatwg.org/multipage/canvas.html#font-style-source-object
|
|
Variant<DOM::Document*, HTML::WorkerGlobalScope*> get_font_source_for_font_style_source_object(CanvasType& font_style_source_object);
|
|
|
|
Bindings::CanvasTextAlign text_align() const { return drawing_state().text_align; }
|
|
void set_text_align(Bindings::CanvasTextAlign text_align) { drawing_state().text_align = text_align; }
|
|
|
|
Bindings::CanvasTextBaseline text_baseline() const { return drawing_state().text_baseline; }
|
|
void set_text_baseline(Bindings::CanvasTextBaseline text_baseline) { drawing_state().text_baseline = text_baseline; }
|
|
|
|
Bindings::CanvasDirection direction() const { return drawing_state().direction; }
|
|
void set_direction(Bindings::CanvasDirection direction) { drawing_state().direction = direction; }
|
|
|
|
String letter_spacing() const;
|
|
void set_letter_spacing(StringView);
|
|
float resolved_letter_spacing() const;
|
|
|
|
protected:
|
|
CanvasTextDrawingStyles() = default;
|
|
};
|
|
|
|
}
|