2024-06-22 20:04:39 +12:00

202 lines
4.4 KiB
Swift

import Foundation
#if canImport(AppKit)
import AppKit
#endif
#if canImport(UIKit)
import UIKit
#endif
#if canImport(SwiftUI)
import SwiftUI
#endif
#if canImport(DeveloperToolsSupport)
import DeveloperToolsSupport
#endif
#if SWIFT_PACKAGE
private let resourceBundle = Foundation.Bundle.module
#else
private class ResourceBundleClass {}
private let resourceBundle = Foundation.Bundle(for: ResourceBundleClass.self)
#endif
// MARK: - Color Symbols -
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension DeveloperToolsSupport.ColorResource {
}
// MARK: - Image Symbols -
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension DeveloperToolsSupport.ImageResource {
}
// MARK: - Color Symbol Extensions -
#if canImport(AppKit)
@available(macOS 14.0, *)
@available(macCatalyst, unavailable)
extension AppKit.NSColor {
}
#endif
#if canImport(UIKit)
@available(iOS 17.0, tvOS 17.0, *)
@available(watchOS, unavailable)
extension UIKit.UIColor {
}
#endif
#if canImport(SwiftUI)
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension SwiftUI.Color {
}
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension SwiftUI.ShapeStyle where Self == SwiftUI.Color {
}
#endif
// MARK: - Image Symbol Extensions -
#if canImport(AppKit)
@available(macOS 14.0, *)
@available(macCatalyst, unavailable)
extension AppKit.NSImage {
}
#endif
#if canImport(UIKit)
@available(iOS 17.0, tvOS 17.0, *)
@available(watchOS, unavailable)
extension UIKit.UIImage {
}
#endif
// MARK: - Thinnable Asset Support -
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
@available(watchOS, unavailable)
extension DeveloperToolsSupport.ColorResource {
private init?(thinnableName: Swift.String, bundle: Foundation.Bundle) {
#if canImport(AppKit) && os(macOS)
if AppKit.NSColor(named: NSColor.Name(thinnableName), bundle: bundle) != nil {
self.init(name: thinnableName, bundle: bundle)
} else {
return nil
}
#elseif canImport(UIKit) && !os(watchOS)
if UIKit.UIColor(named: thinnableName, in: bundle, compatibleWith: nil) != nil {
self.init(name: thinnableName, bundle: bundle)
} else {
return nil
}
#else
return nil
#endif
}
}
#if canImport(UIKit)
@available(iOS 17.0, tvOS 17.0, *)
@available(watchOS, unavailable)
extension UIKit.UIColor {
private convenience init?(thinnableResource: DeveloperToolsSupport.ColorResource?) {
#if !os(watchOS)
if let resource = thinnableResource {
self.init(resource: resource)
} else {
return nil
}
#else
return nil
#endif
}
}
#endif
#if canImport(SwiftUI)
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension SwiftUI.Color {
private init?(thinnableResource: DeveloperToolsSupport.ColorResource?) {
if let resource = thinnableResource {
self.init(resource)
} else {
return nil
}
}
}
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
extension SwiftUI.ShapeStyle where Self == SwiftUI.Color {
private init?(thinnableResource: DeveloperToolsSupport.ColorResource?) {
if let resource = thinnableResource {
self.init(resource)
} else {
return nil
}
}
}
#endif
@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *)
@available(watchOS, unavailable)
extension DeveloperToolsSupport.ImageResource {
private init?(thinnableName: Swift.String, bundle: Foundation.Bundle) {
#if canImport(AppKit) && os(macOS)
if bundle.image(forResource: NSImage.Name(thinnableName)) != nil {
self.init(name: thinnableName, bundle: bundle)
} else {
return nil
}
#elseif canImport(UIKit) && !os(watchOS)
if UIKit.UIImage(named: thinnableName, in: bundle, compatibleWith: nil) != nil {
self.init(name: thinnableName, bundle: bundle)
} else {
return nil
}
#else
return nil
#endif
}
}
#if canImport(UIKit)
@available(iOS 17.0, tvOS 17.0, *)
@available(watchOS, unavailable)
extension UIKit.UIImage {
private convenience init?(thinnableResource: DeveloperToolsSupport.ImageResource?) {
#if !os(watchOS)
if let resource = thinnableResource {
self.init(resource: resource)
} else {
return nil
}
#else
return nil
#endif
}
}
#endif