11import Foundation
22import GRDB
33import AppKit
4+ import SwiftUI
45
56struct Track : Identifiable , Equatable , Hashable , FetchableRecord , PersistableRecord {
67 let id = UUID ( )
@@ -58,7 +59,7 @@ struct Track: Identifiable, Equatable, Hashable, FetchableRecord, PersistableRec
5859 return cached as Data
5960 }
6061
61- if let jpegData = ImageResizer . resizeImage ( from: original, to: ImageResizer . Size. small) {
62+ if let jpegData = ImageUtils . resizeImage ( from: original, to: ImageUtils . Size. small) {
6263 Track . artworkCache. setObject ( jpegData as NSData , forKey: cacheKey)
6364 return jpegData
6465 }
@@ -81,7 +82,7 @@ struct Track: Identifiable, Equatable, Hashable, FetchableRecord, PersistableRec
8182 return cached as Data
8283 }
8384
84- if let jpegData = ImageResizer . resizeImage ( from: original, to: ImageResizer . Size. medium) {
85+ if let jpegData = ImageUtils . resizeImage ( from: original, to: ImageUtils . Size. medium) {
8586 Track . artworkCache. setObject ( jpegData as NSData , forKey: cacheKey)
8687 return jpegData
8788 }
@@ -104,7 +105,7 @@ struct Track: Identifiable, Equatable, Hashable, FetchableRecord, PersistableRec
104105 return cached as Data
105106 }
106107
107- if let jpegData = ImageResizer . resizeImage ( from: original, to: ImageResizer . Size. large) {
108+ if let jpegData = ImageUtils . resizeImage ( from: original, to: ImageUtils . Size. large) {
108109 Track . artworkCache. setObject ( jpegData as NSData , forKey: cacheKey)
109110 return jpegData
110111 }
@@ -118,6 +119,16 @@ struct Track: Identifiable, Equatable, Hashable, FetchableRecord, PersistableRec
118119 }
119120 }
120121
122+ var dominantColors : [ NSColor ] {
123+ guard let original = albumArtworkData else { return [ ] }
124+ return ImageUtils . cachedDominantColors ( id: id, imageData: original)
125+ }
126+
127+ func backgroundGradientColors( isDark: Bool ) -> [ Color ] {
128+ guard let original = albumArtworkData else { return [ ] }
129+ return ImageUtils . cachedBackgroundGradientColors ( id: id, imageData: original, isDark: isDark)
130+ }
131+
121132 // MARK: - Initialization
122133
123134 init ( url: URL ) {
@@ -385,7 +396,7 @@ extension Track {
385396 /// - Returns: FullTrack with all metadata, or nil if not found
386397 func fullTrack( using dbQueue: DatabaseQueue ) async throws -> FullTrack ? {
387398 guard let trackId = trackId else { return nil }
388-
399+
389400 return try await dbQueue. read { db in
390401 try FullTrack
391402 . filter ( FullTrack . Columns. trackId == trackId)
0 commit comments