Simply rust Slice construction in CFX_Face. Rust has a constructor template for any container providing data() and size(), and a deduction guide based upon the return type of data(), so omit a lot of explicit type information in these calls. The constructor is explicit, however, otherwise a span could be passed transparently. Change-Id: I0757bd281fe4e7d1d8e8c7af206baa0ad5bf752c Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/148391 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/cfx_face.cpp b/core/fxge/cfx_face.cpp index 9bdb80f..9a7f7e9 100644 --- a/core/fxge/cfx_face.cpp +++ b/core/fxge/cfx_face.cpp
@@ -375,8 +375,8 @@ } #if defined(PDF_ENABLE_FONTATIONS) pdfium::span<const uint8_t> span = font_stream->span(); - auto skrifa_font = std::make_unique<SkrifaFontHolder>(skrifa::new_ps_font( - rust::Slice<const uint8_t>(span.data(), span.size()))); + auto skrifa_font = std::make_unique<SkrifaFontHolder>( + skrifa::new_ps_font(rust::Slice(span))); #endif // Private ctor. @@ -462,8 +462,7 @@ #if defined(PDF_ENABLE_SKIA_TYPEFACE_CHECKS) #if defined(PDF_ENABLE_FONTATIONS) pdfium::span<const uint8_t> data = GetData(); - rust::String skrifa_result = skrifa::get_style_name( - rust::Slice<const uint8_t>(data.data(), data.size())); + rust::String skrifa_result = skrifa::get_style_name(rust::Slice(data)); CHECK_EQ(ft_result.IsEmpty(), skrifa_result.empty()); if (!ft_result.IsEmpty() && !skrifa_result.empty()) { CHECK_EQ(ft_result, ByteString(skrifa_result.c_str())); @@ -587,8 +586,7 @@ std::optional<std::array<uint32_t, 4>> skrifa_result; pdfium::span<const uint8_t> data = GetData(); skrifa::UnicodeRange range; - if (skrifa::get_os2_unicode_range( - rust::Slice<const uint8_t>(data.data(), data.size()), range)) { + if (skrifa::get_os2_unicode_range(rust::Slice(data), range)) { skrifa_result = std::array<uint32_t, 4>{range.range1, range.range2, range.range3, range.range4}; } @@ -620,8 +618,7 @@ std::optional<std::array<uint32_t, 2>> skrifa_result; pdfium::span<const uint8_t> data = GetData(); skrifa::CodePageRange range; - if (skrifa::get_os2_code_page_range( - rust::Slice<const uint8_t>(data.data(), data.size()), range)) { + if (skrifa::get_os2_code_page_range(rust::Slice(data), range)) { skrifa_result = std::array<uint32_t, 2>{range.range1, range.range2}; } @@ -648,8 +645,7 @@ std::optional<std::array<uint8_t, 2>> skrifa_result; pdfium::span<const uint8_t> data = GetData(); skrifa::Os2Panose panose; - if (skrifa::get_os2_panose( - rust::Slice<const uint8_t>(data.data(), data.size()), panose)) { + if (skrifa::get_os2_panose(rust::Slice(data), panose)) { skrifa_result = std::array<uint8_t, 2>{panose.b0, panose.b1}; } @@ -1015,8 +1011,8 @@ #if defined(PDF_ENABLE_SKIA_TYPEFACE_CHECKS) #if defined(PDF_ENABLE_FONTATIONS) pdfium::span<const uint8_t> data = GetData(); - rust::String skrifa_result = skrifa::get_glyph_name( - rust::Slice<const uint8_t>(data.data(), data.size()), glyph_index); + rust::String skrifa_result = + skrifa::get_glyph_name(rust::Slice(data), glyph_index); CHECK_EQ(ft_result.IsEmpty(), skrifa_result.empty()); if (!ft_result.IsEmpty() && !skrifa_result.empty()) { CHECK_EQ(ft_result, ByteString(skrifa_result.c_str())); @@ -1059,8 +1055,7 @@ #if defined(PDF_ENABLE_SKIA_TYPEFACE_CHECKS) #if defined(PDF_ENABLE_FONTATIONS) pdfium::span<const uint8_t> data = GetData(); - uint32_t skrifa_result = skrifa::get_name_index( - rust::Slice<const uint8_t>(data.data(), data.size()), name); + uint32_t skrifa_result = skrifa::get_name_index(rust::Slice(data), name); CHECK_EQ(ft_result, static_cast<int>(skrifa_result)); #endif // defined(PDF_ENABLE_FONTATIONS) #endif // defined(PDF_ENABLE_SKIA_TYPEFACE_CHECKS) @@ -1234,8 +1229,8 @@ #if defined(PDF_ENABLE_SKIA_TYPEFACE_CHECKS) #if defined(PDF_ENABLE_FONTATIONS) pdfium::span<const uint8_t> data = GetData(); - auto skrifa_result = skrifa::get_char_codes_and_indices( - rust::Slice<const uint8_t>(data.data(), data.size()), max_char); + auto skrifa_result = + skrifa::get_char_codes_and_indices(rust::Slice(data), max_char); CHECK_EQ(results.size(), skrifa_result.size()); for (size_t i = 0; i < results.size(); ++i) { @@ -1323,8 +1318,7 @@ bool skrifa_result = false; uint16_t fs_type = 0; pdfium::span<const uint8_t> data = GetData(); - if (skrifa::get_os2_fs_type( - rust::Slice<const uint8_t>(data.data(), data.size()), fs_type)) { + if (skrifa::get_os2_fs_type(rust::Slice(data), fs_type)) { skrifa_result = (fs_type & (fxcrt::to_underlying(skrifa::FsType::RestrictedLicenseEmbedding) |