Menüleistensymbol 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 war 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 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 muss das SVG entsprechend gezeichnet sein — als Outline statt als Flächen.
This commit is contained in:
@@ -174,9 +174,19 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
///
|
///
|
||||||
/// Geladen wird dieselbe SVG-Datei, aus der auch das App-Icon gebaut wird —
|
/// Geladen wird dieselbe SVG-Datei, aus der auch das App-Icon gebaut wird —
|
||||||
/// NSImage liest sie als Vektor (`_NSSVGImageRep`), sie skaliert also
|
/// NSImage liest sie als Vektor (`_NSSVGImageRep`), sie skaliert also
|
||||||
/// verlustfrei. Bewusst **kein** Template-Bild: als Schablone bliebe vom
|
/// verlustfrei.
|
||||||
/// Kristall eine schwarze Silhouette. Der Preis ist, dass er sich nicht
|
///
|
||||||
/// automatisch an helle und dunkle Menüleisten anpasst.
|
/// **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 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.
|
||||||
///
|
///
|
||||||
/// 18 pt ist die übliche Höhe; die Leiste ist 22 pt hoch und braucht oben
|
/// 18 pt ist die übliche Höhe; die Leiste ist 22 pt hoch und braucht oben
|
||||||
/// und unten Luft.
|
/// und unten Luft.
|
||||||
@@ -189,14 +199,17 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
glyph.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 1)
|
glyph.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 1)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
image.isTemplate = true
|
||||||
image.accessibilityDescription = "Onyx"
|
image.accessibilityDescription = "Onyx"
|
||||||
return image
|
return image
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ein Menüleisteneintrag ohne Bild wäre unsichtbar und die App darüber
|
// Ein Menüleisteneintrag ohne Bild wäre unsichtbar und die App darüber
|
||||||
// unerreichbar — deshalb ein Rückfall statt eines leeren Knopfs.
|
// unerreichbar — deshalb ein Rückfall statt eines leeren Knopfs.
|
||||||
return NSImage(systemSymbolName: "circle.hexagongrid.fill",
|
let fallback = NSImage(systemSymbolName: "circle.hexagongrid.fill",
|
||||||
accessibilityDescription: "Onyx") ?? NSImage()
|
accessibilityDescription: "Onyx") ?? NSImage()
|
||||||
|
fallback.isTemplate = true
|
||||||
|
return fallback
|
||||||
}
|
}
|
||||||
|
|
||||||
private func observeMenuBarPreference() {
|
private func observeMenuBarPreference() {
|
||||||
|
|||||||
Reference in New Issue
Block a user