- 实现EPUB阅读器搜索功能及选中注释功能 - 优化CFI模块,修复代码审查发现的11个问题 - 实现大书远距目录跳转与后台补全优化方案 - 优化设置面板与章节运行时联动 - 重构及大量改进优化
49 lines
1.2 KiB
Swift
49 lines
1.2 KiB
Swift
|
|
import UIKit
|
|
|
|
protocol RDEPUBTextBookBuilding {
|
|
|
|
func build(
|
|
parser: RDEPUBParser,
|
|
publication: RDEPUBPublication,
|
|
pageSize: CGSize,
|
|
style: RDEPUBTextRenderStyle
|
|
) throws -> RDEPUBTextBook
|
|
}
|
|
|
|
struct RDEPUBChapterRenderPipeline {
|
|
private let renderer: RDEPUBTextRenderer
|
|
|
|
init(renderer: RDEPUBTextRenderer) {
|
|
self.renderer = renderer
|
|
}
|
|
|
|
func render(_ request: RDEPUBTextChapterRenderRequest) throws -> RDEPUBRenderedChapterContent {
|
|
try renderer.renderChapter(request: request)
|
|
}
|
|
}
|
|
|
|
struct RDEPUBChapterPaginationPipeline {
|
|
private let frameFactory: RDEPUBPageFrameBuilding
|
|
|
|
init(frameFactory: RDEPUBPageFrameBuilding = RDEPUBCoreTextPageFrameFactory()) {
|
|
self.frameFactory = frameFactory
|
|
}
|
|
|
|
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 {}
|