@@ -19,7 +19,7 @@ public typealias RenderDrawHandler = PDFRenderDrawBlock
1919
2020/// Rendering options. Parameters of how an image should be rendered.
2121public enum RenderOption : RawRepresentable , Equatable {
22- public typealias RawValue = [ PSPDFRenderOption : Any ]
22+ public typealias RawValue = ( renderOption : PSPDFRenderOption , value : Any )
2323
2424 /// Changes the rendering to preserve the aspect ratio of the image.
2525 case preserveAspectRatio( Bool )
@@ -75,96 +75,94 @@ public enum RenderOption: RawRepresentable, Equatable {
7575 #endif
7676
7777 // swiftlint:disable:next function_body_length cyclomatic_complexity
78- public init ? ( rawValue: RawValue ) {
79- for (key, value) in rawValue {
80- switch key {
81- case . preserveAspectRatioKey:
82- self = . preserveAspectRatio( ( value as? NSNumber ) ? . boolValue ?? false )
83- case . ignoreDisplaySettingsKey:
84- self = . ignoreDisplaySettings( ( value as? NSNumber ) ? . boolValue ?? false )
85- case . pageColorKey:
86- self = . pageColor( value as? UIColor ?? . white)
87- case . invertedKey:
88- self = . inverted( ( value as? NSNumber ) ? . boolValue ?? false )
89- case . filtersKey:
90- let rawValue = ( value as? NSNumber ) ? . uintValue ?? . init( bitPattern: 0 )
91- self = . filters( RenderFilter ( rawValue: rawValue) )
92- case . interpolationQualityKey:
93- let qualityValue = CGInterpolationQuality ( rawValue: ( value as? NSNumber ) ? . int32Value ?? CGInterpolationQuality . default. rawValue)
94- self = . interpolationQuality( qualityValue ?? CGInterpolationQuality . default)
95- case . skipPageContentKey:
96- self = . skipPageContent( ( value as? NSNumber ) ? . boolValue ?? false )
97- case . overlayAnnotationsKey:
98- self = . overlayAnnotations( ( value as? NSNumber ) ? . boolValue ?? false )
99- case . skipAnnotationArrayKey:
100- self = . skipAnnotations( value as? [ PDFAnnotation ] ?? [ ] )
101- case . ignorePageClipKey:
102- self = . ignorePageClip( ( value as? NSNumber ) ? . boolValue ?? false )
103- case . allowAntiAliasingKey:
104- self = . allowAntiAliasing( ( value as? NSNumber ) ? . boolValue ?? false )
105- case . backgroundFillColorKey:
106- self = . backgroundFillColor( value as? UIColor ?? . black)
107- case . textRenderingUseCoreGraphicsKey:
108- self = . textRenderingUseCoreGraphics( ( value as? NSNumber ) ? . boolValue ?? false )
109- case . textRenderingClearTypeEnabledKey:
110- self = . textRenderingClearTypeEnabled( ( value as? NSNumber ) ? . boolValue ?? false )
111- case . interactiveFormFillColorKey:
112- self = . interactiveFormFillColor( value as? UIColor ?? . black)
113- case . drawBlockKey:
114- let closure : PDFRenderDrawBlock = unsafeBitCast ( value, to: PSPDFRenderDrawBlock . self)
115- self = . draw( closure)
116- case . drawSignHereOverlay:
117- self = . drawSignHereOverlay( ( value as? NSNumber ) ? . boolValue ?? false )
118- #if PSPDF_SUPPORTS_CIFILTER
119- case . ciFilterKey:
120- self = . ciFilters( value as? [ CIFilter ] ?? [ ] )
121- #endif
122- default :
123- fatalError ( " Unknown option " )
124- }
78+ public init ( rawValue: RawValue ) {
79+ let ( renderOption, value) = rawValue
80+ switch renderOption {
81+ case . preserveAspectRatioKey:
82+ self = . preserveAspectRatio( ( value as? NSNumber ) ? . boolValue ?? false )
83+ case . ignoreDisplaySettingsKey:
84+ self = . ignoreDisplaySettings( ( value as? NSNumber ) ? . boolValue ?? false )
85+ case . pageColorKey:
86+ self = . pageColor( value as? UIColor ?? . white)
87+ case . invertedKey:
88+ self = . inverted( ( value as? NSNumber ) ? . boolValue ?? false )
89+ case . filtersKey:
90+ let rawValue = ( value as? NSNumber ) ? . uintValue ?? . init( bitPattern: 0 )
91+ self = . filters( RenderFilter ( rawValue: rawValue) )
92+ case . interpolationQualityKey:
93+ let qualityValue = CGInterpolationQuality ( rawValue: ( value as? NSNumber ) ? . int32Value ?? CGInterpolationQuality . default. rawValue)
94+ self = . interpolationQuality( qualityValue ?? CGInterpolationQuality . default)
95+ case . skipPageContentKey:
96+ self = . skipPageContent( ( value as? NSNumber ) ? . boolValue ?? false )
97+ case . overlayAnnotationsKey:
98+ self = . overlayAnnotations( ( value as? NSNumber ) ? . boolValue ?? false )
99+ case . skipAnnotationArrayKey:
100+ self = . skipAnnotations( value as? [ PDFAnnotation ] ?? [ ] )
101+ case . ignorePageClipKey:
102+ self = . ignorePageClip( ( value as? NSNumber ) ? . boolValue ?? false )
103+ case . allowAntiAliasingKey:
104+ self = . allowAntiAliasing( ( value as? NSNumber ) ? . boolValue ?? false )
105+ case . backgroundFillColorKey:
106+ self = . backgroundFillColor( value as? UIColor ?? . black)
107+ case . textRenderingUseCoreGraphicsKey:
108+ self = . textRenderingUseCoreGraphics( ( value as? NSNumber ) ? . boolValue ?? false )
109+ case . textRenderingClearTypeEnabledKey:
110+ self = . textRenderingClearTypeEnabled( ( value as? NSNumber ) ? . boolValue ?? false )
111+ case . interactiveFormFillColorKey:
112+ self = . interactiveFormFillColor( value as? UIColor ?? . black)
113+ case . drawBlockKey:
114+ let closure : RenderDrawHandler = unsafeBitCast ( value as AnyObject , to: RenderDrawHandler . self)
115+ self = . draw( closure)
116+ case . drawSignHereOverlay:
117+ self = . drawSignHereOverlay( ( value as? NSNumber ) ? . boolValue ?? false )
118+ #if PSPDF_SUPPORTS_CIFILTER
119+ case . ciFilterKey:
120+ self = . ciFilters( value as? [ CIFilter ] ?? [ ] )
121+ #endif
122+ default :
123+ fatalError ( " Unknown option " )
125124 }
126- return nil
127125 }
128126
129127 public var rawValue : RawValue {
130128 switch self {
131129 case . preserveAspectRatio( let value) :
132- return [ . preserveAspectRatioKey: NSNumber ( value: value) ]
130+ return ( . preserveAspectRatioKey, NSNumber ( value: value) )
133131 case . ignoreDisplaySettings( let value) :
134- return [ . ignoreDisplaySettingsKey: NSNumber ( value: value) ]
132+ return ( . ignoreDisplaySettingsKey, NSNumber ( value: value) )
135133 case . pageColor( let value) :
136- return [ . pageColorKey: value]
134+ return ( . pageColorKey, value)
137135 case . inverted( let value) :
138- return [ . invertedKey: NSNumber ( value: value) ]
136+ return ( . invertedKey, NSNumber ( value: value) )
139137 case . filters( let filters) :
140- return [ . filtersKey: NSNumber ( value: filters. rawValue) ]
138+ return ( . filtersKey, NSNumber ( value: filters. rawValue) )
141139 case . interpolationQuality( let value) :
142- return [ . interpolationQualityKey: value. rawValue]
140+ return ( . interpolationQualityKey, value. rawValue)
143141 case . skipPageContent( let value) :
144- return [ . skipPageContentKey: NSNumber ( value: value) ]
142+ return ( . skipPageContentKey, NSNumber ( value: value) )
145143 case . overlayAnnotations( let value) :
146- return [ . overlayAnnotationsKey: NSNumber ( value: value) ]
144+ return ( . overlayAnnotationsKey, NSNumber ( value: value) )
147145 case . skipAnnotations( let annotations) :
148- return [ . skipAnnotationArrayKey: annotations]
146+ return ( . skipAnnotationArrayKey, annotations)
149147 case . ignorePageClip( let value) :
150- return [ . ignorePageClipKey: NSNumber ( value: value) ]
148+ return ( . ignorePageClipKey, NSNumber ( value: value) )
151149 case . allowAntiAliasing( let value) :
152- return [ . skipPageContentKey: NSNumber ( value: value) ]
150+ return ( . skipPageContentKey, NSNumber ( value: value) )
153151 case . backgroundFillColor( let color) :
154- return [ . backgroundFillColorKey: color]
152+ return ( . backgroundFillColorKey, color)
155153 case . textRenderingUseCoreGraphics( let value) :
156- return [ . skipPageContentKey: NSNumber ( value: value) ]
154+ return ( . skipPageContentKey, NSNumber ( value: value) )
157155 case . textRenderingClearTypeEnabled( let value) :
158- return [ . textRenderingClearTypeEnabledKey: NSNumber ( value: value) ]
156+ return ( . textRenderingClearTypeEnabledKey, NSNumber ( value: value) )
159157 case . interactiveFormFillColor( let color) :
160- return [ . interactiveFormFillColorKey: color]
158+ return ( . interactiveFormFillColorKey, color)
161159 case . draw( let closure) :
162- return [ . drawBlockKey: unsafeBitCast ( closure, to: AnyObject . self) ]
160+ return ( . drawBlockKey, unsafeBitCast ( closure, to: AnyObject . self) )
163161 case . drawSignHereOverlay( let value) :
164- return [ . drawSignHereOverlay: NSNumber ( value: value) ]
162+ return ( . drawSignHereOverlay, NSNumber ( value: value) )
165163 #if PSPDF_SUPPORTS_CIFILTER
166164 case . ciFilters( let filters) :
167- return [ . ciFilterKey: filters]
165+ return ( . ciFilterKey, filters)
168166 #endif
169167 }
170168 }
0 commit comments