diff --git a/Sources/OpenSwiftUICore/View/Image/GraphicsImage.swift b/Sources/OpenSwiftUICore/View/Image/GraphicsImage.swift index 2a534e433..d44f769bb 100644 --- a/Sources/OpenSwiftUICore/View/Image/GraphicsImage.swift +++ b/Sources/OpenSwiftUICore/View/Image/GraphicsImage.swift @@ -8,6 +8,9 @@ package import OpenCoreGraphicsShims package import OpenRenderBoxShims +#if canImport(IOSurface) +package import IOSurface +#endif #if canImport(CoreGraphics) import CoreGraphics_Private #endif @@ -21,7 +24,11 @@ package import CoreUI package struct GraphicsImage: Equatable, Sendable { package enum Contents: Equatable, @unchecked Sendable { case cgImage(CGImage) + #if canImport(IOSurface) + case ioSurface(IOSurface) + #else case ioSurface(IOSurfaceRef) + #endif indirect case vectorGlyph(ResolvedVectorGlyph) indirect case vectorLayer(VectorImageLayer) indirect case color(Color.Resolved) diff --git a/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreColor.m b/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreColor.m index 450a18e0a..b68e4df07 100644 --- a/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreColor.m +++ b/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreColor.m @@ -20,6 +20,13 @@ #if OPENSWIFTUI_TARGET_OS_OSX id NSColorSpaceForCGColorSpace(CGColorSpaceRef cgColorSpace); Class NSColorSpaceClass(void); + +// This path can select UIColor dynamically on macOS. AppKit headers do not +// declare UIColor's initializer, so describe it without adding it to NSColor. +@protocol OpenSwiftUIUIKitRGBAColor +- (instancetype)initWithRed:(CGFloat)red green:(CGFloat)green + blue:(CGFloat)blue alpha:(CGFloat)alpha; +@end #endif BOOL OpenSwiftUICoreColorPlatformColorGetComponents(OpenSwiftUICoreSystem system, id color, CGFloat *red, CGFloat *green, CGFloat *blue, CGFloat *alpha) { @@ -59,7 +66,8 @@ id OpenSwiftUICorePlatformColorForRGBA(OpenSwiftUICoreSystem system, CGFloat red id colorSpace = NSColorSpaceForCGColorSpace(CGColorSpaceCreateWithName(kCGColorSpaceExtendedSRGB)); return [colorClass colorWithColorSpace:colorSpace components:(CGFloat[]){red, green, blue, alpha} count:4]; } else { - return [[colorClass alloc] initWithRed:red green:green blue:blue alpha:alpha]; + return [(id)[colorClass alloc] + initWithRed:red green:green blue:blue alpha:alpha]; } #else return [[colorClass alloc] initWithRed:red green:green blue:blue alpha:alpha]; diff --git a/Sources/OpenSwiftUI_SPI/Overlay/Foundation/Localization.m b/Sources/OpenSwiftUI_SPI/Overlay/Foundation/Localization.m index 63792656f..58ecd21b1 100644 --- a/Sources/OpenSwiftUI_SPI/Overlay/Foundation/Localization.m +++ b/Sources/OpenSwiftUI_SPI/Overlay/Foundation/Localization.m @@ -10,6 +10,7 @@ #if OPENSWIFTUI_TARGET_OS_DARWIN #import +#import #import @interface NSBundle (OpenSwiftUILocalizationPrivate)