DroppySystemIconRenderer

Draws an icon the way the Dock does, in any DroppyIconStyle, through the system's own icon renderer.

enum DroppySystemIconRenderer

The input is a bundle whose Info.plist names an icon, either an Icon Composer icon compiled into Contents/Resources/Assets.car (CFBundleIconName), which is where the real Liquid Glass comes from, or an .icns (CFBundleIconFile). A compiled droplet is such a bundle.

Returns nil before macOS 26, when the private renderer is missing, or when it produced nothing; the caller then draws its own artwork. Call it off the main thread: the picture is composited in iconservicesagent.

Type properties

iconShapeInset

static let iconShapeInset: CGFloat

The fraction of a rendered canvas the icon's squircle occupies. The system pads an icon to 1024 with the squircle at 100...924, room for its shadow; Droppy draws icons flush, so the padding is cropped.

isAvailable

static var isAvailable: Bool { get }

Whether the system renderer can be used on this Mac at all.

Type methods

bundleHasCompiledIcon(at:)

static func bundleHasCompiledIcon(at bundleURL: URL) -> Bool

Whether bundleURL carries an icon the system renderer can draw in every style: a compiled Icon Composer icon, not a lone .icns.

image(forBundleAt:style:pixelSize:cropToIconShape:)

static func image(forBundleAt bundleURL: URL, style: DroppyIconStyle, pixelSize: Int, cropToIconShape: Bool = true) -> CGImage?

The icon of the bundle at bundleURL in style, pixelSize pixels square, cropped flush to the squircle unless cropToIconShape is false. Thread-safe and reentrant: calls from several threads run side by side. Blocking.

The renderer draws at its own standard sizes (it rounds a request up to 16, 32, 64, … 1024), so the result is cropped and then resampled to exactly pixelSize.