/src/serenity/Userland/Libraries/LibGfx/Font/WOFF2/Font.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org> |
3 | | * Copyright (c) 2023, Andreas Kling <kling@serenityos.org> |
4 | | * |
5 | | * SPDX-License-Identifier: BSD-2-Clause |
6 | | */ |
7 | | |
8 | | #pragma once |
9 | | |
10 | | #include <AK/Noncopyable.h> |
11 | | #include <AK/OwnPtr.h> |
12 | | #include <AK/RefCounted.h> |
13 | | #include <AK/Stream.h> |
14 | | #include <AK/String.h> |
15 | | #include <LibGfx/Bitmap.h> |
16 | | #include <LibGfx/Font/VectorFont.h> |
17 | | |
18 | | namespace WOFF2 { |
19 | | |
20 | | class Font : public Gfx::VectorFont { |
21 | | AK_MAKE_NONCOPYABLE(Font); |
22 | | |
23 | | public: |
24 | | static ErrorOr<NonnullRefPtr<Font>> try_load_from_resource(Core::Resource const&); |
25 | | static ErrorOr<NonnullRefPtr<Font>> try_load_from_externally_owned_memory(SeekableStream&); |
26 | | static ErrorOr<NonnullRefPtr<Font>> try_load_from_externally_owned_memory(ReadonlyBytes); |
27 | | |
28 | 0 | virtual Gfx::ScaledFontMetrics metrics(float x_scale, float y_scale) const override { return m_input_font->metrics(x_scale, y_scale); } |
29 | 0 | virtual Gfx::ScaledGlyphMetrics glyph_metrics(u32 glyph_id, float x_scale, float y_scale, float point_width, float point_height) const override { return m_input_font->glyph_metrics(glyph_id, x_scale, y_scale, point_width, point_height); } |
30 | 0 | virtual float glyph_advance(u32 glyph_id, float x_scale, float y_scale, float point_width, float point_height) const override { return m_input_font->glyph_advance(glyph_id, x_scale, y_scale, point_width, point_height); } |
31 | 0 | virtual float glyphs_horizontal_kerning(u32 left_glyph_id, u32 right_glyph_id, float x_scale) const override { return m_input_font->glyphs_horizontal_kerning(left_glyph_id, right_glyph_id, x_scale); } |
32 | | virtual RefPtr<Gfx::Bitmap> rasterize_glyph(u32 glyph_id, float x_scale, float y_scale, Gfx::GlyphSubpixelOffset subpixel_offset) const override |
33 | 0 | { |
34 | 0 | return m_input_font->rasterize_glyph(glyph_id, x_scale, y_scale, subpixel_offset); |
35 | 0 | } |
36 | 0 | virtual bool append_glyph_path_to(Gfx::Path& path, u32 glyph_id, float x_scale, float y_scale) const override { return m_input_font->append_glyph_path_to(path, glyph_id, x_scale, y_scale); } |
37 | 0 | virtual u32 glyph_count() const override { return m_input_font->glyph_count(); } |
38 | 0 | virtual u16 units_per_em() const override { return m_input_font->units_per_em(); } |
39 | 0 | virtual u32 glyph_id_for_code_point(u32 code_point) const override { return m_input_font->glyph_id_for_code_point(code_point); } |
40 | 0 | virtual Optional<u32> glyph_id_for_postscript_name(StringView name) const override { return m_input_font->glyph_id_for_postscript_name(name); } |
41 | 0 | virtual String family() const override { return m_input_font->family(); } |
42 | 0 | virtual String variant() const override { return m_input_font->variant(); } |
43 | 0 | virtual u16 weight() const override { return m_input_font->weight(); } |
44 | 0 | virtual u16 width() const override { return m_input_font->width(); } |
45 | 0 | virtual u8 slope() const override { return m_input_font->slope(); } |
46 | 0 | virtual bool is_fixed_width() const override { return m_input_font->is_fixed_width(); } |
47 | 0 | virtual bool has_color_bitmaps() const override { return m_input_font->has_color_bitmaps(); } |
48 | | |
49 | | private: |
50 | | Font(NonnullRefPtr<Gfx::VectorFont> input_font, ByteBuffer input_font_buffer) |
51 | 22 | : m_input_font_buffer(move(input_font_buffer)) |
52 | 22 | , m_input_font(move(input_font)) |
53 | 22 | { |
54 | 22 | } |
55 | | |
56 | | ByteBuffer m_input_font_buffer; |
57 | | NonnullRefPtr<Gfx::VectorFont> m_input_font; |
58 | | }; |
59 | | |
60 | | } |