refactor: rename RDReaderView -> RDEpubReaderView, update pod config and docs

- Rename source module from RDReaderView to RDEpubReaderView
- Move all source files from Sources/RDReaderView/ to Sources/RDEpubReaderView/
- Update podspec: RDReaderView.podspec -> RDEpubReaderView.podspec
- Update Podfile, demo project, and CocoaPods config for new pod name
- Delete old RDReaderView pod support files from ReadViewDemo/Pods
- Add new RDEpubReaderView pod support files
- Update documentation (API ref, architecture, UML, conventions, etc.)
- Add FixedLayoutRotationTests
- Update .gitignore: exclude .DS_Store, manual unpack backups, _ssoft-output
This commit is contained in:
shenlei
2026-07-10 19:44:53 +09:00
parent d5a7755702
commit d7fcda345d
460 changed files with 38358 additions and 2300 deletions
@@ -0,0 +1,61 @@
import UIKit
final class RDEPUBImageViewerCoordinator {
private weak var presentingController: UIViewController?
private let theme: RDEPUBReaderTheme
init(presentingController: UIViewController, theme: RDEPUBReaderTheme) {
self.presentingController = presentingController
self.theme = theme
}
// MARK: - From Native Text Path (UIImage already resolved)
func presentImage(_ image: UIImage, sourceRect: CGRect? = nil, altText: String? = nil) {
let config = RDEPUBImageViewController.Configuration(
image: image,
sourceRect: sourceRect,
altText: altText,
theme: theme
)
let viewerVC = RDEPUBImageViewController(configuration: config)
presentingController?.present(viewerVC, animated: true)
}
// MARK: - From WebView Path (need to resolve from src URL)
func presentImageFromWebView(
src: String,
baseHref: String?,
resourceResolver: RDEPUBResourceResolver
) {
guard let image = loadImage(src: src, baseHref: baseHref, resourceResolver: resourceResolver) else {
return
}
presentImage(image)
}
// MARK: - Private
private func loadImage(
src: String,
baseHref: String?,
resourceResolver: RDEPUBResourceResolver
) -> UIImage? {
let pathPart = src.components(separatedBy: "#").first ?? src
guard !pathPart.isEmpty else { return nil }
let fileURL: URL?
if let baseHref {
fileURL = resourceResolver.fileURL(forReference: pathPart, relativeToHref: baseHref)
} else {
let normalized = resourceResolver.normalizedHref(pathPart)
fileURL = normalized.flatMap { resourceResolver.fileURL(forRelativePath: $0) }
}
// provider
guard let fileURL, let data = resourceResolver.resourceData(at: fileURL) else { return nil }
return UIImage(data: data)
}
}