Files
ReadViewSDK/Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/RDEPUBChapterLocation.swift
T

33 lines
1.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Foundation
/// 章节级位置模型——单章内的精确定位
/// 取代旧版 RDEPUBLocation 的全局 progression 方式
public struct RDEPUBChapterLocation: Codable, Equatable {
/// 章节在 spine 中的索引
public var spineIndex: Int
/// 章内字符偏移(从章首算起,0-based)
public var chapterOffset: Int
/// HTML fragment ID(如章节内锚点 #section1
public var fragmentID: String?
/// 章内 progression(可选,fragmentID 优先时为 nil
public var progressionInChapter: Double?
/// schema 版本:1=粗估降级, 2=精确值
public var schemaVersion: Int
public init(
spineIndex: Int,
chapterOffset: Int,
fragmentID: String? = nil,
progressionInChapter: Double? = nil,
schemaVersion: Int = 2
) {
self.spineIndex = spineIndex
self.chapterOffset = chapterOffset
self.fragmentID = fragmentID.flatMap { $0.isEmpty ? nil : $0 }
self.progressionInChapter = progressionInChapter
self.schemaVersion = schemaVersion
}
/// 粗估结果标记:schemaVersion == 1 表示 chapterOffset 由 progression 粗估得来
var isFallbackEstimate: Bool { schemaVersion == 1 }
}