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:
36
Onyx/MenuBarIcon.svg
Normal file
36
Onyx/MenuBarIcon.svg
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512" height="512">
|
||||
<g>
|
||||
<path style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d=" 		M197.235,67.578L115.2,158.68c-1.702,1.89-2.922,4.165-3.553,6.629L56.541,380.415c-0.943,3.68,0.176,7.582,2.926,10.203 		l116.456,110.985c1.952,1.86,4.545,2.897,7.241,2.897h145.672c2.696,0,5.289-1.036,7.241-2.896l116.456-110.986 		c2.75-2.621,3.869-6.523,2.926-10.203l-55.107-215.106c-0.631-2.464-1.851-4.739-3.553-6.629l-133-147.698 		c-4.169-4.63-11.43-4.63-15.599,0l-27.346,30.366"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="256" y1="190.51" x2="256" y2="7.5"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="399.03" y1="161.9" x2="316.4" y2="242.94"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="195.57" y1="242.91" x2="112.97" y2="161.9"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="455.33" y1="386.08" x2="354.95" y2="368.57"/>
|
||||
|
||||
<polyline style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points=" 		297.8,415.14 332.74,503.75 332.75,503.75 	"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="214.18" y1="415.2" x2="179.26" y2="503.75"/>
|
||||
|
||||
<line style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="153.05" y1="368.51" x2="56.66" y2="386.07"/>
|
||||
<path style="fill:none;stroke:#000000;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d=" 		M344.163,329.755l10.821,34.288c0.912,2.891-0.044,6.047-2.409,7.943l-51.664,41.433c-1.863,1.494-4.181,2.31-6.568,2.31h-76.882 		c-2.267,0-4.474-0.734-6.289-2.092l-55.56-41.575c-2.565-1.919-3.591-5.278-2.536-8.302l41.358-118.549 		c0.581-1.665,1.572-3.156,2.882-4.337l53.764-48.468c2.796-2.52,7.046-2.52,9.841,0l53.638,48.355 		c1.389,1.252,2.418,2.853,2.981,4.637l16.211,51.366"/>
|
||||
</g>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
@@ -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