From 2dc3dff43519d33cde8fef029c0b069892284742 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 11:56:38 +0800 Subject: [PATCH 01/12] Add OPENRENDERBOX_CF_CGTYPE support --- AGENTS.md | 7 +++++++ Package.resolved | 2 +- Package.swift | 13 +++++++++++++ Sources/OpenRenderBox/Path/NestedCallbacks.cpp | 3 +++ Sources/OpenRenderBox/Path/ORBPath.cpp | 4 ++++ Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp | 4 ++++ Sources/OpenRenderBox/Path/ORBPathStorage.cpp | 4 ++++ Sources/OpenRenderBox/Path/Storage.cpp | 4 ++++ .../OpenRenderBox/include/OpenRenderBox/CFCGTypes.h | 4 ++++ .../OpenRenderBox/include/OpenRenderBox/ORBPath.h | 5 +++++ .../include/OpenRenderBox/ORBPathCallbacks.h | 4 ++++ .../include/OpenRenderBox/ORBPathStorage.h | 3 +++ .../OpenRenderBoxCxx/Path/NestedCallbacks.hpp | 3 +++ .../include/OpenRenderBoxCxx/Path/Storage.hpp | 3 +++ 14 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..e176848 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,7 @@ +# OpenRenderBox Agent Guidelines + +## Preprocessor Definition Naming Conventions + +- **C/C++ definitions**: Use `ORB_` prefix (e.g., `ORB_SWIFT_NAME`, `ORB_TARGET_OS_DARWIN`) +- **Package.swift injected definitions**: Use `OPENRENDERBOX_` prefix (e.g., `OPENRENDERBOX_CF_CGTYPE`, `OPENRENDERBOX_RENDERBOX`) + diff --git a/Package.resolved b/Package.resolved index 1b961f6..aa1bf71 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "690a05887e434b4960ff5a0cb3c6ff7828728045e61fb5fcc5094b76e1d28222", + "originHash" : "18c389c9f7451cbb958b8e8efc3a18da78f0d31d95c30424a5fde77d4fd1ee21", "pins" : [ { "identity" : "darwinprivateframeworks", diff --git a/Package.swift b/Package.swift index ff8d04f..9aaf0f1 100644 --- a/Package.swift +++ b/Package.swift @@ -155,6 +155,13 @@ let compatibilityTestCondition = envBoolValue("COMPATIBILITY_TEST", default: fal let useLocalDeps = envBoolValue("USE_LOCAL_DEPS") let renderBoxCondtion = envBoolValue("RENDERBOX", default: buildForDarwinPlatform && !isSPIBuild) +/// CGFloat and CGRect def in CFCGTypes.h will conflict with Foundation's CGSize/CGRect def on Linux. +/// macOS: true -> no issue +/// macOS: false -> use Swift implementation with OpenCoreGraphics Swift CGPath +/// Linux: true + No CGPathRef support in ORBPath -> confilict with Foundation def +/// Linux: false -> use Swift implementation with OpenCoreGraphics Swift CGPath +let cfCGType = envBoolValue("CF_CGTYPES", default: buildForDarwinPlatform) + // MARK: - Shared Settings var sharedCSettings: [CSetting] = [ @@ -176,6 +183,12 @@ if libraryEvolutionCondition { sharedSwiftSettings.append(.unsafeFlags(["-enable-library-evolution", "-no-verify-emitted-module-interface"])) } +if cfCGType { + sharedCSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) + sharedCxxSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) + sharedSwiftSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) +} + // MARK: - Extension extension Target { diff --git a/Sources/OpenRenderBox/Path/NestedCallbacks.cpp b/Sources/OpenRenderBox/Path/NestedCallbacks.cpp index 00e8d88..2714363 100644 --- a/Sources/OpenRenderBox/Path/NestedCallbacks.cpp +++ b/Sources/OpenRenderBox/Path/NestedCallbacks.cpp @@ -4,6 +4,8 @@ // TODO: Implement NestedCallbacks +#if OPENRENDERBOX_CF_CGTYPE + #include #include #if ORB_TARGET_OS_DARWIN @@ -303,3 +305,4 @@ bool NestedCallbacks::first_element(const Storage& storage, void* iterator, size } /* namespace Path */ } /* namespace ORB */ +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/Path/ORBPath.cpp b/Sources/OpenRenderBox/Path/ORBPath.cpp index 43f3de0..7bc113b 100644 --- a/Sources/OpenRenderBox/Path/ORBPath.cpp +++ b/Sources/OpenRenderBox/Path/ORBPath.cpp @@ -5,6 +5,8 @@ // Created by Kyle on 2025/3/25. // +#if OPENRENDERBOX_CF_CGTYPE + #include #include #include @@ -255,3 +257,5 @@ bool ORBPathContainsPoints(ORBPath path, uint64_t count, const CGPoint *points, return false; } #endif /* ORB_TARGET_OS_DARWIN */ + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp b/Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp index fbd7e06..ae45564 100644 --- a/Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp +++ b/Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp @@ -5,6 +5,8 @@ // Audited for 6.5.1 // Status: Complete +#if OPENRENDERBOX_CF_CGTYPE + #include #include @@ -73,3 +75,5 @@ const ORBPathCallbacks ORBPathCGPathCallbacks = { }; #endif /* ORB_TARGET_OS_DARWIN */ + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/Path/ORBPathStorage.cpp b/Sources/OpenRenderBox/Path/ORBPathStorage.cpp index 4b76466..b26d2f8 100644 --- a/Sources/OpenRenderBox/Path/ORBPathStorage.cpp +++ b/Sources/OpenRenderBox/Path/ORBPathStorage.cpp @@ -2,6 +2,8 @@ // ORBPathStorage.cpp // OpenRenderBox +#if OPENRENDERBOX_CF_CGTYPE + #include #include #include @@ -74,3 +76,5 @@ CGPathRef ORBPathStorageGetCGPath(ORBPathStorageRef storage) { return storage->storage.cgpath(); } #endif + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/Path/Storage.cpp b/Sources/OpenRenderBox/Path/Storage.cpp index 5aae837..ab20a3f 100644 --- a/Sources/OpenRenderBox/Path/Storage.cpp +++ b/Sources/OpenRenderBox/Path/Storage.cpp @@ -2,6 +2,8 @@ // Storage.cpp // OpenRenderBox +#if OPENRENDERBOX_CF_CGTYPE + #include #include #include @@ -152,3 +154,5 @@ CGPathRef Storage::cgpath() const ORB_NOEXCEPT { } /* Path */ } /* ORB */ + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h b/Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h index 1ca3d8d..b3cabb0 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h @@ -1,3 +1,5 @@ +#if OPENRENDERBOX_CF_CGTYPE + /* CFCGTypes.h Copyright (c) 1998-2021, Apple Inc. and the Swift project authors @@ -122,3 +124,5 @@ struct CGAffineTransformComponents { }; #endif /* ! __COREFOUNDATION_CFCGTYPES__ */ + +#endif /* OPENRENDERBOX_CF_CGTYPE */ \ No newline at end of file diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h index 67c385e..2d6224d 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h @@ -4,7 +4,10 @@ #pragma once +#if OPENRENDERBOX_CF_CGTYPE + #include + #if ORB_TARGET_OS_DARWIN #include #endif @@ -112,3 +115,5 @@ bool ORBPathContainsPoints(ORBPath path, uint64_t count, const CGPoint *points, ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h index c2fc4d3..c61a036 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h @@ -7,6 +7,8 @@ #pragma once +#if OPENRENDERBOX_CF_CGTYPE + #include #include #include @@ -106,3 +108,5 @@ const ORBPathCallbacks ORBPathCGPathCallbacks ORB_SWIFT_NAME(ORBPathCallbacks.cg ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END + +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h index aa378a4..4c2f6f2 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h @@ -7,6 +7,8 @@ #pragma once +#if OPENRENDERBOX_CF_CGTYPE + #include #include #if ORB_TARGET_OS_DARWIN @@ -60,3 +62,4 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp index f117434..9f20dd8 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp @@ -4,6 +4,8 @@ #pragma once +#if OPENRENDERBOX_CF_CGTYPE + #include #include @@ -52,3 +54,4 @@ static_assert(offsetof(NestedCallbacks, nestedIndex) == 0x60, "nestedIndex offse ORB_ASSUME_NONNULL_END +#endif /* OPENRENDERBOX_CF_CGTYPE */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp index c2d53bb..563337f 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp @@ -4,6 +4,8 @@ #pragma once +#if OPENRENDERBOX_CF_CGTYPE + #include #include #include @@ -246,3 +248,4 @@ struct ORBPathStorage { ORB_ASSUME_NONNULL_END +#endif /* OPENRENDERBOX_CF_CGTYPE */ From a98d6721d90fddd47b07bd02dfb0889665c9b72a Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 12:20:46 +0800 Subject: [PATCH 02/12] Update package layout --- Package.resolved | 2 +- Package.swift | 22 ++++++++++++++----- Sources/OpenRenderBox/Export.swift | 5 +++++ .../Path/NestedCallbacks.cpp | 0 .../Path/ORBPath.cpp | 0 .../Path/ORBPathCallbacks.cpp | 0 .../Path/ORBPathStorage.cpp | 0 .../Path/Storage.cpp | 0 .../UUID/ORBUUID.mm | 0 .../Util/assert.cpp | 0 .../Util/log.cpp | 0 .../Version/ORBVersion.c | 0 .../include/OpenRenderBox/CFCGTypes.h | 0 .../include/OpenRenderBox/ORBBase.h | 0 .../include/OpenRenderBox/ORBPath.h | 0 .../include/OpenRenderBox/ORBPathCallbacks.h | 0 .../include/OpenRenderBox/ORBPathStorage.h | 0 .../include/OpenRenderBox/ORBSwiftSupport.h | 0 .../OpenRenderBox/ORBTargetConditionals.h | 0 .../include/OpenRenderBox/ORBUUID.h | 0 .../include/OpenRenderBox/ORBVersion.h | 0 .../include/OpenRenderBox/OpenRenderBox.h | 0 .../OpenRenderBoxCxx/Path/NestedCallbacks.hpp | 0 .../include/OpenRenderBoxCxx/Path/Storage.hpp | 0 .../include/OpenRenderBoxCxx/Util/assert.hpp | 0 .../include/OpenRenderBoxCxx/Util/log.hpp | 0 .../Vector/realloc_vector.hpp | 0 .../OpenRenderBoxCxx/Vector/vector.hpp | 0 .../OpenRenderBoxCxx/Vector/vector.tpp | 0 .../include/module.modulemap | 7 +++--- .../Shims.swift | 1 + .../Path/PathTests.swift | 0 .../README.md | 0 .../Util/LogTests.swift | 0 34 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 Sources/OpenRenderBox/Export.swift rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Path/NestedCallbacks.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Path/ORBPath.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Path/ORBPathCallbacks.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Path/ORBPathStorage.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Path/Storage.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/UUID/ORBUUID.mm (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Util/assert.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Util/log.cpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/Version/ORBVersion.c (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/CFCGTypes.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBBase.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBPath.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBPathCallbacks.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBPathStorage.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBSwiftSupport.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBTargetConditionals.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBUUID.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/ORBVersion.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBox/OpenRenderBox.h (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Path/Storage.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Util/assert.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Util/log.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Vector/realloc_vector.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Vector/vector.hpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/OpenRenderBoxCxx/Vector/vector.tpp (100%) rename Sources/{OpenRenderBox => OpenRenderBoxCxx}/include/module.modulemap (87%) rename Tests/{OpenRenderBoxCxxTests => OpenRenderBoxTests}/Path/PathTests.swift (100%) rename Tests/{OpenRenderBoxCxxTests => OpenRenderBoxTests}/README.md (100%) rename Tests/{OpenRenderBoxCxxTests => OpenRenderBoxTests}/Util/LogTests.swift (100%) diff --git a/Package.resolved b/Package.resolved index aa1bf71..7dda027 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "18c389c9f7451cbb958b8e8efc3a18da78f0d31d95c30424a5fde77d4fd1ee21", + "originHash" : "c75a990a7c0a9789116d0b405f497d506981512b30017bb1410c22e2f310cff9", "pins" : [ { "identity" : "darwinprivateframeworks", diff --git a/Package.swift b/Package.swift index 9aaf0f1..8521d25 100644 --- a/Package.swift +++ b/Package.swift @@ -212,6 +212,14 @@ extension [Platform] { let openRenderBoxTarget = Target.target( name: "OpenRenderBox", + dependencies: ["OpenRenderBoxCxx"], + swiftSettings: sharedSwiftSettings +) +// FIXME: Merge into one target +// OpenRenderBox is a C++ & Swift mix target. +// The SwiftPM support for such usage is still in progress. +let openRenderBoxCxxTarget = Target.target( + name: "OpenRenderBoxCxx", cSettings: sharedCSettings, cxxSettings: sharedCxxSettings ) @@ -219,13 +227,14 @@ let openRenderBoxShimsTarget = Target.target( name: "OpenRenderBoxShims", swiftSettings: sharedSwiftSettings ) -let openRenderBoxCxxTestTarget = Target.testTarget( - name: "OpenRenderBoxCxxTests", +let openRenderBoxTestsTarget = Target.testTarget( + name: "OpenRenderBoxTests", dependencies: [ "OpenRenderBox", ], exclude: ["README.md"], cSettings: sharedCSettings + [.define("SWIFT_TESTING")], + cxxSettings: sharedCxxSettings + [.define("SWIFT_TESTING")], swiftSettings: sharedSwiftSettings + [.interoperabilityMode(.Cxx)] ) let openRenderBoxCompatibilityTestTarget = Target.testTarget( @@ -234,6 +243,8 @@ let openRenderBoxCompatibilityTestTarget = Target.testTarget( .product(name: "RealModule", package: "swift-numerics"), ], exclude: ["README.md"], + cSettings: sharedCSettings + [.define("SWIFT_TESTING")], + cxxSettings: sharedCxxSettings + [.define("SWIFT_TESTING")], swiftSettings: sharedSwiftSettings ) @@ -252,16 +263,17 @@ default: let package = Package( name: "OpenRenderBox", products: [ - .library(name: "OpenRenderBox", type: libraryType, targets: ["OpenRenderBox"]), + .library(name: "OpenRenderBox", type: libraryType, targets: ["OpenRenderBox", "OpenRenderBoxCxx"]), .library(name: "OpenRenderBoxShims", type: libraryType, targets: ["OpenRenderBoxShims"]), ], dependencies: [ - .package(url: "https://github.com/apple/swift-numerics", from: "1.0.2"), + .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1"), ], targets: [ openRenderBoxTarget, + openRenderBoxCxxTarget, openRenderBoxShimsTarget, - openRenderBoxCxxTestTarget, + openRenderBoxTestsTarget, openRenderBoxCompatibilityTestTarget, ], cxxLanguageStandard: .cxx20 diff --git a/Sources/OpenRenderBox/Export.swift b/Sources/OpenRenderBox/Export.swift new file mode 100644 index 0000000..d29d410 --- /dev/null +++ b/Sources/OpenRenderBox/Export.swift @@ -0,0 +1,5 @@ +// +// Export.swift +// OpenRenderBox + +@_exported public import OpenRenderBoxCxx diff --git a/Sources/OpenRenderBox/Path/NestedCallbacks.cpp b/Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp similarity index 100% rename from Sources/OpenRenderBox/Path/NestedCallbacks.cpp rename to Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp diff --git a/Sources/OpenRenderBox/Path/ORBPath.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPath.cpp similarity index 100% rename from Sources/OpenRenderBox/Path/ORBPath.cpp rename to Sources/OpenRenderBoxCxx/Path/ORBPath.cpp diff --git a/Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp similarity index 100% rename from Sources/OpenRenderBox/Path/ORBPathCallbacks.cpp rename to Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp diff --git a/Sources/OpenRenderBox/Path/ORBPathStorage.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp similarity index 100% rename from Sources/OpenRenderBox/Path/ORBPathStorage.cpp rename to Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp diff --git a/Sources/OpenRenderBox/Path/Storage.cpp b/Sources/OpenRenderBoxCxx/Path/Storage.cpp similarity index 100% rename from Sources/OpenRenderBox/Path/Storage.cpp rename to Sources/OpenRenderBoxCxx/Path/Storage.cpp diff --git a/Sources/OpenRenderBox/UUID/ORBUUID.mm b/Sources/OpenRenderBoxCxx/UUID/ORBUUID.mm similarity index 100% rename from Sources/OpenRenderBox/UUID/ORBUUID.mm rename to Sources/OpenRenderBoxCxx/UUID/ORBUUID.mm diff --git a/Sources/OpenRenderBox/Util/assert.cpp b/Sources/OpenRenderBoxCxx/Util/assert.cpp similarity index 100% rename from Sources/OpenRenderBox/Util/assert.cpp rename to Sources/OpenRenderBoxCxx/Util/assert.cpp diff --git a/Sources/OpenRenderBox/Util/log.cpp b/Sources/OpenRenderBoxCxx/Util/log.cpp similarity index 100% rename from Sources/OpenRenderBox/Util/log.cpp rename to Sources/OpenRenderBoxCxx/Util/log.cpp diff --git a/Sources/OpenRenderBox/Version/ORBVersion.c b/Sources/OpenRenderBoxCxx/Version/ORBVersion.c similarity index 100% rename from Sources/OpenRenderBox/Version/ORBVersion.c rename to Sources/OpenRenderBoxCxx/Version/ORBVersion.c diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/CFCGTypes.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBBase.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBBase.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBBase.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBBase.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBPathCallbacks.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBSwiftSupport.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBSwiftSupport.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBSwiftSupport.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBSwiftSupport.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBTargetConditionals.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBTargetConditionals.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBTargetConditionals.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBTargetConditionals.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBUUID.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBUUID.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBVersion.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBVersion.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/OpenRenderBox.h similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox.h rename to Sources/OpenRenderBoxCxx/include/OpenRenderBox/OpenRenderBox.h diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/Storage.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/assert.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Util/assert.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/assert.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Util/assert.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Util/log.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Util/log.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/realloc_vector.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/realloc_vector.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/realloc_vector.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/realloc_vector.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/vector.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/vector.hpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/vector.hpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/vector.hpp diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/vector.tpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/vector.tpp similarity index 100% rename from Sources/OpenRenderBox/include/OpenRenderBoxCxx/Vector/vector.tpp rename to Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Vector/vector.tpp diff --git a/Sources/OpenRenderBox/include/module.modulemap b/Sources/OpenRenderBoxCxx/include/module.modulemap similarity index 87% rename from Sources/OpenRenderBox/include/module.modulemap rename to Sources/OpenRenderBoxCxx/include/module.modulemap index ffce96a..ff7a7d6 100644 --- a/Sources/OpenRenderBox/include/module.modulemap +++ b/Sources/OpenRenderBoxCxx/include/module.modulemap @@ -1,10 +1,9 @@ -module OpenRenderBox { - umbrella header "OpenRenderBox/OpenRenderBox.h" +module OpenRenderBoxCxx { export * } -module OpenRenderBoxCxx { - requires cplusplus +module OpenRenderBoxCxx.C { + umbrella header "OpenRenderBox/OpenRenderBox.h" export * } diff --git a/Tests/OpenRenderBoxCompatibilityTests/Shims.swift b/Tests/OpenRenderBoxCompatibilityTests/Shims.swift index 7f51306..15e362b 100644 --- a/Tests/OpenRenderBoxCompatibilityTests/Shims.swift +++ b/Tests/OpenRenderBoxCompatibilityTests/Shims.swift @@ -9,5 +9,6 @@ public typealias ORBPath = RBPath public let compatibilityTestEnabled = true #else @_exported import OpenRenderBox +@_exported import OpenRenderBoxCxx public let compatibilityTestEnabled = false #endif diff --git a/Tests/OpenRenderBoxCxxTests/Path/PathTests.swift b/Tests/OpenRenderBoxTests/Path/PathTests.swift similarity index 100% rename from Tests/OpenRenderBoxCxxTests/Path/PathTests.swift rename to Tests/OpenRenderBoxTests/Path/PathTests.swift diff --git a/Tests/OpenRenderBoxCxxTests/README.md b/Tests/OpenRenderBoxTests/README.md similarity index 100% rename from Tests/OpenRenderBoxCxxTests/README.md rename to Tests/OpenRenderBoxTests/README.md diff --git a/Tests/OpenRenderBoxCxxTests/Util/LogTests.swift b/Tests/OpenRenderBoxTests/Util/LogTests.swift similarity index 100% rename from Tests/OpenRenderBoxCxxTests/Util/LogTests.swift rename to Tests/OpenRenderBoxTests/Util/LogTests.swift From 0a1438ea1d3dbf4c6a3086b861bddcdf8d676d35 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 12:28:34 +0800 Subject: [PATCH 03/12] Add empty Swift stub for Linux --- Package.resolved | 11 +- Package.swift | 6 +- Sources/OpenRenderBox/Path/RBPath.swift | 149 ++++++++++++++++ .../OpenRenderBox/Path/RBPathCallbacks.swift | 159 ++++++++++++++++++ .../OpenRenderBox/Path/RBPathStorage.swift | 59 +++++++ Sources/OpenRenderBox/Util/Logging.swift | 9 + 6 files changed, 391 insertions(+), 2 deletions(-) create mode 100644 Sources/OpenRenderBox/Path/RBPath.swift create mode 100644 Sources/OpenRenderBox/Path/RBPathCallbacks.swift create mode 100644 Sources/OpenRenderBox/Path/RBPathStorage.swift create mode 100644 Sources/OpenRenderBox/Util/Logging.swift diff --git a/Package.resolved b/Package.resolved index 7dda027..bf84b2d 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "c75a990a7c0a9789116d0b405f497d506981512b30017bb1410c22e2f310cff9", + "originHash" : "612ee23044edcafffa374eb027f9ee9f823a69beafe4e2b02cbc888a5b7f9390", "pins" : [ { "identity" : "darwinprivateframeworks", @@ -10,6 +10,15 @@ "revision" : "db8c67d76c1c95d70389e6aa8d1a26ec6720adda" } }, + { + "identity" : "opencoregraphics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", + "state" : { + "branch" : "main", + "revision" : "cd89c292c4ed4c25d9468a12d9490cc18304ff37" + } + }, { "identity" : "swift-numerics", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index 8521d25..70f9354 100644 --- a/Package.swift +++ b/Package.swift @@ -212,7 +212,10 @@ extension [Platform] { let openRenderBoxTarget = Target.target( name: "OpenRenderBox", - dependencies: ["OpenRenderBoxCxx"], + dependencies: [ + "OpenRenderBoxCxx", + .product(name: "OpenCoreGraphics", package: "OpenCoreGraphics"), + ], swiftSettings: sharedSwiftSettings ) // FIXME: Merge into one target @@ -268,6 +271,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1"), + .package(url: "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", branch: "main"), ], targets: [ openRenderBoxTarget, diff --git a/Sources/OpenRenderBox/Path/RBPath.swift b/Sources/OpenRenderBox/Path/RBPath.swift new file mode 100644 index 0000000..a903205 --- /dev/null +++ b/Sources/OpenRenderBox/Path/RBPath.swift @@ -0,0 +1,149 @@ +// +// RBPath.swift +// OpenRenderBox + +#if !OPENRENDERBOX_CF_CGTYPE +import OpenCoreGraphics + +public typealias RBPathApplyCallback = @convention(c) (UnsafeMutableRawPointer, RBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool + +public struct RBPath { + public var storage: RBPath.Storage + public var callbacks: UnsafePointer + + public init(storage: RBPath.Storage, callbacks: UnsafePointer) { + self.storage = storage + self.callbacks = callbacks + } +} + +// MARK: - Element + +extension RBPath { + /// Path element type for path enumeration + public enum Element: Int32, @unchecked Sendable { + case moveToPoint = 0 + case addLineToPoint = 1 + case addQuadCurveToPoint = 2 + case addCurveToPoint = 3 + case closeSubpath = 4 + case rect = 5 + case roundedRect = 6 + case fixedRoundedRectCircular = 8 + case fixedRoundedRectContinuous = 9 + case invalid = 25 + } +} + +// MARK: - RoundedCornerStyle + +extension RBPath { + /// Defines the shape of a rounded rectangle's corners. + public enum RoundedCornerStyle: Int32, @unchecked Sendable { + /// Quarter-circle rounded rect corners. + case circular = 0 + /// Continuous curvature rounded rect corners. + case continuous = 1 + } +} + +// MARK: - Storage + +extension RBPath { + public struct Storage: Hashable, Equatable, RawRepresentable, @unchecked Sendable { + public var rawValue: OpaquePointer + + public init(_ rawValue: OpaquePointer) { + self.rawValue = rawValue + } + + public init(rawValue: OpaquePointer) { + self.rawValue = rawValue + } + } +} + +// MARK: - Static Properties + +extension RBPath { + /// Global empty path (storage = null, callbacks = &RBPathEmptyCallbacks) + public static var empty: RBPath { + _openRenderBoxUnimplementedFailure() + } + + /// Global null path (storage = 0x1, callbacks = &RBPathEmptyCallbacks) + public static var null: RBPath { + _openRenderBoxUnimplementedFailure() + } +} + +// MARK: - Memory Management + +extension RBPath { + public func retain() { + _openRenderBoxUnimplementedFailure() + } + + public func release() { + _openRenderBoxUnimplementedFailure() + } +} + +// MARK: - Initializers + +extension RBPath { + public init(cgPath: CGPath) { + _openRenderBoxUnimplementedFailure() + } + + public init(rect: CGRect, transform: UnsafePointer?) { + _openRenderBoxUnimplementedFailure() + } + + public init(ellipseIn rect: CGRect, transform: UnsafePointer?) { + _openRenderBoxUnimplementedFailure() + } + + public init(roundedRect rect: CGRect, cornerWidth: CGFloat, cornerHeight: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { + _openRenderBoxUnimplementedFailure() + } + + public init(roundedRect rect: CGRect, topLeftRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat, topRightRadius: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { + _openRenderBoxUnimplementedFailure() + } +} + +// MARK: - Properties + +extension RBPath { + public var isEmpty: Bool { + _openRenderBoxUnimplementedFailure() + } + + public var cgPath: CGPath { + _openRenderBoxUnimplementedFailure() + } +} + +// MARK: - Methods + +extension RBPath { + public func apply(info: UnsafeMutableRawPointer, callback: RBPathApplyCallback?) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public func isEqual(to rhs: RBPath) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public func contains(point: CGPoint, eoFill: Bool) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public func containsPoints(count: UInt64, points: UnsafePointer, eoFill: Bool, transform: UnsafePointer?) -> Bool { + _openRenderBoxUnimplementedFailure() + } +} + +#endif + diff --git a/Sources/OpenRenderBox/Path/RBPathCallbacks.swift b/Sources/OpenRenderBox/Path/RBPathCallbacks.swift new file mode 100644 index 0000000..8774b94 --- /dev/null +++ b/Sources/OpenRenderBox/Path/RBPathCallbacks.swift @@ -0,0 +1,159 @@ +// +// RBPathCallbacks.swift +// OpenRenderBox + +#if !OPENRENDERBOX_CF_CGTYPE +import OpenCoreGraphics + +/// Flags for path callbacks +public struct RBPathCallbacksFlags { + public var unknown0: UInt8 + public var unknown1: UInt8 + public var isExtended: Bool + public var padding: (UInt8, UInt8, UInt8, UInt8, UInt8) + + public init() { + self.unknown0 = 0 + self.unknown1 = 0 + self.isExtended = false + self.padding = (0, 0, 0, 0, 0) + } + + public init(unknown0: UInt8, unknown1: UInt8, isExtended: Bool, padding: (UInt8, UInt8, UInt8, UInt8, UInt8)) { + self.unknown0 = unknown0 + self.unknown1 = unknown1 + self.isExtended = isExtended + self.padding = padding + } +} + +// MARK: - RBPath.Callbacks + +extension RBPath { + /// Callbacks structure for path operations + /// This allows different path storage types (CGPath, custom storage, etc.) to provide their own implementations + public struct Callbacks { + public var flags: RBPathCallbacksFlags + public var retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)? + public var release: (@convention(c) (UnsafeRawPointer) -> Void)? + public var apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)? + public var isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> Bool)? + public var isEmpty: (@convention(c) (UnsafeRawPointer) -> Bool)? + public var isSingleElement: (@convention(c) (UnsafeRawPointer) -> Bool)? + public var bezierOrder: (@convention(c) (UnsafeRawPointer) -> UInt32)? + public var boundingRect: (@convention(c) (UnsafeRawPointer) -> CGRect)? + public var cgPath: (@convention(c) (UnsafeRawPointer) -> Unmanaged?)? + public var next: (@convention(c) (UnsafeRawPointer) -> UnsafePointer?)? + + public init() { + self.flags = RBPathCallbacksFlags() + self.retain = nil + self.release = nil + self.apply = nil + self.isEqual = nil + self.isEmpty = nil + self.isSingleElement = nil + self.bezierOrder = nil + self.boundingRect = nil + self.cgPath = nil + self.next = nil + } + + public init( + flags: RBPathCallbacksFlags, + retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)?, + release: (@convention(c) (UnsafeRawPointer) -> Void)?, + apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)?, + isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> Bool)?, + isEmpty: (@convention(c) (UnsafeRawPointer) -> Bool)?, + isSingleElement: (@convention(c) (UnsafeRawPointer) -> Bool)?, + bezierOrder: (@convention(c) (UnsafeRawPointer) -> UInt32)?, + boundingRect: (@convention(c) (UnsafeRawPointer) -> CGRect)?, + cgPath: (@convention(c) (UnsafeRawPointer) -> Unmanaged?)?, + next: (@convention(c) (UnsafeRawPointer) -> UnsafePointer?)? + ) { + self.flags = flags + self.retain = retain + self.release = release + self.apply = apply + self.isEqual = isEqual + self.isEmpty = isEmpty + self.isSingleElement = isSingleElement + self.bezierOrder = bezierOrder + self.boundingRect = boundingRect + self.cgPath = cgPath + self.next = next + } + } +} + +// MARK: - RBPath.Callbacks Static Properties + +extension RBPath.Callbacks { + /// Global callbacks for CGPath-backed paths + public static var cgPath: RBPath.Callbacks { + _openRenderBoxUnimplementedFailure() + } +} + +// MARK: - RBPath.CallbacksExtended + +extension RBPath { + /// Extended callbacks structure with additional extended callbacks argument + public struct CallbacksExtended { + public var flags: RBPathCallbacksFlags + public var retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)? + public var release: (@convention(c) (UnsafeRawPointer) -> Void)? + public var apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)? + public var isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isEmpty: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isSingleElement: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)? + public var bezierOrder: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UInt32)? + public var boundingRect: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> CGRect)? + public var cgPath: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Unmanaged?)? + public var next: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + + public init() { + self.flags = RBPathCallbacksFlags() + self.retain = nil + self.release = nil + self.apply = nil + self.isEqual = nil + self.isEmpty = nil + self.isSingleElement = nil + self.bezierOrder = nil + self.boundingRect = nil + self.cgPath = nil + self.next = nil + } + + public init( + flags: RBPathCallbacksFlags, + retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)?, + release: (@convention(c) (UnsafeRawPointer) -> Void)?, + apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)?, + isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)?, + isEmpty: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)?, + isSingleElement: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)?, + bezierOrder: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UInt32)?, + boundingRect: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> CGRect)?, + cgPath: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Unmanaged?)?, + next: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + ) { + self.flags = flags + self.retain = retain + self.release = release + self.apply = apply + self.isEqual = isEqual + self.isEmpty = isEmpty + self.isSingleElement = isSingleElement + self.bezierOrder = bezierOrder + self.boundingRect = boundingRect + self.cgPath = cgPath + self.next = next + } + } +} + +#endif + diff --git a/Sources/OpenRenderBox/Path/RBPathStorage.swift b/Sources/OpenRenderBox/Path/RBPathStorage.swift new file mode 100644 index 0000000..0f794b6 --- /dev/null +++ b/Sources/OpenRenderBox/Path/RBPathStorage.swift @@ -0,0 +1,59 @@ +// +// RBPathStorage.swift +// OpenRenderBox + +#if !OPENRENDERBOX_CF_CGTYPE +import OpenCoreGraphics + +extension RBPath.Storage { + public func initialize(capacity: UInt32, source: RBPath.Storage?) { + _openRenderBoxUnimplementedFailure() + } + + public func destroy() { + _openRenderBoxUnimplementedFailure() + } + + public func clear() { + _openRenderBoxUnimplementedFailure() + } + + public func append(element: RBPath.Element, points: UnsafePointer, userInfo: UnsafeRawPointer?) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public func append(path: RBPath) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public func apply(info: UnsafeMutableRawPointer, callback: RBPathApplyCallback?) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public var isEmpty: Bool { + _openRenderBoxUnimplementedFailure() + } + + public func isEqual(to rhs: RBPath.Storage) -> Bool { + _openRenderBoxUnimplementedFailure() + } + + public var isSingleElement: Bool { + _openRenderBoxUnimplementedFailure() + } + + public var bezierOrder: UInt32 { + _openRenderBoxUnimplementedFailure() + } + + public var boundingRect: CGRect { + _openRenderBoxUnimplementedFailure() + } + + public var cgPath: CGPath? { + _openRenderBoxUnimplementedFailure() + } +} + +#endif + diff --git a/Sources/OpenRenderBox/Util/Logging.swift b/Sources/OpenRenderBox/Util/Logging.swift new file mode 100644 index 0000000..092fd6a --- /dev/null +++ b/Sources/OpenRenderBox/Util/Logging.swift @@ -0,0 +1,9 @@ +// +// Logging.swift +// OpenRenderBox + +@_transparent +package func _openRenderBoxUnimplementedFailure(_ function: String = #function, file: StaticString = #fileID, line: UInt = #line) -> Never { + preconditionFailure("Unimplemented yet", file: file, line: line) +} + From 5b602a6aa36047f266a143ffeea8c876906bcb6c Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 12:48:06 +0800 Subject: [PATCH 04/12] Update dependency --- Package.resolved | 4 ++-- Package.swift | 34 ++++++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Package.resolved b/Package.resolved index bf84b2d..0826971 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "612ee23044edcafffa374eb027f9ee9f823a69beafe4e2b02cbc888a5b7f9390", + "originHash" : "9b69631cc841c3300fc55dd1432eb69d5d8b848c2daa4f17329fecb836499020", "pins" : [ { "identity" : "darwinprivateframeworks", @@ -16,7 +16,7 @@ "location" : "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", "state" : { "branch" : "main", - "revision" : "cd89c292c4ed4c25d9468a12d9490cc18304ff37" + "revision" : "e33ce7ccaaf8426350cc5715fc1dd4b9f36fcf91" } }, { diff --git a/Package.swift b/Package.swift index 70f9354..3ae6377 100644 --- a/Package.swift +++ b/Package.swift @@ -216,6 +216,8 @@ let openRenderBoxTarget = Target.target( "OpenRenderBoxCxx", .product(name: "OpenCoreGraphics", package: "OpenCoreGraphics"), ], + cSettings: sharedCSettings, + cxxSettings: sharedCxxSettings, swiftSettings: sharedSwiftSettings ) // FIXME: Merge into one target @@ -271,7 +273,6 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1"), - .package(url: "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", branch: "main"), ], targets: [ openRenderBoxTarget, @@ -284,19 +285,14 @@ let package = Package( ) if renderBoxCondtion { - let privateFrameworkRepo: Package.Dependency - if useLocalDeps { - privateFrameworkRepo = Package.Dependency.package(path: "../DarwinPrivateFrameworks") - } else { - privateFrameworkRepo = Package.Dependency.package(url: "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", branch: "main") - } - package.dependencies.append(privateFrameworkRepo) openRenderBoxShimsTarget.addRBSettings() +} - let rbVersion = EnvManager.shared.withDomain("DarwinPrivateFrameworks") { +if renderBoxCondtion { + let release = EnvManager.shared.withDomain("DarwinPrivateFrameworks") { envIntValue("TARGET_RELEASE", default: 2024) } - package.platforms = switch rbVersion { + package.platforms = switch release { case 2024: [.iOS(.v18), .macOS(.v15), .macCatalyst(.v18), .tvOS(.v18), .watchOS(.v10), .visionOS(.v2)] case 2021: [.iOS(.v15), .macOS(.v12), .macCatalyst(.v15), .tvOS(.v15), .watchOS(.v7)] default: nil @@ -305,6 +301,24 @@ if renderBoxCondtion { openRenderBoxShimsTarget.dependencies.append("OpenRenderBox") } +if useLocalDeps { + var dependencies: [Package.Dependency] = [ + .package(path: "../OpenCoreGraphics"), + ] + if renderBoxCondtion { + dependencies.append(.package(path: "../DarwinPrivateFrameworks")) + } + package.dependencies += dependencies +} else { + var dependencies: [Package.Dependency] = [ + .package(url: "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", branch: "main"), + ] + if renderBoxCondtion { + dependencies.append(.package(url: "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", branch: "main")) + } + package.dependencies += dependencies +} + if compatibilityTestCondition && renderBoxCondtion { openRenderBoxCompatibilityTestTarget.addRBSettings() var swiftSettings: [SwiftSetting] = (openRenderBoxCompatibilityTestTarget.swiftSettings ?? []) From 48a78b24e7e8b17793d674284b47068096ee5870 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 12:58:19 +0800 Subject: [PATCH 05/12] Fix Linux build issue --- Package.resolved | 2 +- Package.swift | 2 +- Sources/OpenRenderBox/Path/RBPath.swift | 12 +-- .../OpenRenderBox/Path/RBPathCallbacks.swift | 82 +++++++++---------- .../OpenRenderBox/Path/RBPathStorage.swift | 2 +- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/Package.resolved b/Package.resolved index 0826971..5ebfbe9 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "9b69631cc841c3300fc55dd1432eb69d5d8b848c2daa4f17329fecb836499020", + "originHash" : "a491a4ec848b1b350e38c4fee0f6c17fbcb5d58dee4ea9b92da6d83b0634de5c", "pins" : [ { "identity" : "darwinprivateframeworks", diff --git a/Package.swift b/Package.swift index 3ae6377..5e91889 100644 --- a/Package.swift +++ b/Package.swift @@ -214,7 +214,7 @@ let openRenderBoxTarget = Target.target( name: "OpenRenderBox", dependencies: [ "OpenRenderBoxCxx", - .product(name: "OpenCoreGraphics", package: "OpenCoreGraphics"), + .product(name: "OpenCoreGraphicsShims", package: "OpenCoreGraphics"), ], cSettings: sharedCSettings, cxxSettings: sharedCxxSettings, diff --git a/Sources/OpenRenderBox/Path/RBPath.swift b/Sources/OpenRenderBox/Path/RBPath.swift index a903205..157c0ff 100644 --- a/Sources/OpenRenderBox/Path/RBPath.swift +++ b/Sources/OpenRenderBox/Path/RBPath.swift @@ -3,9 +3,9 @@ // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE -import OpenCoreGraphics +public import OpenCoreGraphicsShims -public typealias RBPathApplyCallback = @convention(c) (UnsafeMutableRawPointer, RBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool +public typealias RBPathApplyCallback = (UnsafeMutableRawPointer, RBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool public struct RBPath { public var storage: RBPath.Storage @@ -95,19 +95,19 @@ extension RBPath { public init(cgPath: CGPath) { _openRenderBoxUnimplementedFailure() } - + public init(rect: CGRect, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } - + public init(ellipseIn rect: CGRect, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } - + public init(roundedRect rect: CGRect, cornerWidth: CGFloat, cornerHeight: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } - + public init(roundedRect rect: CGRect, topLeftRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat, topRightRadius: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } diff --git a/Sources/OpenRenderBox/Path/RBPathCallbacks.swift b/Sources/OpenRenderBox/Path/RBPathCallbacks.swift index 8774b94..33063bc 100644 --- a/Sources/OpenRenderBox/Path/RBPathCallbacks.swift +++ b/Sources/OpenRenderBox/Path/RBPathCallbacks.swift @@ -3,7 +3,7 @@ // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE -import OpenCoreGraphics +public import OpenCoreGraphicsShims /// Flags for path callbacks public struct RBPathCallbacksFlags { @@ -34,16 +34,16 @@ extension RBPath { /// This allows different path storage types (CGPath, custom storage, etc.) to provide their own implementations public struct Callbacks { public var flags: RBPathCallbacksFlags - public var retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)? - public var release: (@convention(c) (UnsafeRawPointer) -> Void)? - public var apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)? - public var isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> Bool)? - public var isEmpty: (@convention(c) (UnsafeRawPointer) -> Bool)? - public var isSingleElement: (@convention(c) (UnsafeRawPointer) -> Bool)? - public var bezierOrder: (@convention(c) (UnsafeRawPointer) -> UInt32)? - public var boundingRect: (@convention(c) (UnsafeRawPointer) -> CGRect)? - public var cgPath: (@convention(c) (UnsafeRawPointer) -> Unmanaged?)? - public var next: (@convention(c) (UnsafeRawPointer) -> UnsafePointer?)? + public var retain: ((UnsafeRawPointer) -> UnsafeRawPointer)? + public var release: ((UnsafeRawPointer) -> Void)? + public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)? + public var isEqual: ((UnsafeRawPointer, UnsafeRawPointer) -> Bool)? + public var isEmpty: ((UnsafeRawPointer) -> Bool)? + public var isSingleElement: ((UnsafeRawPointer) -> Bool)? + public var bezierOrder: ((UnsafeRawPointer) -> UInt32)? + public var boundingRect: ((UnsafeRawPointer) -> CGRect)? + public var cgPath: ((UnsafeRawPointer) -> Unmanaged?)? + public var next: ((UnsafeRawPointer) -> UnsafePointer?)? public init() { self.flags = RBPathCallbacksFlags() @@ -61,16 +61,16 @@ extension RBPath { public init( flags: RBPathCallbacksFlags, - retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)?, - release: (@convention(c) (UnsafeRawPointer) -> Void)?, - apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)?, - isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> Bool)?, - isEmpty: (@convention(c) (UnsafeRawPointer) -> Bool)?, - isSingleElement: (@convention(c) (UnsafeRawPointer) -> Bool)?, - bezierOrder: (@convention(c) (UnsafeRawPointer) -> UInt32)?, - boundingRect: (@convention(c) (UnsafeRawPointer) -> CGRect)?, - cgPath: (@convention(c) (UnsafeRawPointer) -> Unmanaged?)?, - next: (@convention(c) (UnsafeRawPointer) -> UnsafePointer?)? + retain: ((UnsafeRawPointer) -> UnsafeRawPointer)?, + release: ((UnsafeRawPointer) -> Void)?, + apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)?, + isEqual: ((UnsafeRawPointer, UnsafeRawPointer) -> Bool)?, + isEmpty: ((UnsafeRawPointer) -> Bool)?, + isSingleElement: ((UnsafeRawPointer) -> Bool)?, + bezierOrder: ((UnsafeRawPointer) -> UInt32)?, + boundingRect: ((UnsafeRawPointer) -> CGRect)?, + cgPath: ((UnsafeRawPointer) -> Unmanaged?)?, + next: ((UnsafeRawPointer) -> UnsafePointer?)? ) { self.flags = flags self.retain = retain @@ -102,16 +102,16 @@ extension RBPath { /// Extended callbacks structure with additional extended callbacks argument public struct CallbacksExtended { public var flags: RBPathCallbacksFlags - public var retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)? - public var release: (@convention(c) (UnsafeRawPointer) -> Void)? - public var apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)? - public var isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)? - public var isEmpty: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)? - public var isSingleElement: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)? - public var bezierOrder: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UInt32)? - public var boundingRect: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> CGRect)? - public var cgPath: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Unmanaged?)? - public var next: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + public var retain: ((UnsafeRawPointer) -> UnsafeRawPointer)? + public var release: ((UnsafeRawPointer) -> Void)? + public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)? + public var isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)? + public var bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)? + public var boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)? + public var cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)? + public var next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? public init() { self.flags = RBPathCallbacksFlags() @@ -129,16 +129,16 @@ extension RBPath { public init( flags: RBPathCallbacksFlags, - retain: (@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer)?, - release: (@convention(c) (UnsafeRawPointer) -> Void)?, - apply: (@convention(c) (UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)?, - isEqual: (@convention(c) (UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)?, - isEmpty: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)?, - isSingleElement: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Bool)?, - bezierOrder: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UInt32)?, - boundingRect: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> CGRect)?, - cgPath: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> Unmanaged?)?, - next: (@convention(c) (UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + retain: ((UnsafeRawPointer) -> UnsafeRawPointer)?, + release: ((UnsafeRawPointer) -> Void)?, + apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)?, + isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)?, + isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, + isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, + bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)?, + boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)?, + cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)?, + next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? ) { self.flags = flags self.retain = retain diff --git a/Sources/OpenRenderBox/Path/RBPathStorage.swift b/Sources/OpenRenderBox/Path/RBPathStorage.swift index 0f794b6..10ad65f 100644 --- a/Sources/OpenRenderBox/Path/RBPathStorage.swift +++ b/Sources/OpenRenderBox/Path/RBPathStorage.swift @@ -3,7 +3,7 @@ // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE -import OpenCoreGraphics +public import OpenCoreGraphicsShims extension RBPath.Storage { public func initialize(capacity: UInt32, source: RBPath.Storage?) { From 570960ecfd2251f08ae4b85d1cb38b26e429636e Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 13:55:16 +0800 Subject: [PATCH 06/12] Update ORBPathCallbacksFlags --- .../Path/{RBPath.swift => ORBPath.swift} | 44 +++---- ...Callbacks.swift => ORBPathCallbacks.swift} | 112 +++++++++--------- ...PathStorage.swift => ORBPathStorage.swift} | 14 +-- .../include/OpenRenderBox/ORBPathCallbacks.h | 2 +- 4 files changed, 86 insertions(+), 86 deletions(-) rename Sources/OpenRenderBox/Path/{RBPath.swift => ORBPath.swift} (72%) rename Sources/OpenRenderBox/Path/{RBPathCallbacks.swift => ORBPathCallbacks.swift} (57%) rename Sources/OpenRenderBox/Path/{RBPathStorage.swift => ORBPathStorage.swift} (68%) diff --git a/Sources/OpenRenderBox/Path/RBPath.swift b/Sources/OpenRenderBox/Path/ORBPath.swift similarity index 72% rename from Sources/OpenRenderBox/Path/RBPath.swift rename to Sources/OpenRenderBox/Path/ORBPath.swift index 157c0ff..e5bb0ea 100644 --- a/Sources/OpenRenderBox/Path/RBPath.swift +++ b/Sources/OpenRenderBox/Path/ORBPath.swift @@ -1,17 +1,17 @@ // -// RBPath.swift +// ORBPath.swift // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE public import OpenCoreGraphicsShims -public typealias RBPathApplyCallback = (UnsafeMutableRawPointer, RBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool +public typealias ORBPathApplyCallback = (UnsafeMutableRawPointer, ORBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool -public struct RBPath { - public var storage: RBPath.Storage - public var callbacks: UnsafePointer +public struct ORBPath { + public var storage: ORBPath.Storage + public var callbacks: UnsafePointer - public init(storage: RBPath.Storage, callbacks: UnsafePointer) { + public init(storage: ORBPath.Storage, callbacks: UnsafePointer) { self.storage = storage self.callbacks = callbacks } @@ -19,7 +19,7 @@ public struct RBPath { // MARK: - Element -extension RBPath { +extension ORBPath { /// Path element type for path enumeration public enum Element: Int32, @unchecked Sendable { case moveToPoint = 0 @@ -37,7 +37,7 @@ extension RBPath { // MARK: - RoundedCornerStyle -extension RBPath { +extension ORBPath { /// Defines the shape of a rounded rectangle's corners. public enum RoundedCornerStyle: Int32, @unchecked Sendable { /// Quarter-circle rounded rect corners. @@ -49,7 +49,7 @@ extension RBPath { // MARK: - Storage -extension RBPath { +extension ORBPath { public struct Storage: Hashable, Equatable, RawRepresentable, @unchecked Sendable { public var rawValue: OpaquePointer @@ -65,21 +65,21 @@ extension RBPath { // MARK: - Static Properties -extension RBPath { - /// Global empty path (storage = null, callbacks = &RBPathEmptyCallbacks) - public static var empty: RBPath { +extension ORBPath { + /// Global empty path (storage = null, callbacks = &ORBPathEmptyCallbacks) + public static var empty: ORBPath { _openRenderBoxUnimplementedFailure() } - /// Global null path (storage = 0x1, callbacks = &RBPathEmptyCallbacks) - public static var null: RBPath { + /// Global null path (storage = 0x1, callbacks = &ORBPathEmptyCallbacks) + public static var null: ORBPath { _openRenderBoxUnimplementedFailure() } } // MARK: - Memory Management -extension RBPath { +extension ORBPath { public func retain() { _openRenderBoxUnimplementedFailure() } @@ -91,7 +91,7 @@ extension RBPath { // MARK: - Initializers -extension RBPath { +extension ORBPath { public init(cgPath: CGPath) { _openRenderBoxUnimplementedFailure() } @@ -104,18 +104,18 @@ extension RBPath { _openRenderBoxUnimplementedFailure() } - public init(roundedRect rect: CGRect, cornerWidth: CGFloat, cornerHeight: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { + public init(roundedRect rect: CGRect, cornerWidth: CGFloat, cornerHeight: CGFloat, style: ORBPath.RoundedCornerStyle, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } - public init(roundedRect rect: CGRect, topLeftRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat, topRightRadius: CGFloat, style: RBPath.RoundedCornerStyle, transform: UnsafePointer?) { + public init(roundedRect rect: CGRect, topLeftRadius: CGFloat, bottomLeftRadius: CGFloat, bottomRightRadius: CGFloat, topRightRadius: CGFloat, style: ORBPath.RoundedCornerStyle, transform: UnsafePointer?) { _openRenderBoxUnimplementedFailure() } } // MARK: - Properties -extension RBPath { +extension ORBPath { public var isEmpty: Bool { _openRenderBoxUnimplementedFailure() } @@ -127,12 +127,12 @@ extension RBPath { // MARK: - Methods -extension RBPath { - public func apply(info: UnsafeMutableRawPointer, callback: RBPathApplyCallback?) -> Bool { +extension ORBPath { + public func apply(info: UnsafeMutableRawPointer, callback: ORBPathApplyCallback?) -> Bool { _openRenderBoxUnimplementedFailure() } - public func isEqual(to rhs: RBPath) -> Bool { + public func isEqual(to rhs: ORBPath) -> Bool { _openRenderBoxUnimplementedFailure() } diff --git a/Sources/OpenRenderBox/Path/RBPathCallbacks.swift b/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift similarity index 57% rename from Sources/OpenRenderBox/Path/RBPathCallbacks.swift rename to Sources/OpenRenderBox/Path/ORBPathCallbacks.swift index 33063bc..3d455b2 100644 --- a/Sources/OpenRenderBox/Path/RBPathCallbacks.swift +++ b/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift @@ -1,52 +1,52 @@ // -// RBPathCallbacks.swift +// ORBPathCallbacks.swift // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE public import OpenCoreGraphicsShims -/// Flags for path callbacks -public struct RBPathCallbacksFlags { - public var unknown0: UInt8 - public var unknown1: UInt8 - public var isExtended: Bool - public var padding: (UInt8, UInt8, UInt8, UInt8, UInt8) - - public init() { - self.unknown0 = 0 - self.unknown1 = 0 - self.isExtended = false - self.padding = (0, 0, 0, 0, 0) - } - - public init(unknown0: UInt8, unknown1: UInt8, isExtended: Bool, padding: (UInt8, UInt8, UInt8, UInt8, UInt8)) { - self.unknown0 = unknown0 - self.unknown1 = unknown1 - self.isExtended = isExtended - self.padding = padding - } -} - -// MARK: - RBPath.Callbacks +// MARK: - ORBPath.Callbacks -extension RBPath { +extension ORBPath { /// Callbacks structure for path operations /// This allows different path storage types (CGPath, custom storage, etc.) to provide their own implementations public struct Callbacks { - public var flags: RBPathCallbacksFlags + /// Flags for path callbacks + public struct Flags { + public var unknown0: UInt8 + public var unknown1: UInt8 + public var isExtended: Bool + public var padding: (UInt8, UInt8, UInt8, UInt8, UInt8) + + public init() { + self.unknown0 = 0 + self.unknown1 = 0 + self.isExtended = false + self.padding = (0, 0, 0, 0, 0) + } + + public init(unknown0: UInt8, unknown1: UInt8, isExtended: Bool, padding: (UInt8, UInt8, UInt8, UInt8, UInt8)) { + self.unknown0 = unknown0 + self.unknown1 = unknown1 + self.isExtended = isExtended + self.padding = padding + } + } + + public var flags: ORBPath.Callbacks.Flags public var retain: ((UnsafeRawPointer) -> UnsafeRawPointer)? public var release: ((UnsafeRawPointer) -> Void)? - public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)? + public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, ORBPathApplyCallback?) -> Bool)? public var isEqual: ((UnsafeRawPointer, UnsafeRawPointer) -> Bool)? public var isEmpty: ((UnsafeRawPointer) -> Bool)? public var isSingleElement: ((UnsafeRawPointer) -> Bool)? public var bezierOrder: ((UnsafeRawPointer) -> UInt32)? public var boundingRect: ((UnsafeRawPointer) -> CGRect)? public var cgPath: ((UnsafeRawPointer) -> Unmanaged?)? - public var next: ((UnsafeRawPointer) -> UnsafePointer?)? + public var next: ((UnsafeRawPointer) -> UnsafePointer?)? public init() { - self.flags = RBPathCallbacksFlags() + self.flags = ORBPath.Callbacks.Flags() self.retain = nil self.release = nil self.apply = nil @@ -60,17 +60,17 @@ extension RBPath { } public init( - flags: RBPathCallbacksFlags, + flags: ORBPath.Callbacks.Flags, retain: ((UnsafeRawPointer) -> UnsafeRawPointer)?, release: ((UnsafeRawPointer) -> Void)?, - apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?) -> Bool)?, + apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, ORBPathApplyCallback?) -> Bool)?, isEqual: ((UnsafeRawPointer, UnsafeRawPointer) -> Bool)?, isEmpty: ((UnsafeRawPointer) -> Bool)?, isSingleElement: ((UnsafeRawPointer) -> Bool)?, bezierOrder: ((UnsafeRawPointer) -> UInt32)?, boundingRect: ((UnsafeRawPointer) -> CGRect)?, cgPath: ((UnsafeRawPointer) -> Unmanaged?)?, - next: ((UnsafeRawPointer) -> UnsafePointer?)? + next: ((UnsafeRawPointer) -> UnsafePointer?)? ) { self.flags = flags self.retain = retain @@ -87,34 +87,34 @@ extension RBPath { } } -// MARK: - RBPath.Callbacks Static Properties +// MARK: - ORBPath.Callbacks Static Properties -extension RBPath.Callbacks { +extension ORBPath.Callbacks { /// Global callbacks for CGPath-backed paths - public static var cgPath: RBPath.Callbacks { + public static var cgPath: ORBPath.Callbacks { _openRenderBoxUnimplementedFailure() } } -// MARK: - RBPath.CallbacksExtended +// MARK: - ORBPath.CallbacksExtended -extension RBPath { +extension ORBPath { /// Extended callbacks structure with additional extended callbacks argument public struct CallbacksExtended { - public var flags: RBPathCallbacksFlags + public var flags: ORBPath.Callbacks.Flags public var retain: ((UnsafeRawPointer) -> UnsafeRawPointer)? public var release: ((UnsafeRawPointer) -> Void)? - public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)? - public var isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)? - public var isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)? - public var isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)? - public var bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)? - public var boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)? - public var cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)? - public var next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + public var apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, ORBPathApplyCallback?, UnsafePointer) -> Bool)? + public var isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)? + public var isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)? + public var bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)? + public var boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)? + public var cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)? + public var next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? public init() { - self.flags = RBPathCallbacksFlags() + self.flags = ORBPath.Callbacks.Flags() self.retain = nil self.release = nil self.apply = nil @@ -128,17 +128,17 @@ extension RBPath { } public init( - flags: RBPathCallbacksFlags, + flags: ORBPath.Callbacks.Flags, retain: ((UnsafeRawPointer) -> UnsafeRawPointer)?, release: ((UnsafeRawPointer) -> Void)?, - apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, RBPathApplyCallback?, UnsafePointer) -> Bool)?, - isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)?, - isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, - isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, - bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)?, - boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)?, - cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)?, - next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? + apply: ((UnsafeRawPointer, UnsafeMutableRawPointer, ORBPathApplyCallback?, UnsafePointer) -> Bool)?, + isEqual: ((UnsafeRawPointer, UnsafeRawPointer, UnsafePointer) -> Bool)?, + isEmpty: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, + isSingleElement: ((UnsafeRawPointer, UnsafePointer) -> Bool)?, + bezierOrder: ((UnsafeRawPointer, UnsafePointer) -> UInt32)?, + boundingRect: ((UnsafeRawPointer, UnsafePointer) -> CGRect)?, + cgPath: ((UnsafeRawPointer, UnsafePointer) -> Unmanaged?)?, + next: ((UnsafeRawPointer, UnsafePointer) -> UnsafePointer?)? ) { self.flags = flags self.retain = retain diff --git a/Sources/OpenRenderBox/Path/RBPathStorage.swift b/Sources/OpenRenderBox/Path/ORBPathStorage.swift similarity index 68% rename from Sources/OpenRenderBox/Path/RBPathStorage.swift rename to Sources/OpenRenderBox/Path/ORBPathStorage.swift index 10ad65f..8643ee7 100644 --- a/Sources/OpenRenderBox/Path/RBPathStorage.swift +++ b/Sources/OpenRenderBox/Path/ORBPathStorage.swift @@ -1,12 +1,12 @@ // -// RBPathStorage.swift +// ORBPathStorage.swift // OpenRenderBox #if !OPENRENDERBOX_CF_CGTYPE public import OpenCoreGraphicsShims -extension RBPath.Storage { - public func initialize(capacity: UInt32, source: RBPath.Storage?) { +extension ORBPath.Storage { + public func initialize(capacity: UInt32, source: ORBPath.Storage?) { _openRenderBoxUnimplementedFailure() } @@ -18,15 +18,15 @@ extension RBPath.Storage { _openRenderBoxUnimplementedFailure() } - public func append(element: RBPath.Element, points: UnsafePointer, userInfo: UnsafeRawPointer?) -> Bool { + public func append(element: ORBPath.Element, points: UnsafePointer, userInfo: UnsafeRawPointer?) -> Bool { _openRenderBoxUnimplementedFailure() } - public func append(path: RBPath) -> Bool { + public func append(path: ORBPath) -> Bool { _openRenderBoxUnimplementedFailure() } - public func apply(info: UnsafeMutableRawPointer, callback: RBPathApplyCallback?) -> Bool { + public func apply(info: UnsafeMutableRawPointer, callback: ORBPathApplyCallback?) -> Bool { _openRenderBoxUnimplementedFailure() } @@ -34,7 +34,7 @@ extension RBPath.Storage { _openRenderBoxUnimplementedFailure() } - public func isEqual(to rhs: RBPath.Storage) -> Bool { + public func isEqual(to rhs: ORBPath.Storage) -> Bool { _openRenderBoxUnimplementedFailure() } diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h index c61a036..eafa63d 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h @@ -21,7 +21,7 @@ ORB_ASSUME_NONNULL_BEGIN ORB_EXTERN_C_BEGIN /// Flags for path callbacks -typedef struct ORBPathCallbacksFlags { +typedef struct ORB_SWIFT_NAME(ORBPath.Callbacks.Flags) ORBPathCallbacksFlags { uint8_t unknown0; uint8_t unknown1; bool isExtended; From 43e44c472624b3d295817f4f17ea7b2b96d36726 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 13:56:07 +0800 Subject: [PATCH 07/12] Update dependency --- Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.resolved b/Package.resolved index 5ebfbe9..7f26fde 100644 --- a/Package.resolved +++ b/Package.resolved @@ -7,7 +7,7 @@ "location" : "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", "state" : { "branch" : "main", - "revision" : "db8c67d76c1c95d70389e6aa8d1a26ec6720adda" + "revision" : "381059629386a9d6004ebf39c51a0ffb8e67bea8" } }, { From 22074b231dfb7c66e4fc1d0412b6a710cbe27c38 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 14:02:26 +0800 Subject: [PATCH 08/12] Update CGTYPES --- AGENTS.md | 2 +- Package.resolved | 2 +- Package.swift | 10 +++++----- Sources/OpenRenderBox/Path/ORBPath.swift | 2 +- Sources/OpenRenderBox/Path/ORBPathCallbacks.swift | 2 +- Sources/OpenRenderBox/Path/ORBPathStorage.swift | 2 +- Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp | 4 ++-- Sources/OpenRenderBoxCxx/Path/ORBPath.cpp | 4 ++-- Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp | 4 ++-- Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp | 4 ++-- Sources/OpenRenderBoxCxx/Path/Storage.cpp | 4 ++-- .../OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h | 4 ++-- .../OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h | 4 ++-- .../include/OpenRenderBox/ORBPathCallbacks.h | 4 ++-- .../include/OpenRenderBox/ORBPathStorage.h | 4 ++-- .../include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp | 4 ++-- .../include/OpenRenderBoxCxx/Path/Storage.hpp | 4 ++-- 17 files changed, 32 insertions(+), 32 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e176848..8855c78 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,5 +3,5 @@ ## Preprocessor Definition Naming Conventions - **C/C++ definitions**: Use `ORB_` prefix (e.g., `ORB_SWIFT_NAME`, `ORB_TARGET_OS_DARWIN`) -- **Package.swift injected definitions**: Use `OPENRENDERBOX_` prefix (e.g., `OPENRENDERBOX_CF_CGTYPE`, `OPENRENDERBOX_RENDERBOX`) +- **Package.swift injected definitions**: Use `OPENRENDERBOX_` prefix (e.g., `OPENRENDERBOX_CF_CGTYPES`, `OPENRENDERBOX_RENDERBOX`) diff --git a/Package.resolved b/Package.resolved index 7f26fde..53e50ba 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "a491a4ec848b1b350e38c4fee0f6c17fbcb5d58dee4ea9b92da6d83b0634de5c", + "originHash" : "4fcdebfe2c90ba26fcba7ec801dbb697ae67f942fbae6db543f3f15c85ec2747", "pins" : [ { "identity" : "darwinprivateframeworks", diff --git a/Package.swift b/Package.swift index 5e91889..91f85b8 100644 --- a/Package.swift +++ b/Package.swift @@ -160,7 +160,7 @@ let renderBoxCondtion = envBoolValue("RENDERBOX", default: buildForDarwinPlatfor /// macOS: false -> use Swift implementation with OpenCoreGraphics Swift CGPath /// Linux: true + No CGPathRef support in ORBPath -> confilict with Foundation def /// Linux: false -> use Swift implementation with OpenCoreGraphics Swift CGPath -let cfCGType = envBoolValue("CF_CGTYPES", default: buildForDarwinPlatform) +let cfCGTypes = envBoolValue("CF_CGTYPES", default: buildForDarwinPlatform) // MARK: - Shared Settings @@ -183,10 +183,10 @@ if libraryEvolutionCondition { sharedSwiftSettings.append(.unsafeFlags(["-enable-library-evolution", "-no-verify-emitted-module-interface"])) } -if cfCGType { - sharedCSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) - sharedCxxSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) - sharedSwiftSettings.append(.define("OPENRENDERBOX_CF_CGTYPE")) +if cfCGTypes { + sharedCSettings.append(.define("OPENRENDERBOX_CF_CGTYPES")) + sharedCxxSettings.append(.define("OPENRENDERBOX_CF_CGTYPES")) + sharedSwiftSettings.append(.define("OPENRENDERBOX_CF_CGTYPES")) } // MARK: - Extension diff --git a/Sources/OpenRenderBox/Path/ORBPath.swift b/Sources/OpenRenderBox/Path/ORBPath.swift index e5bb0ea..2141da5 100644 --- a/Sources/OpenRenderBox/Path/ORBPath.swift +++ b/Sources/OpenRenderBox/Path/ORBPath.swift @@ -2,7 +2,7 @@ // ORBPath.swift // OpenRenderBox -#if !OPENRENDERBOX_CF_CGTYPE +#if !OPENRENDERBOX_CF_CGTYPES public import OpenCoreGraphicsShims public typealias ORBPathApplyCallback = (UnsafeMutableRawPointer, ORBPath.Element, UnsafePointer, UnsafeRawPointer?) -> Bool diff --git a/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift b/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift index 3d455b2..c4d21c6 100644 --- a/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift +++ b/Sources/OpenRenderBox/Path/ORBPathCallbacks.swift @@ -2,7 +2,7 @@ // ORBPathCallbacks.swift // OpenRenderBox -#if !OPENRENDERBOX_CF_CGTYPE +#if !OPENRENDERBOX_CF_CGTYPES public import OpenCoreGraphicsShims // MARK: - ORBPath.Callbacks diff --git a/Sources/OpenRenderBox/Path/ORBPathStorage.swift b/Sources/OpenRenderBox/Path/ORBPathStorage.swift index 8643ee7..2a8a022 100644 --- a/Sources/OpenRenderBox/Path/ORBPathStorage.swift +++ b/Sources/OpenRenderBox/Path/ORBPathStorage.swift @@ -2,7 +2,7 @@ // ORBPathStorage.swift // OpenRenderBox -#if !OPENRENDERBOX_CF_CGTYPE +#if !OPENRENDERBOX_CF_CGTYPES public import OpenCoreGraphicsShims extension ORBPath.Storage { diff --git a/Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp b/Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp index 2714363..7fe6be6 100644 --- a/Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp +++ b/Sources/OpenRenderBoxCxx/Path/NestedCallbacks.cpp @@ -4,7 +4,7 @@ // TODO: Implement NestedCallbacks -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -305,4 +305,4 @@ bool NestedCallbacks::first_element(const Storage& storage, void* iterator, size } /* namespace Path */ } /* namespace ORB */ -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/Path/ORBPath.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPath.cpp index 7bc113b..3364c4b 100644 --- a/Sources/OpenRenderBoxCxx/Path/ORBPath.cpp +++ b/Sources/OpenRenderBoxCxx/Path/ORBPath.cpp @@ -5,7 +5,7 @@ // Created by Kyle on 2025/3/25. // -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -258,4 +258,4 @@ bool ORBPathContainsPoints(ORBPath path, uint64_t count, const CGPoint *points, } #endif /* ORB_TARGET_OS_DARWIN */ -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp index ae45564..0c091d1 100644 --- a/Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp +++ b/Sources/OpenRenderBoxCxx/Path/ORBPathCallbacks.cpp @@ -5,7 +5,7 @@ // Audited for 6.5.1 // Status: Complete -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -76,4 +76,4 @@ const ORBPathCallbacks ORBPathCGPathCallbacks = { #endif /* ORB_TARGET_OS_DARWIN */ -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp b/Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp index b26d2f8..5f4f699 100644 --- a/Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp +++ b/Sources/OpenRenderBoxCxx/Path/ORBPathStorage.cpp @@ -2,7 +2,7 @@ // ORBPathStorage.cpp // OpenRenderBox -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -77,4 +77,4 @@ CGPathRef ORBPathStorageGetCGPath(ORBPathStorageRef storage) { } #endif -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/Path/Storage.cpp b/Sources/OpenRenderBoxCxx/Path/Storage.cpp index ab20a3f..30c6a4e 100644 --- a/Sources/OpenRenderBoxCxx/Path/Storage.cpp +++ b/Sources/OpenRenderBoxCxx/Path/Storage.cpp @@ -2,7 +2,7 @@ // Storage.cpp // OpenRenderBox -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -155,4 +155,4 @@ CGPathRef Storage::cgpath() const ORB_NOEXCEPT { } /* Path */ } /* ORB */ -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h index b3cabb0..84705fb 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/CFCGTypes.h @@ -1,4 +1,4 @@ -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES /* CFCGTypes.h Copyright (c) 1998-2021, Apple Inc. and the Swift project authors @@ -125,4 +125,4 @@ struct CGAffineTransformComponents { #endif /* ! __COREFOUNDATION_CFCGTYPES__ */ -#endif /* OPENRENDERBOX_CF_CGTYPE */ \ No newline at end of file +#endif /* OPENRENDERBOX_CF_CGTYPES */ \ No newline at end of file diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h index 2d6224d..e294bd2 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPath.h @@ -4,7 +4,7 @@ #pragma once -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include @@ -116,4 +116,4 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h index eafa63d..05d973f 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathCallbacks.h @@ -7,7 +7,7 @@ #pragma once -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -109,4 +109,4 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h index 4c2f6f2..6bfd731 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBPathStorage.h @@ -7,7 +7,7 @@ #pragma once -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -62,4 +62,4 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp index 9f20dd8..acc6611 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/NestedCallbacks.hpp @@ -4,7 +4,7 @@ #pragma once -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -54,4 +54,4 @@ static_assert(offsetof(NestedCallbacks, nestedIndex) == 0x60, "nestedIndex offse ORB_ASSUME_NONNULL_END -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ diff --git a/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp index 563337f..b9ab8f2 100644 --- a/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp +++ b/Sources/OpenRenderBoxCxx/include/OpenRenderBoxCxx/Path/Storage.hpp @@ -4,7 +4,7 @@ #pragma once -#if OPENRENDERBOX_CF_CGTYPE +#if OPENRENDERBOX_CF_CGTYPES #include #include @@ -248,4 +248,4 @@ struct ORBPathStorage { ORB_ASSUME_NONNULL_END -#endif /* OPENRENDERBOX_CF_CGTYPE */ +#endif /* OPENRENDERBOX_CF_CGTYPES */ From a114e8bdc6b16f0ebc072339eb5fde163e1cc116 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 15:11:16 +0800 Subject: [PATCH 09/12] Update dependency --- Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.resolved b/Package.resolved index 53e50ba..87e5e6e 100644 --- a/Package.resolved +++ b/Package.resolved @@ -16,7 +16,7 @@ "location" : "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", "state" : { "branch" : "main", - "revision" : "e33ce7ccaaf8426350cc5715fc1dd4b9f36fcf91" + "revision" : "94f794bbdd5a4f649c30c5e138b3b6cb149e1960" } }, { From a1fc60bd2ff439485e99360a436546c9c2866bcd Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 15:34:27 +0800 Subject: [PATCH 10/12] Add opencoregraphics_setup.sh --- Scripts/CI/darwin_setup_build.sh | 1 + Scripts/CI/opencoregraphics_setup.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100755 Scripts/CI/opencoregraphics_setup.sh diff --git a/Scripts/CI/darwin_setup_build.sh b/Scripts/CI/darwin_setup_build.sh index 0c1f016..d85ad83 100755 --- a/Scripts/CI/darwin_setup_build.sh +++ b/Scripts/CI/darwin_setup_build.sh @@ -8,4 +8,5 @@ filepath() { REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))" cd $REPO_ROOT +Scripts/CI/opencoregraphics_setup.sh Scripts/CI/rb_setup.sh \ No newline at end of file diff --git a/Scripts/CI/opencoregraphics_setup.sh b/Scripts/CI/opencoregraphics_setup.sh new file mode 100755 index 0000000..e1ae4b5 --- /dev/null +++ b/Scripts/CI/opencoregraphics_setup.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# A `realpath` alternative using the default C implementation. +filepath() { + [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" +} + +REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))" + +clone_checkout_opencoregraphics() { + cd $REPO_ROOT + revision=$(Scripts/CI/get_revision.sh opencoregraphics) + cd .. + if [ ! -d OpenCoreGraphics ]; then + gh repo clone OpenSwiftUIProject/OpenCoreGraphics + cd OpenCoreGraphics + else + echo "OpenCoreGraphics already exists, skipping clone." + cd OpenCoreGraphics + git fetch --all --quiet + git stash --quiet || true + git reset --hard --quiet origin/main + fi + git checkout --quiet $revision +} + +clone_checkout_opencoregraphics From a152b273c0f5286bd64b46c4ca11f2714d21cc60 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 15:37:30 +0800 Subject: [PATCH 11/12] Update dependency --- Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.resolved b/Package.resolved index 87e5e6e..1af8b00 100644 --- a/Package.resolved +++ b/Package.resolved @@ -16,7 +16,7 @@ "location" : "https://github.com/OpenSwiftUIProject/OpenCoreGraphics", "state" : { "branch" : "main", - "revision" : "94f794bbdd5a4f649c30c5e138b3b6cb149e1960" + "revision" : "968794a73efbc0b5c14be13bca10e57771b57460" } }, { From 24ca4c7776904887153faf2519ce2186496eba77 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 28 Dec 2025 15:53:09 +0800 Subject: [PATCH 12/12] Fix werror --- .github/workflows/ios.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 920244f..5b421d4 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -38,7 +38,7 @@ jobs: - name: Set up build environment run: Scripts/CI/darwin_setup_build.sh shell: bash - - name: Build in debug mode on iOS + - name: Build in debug mode on iOS Simulator run: | xcodebuild build \ -scheme OpenRenderBox-Package \ @@ -46,8 +46,8 @@ jobs: -destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }}" \ -derivedDataPath .build-debug \ -skipMacroValidation \ - -skipPackagePluginValidation \ - OTHER_SWIFT_FLAGS="-warnings-as-errors" + -skipPackagePluginValidation + # OTHER_SWIFT_FLAGS="-warnings-as-errors" Conflicting options '-warnings-as-errors' and '-suppress-warnings' - name: Build and run tests in debug mode with coverage on iOS Simulator run: | xcodebuild test \