Files
XStats/Packages/XStatsKit/Sources/XStatsUI/Design/LogoCache.swift
T

20 lines
743 B
Swift

import AppKit
/// 网络页面共用的包内 SVG 缓存,不依赖账号登录界面。
@MainActor
final class LogoCache {
static let shared = LogoCache()
private var images: [String: NSImage] = [:]
func image(named name: String, template: Bool) -> NSImage? {
// 同一 SVG 会同时用于彩色页面和单色菜单栏,模板属性必须分别缓存。
let key = "\(name):\(template)"
if let image = images[key] { return image }
guard let url = Bundle.module.url(forResource: name, withExtension: "svg", subdirectory: "Logos"),
let image = NSImage(contentsOf: url) else { return nil }
image.isTemplate = template
images[key] = image
return image
}
}