Skip to main content

keep fiddling with PHAssetImage

ID
daa445e
date
2023-06-09 06:36:56+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
d9b30e5
message
keep fiddling with PHAssetImage
changed files
5 files, 10 additions, 41 deletions

Changed files

BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (26643) → BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (26649)

diff --git a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
index dbb95b8..05161e6 100644
--- a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
+++ b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
@@ -18,7 +18,7 @@
 		94D7510C2A31A798005859E7 /* BlinkReviewerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7510B2A31A798005859E7 /* BlinkReviewerUITests.swift */; };
 		94D7510E2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7510D2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift */; };
 		94D7511C2A31A7B1005859E7 /* ThumbnailImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */; };
-		94D7511E2A31B243005859E7 /* PreviewImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511D2A31B243005859E7 /* PreviewImage.swift */; };
+		94D7511E2A31B243005859E7 /* FullSizeImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511D2A31B243005859E7 /* FullSizeImage.swift */; };
 		94D751202A31B53E005859E7 /* AlbumInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511F2A31B53E005859E7 /* AlbumInfo.swift */; };
 		94D751222A31BD8E005859E7 /* PhotoReviewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D751212A31BD8E005859E7 /* PhotoReviewer.swift */; };
 		94D7512B2A31D6AC005859E7 /* AssetHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7512A2A31D6AC005859E7 /* AssetHelpers.swift */; };
@@ -58,7 +58,7 @@
 		94D7510B2A31A798005859E7 /* BlinkReviewerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlinkReviewerUITests.swift; sourceTree = "<group>"; };
 		94D7510D2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlinkReviewerUITestsLaunchTests.swift; sourceTree = "<group>"; };
 		94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailImage.swift; sourceTree = "<group>"; };
-		94D7511D2A31B243005859E7 /* PreviewImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewImage.swift; sourceTree = "<group>"; };
+		94D7511D2A31B243005859E7 /* FullSizeImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullSizeImage.swift; sourceTree = "<group>"; };
 		94D7511F2A31B53E005859E7 /* AlbumInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumInfo.swift; sourceTree = "<group>"; };
 		94D751212A31BD8E005859E7 /* PhotoReviewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoReviewer.swift; sourceTree = "<group>"; };
 		94D7512A2A31D6AC005859E7 /* AssetHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetHelpers.swift; sourceTree = "<group>"; };
@@ -161,7 +161,7 @@
 			isa = PBXGroup;
 			children = (
 				94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */,
-				94D7511D2A31B243005859E7 /* PreviewImage.swift */,
+				94D7511D2A31B243005859E7 /* FullSizeImage.swift */,
 				94D7511F2A31B53E005859E7 /* AlbumInfo.swift */,
 				94D751212A31BD8E005859E7 /* PhotoReviewer.swift */,
 				94D7512F2A31DC4A005859E7 /* ThumbnailList.swift */,
@@ -314,7 +314,7 @@
 				94D7512B2A31D6AC005859E7 /* AssetHelpers.swift in Sources */,
 				94D2C8BD2A32796500BEE15B /* AlbumHelpers.swift in Sources */,
 				94D2C8BF2A3299BD00BEE15B /* PhotosLibrary.swift in Sources */,
-				94D7511E2A31B243005859E7 /* PreviewImage.swift in Sources */,
+				94D7511E2A31B243005859E7 /* FullSizeImage.swift in Sources */,
 				94D750F02A31A796005859E7 /* BlinkReviewerApp.swift in Sources */,
 				94D751202A31B53E005859E7 /* AlbumInfo.swift in Sources */,
 				94D751302A31DC4A005859E7 /* ThumbnailList.swift in Sources */,

BlinkReviewer/BlinkReviewer/Views/PreviewImage.swift (1035) → BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift (1111)

diff --git a/BlinkReviewer/BlinkReviewer/Views/PreviewImage.swift b/BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift
similarity index 95%
rename from BlinkReviewer/BlinkReviewer/Views/PreviewImage.swift
rename to BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift
index c78ca72..ad5a9af 100644
--- a/BlinkReviewer/BlinkReviewer/Views/PreviewImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift
@@ -8,12 +8,13 @@
 import Photos
 import SwiftUI
 
-struct PreviewImage: View {
+struct FullSizeImage: View {
     var asset: PHAsset
     
     @ObservedObject var image: PHAssetImage = PHAssetImage(nil, size: PHImageManagerMaximumSize)
     
     init(asset: PHAsset) {
+        print("Calling FullSizeImage.init() for \(asset.localIdentifier)")
         self.asset = asset
         self.image = PHAssetImage(asset, size: PHImageManagerMaximumSize)
     }

BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (4062) → BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (4063)

diff --git a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
index b0dbbff..78abb26 100644
--- a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
@@ -19,7 +19,7 @@ struct PhotoReviewer: View {
                 ThumbnailList(selectedAssetIndex: $selectedAssetIndex)
                     .environmentObject(photosLibrary)
                 
-                PreviewImage(asset: photosLibrary.assets[selectedAssetIndex])
+                FullSizeImage(asset: photosLibrary.assets[selectedAssetIndex])
                     .background(.black)
             }.onAppear {
                 NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in

BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (3377) → BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (2433)

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
index 733030e..195cf40 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
@@ -13,7 +13,7 @@ import Photos
 /// The image will be expanded to fill the square, and may be clipped
 /// if the original aspect ratio isn't square.
 struct ThumbnailImage: View {
-    @State var thumbnail: NSImage
+    @ObservedObject var thumbnail: PHAssetImage
     var state: ReviewState?
     var isFavorite: Bool
     var isSelected: Bool
@@ -27,7 +27,7 @@ struct ThumbnailImage: View {
     }
     
     var body: some View {
-        Image(nsImage: thumbnail)
+        Image(nsImage: thumbnail.image)
             .resizable()
             .saturation(state == .Rejected ? 0.0 : 1.0)
             // Note: it's taken several attempts to get this working correctly;
@@ -71,35 +71,3 @@ struct ThumbnailImage: View {
             }
     }
 }
-
-struct ThumbnailImage_Previews: PreviewProvider {
-    static var previews: some View {
-        ThumbnailImage(
-            thumbnail: NSImage(named: "IMG_5934")!,
-            state: .Approved,
-            isFavorite: true,
-            isSelected: true
-        ).previewDisplayName("approved, favorite")
-        
-        ThumbnailImage(
-            thumbnail: NSImage(named: "IMG_5934")!,
-            state: .Rejected,
-            isFavorite: false,
-            isSelected: false
-        ).previewDisplayName("rejected")
-        
-        ThumbnailImage(
-            thumbnail: NSImage(named: "IMG_5934")!,
-            state: .NeedsAction,
-            isFavorite: false,
-            isSelected: false
-        ).previewDisplayName("needs action")
-        
-        ThumbnailImage(
-            thumbnail: NSImage(named: "IMG_5934")!,
-            state: nil,
-            isFavorite: false,
-            isSelected: false
-        ).previewDisplayName("no state")
-    }
-}

BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (3010) → BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (3046)

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
index 01f2692..90ebe4e 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
@@ -33,7 +33,7 @@ struct ThumbnailList: View {
                     // the thumbnails every time you change position.
                     ForEach(Array(displayAssets().enumerated()), id: \.element.localIdentifier) { index, asset in
                         ThumbnailImage(
-                            thumbnail: asset.getThumbnail(),
+                            thumbnail: PHAssetImage(asset, size: CGSize(width: 70, height: 70)),
                             state: asset.state(),
                             isFavorite: asset.isFavorite,
                             isSelected: displayAssets()[displaySelectedAssetIndex()].localIdentifier == asset.localIdentifier