124 lines
3.6 KiB
Swift
124 lines
3.6 KiB
Swift
import UIKit
|
|
|
|
public enum RDEPUBFixedLayoutFit: String, Codable {
|
|
case auto
|
|
case page
|
|
case width
|
|
}
|
|
|
|
public enum RDEPUBFixedLayoutSpreadMode: String, Codable {
|
|
case automatic
|
|
case always
|
|
case never
|
|
}
|
|
|
|
public struct RDEPUBPresentationStyle: Equatable {
|
|
public var viewportSize: CGSize
|
|
public var contentInsets: UIEdgeInsets
|
|
public var fontSize: CGFloat
|
|
public var lineHeightMultiple: CGFloat
|
|
public var themeBackgroundColor: String?
|
|
public var themeTextColor: String?
|
|
|
|
public init(
|
|
viewportSize: CGSize,
|
|
contentInsets: UIEdgeInsets,
|
|
fontSize: CGFloat,
|
|
lineHeightMultiple: CGFloat,
|
|
themeBackgroundColor: String? = nil,
|
|
themeTextColor: String? = nil
|
|
) {
|
|
self.viewportSize = viewportSize
|
|
self.contentInsets = contentInsets
|
|
self.fontSize = fontSize
|
|
self.lineHeightMultiple = lineHeightMultiple
|
|
self.themeBackgroundColor = themeBackgroundColor
|
|
self.themeTextColor = themeTextColor
|
|
}
|
|
}
|
|
|
|
public struct RDEPUBReflowableRenderRequest: Equatable {
|
|
public var spineIndex: Int
|
|
public var href: String
|
|
public var pageIndex: Int
|
|
public var totalPagesInChapter: Int
|
|
public var presentation: RDEPUBPresentationStyle
|
|
public var targetLocation: RDEPUBLocation?
|
|
public var highlights: [RDEPUBHighlight]
|
|
public var searchPresentation: RDEPUBSearchPresentation?
|
|
|
|
public init(
|
|
spineIndex: Int,
|
|
href: String,
|
|
pageIndex: Int,
|
|
totalPagesInChapter: Int,
|
|
presentation: RDEPUBPresentationStyle,
|
|
targetLocation: RDEPUBLocation? = nil,
|
|
highlights: [RDEPUBHighlight] = [],
|
|
searchPresentation: RDEPUBSearchPresentation? = nil
|
|
) {
|
|
self.spineIndex = spineIndex
|
|
self.href = href
|
|
self.pageIndex = pageIndex
|
|
self.totalPagesInChapter = totalPagesInChapter
|
|
self.presentation = presentation
|
|
self.targetLocation = targetLocation
|
|
self.highlights = highlights
|
|
self.searchPresentation = searchPresentation
|
|
}
|
|
}
|
|
|
|
public struct RDEPUBFixedRenderRequest: Equatable {
|
|
public var spread: EPUBFixedSpread
|
|
public var viewportSize: CGSize
|
|
public var contentInset: UIEdgeInsets
|
|
public var backgroundColorCSS: String?
|
|
public var fit: RDEPUBFixedLayoutFit
|
|
public var searchPresentation: RDEPUBSearchPresentation?
|
|
|
|
public init(
|
|
spread: EPUBFixedSpread,
|
|
viewportSize: CGSize,
|
|
contentInset: UIEdgeInsets,
|
|
backgroundColorCSS: String? = nil,
|
|
fit: RDEPUBFixedLayoutFit = .page,
|
|
searchPresentation: RDEPUBSearchPresentation? = nil
|
|
) {
|
|
self.spread = spread
|
|
self.viewportSize = viewportSize
|
|
self.contentInset = contentInset
|
|
self.backgroundColorCSS = backgroundColorCSS
|
|
self.fit = fit
|
|
self.searchPresentation = searchPresentation
|
|
}
|
|
}
|
|
|
|
public enum RDEPUBRenderRequest: Equatable {
|
|
case reflowable(RDEPUBReflowableRenderRequest)
|
|
case fixed(RDEPUBFixedRenderRequest)
|
|
|
|
public var isFixedLayout: Bool {
|
|
if case .fixed = self {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
public var primarySpineIndex: Int {
|
|
switch self {
|
|
case .reflowable(let request):
|
|
return request.spineIndex
|
|
case .fixed(let request):
|
|
return request.spread.primaryResource.spineIndex
|
|
}
|
|
}
|
|
|
|
public var primaryHref: String {
|
|
switch self {
|
|
case .reflowable(let request):
|
|
return request.href
|
|
case .fixed(let request):
|
|
return request.spread.primaryResource.href
|
|
}
|
|
}
|
|
} |