22 lines
630 B
Swift
22 lines
630 B
Swift
import Foundation
|
||
|
||
struct RDEPUBChapterOffsetMap {
|
||
let fragmentOffsets: [String: Int]
|
||
let pageStartOffsets: [Int]
|
||
let pageEndOffsets: [Int]
|
||
|
||
/// fragmentID -> 章内字符偏移
|
||
func chapterOffset(forFragmentID fragmentID: String) -> Int? {
|
||
return fragmentOffsets[fragmentID]
|
||
}
|
||
|
||
/// 章内字符偏移 -> 章内页码(从 0 开始)
|
||
func pageIndex(forChapterOffset offset: Int) -> Int? {
|
||
for i in 0..<pageStartOffsets.count {
|
||
if offset >= pageStartOffsets[i] && offset <= pageEndOffsets[i] {
|
||
return i
|
||
}
|
||
}
|
||
return nil
|
||
}
|
||
} |