LibGfx: Give GlyphBitmap its rows data as Bytes

Instead of giving it a raw pointer to the start of the font's rows data
and an offset, give it the Bytes for its rows only.
This commit is contained in:
Sam Atkins 2023-10-02 16:17:15 +01:00 committed by Tim Schumacher
parent a3b91378df
commit f6c40abdb1
2 changed files with 7 additions and 7 deletions

View file

@ -260,8 +260,9 @@ Glyph BitmapFont::glyph(u32 code_point) const
// character, fall back to painting '?' if necessary.
auto index = glyph_index(code_point).value_or('?');
auto width = m_glyph_widths[index];
auto glyph_byte_count = m_glyph_height * GlyphBitmap::bytes_per_row();
return Glyph(
GlyphBitmap(m_rows.data(), index * m_glyph_height, { width, m_glyph_height }),
GlyphBitmap(m_rows.slice(index * glyph_byte_count, glyph_byte_count), { width, m_glyph_height }),
0,
width,
m_glyph_height);
@ -270,8 +271,9 @@ Glyph BitmapFont::glyph(u32 code_point) const
Glyph BitmapFont::raw_glyph(u32 code_point) const
{
auto width = m_glyph_widths[code_point];
auto glyph_byte_count = m_glyph_height * GlyphBitmap::bytes_per_row();
return Glyph(
GlyphBitmap(m_rows.data(), code_point * m_glyph_height, { width, m_glyph_height }),
GlyphBitmap(m_rows.slice(code_point * glyph_byte_count, glyph_byte_count), { width, m_glyph_height }),
0,
width,
m_glyph_height);

View file

@ -23,9 +23,8 @@ namespace Gfx {
class GlyphBitmap {
public:
GlyphBitmap() = default;
GlyphBitmap(u8 const* rows, size_t start_index, IntSize size)
GlyphBitmap(Bytes rows, IntSize size)
: m_rows(rows)
, m_start_index(start_index)
, m_size(size)
{
}
@ -46,11 +45,10 @@ public:
private:
AK::Bitmap bitmap(size_t y) const
{
return { const_cast<u8*>(m_rows) + bytes_per_row() * (m_start_index + y), bytes_per_row() * 8 };
return { const_cast<u8*>(m_rows.offset_pointer(bytes_per_row() * y)), bytes_per_row() * 8 };
}
u8 const* m_rows { nullptr };
size_t m_start_index { 0 };
Bytes m_rows;
IntSize m_size { 0, 0 };
};