ReadViewSDK/Sources/RDEpubReaderView/EPUBCore/RDEPUBPublication.swift
shenlei d7fcda345d refactor: rename RDReaderView -> RDEpubReaderView, update pod config and docs
- Rename source module from RDReaderView to RDEpubReaderView
- Move all source files from Sources/RDReaderView/ to Sources/RDEpubReaderView/
- Update podspec: RDReaderView.podspec -> RDEpubReaderView.podspec
- Update Podfile, demo project, and CocoaPods config for new pod name
- Delete old RDReaderView pod support files from ReadViewDemo/Pods
- Add new RDEpubReaderView pod support files
- Update documentation (API ref, architecture, UML, conventions, etc.)
- Add FixedLayoutRotationTests
- Update .gitignore: exclude .DS_Store, manual unpack backups, _ssoft-output
2026-07-10 19:44:53 +09:00

71 lines
1.8 KiB
Swift

import Foundation
public final class RDEPUBPublication {
public let parser: RDEPUBParser
public let resourceResolver: RDEPUBResourceResolver
public init(parser: RDEPUBParser) {
self.parser = parser
self.resourceResolver = RDEPUBResourceResolver(parser: parser)
}
public var metadata: RDEPUBMetadata {
parser.metadata
}
public var manifest: [String: RDEPUBManifestItem] {
parser.manifest
}
public var spine: [RDEPUBSpineItem] {
parser.spine
}
public var tableOfContents: [EPUBTableOfContentsItem] {
parser.tableOfContents
}
public var layout: RDEPUBLayout {
metadata.layout
}
public var readingProfile: RDEPUBReadingProfile {
parser.readingProfile()
}
public var readingProgression: RDEPUBReadingProgression {
metadata.readingProgression
}
public var bookIdentifier: String? {
metadata.identifier
}
public func fixedLayoutSpreadEnabled(for preferences: RDEPUBPreferences, viewportSize: CGSize) -> Bool {
guard layout == .fixed else {
return false
}
guard metadata.spread?.lowercased() != "none" else {
return false
}
switch preferences.fixedLayoutSpreadMode {
case .never:
return false
case .always:
return spine.count > 1
case .automatic:
return viewportSize.width > viewportSize.height
}
}
public func makeFixedSpreads(preferences: RDEPUBPreferences, viewportSize: CGSize) -> [EPUBFixedSpread] {
EPUBFixedSpread.makeSpreads(
spine: spine,
spreadEnabled: fixedLayoutSpreadEnabled(for: preferences, viewportSize: viewportSize)
)
}
}