Menüleistensymbol: Konturfassung statt Silhouette
Das Glyph des App-Icons besteht aus deckenden Flächen. Als Template-Bild — der einzige Weg, macOS zum Einfärben zu bewegen — verschmolzen die Facetten zu einer flachen Silhouette, weil dabei nur der Alphakanal zählt. MenuBarIcon.svg ist als Kontur gezeichnet: zwischen den Linien ist nichts, also bleibt beim Einfärben die Struktur erhalten. Das Symbol wird damit automatisch weiß auf dunkler und schwarz auf heller Menüleiste — ohne zweite Datei für den zweiten Fall. Die ebenfalls angebotene helle Flächenfassung wird damit überflüssig und ist nicht eingecheckt: sie wäre auf einer hellen Menüleiste unsichtbar, und eine ungenutzte Alternative im Repo lädt später zum Verwechseln ein. Der Kopierschritt für quartz.svg entfällt — die Datei liegt jetzt direkt im App-Target und wird ohne Umweg als Ressource eingebunden.
This commit is contained in:
@@ -172,28 +172,26 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
/// Menüleiste. Dort steht sie als farbiger Klotz zwischen lauter
|
||||
/// Strichsymbolen.
|
||||
///
|
||||
/// Geladen wird dieselbe SVG-Datei, aus der auch das App-Icon gebaut wird —
|
||||
/// NSImage liest sie als Vektor (`_NSSVGImageRep`), sie skaliert also
|
||||
/// verlustfrei.
|
||||
/// **Eine eigene Konturfassung, nicht das App-Icon.**
|
||||
///
|
||||
/// **Als Template-Bild.** Das Glyph besteht aus zehn deckenden Pfaden in
|
||||
/// sehr dunklen Tönen (#1c1f1f bis #000000). Im App-Icon liegt es auf
|
||||
/// blauem Verlauf und liest sich als Kristall; allein auf einer dunklen
|
||||
/// Menüleiste ist es schwarz auf schwarz. macOS färbt ausschließlich
|
||||
/// Template-Bilder ein, und die benutzen nur den Alphakanal — die Facetten
|
||||
/// verschmelzen dabei zu einer Silhouette.
|
||||
/// Das Glyph des App-Icons besteht aus deckenden Flächen in sehr dunklen
|
||||
/// Tönen. Auf dem blauen Verlauf des Icons liest es sich als Kristall,
|
||||
/// allein auf einer dunklen Menüleiste ist es schwarz auf schwarz. Und als
|
||||
/// Template-Bild — der einzige Weg, macOS zum Einfärben zu bewegen —
|
||||
/// verschmelzen die Facetten zu einer flachen Silhouette, weil dabei nur
|
||||
/// der Alphakanal zählt.
|
||||
///
|
||||
/// Das ist der bewusste Tausch: erkennbare Form in hellen wie dunklen
|
||||
/// Menüleisten statt Facetten, die man in keiner von beiden sieht. Eine
|
||||
/// Fassung mit durchsichtigen Facettenfugen behielte beides — dafür müsste
|
||||
/// das SVG entsprechend gezeichnet sein.
|
||||
/// `MenuBarIcon.svg` ist deshalb als Kontur gezeichnet: zwischen den Linien
|
||||
/// ist nichts, also bleibt beim Einfärben die Struktur erhalten. Das Symbol
|
||||
/// wird damit automatisch weiß auf dunkler und schwarz auf heller
|
||||
/// Menüleiste, ohne zweite Datei für den zweiten Fall.
|
||||
///
|
||||
/// 18 pt ist die übliche Höhe; die Leiste ist 22 pt hoch und braucht oben
|
||||
/// und unten Luft.
|
||||
private static func menuBarIcon() -> NSImage {
|
||||
let size = NSSize(width: 18, height: 18)
|
||||
|
||||
if let url = Bundle.main.url(forResource: "quartz", withExtension: "svg"),
|
||||
if let url = Bundle.main.url(forResource: "MenuBarIcon", withExtension: "svg"),
|
||||
let glyph = NSImage(contentsOf: url) {
|
||||
let image = NSImage(size: size, flipped: false) { rect in
|
||||
glyph.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 1)
|
||||
|
||||
Reference in New Issue
Block a user