Skip to content

Commit acff7a6

Browse files
pmanotvmanot
authored andcommitted
Update package
1 parent 2313c08 commit acff7a6

File tree

2 files changed

+53
-5
lines changed

2 files changed

+53
-5
lines changed

Sources/SwiftUIX/Intramodular/Images/_AnyImage.swift

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
// Copyright (c) Vatsal Manot
33
//
44

5+
#if canImport(CoreImage)
6+
import CoreImage
7+
#endif
58
import Foundation
69
import Swift
710
import SwiftUI
@@ -124,7 +127,7 @@ extension _AnyImage {
124127
public var pngData: Data? {
125128
return appKitOrUIKitImage?.data(using: .png)
126129
}
127-
130+
128131
/// Initializes an _AnyImage from JPEG data.
129132
public init?(jpegData: Data) {
130133
self.init(AppKitOrUIKitImage(_SwiftUIX_jpegData: jpegData))
@@ -133,7 +136,7 @@ extension _AnyImage {
133136
public init?(data: Data) {
134137
self.init(AppKitOrUIKitImage(data: data))
135138
}
136-
139+
137140
/// Initializes an _AnyImage with the given url.
138141
public init?(contentsOf url: URL) {
139142
guard let data = try? Data(contentsOf: url) else { return nil }
@@ -142,6 +145,18 @@ extension _AnyImage {
142145
}
143146
}
144147

148+
#if canImport(CoreImage)
149+
extension _AnyImage {
150+
public var ciImage: CIImage? {
151+
return appKitOrUIKitImage?._SwiftUIX_ciImage
152+
}
153+
154+
public init(ciImage: CIImage) {
155+
self.init(AppKitOrUIKitImage(ciImage: ciImage))
156+
}
157+
}
158+
#endif
159+
145160
// MARK: - Initializers
146161

147162
extension _AnyImage {

Sources/_SwiftUIX/Intermodular/Extensions/AppKit or UIKit/AppKitOrUIKitImage++.swift

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,27 @@ extension AppKitOrUIKitImage {
4141

4242
return self.jpegData(compressionQuality: 1.0)
4343
}
44-
44+
4545
public convenience init?(_SwiftUIX_jpegData jpegData: Data) {
4646
self.init(data: jpegData)
4747
}
4848
}
49+
50+
#if canImport(CoreImage)
51+
extension AppKitOrUIKitImage {
52+
public var _SwiftUIX_ciImage: CIImage? {
53+
if let underlyingCIImage: CIImage = self.ciImage {
54+
return underlyingCIImage
55+
}
56+
57+
if let underlyingCGImage: CGImage = self.cgImage {
58+
return CIImage(cgImage: underlyingCGImage)
59+
}
60+
61+
return nil
62+
}
63+
}
64+
#endif
4965
#endif
5066

5167
#if canImport(CoreVideo)
@@ -61,8 +77,8 @@ extension AppKitOrUIKitImage {
6177
#if os(macOS)
6278
extension AppKitOrUIKitImage {
6379
public var _SwiftUIX_jpegData: Data? {
64-
guard let tiffRepresentation = self.tiffRepresentation, let bitmapImage = NSBitmapImageRep(data: tiffRepresentation) else {
65-
print("Failed to get TIFF representation or create bitmap image")
80+
guard let tiffRepresentation: Data = self.tiffRepresentation, let bitmapImage: NSBitmapImageRep = NSBitmapImageRep(data: tiffRepresentation) else {
81+
debugPrint("Failed to get TIFF representation or create bitmap image")
6682
return nil
6783
}
6884

@@ -106,8 +122,25 @@ extension AppKitOrUIKitImage {
106122
return bitmapImage.representation(using: .jpeg, properties: [:])
107123
}
108124

125+
public var _SwiftUIX_ciImage: CIImage? {
126+
guard let tiffRepresentation: Data = self.tiffRepresentation, let bitmapImage: NSBitmapImageRep = NSBitmapImageRep(data: tiffRepresentation) else {
127+
debugPrint("Failed to get TIFF representation or create bitmap image")
128+
return nil
129+
}
130+
131+
let ciImage = CIImage(bitmapImageRep: bitmapImage)
132+
return ciImage
133+
}
134+
109135
public convenience init?(_SwiftUIX_jpegData jpegData: Data) {
110136
self.init(data: jpegData)
111137
}
138+
139+
public convenience init(ciImage: CIImage) {
140+
let rep: NSCIImageRep = NSCIImageRep(ciImage: ciImage)
141+
self.init(size: rep.size)
142+
self.addRepresentation(rep)
143+
}
144+
112145
}
113146
#endif

0 commit comments

Comments
 (0)