From e15dd3c22ab6ac89e1adbc47f2339bb8cca7a358 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Fri, 23 Aug 2024 17:02:55 -0600 Subject: [PATCH] LibGfx: Use new AK+Swift extensions to simplify parseHexString --- Userland/Libraries/LibGfx/CMakeLists.txt | 2 ++ Userland/Libraries/LibGfx/Color.cpp | 7 +------ Userland/Libraries/LibGfx/Color.swift | 8 ++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Userland/Libraries/LibGfx/CMakeLists.txt b/Userland/Libraries/LibGfx/CMakeLists.txt index 6034cc41cb7..6662c923486 100644 --- a/Userland/Libraries/LibGfx/CMakeLists.txt +++ b/Userland/Libraries/LibGfx/CMakeLists.txt @@ -123,6 +123,7 @@ if (ENABLE_SWIFT) Color.swift ) target_compile_definitions(LibGfx PRIVATE LIBGFX_USE_SWIFT) + target_link_libraries(LibGfx PRIVATE AK) set_target_properties(LibGfx PROPERTIES Swift_MODULE_NAME "SwiftLibGfx") # FIXME: These should be pulled automatically from interface compile options for the target @@ -131,6 +132,7 @@ if (ENABLE_SWIFT) -Xcc -ivfsoverlay${Lagom_BINARY_DIR}/AK/vfs_overlay.yaml ) get_target_property(LIBGFX_NATIVE_DIRS LibGfx INCLUDE_DIRECTORIES) + list(APPEND LIBGFX_NATIVE_DIRS ${CMAKE_Swift_MODULE_DIRECTORY}) _swift_generate_cxx_header(LibGfx "LibGfx-Swift.h" SEARCH_PATHS ${LIBGFX_NATIVE_DIRS} COMPILE_OPTIONS ${VFS_OVERLAY_OPTIONS} diff --git a/Userland/Libraries/LibGfx/Color.cpp b/Userland/Libraries/LibGfx/Color.cpp index 9417e8d6899..c3eebf21ec3 100644 --- a/Userland/Libraries/LibGfx/Color.cpp +++ b/Userland/Libraries/LibGfx/Color.cpp @@ -268,14 +268,9 @@ Optional Color::from_named_css_color_string(StringView string) } #if defined(LIBGFX_USE_SWIFT) -static swift::String to_swift_string(StringView string) -{ - return swift::String(std::string(string.characters_without_null_termination(), string.length())); -} - static Optional hex_string_to_color(StringView string) { - auto color = SwiftLibGfx::parseHexString(to_swift_string(string)); + auto color = SwiftLibGfx::parseHexString(string); if (color.getCount() == 0) return {}; return color[0]; diff --git a/Userland/Libraries/LibGfx/Color.swift b/Userland/Libraries/LibGfx/Color.swift index 1d6862a88a3..e3492b58628 100644 --- a/Userland/Libraries/LibGfx/Color.swift +++ b/Userland/Libraries/LibGfx/Color.swift @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -import AK +import SwiftAK import LibGfx // FIXME: Do this without extending String with an index operation that was explicitly deleted :^) @@ -32,7 +32,11 @@ private func hexNibblesToUInt8(_ nib1: Character, _ nib2: Character) -> UInt8? { } // FIXME: Return Gfx.Color? When swift ABI bug is fixed -public func parseHexString(_ string: Swift.String) -> [Gfx.Color] { +public func parseHexString(_ rawString: AK.StringView) -> [Gfx.Color] { + guard let string = Swift.String(rawString) else { + return [] + } + assert(string.hasPrefix("#")) switch string.count {