Files
ReadViewSDK/Sources/RDReaderView/EPUBTextRendering/BuildPipeline/RDEPUBTextBuildPipelineInterfaces.swift
T
shenandshen 948004eed1 docs: 补充注释、修正过时文档、清理重复内容
源码注释:
- 为 ~60 个 Swift 文件补充缺失的 doc comment(file header、类型、属性、方法)
- 修正 4 处错误注释:翻页模式数量、搜索行为描述、手势识别器描述、悬空文档块

文档维护:
- 删除重复文档:WXRead/读书EPUB阅读器实现架构.md(与微信读书版完全一致)
- 合并重叠文档:阅读器规划.md → 阅读器功能开发计划.md(单一真值)
- 修正过时内容:所有文档中"四种翻页模式"→"三种",移除 horizontalCoverScroll
- 更新架构图:补齐 EPUBUI/ReaderController、Paging/、Typesetter/ 等子目录
- 更新 index.md 索引:新增开发计划和架构对比文档引用
2026-06-01 09:33:23 +08:00

67 lines
2.2 KiB
Swift

// RDEPUBTextBuildPipelineInterfaces.swift
// EPUB 文本构建管线接口定义,包括全书构建、章节渲染与分页管线。
import UIKit
/// EPUB 全书文本构建接口,将 EPUB 出版物解析为可分页的文本书籍。
protocol RDEPUBTextBookBuilding {
func build(
parser: RDEPUBParser,
publication: RDEPUBPublication,
pageSize: CGSize,
style: RDEPUBTextRenderStyle
) throws -> RDEPUBTextBook
}
/// 章节渲染管线,将章节渲染请求委托给底层文本渲染器。
struct RDEPUBChapterRenderPipeline {
private let renderer: RDEPUBTextRenderer
/// 初始化渲染管线。
/// - Parameter renderer: 文本渲染器实例
init(renderer: RDEPUBTextRenderer) {
self.renderer = renderer
}
/// 渲染单个章节,返回渲染后的富文本内容。
/// - Parameter request: 章节渲染请求
/// - Returns: 渲染完成的章节内容
func render(_ request: RDEPUBTextChapterRenderRequest) throws -> RDEPUBRenderedChapterContent {
try renderer.renderChapter(request: request)
}
}
/// 章节分页管线,将渲染后的富文本按页面尺寸拆分为文本帧数组。
struct RDEPUBChapterPaginationPipeline {
private let frameFactory: RDEPUBPageFrameBuilding
/// 初始化分页管线。
/// - Parameter frameFactory: 页面帧工厂,默认使用 CoreText 实现
init(frameFactory: RDEPUBPageFrameBuilding = RDEPUBCoreTextPageFrameFactory()) {
self.frameFactory = frameFactory
}
/// 将富文本内容分页,返回页面帧数组。
/// - Parameters:
/// - content: 待分页的富文本
/// - pageSize: 页面尺寸
/// - config: 排版配置
/// - fragmentOffsets: fragment 锚点偏移映射
/// - Returns: 页面帧数组
func frames(
for content: NSAttributedString,
pageSize: CGSize,
config: RDEPUBTextLayoutConfig,
fragmentOffsets: [String: Int]
) -> [RDEPUBTextLayoutFrame] {
frameFactory.makeFrames(
attributedString: content,
pageSize: pageSize,
config: config,
fragmentOffsets: fragmentOffsets
)
}
}
extension RDEPUBTextBookBuilder: RDEPUBTextBookBuilding {}