From bfa7381852741075162a7816183aa6134f01cdfd Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 3 Jan 2023 11:08:14 +0100 Subject: [PATCH] LibGfx: Make Font::pixel_size() return a float Here's yet another place where we were chopping of decimals. --- Userland/Libraries/LibGfx/Font/BitmapFont.h | 2 +- Userland/Libraries/LibGfx/Font/Font.h | 2 +- Userland/Libraries/LibGfx/Font/ScaledFont.h | 2 +- Userland/Libraries/LibGfx/Painter.cpp | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Userland/Libraries/LibGfx/Font/BitmapFont.h b/Userland/Libraries/LibGfx/Font/BitmapFont.h index eb867c08c4..93d10d503c 100644 --- a/Userland/Libraries/LibGfx/Font/BitmapFont.h +++ b/Userland/Libraries/LibGfx/Font/BitmapFont.h @@ -42,7 +42,7 @@ public: u8 presentation_size() const override { return m_presentation_size; } void set_presentation_size(u8 size) { m_presentation_size = size; } - virtual int pixel_size() const override { return m_glyph_height; } + virtual float pixel_size() const override { return m_glyph_height; } virtual float point_size() const override { return static_cast(m_glyph_height) * 0.75f; } u16 weight() const override { return m_weight; } diff --git a/Userland/Libraries/LibGfx/Font/Font.h b/Userland/Libraries/LibGfx/Font/Font.h index c7216c7f66..8fa421e0dc 100644 --- a/Userland/Libraries/LibGfx/Font/Font.h +++ b/Userland/Libraries/LibGfx/Font/Font.h @@ -118,7 +118,7 @@ public: virtual FontPixelMetrics pixel_metrics() const = 0; virtual u8 presentation_size() const = 0; - virtual int pixel_size() const = 0; + virtual float pixel_size() const = 0; virtual float point_size() const = 0; virtual u8 slope() const = 0; diff --git a/Userland/Libraries/LibGfx/Font/ScaledFont.h b/Userland/Libraries/LibGfx/Font/ScaledFont.h index 7471f37652..db710d9f45 100644 --- a/Userland/Libraries/LibGfx/Font/ScaledFont.h +++ b/Userland/Libraries/LibGfx/Font/ScaledFont.h @@ -36,7 +36,7 @@ public: virtual NonnullRefPtr clone() const override { return MUST(try_clone()); } // FIXME: clone() should not need to be implemented virtual ErrorOr> try_clone() const override { return *this; } virtual u8 presentation_size() const override { return m_point_height; } - virtual int pixel_size() const override { return m_point_height * 1.33333333f; } + virtual float pixel_size() const override { return m_point_height * 1.33333333f; } virtual float point_size() const override { return m_point_height; } virtual Gfx::FontPixelMetrics pixel_metrics() const override; virtual u8 slope() const override { return m_font->slope(); } diff --git a/Userland/Libraries/LibGfx/Painter.cpp b/Userland/Libraries/LibGfx/Painter.cpp index a1695eb43f..6c9f4f30ea 100644 --- a/Userland/Libraries/LibGfx/Painter.cpp +++ b/Userland/Libraries/LibGfx/Painter.cpp @@ -1391,8 +1391,8 @@ void Painter::draw_emoji(IntPoint point, Gfx::Bitmap const& emoji, Font const& f IntRect dst_rect { point.x(), point.y(), - font.pixel_size() * emoji.width() / emoji.height(), - font.pixel_size() + static_cast(ceilf(font.pixel_size() * emoji.width() / emoji.height())), + static_cast(ceilf(font.pixel_size())), }; draw_scaled_bitmap(dst_rect, emoji, emoji.rect()); } @@ -2443,7 +2443,7 @@ void Gfx::Painter::draw_ui_text(Gfx::IntRect const& rect, StringView text, Gfx:: Optional underline_offset; auto name_to_draw = parse_ampersand_string(text, &underline_offset); - Gfx::IntRect text_rect { 0, 0, font.width(name_to_draw), font.pixel_size() }; + Gfx::IntRect text_rect { 0, 0, font.width(name_to_draw), static_cast(ceilf(font.pixel_size())) }; text_rect.align_within(rect, text_alignment); draw_text(text_rect, name_to_draw, font, text_alignment, color);