右对齐文本显示修复(如"巫鸿"只显示"鸿"的问题): - RDEPUBChapterTailNormalizer: 短尾页合并时检查 avoidPageBreakInside 语义, 避免将带有此标记的短文本(如 right-info 署名)错误合并回上一页 - RDEPUBTextContentView: 续段归一化时跳过右对齐/居中对齐的段落, 防止错误修改 firstLineHeadIndent 导致首字不可见 - RDEPUBCSSCompatibilityLayer: 为含 text-align:right/center 的 CSS 块 自动注入 text-indent:0 !important,确保右对齐/居中文本无首行缩进 - RDEPUBTextRendererSupport: 排版属性归一化时将右对齐/居中段落的 firstLineHeadIndent 重置为 0 图片查看器及脚注点击功能: - 新增 RDEPUBImageViewController 和 RDEPUBImageViewerCoordinator, 支持从 WebView 和 TextPage 两种模式查看图片 - epub-bridge.js: 检测图片和脚注图片的点击事件,脚注图片显示弹窗 - RDEPUBJavaScriptBridge: 新增 imageDidTap/footnoteDidTap 桥接消息 - RDEPUBWebView: 新增图片和脚注点击的 delegate 方法 - RDEPUBAttachmentNormalizer: 改进脚注检测,优先使用 alt 文本判断 - RDEPUBPaginationModels: 新增 .footnote 附件类型 - RDEPUBPageLayoutSnapshot: 运行时动态解析附件类型,脚注优先级高于图片 位置解析改进: - RDEPUBReaderController+LocationResolution: 利用 rangeInfo 提升页码定位精度 其他: - RDEPUBTextBookCache: schema 版本升级至 13 - RDEPUBReaderTheme: 主题更新 - Pod 项目文件更新 Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
3.8 KiB
Swift
103 lines
3.8 KiB
Swift
import UIKit
|
|
|
|
public struct RDEPUBReaderTheme: Equatable {
|
|
|
|
public var contentBackgroundColor: UIColor
|
|
|
|
public var contentTextColor: UIColor
|
|
|
|
public var toolBackgroundColor: UIColor
|
|
|
|
public var toolControlTextColor: UIColor
|
|
|
|
public var toolControlBorderUnselectColor: UIColor
|
|
|
|
public var toolLineColor: UIColor
|
|
|
|
public init(
|
|
contentBackgroundColor: UIColor,
|
|
contentTextColor: UIColor,
|
|
toolBackgroundColor: UIColor,
|
|
toolControlTextColor: UIColor,
|
|
toolControlBorderUnselectColor: UIColor,
|
|
toolLineColor: UIColor
|
|
) {
|
|
self.contentBackgroundColor = contentBackgroundColor
|
|
self.contentTextColor = contentTextColor
|
|
self.toolBackgroundColor = toolBackgroundColor
|
|
self.toolControlTextColor = toolControlTextColor
|
|
self.toolControlBorderUnselectColor = toolControlBorderUnselectColor
|
|
self.toolLineColor = toolLineColor
|
|
}
|
|
|
|
public static let light = RDEPUBReaderTheme(
|
|
contentBackgroundColor: .white,
|
|
contentTextColor: .black,
|
|
toolBackgroundColor: .white,
|
|
toolControlTextColor: .black,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
|
|
public static let dark = RDEPUBReaderTheme(
|
|
contentBackgroundColor: .black,
|
|
contentTextColor: .white,
|
|
toolBackgroundColor: .black,
|
|
toolControlTextColor: .white,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
|
|
public static let yellow = RDEPUBReaderTheme(
|
|
contentBackgroundColor: UIColor(red: 0.89, green: 0.87, blue: 0.79, alpha: 1),
|
|
contentTextColor: .black,
|
|
toolBackgroundColor: UIColor(red: 0.89, green: 0.87, blue: 0.79, alpha: 1),
|
|
toolControlTextColor: .black,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
|
|
public static let green = RDEPUBReaderTheme(
|
|
contentBackgroundColor: UIColor(red: 0.87, green: 0.91, blue: 0.82, alpha: 1),
|
|
contentTextColor: .black,
|
|
toolBackgroundColor: UIColor(red: 0.87, green: 0.91, blue: 0.82, alpha: 1),
|
|
toolControlTextColor: .black,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
|
|
public static let pink = RDEPUBReaderTheme(
|
|
contentBackgroundColor: UIColor(red: 1, green: 0.89, blue: 0.91, alpha: 1),
|
|
contentTextColor: .black,
|
|
toolBackgroundColor: UIColor(red: 1, green: 0.89, blue: 0.91, alpha: 1),
|
|
toolControlTextColor: .black,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
|
|
public static let blue = RDEPUBReaderTheme(
|
|
contentBackgroundColor: UIColor(red: 0.8, green: 0.84, blue: 0.89, alpha: 1),
|
|
contentTextColor: .black,
|
|
toolBackgroundColor: UIColor(red: 0.8, green: 0.84, blue: 0.89, alpha: 1),
|
|
toolControlTextColor: .black,
|
|
toolControlBorderUnselectColor: UIColor.lightGray.withAlphaComponent(0.5),
|
|
toolLineColor: UIColor.lightGray.withAlphaComponent(0.5)
|
|
)
|
|
}
|
|
|
|
extension RDEPUBReaderTheme {
|
|
|
|
/// Background color for the full-screen image viewer.
|
|
/// Always near-black regardless of theme, since the image is the focus.
|
|
var imageViewerBackgroundColor: UIColor {
|
|
UIColor(white: 0.0, alpha: 0.95)
|
|
}
|
|
|
|
var themeBackgroundColorCSS: String {
|
|
contentBackgroundColor.rd_cssString
|
|
}
|
|
|
|
var themeTextColorCSS: String {
|
|
contentTextColor.rd_cssString
|
|
}
|
|
} |