- 拆分 ContentDelegates/TextContentView 为独立协调器(InteractionCoordinator、LocationResolution、ExternalLinks、AttachmentTooltip) - 新增 RDEPUBAttachmentTooltipView/OverlayView 附件气泡提示 - 新增 RDEPUBDarkImageAdjuster 暗色模式图片亮度适配 - 新增 RDEPUBSelectionLoupeView 选区放大镜 - 新增 MetadataParseWorker/CancellationController 元数据解析取消机制 - 重构 PresentationRuntime/PaginationCoordinator 精简职责 - 优化 ChapterLoader/WarmupOrchestrator 异步章节加载 - CFI 模块微调与 NoteModels 更新 - 清理冗余文档,更新架构/UML/业务逻辑文档 Co-Authored-By: Claude <noreply@anthropic.com>
55 lines
1.8 KiB
Swift
55 lines
1.8 KiB
Swift
import Foundation
|
|
|
|
final class RDEPUBReaderServices {
|
|
|
|
var dependencies: RDEPUBReaderDependencies
|
|
|
|
init(dependencies: RDEPUBReaderDependencies) {
|
|
self.dependencies = dependencies
|
|
}
|
|
|
|
func resolvedTextRenderer(configuration: RDEPUBReaderConfiguration) -> RDEPUBTextRenderer {
|
|
dependencies.makeTextRenderer(configuration.textRenderingEngine)
|
|
}
|
|
|
|
func makeParser() -> RDEPUBParser {
|
|
dependencies.makeParser()
|
|
}
|
|
|
|
func makePaginator() -> RDEPUBPaginator {
|
|
dependencies.makePaginator()
|
|
}
|
|
|
|
func makeTextBookBuilder(
|
|
configuration: RDEPUBReaderConfiguration,
|
|
cache: RDEPUBTextBookCache?,
|
|
layoutConfig: RDEPUBTextLayoutConfig
|
|
) -> RDEPUBTextBookBuilder {
|
|
dependencies.makeTextBookBuilder(
|
|
resolvedTextRenderer(configuration: configuration),
|
|
cache,
|
|
layoutConfig
|
|
)
|
|
}
|
|
|
|
func makePlainTextBookBuilder(
|
|
configuration: RDEPUBReaderConfiguration,
|
|
layoutConfig: RDEPUBTextLayoutConfig
|
|
) -> RDPlainTextBookBuilder {
|
|
dependencies.makePlainTextBookBuilder(
|
|
resolvedTextRenderer(configuration: configuration),
|
|
layoutConfig
|
|
)
|
|
}
|
|
|
|
func makeChapterSummaryDiskCache(bookIdentifier: String?) -> RDEPUBChapterSummaryDiskCache {
|
|
let cachesDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first
|
|
?? FileManager.default.temporaryDirectory
|
|
let bookID = (bookIdentifier ?? "default").rd_sha256Hex
|
|
let directory = cachesDirectory
|
|
.appendingPathComponent("RDEPUBChapterSummaryCache", isDirectory: true)
|
|
.appendingPathComponent(bookID, isDirectory: true)
|
|
return RDEPUBChapterSummaryDiskCache(cacheDirectory: directory)
|
|
}
|
|
}
|