DropletCreatorAvatar

The rules a creator avatar has to satisfy.

enum DropletCreatorAvatar

The avatar is the small round mark beside a droplet's name in the Store and on getdroppy.app/droplets. It says who made the thing at a glance, without the user opening anything, and it is what separates the Store's Community shelf from its By Droppy shelf visually rather than only by label.

Type properties

bundleRelativePath

static let bundleRelativePath: String

Default path of the avatar inside a built bundle, relative to the bundle root. A manifest may name another PNG in the same Assets/ directory; use the host renderer to resolve that name.

fileName

static let fileName: String

Where the avatar lands inside a built .droplet.

droplet.json names it relative to the package's Assets/ directory, and build-droplet.sh copies that directory wholesale into Contents/Resources/Assets/. This is the scaffold's default and the compatibility fallback for bundles without a readable manifest. A bundle may name another validated PNG, which the host reads by that manifest name.

isClippedToCircleByHost

static let isClippedToCircleByHost: Bool

The host clips the avatar to a circle on every surface.

Ship a square PNG with the artwork centred and no rounding of your own: a pre-rounded image is clipped a second time, and the two radii disagree by a pixel or two all the way round, which reads as a muddy edge rather than a circle.

minimumPixelSize

static let minimumPixelSize: Int

Smallest accepted edge length, in pixels. The image must be square.

renderedSize

static let renderedSize: CGFloat

Size the Store draws it at, in points.

Type methods

validate(at:)

static func validate(at url: URL) throws

Whether a file at url is a plausible avatar.

Checks the PNG signature and IHDR dimensions. The image must be square and at least minimumPixelSize pixels on each edge. Whether the mark is legible at renderedSize is a review judgement, not a check.