From b987d539260357118ffda3675b9d096c3bbae871 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 10 Feb 2025 11:48:12 +0000 Subject: [PATCH] LibWeb: Migrate ListItemMarkerBox's text from ByteString to String --- .../LibWeb/CSS/StyleValues/CounterStyleValue.cpp | 8 ++++---- Libraries/LibWeb/Layout/BlockFormattingContext.cpp | 4 ++-- Libraries/LibWeb/Layout/ListItemMarkerBox.cpp | 12 ++++++------ Libraries/LibWeb/Layout/ListItemMarkerBox.h | 5 +++-- Libraries/LibWeb/Painting/MarkerPaintable.cpp | 2 +- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Libraries/LibWeb/CSS/StyleValues/CounterStyleValue.cpp b/Libraries/LibWeb/CSS/StyleValues/CounterStyleValue.cpp index 1b84287a160..99be372fc74 100644 --- a/Libraries/LibWeb/CSS/StyleValues/CounterStyleValue.cpp +++ b/Libraries/LibWeb/CSS/StyleValues/CounterStyleValue.cpp @@ -75,14 +75,14 @@ static String generate_a_counter_representation(CSSStyleValue const& counter_sty return MUST(String::formatted("{}", value)); case ListStyleType::LowerAlpha: case ListStyleType::LowerLatin: - return MUST(String::from_byte_string(ByteString::bijective_base_from(value - 1).to_lowercase())); + return String::bijective_base_from(value - 1, String::Case::Lower); case ListStyleType::UpperAlpha: case ListStyleType::UpperLatin: - return MUST(String::from_byte_string(ByteString::bijective_base_from(value - 1))); + return String::bijective_base_from(value - 1, String::Case::Upper); case ListStyleType::LowerRoman: - return MUST(String::from_byte_string(ByteString::roman_number_from(value).to_lowercase())); + return String::roman_number_from(value, String::Case::Lower); case ListStyleType::UpperRoman: - return MUST(String::from_byte_string(ByteString::roman_number_from(value))); + return String::roman_number_from(value, String::Case::Upper); default: break; } diff --git a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index 543ba79ae0d..bd136917e4b 100644 --- a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -1210,12 +1210,12 @@ void BlockFormattingContext::ensure_sizes_correct_for_left_offset_calculation(Li auto default_marker_width = max(4, marker.first_available_font().pixel_size_rounded_up() - 4); - auto marker_text = marker.text().value_or(""); + auto marker_text = marker.text().value_or({}); if (marker_text.is_empty()) { marker_state.set_content_width(image_width + default_marker_width); } else { // FIXME: Use per-code-point fonts to measure text. - auto text_width = marker.first_available_font().width(marker_text); + auto text_width = marker.first_available_font().width(marker_text.code_points()); marker_state.set_content_width(image_width + CSSPixels::nearest_value_for(text_width)); } diff --git a/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp b/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp index fc812051431..e722b3bd049 100644 --- a/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp +++ b/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp @@ -26,25 +26,25 @@ ListItemMarkerBox::ListItemMarkerBox(DOM::Document& document, CSS::ListStyleType case CSS::ListStyleType::DisclosureOpen: break; case CSS::ListStyleType::Decimal: - m_text = ByteString::formatted("{}.", m_index); + m_text = MUST(String::formatted("{}.", m_index)); break; case CSS::ListStyleType::DecimalLeadingZero: // This is weird, but in accordance to spec. - m_text = m_index < 10 ? ByteString::formatted("0{}.", m_index) : ByteString::formatted("{}.", m_index); + m_text = m_index < 10 ? MUST(String::formatted("0{}.", m_index)) : MUST(String::formatted("{}.", m_index)); break; case CSS::ListStyleType::LowerAlpha: case CSS::ListStyleType::LowerLatin: - m_text = ByteString::bijective_base_from(m_index - 1).to_lowercase(); + m_text = String::bijective_base_from(m_index - 1, String::Case::Lower); break; case CSS::ListStyleType::UpperAlpha: case CSS::ListStyleType::UpperLatin: - m_text = ByteString::bijective_base_from(m_index - 1); + m_text = String::bijective_base_from(m_index - 1, String::Case::Upper); break; case CSS::ListStyleType::LowerRoman: - m_text = ByteString::roman_number_from(m_index).to_lowercase(); + m_text = String::roman_number_from(m_index, String::Case::Lower); break; case CSS::ListStyleType::UpperRoman: - m_text = ByteString::roman_number_from(m_index); + m_text = String::roman_number_from(m_index, String::Case::Upper); break; case CSS::ListStyleType::None: break; diff --git a/Libraries/LibWeb/Layout/ListItemMarkerBox.h b/Libraries/LibWeb/Layout/ListItemMarkerBox.h index 7a9609ad763..92ed3f9c8db 100644 --- a/Libraries/LibWeb/Layout/ListItemMarkerBox.h +++ b/Libraries/LibWeb/Layout/ListItemMarkerBox.h @@ -1,6 +1,7 @@ /* * Copyright (c) 2018-2022, Andreas Kling * Copyright (c) 2021, Tobias Christiansen + * Copyright (c) 2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ @@ -19,7 +20,7 @@ public: explicit ListItemMarkerBox(DOM::Document&, CSS::ListStyleType, CSS::ListStylePosition, size_t index, GC::Ref); virtual ~ListItemMarkerBox() override; - Optional const& text() const { return m_text; } + Optional const& text() const { return m_text; } virtual GC::Ptr create_paintable() const override; @@ -34,7 +35,7 @@ private: CSS::ListStylePosition m_list_style_position { CSS::ListStylePosition::Outside }; size_t m_index; - Optional m_text {}; + Optional m_text {}; }; template<> diff --git a/Libraries/LibWeb/Painting/MarkerPaintable.cpp b/Libraries/LibWeb/Painting/MarkerPaintable.cpp index f030ec8f775..39408210df4 100644 --- a/Libraries/LibWeb/Painting/MarkerPaintable.cpp +++ b/Libraries/LibWeb/Painting/MarkerPaintable.cpp @@ -117,7 +117,7 @@ void MarkerPaintable::paint(PaintContext& context, PaintPhase phase) const break; // FIXME: This should use proper text layout logic! // This does not line up with the text in the
  • element which looks very sad :( - context.display_list_recorder().draw_text(device_enclosing.to_type(), MUST(String::from_byte_string(*text)), layout_box().scaled_font(context), Gfx::TextAlignment::Center, color); + context.display_list_recorder().draw_text(device_enclosing.to_type(), *text, layout_box().scaled_font(context), Gfx::TextAlignment::Center, color); break; } case CSS::ListStyleType::None: