HexEditor: Move some calculations out of HexEditor.h header

These are gradually becoming more complicated, so they don't really make
sense in the header file any more.

No changes, just moving.
This commit is contained in:
Sam Atkins 2024-04-07 11:51:30 +01:00 committed by Andreas Kling
parent 8342525434
commit 4640fc2c97
2 changed files with 64 additions and 21 deletions

View file

@ -421,6 +421,60 @@ void HexEditor::scroll_position_into_view(size_t position)
scroll_into_view(rect, true, true);
}
size_t HexEditor::total_rows() const
{
return ceil_div(m_content_length, bytes_per_row());
}
size_t HexEditor::line_height() const
{
return font().pixel_size_rounded_up() + m_line_spacing;
}
size_t HexEditor::character_width() const
{
return font().glyph_fixed_width();
}
size_t HexEditor::cell_gap() const
{
return character_width() / 2;
}
size_t HexEditor::cell_width() const
{
return character_width() * 2 + cell_gap();
}
size_t HexEditor::group_gap() const
{
return character_width() * 1.5;
}
size_t HexEditor::group_width() const
{
return (character_width() * 2 * bytes_per_group())
+ (cell_gap() * (bytes_per_group() - 1))
+ group_gap();
}
int HexEditor::offset_area_width() const
{
return m_padding + font().width_rounded_up("0X12345678"sv) + m_padding;
}
int HexEditor::hex_area_width() const
{
return m_padding
+ groups_per_row() * group_width() - group_gap()
+ m_padding;
}
int HexEditor::text_area_width() const
{
return m_padding + bytes_per_row() * character_width() + m_padding;
}
void HexEditor::keydown_event(GUI::KeyEvent& event)
{
dbgln_if(HEX_DEBUG, "Editor::keydown_event key={}", static_cast<u8>(event.key()));

View file

@ -113,27 +113,16 @@ private:
void scroll_position_into_view(size_t position);
size_t total_rows() const { return ceil_div(m_content_length, bytes_per_row()); }
size_t line_height() const { return font().pixel_size_rounded_up() + m_line_spacing; }
size_t character_width() const { return font().glyph_fixed_width(); }
size_t cell_gap() const { return character_width() / 2; }
size_t cell_width() const { return character_width() * 2 + cell_gap(); }
size_t group_gap() const { return character_width() * 1.5; }
size_t group_width() const
{
return (character_width() * 2 * bytes_per_group())
+ (cell_gap() * (bytes_per_group() - 1))
+ group_gap();
}
int offset_area_width() const { return m_padding + font().width_rounded_up("0X12345678"sv) + m_padding; }
int hex_area_width() const
{
return m_padding
+ groups_per_row() * group_width() - group_gap()
+ m_padding;
}
int text_area_width() const { return m_padding + bytes_per_row() * character_width() + m_padding; }
size_t total_rows() const;
size_t line_height() const;
size_t character_width() const;
size_t cell_gap() const;
size_t cell_width() const;
size_t group_gap() const;
size_t group_width() const;
int offset_area_width() const;
int hex_area_width() const;
int text_area_width() const;
struct OffsetData {
size_t offset;