Epub阅读器0.0.1
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
import UIKit
|
||||
|
||||
public enum RDEPUBReaderDisplayMode: String, Codable, Equatable {
|
||||
case pageCurl
|
||||
case horizontalScroll
|
||||
case verticalScroll
|
||||
case horizontalCoverScroll
|
||||
|
||||
init(displayType: RDReaderView.DisplayType) {
|
||||
switch displayType {
|
||||
case .pageCurl:
|
||||
self = .pageCurl
|
||||
case .horizontalScroll:
|
||||
self = .horizontalScroll
|
||||
case .verticalScroll:
|
||||
self = .verticalScroll
|
||||
}
|
||||
}
|
||||
|
||||
var displayType: RDReaderView.DisplayType {
|
||||
switch self {
|
||||
case .pageCurl:
|
||||
return .pageCurl
|
||||
case .horizontalScroll, .horizontalCoverScroll:
|
||||
return .horizontalScroll
|
||||
case .verticalScroll:
|
||||
return .verticalScroll
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum RDEPUBReaderThemePreset: String, Codable, CaseIterable, Equatable {
|
||||
case light
|
||||
case yellow
|
||||
case green
|
||||
case pink
|
||||
case blue
|
||||
case dark
|
||||
|
||||
public var theme: RDEPUBReaderTheme {
|
||||
switch self {
|
||||
case .light:
|
||||
return .light
|
||||
case .yellow:
|
||||
return .yellow
|
||||
case .green:
|
||||
return .green
|
||||
case .pink:
|
||||
return .pink
|
||||
case .blue:
|
||||
return .blue
|
||||
case .dark:
|
||||
return .dark
|
||||
}
|
||||
}
|
||||
|
||||
public init?(theme: RDEPUBReaderTheme) {
|
||||
switch theme {
|
||||
case .light:
|
||||
self = .light
|
||||
case .yellow:
|
||||
self = .yellow
|
||||
case .green:
|
||||
self = .green
|
||||
case .pink:
|
||||
self = .pink
|
||||
case .blue:
|
||||
self = .blue
|
||||
case .dark:
|
||||
self = .dark
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public struct RDEPUBReaderSettings: Codable, Equatable {
|
||||
public var brightness: CGFloat?
|
||||
public var fontSize: CGFloat?
|
||||
public var lineHeightMultiple: CGFloat?
|
||||
public var displayMode: RDEPUBReaderDisplayMode?
|
||||
public var themePreset: RDEPUBReaderThemePreset?
|
||||
|
||||
public init(
|
||||
brightness: CGFloat? = nil,
|
||||
fontSize: CGFloat? = nil,
|
||||
lineHeightMultiple: CGFloat? = nil,
|
||||
displayMode: RDEPUBReaderDisplayMode? = nil,
|
||||
themePreset: RDEPUBReaderThemePreset? = nil
|
||||
) {
|
||||
self.brightness = brightness
|
||||
self.fontSize = fontSize
|
||||
self.lineHeightMultiple = lineHeightMultiple
|
||||
self.displayMode = displayMode
|
||||
self.themePreset = themePreset
|
||||
}
|
||||
|
||||
public func applying(to configuration: RDEPUBReaderConfiguration) -> RDEPUBReaderConfiguration {
|
||||
var resolvedConfiguration = configuration
|
||||
|
||||
if let fontSize {
|
||||
resolvedConfiguration.fontSize = fontSize
|
||||
}
|
||||
if let lineHeightMultiple {
|
||||
resolvedConfiguration.lineHeightMultiple = lineHeightMultiple
|
||||
}
|
||||
if let displayMode {
|
||||
resolvedConfiguration.displayType = displayMode.displayType
|
||||
}
|
||||
if let themePreset {
|
||||
resolvedConfiguration.theme = themePreset.theme
|
||||
}
|
||||
|
||||
return resolvedConfiguration
|
||||
}
|
||||
|
||||
public static func capture(
|
||||
configuration: RDEPUBReaderConfiguration,
|
||||
brightness: CGFloat
|
||||
) -> RDEPUBReaderSettings {
|
||||
RDEPUBReaderSettings(
|
||||
brightness: max(0, min(1, brightness)),
|
||||
fontSize: configuration.fontSize,
|
||||
lineHeightMultiple: configuration.lineHeightMultiple,
|
||||
displayMode: RDEPUBReaderDisplayMode(displayType: configuration.displayType),
|
||||
themePreset: RDEPUBReaderThemePreset(theme: configuration.theme)
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user