@@ -71,16 +71,11 @@ public extension UIImage {
7171}
7272
7373public extension SVG {
74- func rasterize( ) -> UIImage {
75- return rasterize ( with: size)
76- }
7774
7875#if os(watchOS)
79- func rasterize( with size: CGSize ? = nil , scale: CGFloat = 0 , insets: UIEdgeInsets = . zero) -> UIImage {
80- let insets = Insets ( top: insets. top, left: insets. left, bottom: insets. bottom, right: insets. right)
81- let ( bounds, pixelsWide, pixelsHigh) = makeBounds ( size: size, scale: 1 , insets: insets)
82-
83- let actualScale = scale <= 0 ? WKInterfaceDevice . current ( ) . screenScale : scale
76+ func rasterize( scale: CGFloat = 0 ) -> UIImage {
77+ let ( bounds, pixelsWide, pixelsHigh) = SVG . makeBounds ( size: size, scale: 1 )
78+ let actualScale = scale <= 0 ? SVG . defaultScale : scale
8479 UIGraphicsBeginImageContextWithOptions ( CGSize ( width: pixelsWide, height: pixelsHigh) , false , actualScale)
8580 defer { UIGraphicsEndImageContext ( ) }
8681
@@ -91,40 +86,29 @@ public extension SVG {
9186 return UIGraphicsGetImageFromCurrentImageContext ( ) ?? UIImage ( )
9287 }
9388#else
94- private func makeFormat( ) -> UIGraphicsImageRendererFormat {
95- guard #available( iOS 12 . 0 , * ) else {
96- let f = UIGraphicsImageRendererFormat . default ( )
97- f. prefersExtendedRange = true
98- return f
99- }
89+ func rasterize( scale: CGFloat = 0 ) -> UIImage {
90+ let ( bounds, pixelsWide, pixelsHigh) = SVG . makeBounds ( size: size, scale: 1 )
10091 let f = UIGraphicsImageRendererFormat . preferred ( )
10192 f. preferredRange = . automatic
102- return f
103- }
104-
105- func rasterize( with size: CGSize ? = nil , scale: CGFloat = 0 , insets: UIEdgeInsets = . zero) -> UIImage {
106- let insets = Insets ( top: insets. top, left: insets. left, bottom: insets. bottom, right: insets. right)
107- let ( bounds, pixelsWide, pixelsHigh) = makeBounds ( size: size, scale: 1 , insets: insets)
108- let f = makeFormat ( )
109- f. scale = scale <= 0 ? UIScreen . main. scale : scale
93+ f. scale = scale <= 0 ? SVG . defaultScale : scale
11094 f. opaque = false
11195 let r = UIGraphicsImageRenderer ( size: CGSize ( width: pixelsWide, height: pixelsHigh) , format: f)
112- return r. image {
96+ return r. image {
11397 $0. cgContext. draw ( self , in: bounds)
11498 }
11599 }
116100#endif
117101
118- func pngData( size : CGSize ? = nil , scale: CGFloat = 0 , insets : UIEdgeInsets = . zero ) throws -> Data {
119- let image = rasterize ( with : size , scale: scale, insets : insets )
102+ func pngData( scale: CGFloat = 0 ) throws -> Data {
103+ let image = rasterize ( scale: scale)
120104 guard let data = image. pngData ( ) else {
121105 throw Error ( " Failed to create png data " )
122106 }
123107 return data
124108 }
125109
126- func jpegData( size : CGSize ? = nil , scale: CGFloat = 0 , compressionQuality quality: CGFloat = 1 , insets : UIEdgeInsets = . zero ) throws -> Data {
127- let image = rasterize ( with : size , scale: scale, insets : insets )
110+ func jpegData( scale: CGFloat = 0 , compressionQuality quality: CGFloat = 1 ) throws -> Data {
111+ let image = rasterize ( scale: scale)
128112 guard let data = image. jpegData ( compressionQuality: quality) else {
129113 throw Error ( " Failed to create jpeg data " )
130114 }
@@ -134,25 +118,12 @@ public extension SVG {
134118
135119extension SVG {
136120
137- func jpegData( size: CGSize ? , scale: CGFloat , insets: Insets ) throws -> Data {
138- let insets = UIEdgeInsets ( top: insets. top, left: insets. left, bottom: insets. bottom, right: insets. right)
139- return try jpegData ( size: size, scale: scale, insets: insets)
140- }
141-
142- func pngData( size: CGSize ? , scale: CGFloat , insets: Insets ) throws -> Data {
143- let insets = UIEdgeInsets ( top: insets. top, left: insets. left, bottom: insets. bottom, right: insets. right)
144- return try pngData ( size: size, scale: scale, insets: insets)
145- }
146-
147- func makeBounds( size: CGSize ? , scale: CGFloat , insets: Insets ) -> ( bounds: CGRect , pixelsWide: Int , pixelsHigh: Int ) {
148- let newScale : CGFloat = {
121+ static var defaultScale : CGFloat {
149122#if os(watchOS)
150- return scale <= 0 ? WKInterfaceDevice . current ( ) . screenScale : scale
123+ WKInterfaceDevice . current ( ) . screenScale
151124#else
152- return scale <= 0 ? UIScreen . main. scale : scale
125+ UIScreen . main. scale
153126#endif
154- } ( )
155- return Self . makeBounds ( size: size, defaultSize: self . size, scale: newScale, insets: insets)
156127 }
157128
158129 private struct Error : LocalizedError {
0 commit comments