Refactor tag file, remove subtitle

This commit is contained in:
Christoph Hagen
2025-01-05 17:18:23 +01:00
parent 5ac5a7b000
commit 29bba5e76e
11 changed files with 85 additions and 78 deletions

View File

@@ -63,34 +63,43 @@ final class FileResource: Item {
return imageDimensions.width / imageDimensions.height
}
private func update(imageDimensions size: CGSize?) {
guard let imageDimensions, let size else {
// First computation
DispatchQueue.main.async {
self.imageDimensions = size
}
return
}
guard imageDimensions != size else {
return
}
// Image must have changed, so force regeneration
DispatchQueue.main.async {
self.imageDimensions = size
self.didChange()
self.removeGeneratedImages()
}
}
var imageToDisplay: Image {
guard let imageData = content.storage.fileData(for: id) else {
print("Failed to load data for image \(id)")
return failureImage
}
if fileSize == nil {
DispatchQueue.main.async {
self.fileSize = imageData.count
}
}
update(fileSize: imageData.count)
guard let loadedImage = NSImage(data: imageData) else {
print("Failed to create image \(id)")
return failureImage
}
if loadedImage.size != imageDimensions {
DispatchQueue.main.async {
self.imageDimensions = loadedImage.size
}
}
update(imageDimensions: loadedImage.size)
return .init(nsImage: loadedImage)
}
func determineImageDimensions() {
let size = getImageDimensions()
DispatchQueue.main.async {
self.imageDimensions = size
}
self.update(imageDimensions: size)
}
private func getImageDimensions() -> CGSize? {
@@ -106,16 +115,34 @@ final class FileResource: Item {
return loadedImage.size
}
func determineFileSize() {
DispatchQueue.global(qos: .userInitiated).async {
let size = self.content.storage.size(of: self.id)
func update(fileSize size: Int?) {
guard let fileSize, let size else {
// First computation
DispatchQueue.main.async {
self.fileSize = size
}
return
}
guard fileSize != size else {
return
}
// File must have changed
DispatchQueue.main.async {
self.fileSize = size
self.didChange()
self.removeGeneratedImages()
}
}
func determineFileSize() {
DispatchQueue.global(qos: .userInitiated).async {
let size = self.content.storage.size(of: self.id)
self.update(fileSize: size)
}
}
func removeGeneratedImages() {
guard type.isImage else { return }
content.imageGenerator.removeVersions(of: id)
content.storage.deleteInOutputFolder(path: outputImageFolder)
}