import UIKit public enum RDEPUBTextRenderingEngine: Equatable { case dtCoreText } public struct RDEPUBReaderConfiguration: Equatable { public var fontSize: CGFloat public var lineHeightMultiple: CGFloat public var displayType: RDReaderView.DisplayType public var landscapeDualPageEnabled: Bool public var showsTableOfContents: Bool public var allowsHighlights: Bool public var showsSettingsPanel: Bool public var reflowableContentInsets: UIEdgeInsets public var fixedContentInset: UIEdgeInsets public var theme: RDEPUBReaderTheme public var fixedLayoutFit: RDEPUBFixedLayoutFit public var fixedLayoutSpreadMode: RDEPUBFixedLayoutSpreadMode public var textRenderingEngine: RDEPUBTextRenderingEngine public init( fontSize: CGFloat = 15, lineHeightMultiple: CGFloat = 1.6, displayType: RDReaderView.DisplayType = .pageCurl, landscapeDualPageEnabled: Bool = true, showsTableOfContents: Bool = true, allowsHighlights: Bool = true, showsSettingsPanel: Bool = true, reflowableContentInsets: UIEdgeInsets = UIEdgeInsets(top: 40, left: 16, bottom: 40, right: 16), fixedContentInset: UIEdgeInsets = .zero, theme: RDEPUBReaderTheme = .light, fixedLayoutFit: RDEPUBFixedLayoutFit = .page, fixedLayoutSpreadMode: RDEPUBFixedLayoutSpreadMode = .automatic, textRenderingEngine: RDEPUBTextRenderingEngine = .dtCoreText ) { self.fontSize = fontSize self.lineHeightMultiple = lineHeightMultiple self.displayType = displayType self.landscapeDualPageEnabled = landscapeDualPageEnabled self.showsTableOfContents = showsTableOfContents self.allowsHighlights = allowsHighlights self.showsSettingsPanel = showsSettingsPanel self.reflowableContentInsets = reflowableContentInsets self.fixedContentInset = fixedContentInset self.theme = theme self.fixedLayoutFit = fixedLayoutFit self.fixedLayoutSpreadMode = fixedLayoutSpreadMode self.textRenderingEngine = textRenderingEngine } public static let `default` = RDEPUBReaderConfiguration() } extension RDEPUBReaderConfiguration { func makePreferences() -> RDEPUBPreferences { RDEPUBPreferences( fontSize: fontSize, lineHeightMultiple: lineHeightMultiple, reflowableContentInsets: reflowableContentInsets, fixedContentInset: fixedContentInset, themeBackgroundColor: theme.themeBackgroundColorCSS, themeTextColor: theme.themeTextColorCSS, fixedBackgroundColor: theme.themeBackgroundColorCSS, fixedLayoutFit: fixedLayoutFit, fixedLayoutSpreadMode: fixedLayoutSpreadMode ) } }