diff --git a/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_foreground.xml b/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_foreground.xml index 3978443..51aa79e 100644 --- a/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_foreground.xml +++ b/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_foreground.xml @@ -1,25 +1,29 @@ - - - diff --git a/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_monochrome.xml b/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_monochrome.xml index 7dcd99a..f6b6885 100644 --- a/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_monochrome.xml +++ b/src/DodoSSH.Client.Android/Resources/drawable/ic_launcher_monochrome.xml @@ -4,9 +4,14 @@ the wallpaper's colours. The system tints this by its alpha and discards the colour, so the geometry is the foreground's and white is only a way of saying "opaque here". + Note what that means for the filled design: the accent tile is the background layer, and a + themed icon drops the background entirely. So the shape that survives here is the glyph, not + the tile — which is the right way round anyway. Filling this layer to the edges to stand in + for the tile would tint to a featureless square with nothing of the mark left in it. + Worth shipping rather than leaving out: a launcher with themed icons on and no monochrome layer to use falls back to the full-colour icon, so the one app on the home screen still - drawn in green is this one. + drawn in blue is this one. --> - - diff --git a/src/DodoSSH.Client.Android/Resources/mipmap-anydpi-v26/ic_launcher.xml b/src/DodoSSH.Client.Android/Resources/mipmap-anydpi-v26/ic_launcher.xml index 3015cea..50cf812 100644 --- a/src/DodoSSH.Client.Android/Resources/mipmap-anydpi-v26/ic_launcher.xml +++ b/src/DodoSSH.Client.Android/Resources/mipmap-anydpi-v26/ic_launcher.xml @@ -5,12 +5,17 @@ adaptive icons landed in 26, so there is no device this ships to that would need the bitmaps. Density buckets exist to pick a PNG; a vector has nothing to pick between. - The background is the same @color/dodo_window the window, status bar and navigation bar - use, so the mark sits on the app's own near-black rather than on a second dark that is - almost but not quite it. + The background is the accent, and that is the tile itself rather than a backdrop for one: + the v2 mark is >_ knocked out of a solid accent square, so the square is this layer and the + launcher's mask is what rounds it. See ic_launcher_foreground.xml for why the rounding is + left to the mask instead of drawn. + + It was @color/dodo_window until the mark went from outlined to filled, which is worth + knowing if a home screen still shows the dark version: a launcher caches icons, and the + cache outlives the install that changed them. --> - + diff --git a/src/DodoSSH.Client.Android/Resources/values/colors.xml b/src/DodoSSH.Client.Android/Resources/values/colors.xml index d6dc3c9..4e5c840 100644 --- a/src/DodoSSH.Client.Android/Resources/values/colors.xml +++ b/src/DodoSSH.Client.Android/Resources/values/colors.xml @@ -10,4 +10,11 @@ hidden. --> #0E1220 + + + #5B8CFF diff --git a/src/DodoSSH.Client.App/Assets/dodossh-icon.ps1 b/src/DodoSSH.Client.App/Assets/dodossh-icon.ps1 index 0093416..0f1b5a5 100644 --- a/src/DodoSSH.Client.App/Assets/dodossh-icon.ps1 +++ b/src/DodoSSH.Client.App/Assets/dodossh-icon.ps1 @@ -11,15 +11,19 @@ # Coordinates are the launcher's 108-unit viewport, mapped so the middle 72 fills the canvas. # That 72 is not an arbitrary crop: it is the part of an adaptive icon a launcher actually shows, # the outer 18 on each edge being what it eats for masking and parallax. Rendering the whole 108 -# here would draw the mark at 39% of the width — correct arithmetic, and a stamp lost in a field -# of background. Matching what the phone displays means matching the 72. +# here would draw the glyph at half the size it is meant to be — correct arithmetic, and a stamp +# lost in a field of accent. Matching what the phone displays means matching the 72. +# +# The one thing this draws that the phone's vector does not is the tile. On Android the tile is +# the background layer and the launcher's mask rounds it; Windows has no mask, so the rounding +# happens here. Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' Add-Type -AssemblyName System.Drawing -$window = [System.Drawing.ColorTranslator]::FromHtml('#0E1220') # dodo_window / CanvasColor -$accent = [System.Drawing.ColorTranslator]::FromHtml('#5B8CFF') # AccentColor +$accent = [System.Drawing.ColorTranslator]::FromHtml('#5B8CFF') # dodo_accent / AccentColor +$ink = [System.Drawing.ColorTranslator]::FromHtml('#0E1220') # AccentInk # Every size Windows asks for: 16 in a titlebar and a tree, 32 on the desktop, 48 in a large-icon # view, 256 for the preview pane. Shipping fewer means Windows downsamples one of these to fill @@ -33,7 +37,7 @@ function New-MarkPng([int]$size) $g.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::AntiAlias $g.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality - # The background, rounded as a launcher mask rounds it. A square-cornered tile would be the + # The accent tile, rounded as a launcher mask rounds it. A square-cornered tile would be the # one icon on the taskbar with corners, which reads as unfinished rather than as deliberate. $radius = [double]$size * 0.22 $d = $radius * 2.0 @@ -43,7 +47,7 @@ function New-MarkPng([int]$size) $path.AddArc($size - $d, $size - $d, $d, $d, 0, 90) $path.AddArc(0.0, $size - $d, $d, $d, 90, 90) $path.CloseFigure() - $brush = New-Object System.Drawing.SolidBrush($window) + $brush = New-Object System.Drawing.SolidBrush($accent) $g.FillPath($brush, $path) # 108-viewport units to pixels, with the outer 18 dropped on each edge. @@ -51,30 +55,21 @@ function New-MarkPng([int]$size) function P([double]$x, [double]$y) { New-Object System.Drawing.PointF((($x - 18.0) * $scale), (($y - 18.0) * $scale)) } # A stroke thinner than a pixel renders as a grey suggestion of itself, which at 16px is the - # difference between a mark and a smudge. The phone's file already bumps these widths for the + # difference between a mark and a smudge. The phone's file already bumps this width for the # same reason at 48dp; the floor is that argument carried down to the sizes Windows asks for. - function Pen([double]$units) - { - $pen = New-Object System.Drawing.Pen($accent, [float][Math]::Max($units * $scale, 1.0)) - $pen.StartCap = [System.Drawing.Drawing2D.LineCap]::Round - $pen.EndCap = [System.Drawing.Drawing2D.LineCap]::Round - $pen.LineJoin = [System.Drawing.Drawing2D.LineJoin]::Round - return $pen - } - - # The box: 42 across, centred, square-cornered as the Border in the app is. - $box = Pen 2.2 - $g.DrawPolygon($box, @((P 33 33), (P 75 33), (P 75 75), (P 33 75))) + $pen = New-Object System.Drawing.Pen($ink, [float][Math]::Max(5.4 * $scale, 1.0)) + $pen.StartCap = [System.Drawing.Drawing2D.LineCap]::Round + $pen.EndCap = [System.Drawing.Drawing2D.LineCap]::Round + $pen.LineJoin = [System.Drawing.Drawing2D.LineJoin]::Round # The chevron of >_ and the underscore on the baseline it bottoms out at. - $ink = Pen 2.8 - $g.DrawLines($ink, @((P 44.8 48.75), (P 51.9 54), (P 44.8 59.25))) - $g.DrawLine($ink, (P 54 59.7), (P 63.2 59.7)) + $g.DrawLines($pen, @((P 36.06 43.33), (P 49.91 53.57), (P 36.06 63.8))) + $g.DrawLine($pen, (P 54 64.68), (P 71.94 64.68)) $stream = New-Object System.IO.MemoryStream $bitmap.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png) - $box.Dispose(); $ink.Dispose(); $brush.Dispose(); $path.Dispose(); $g.Dispose(); $bitmap.Dispose() + $pen.Dispose(); $brush.Dispose(); $path.Dispose(); $g.Dispose(); $bitmap.Dispose() return $stream.ToArray() } diff --git a/src/DodoSSH.Client.App/Assets/dodossh.ico b/src/DodoSSH.Client.App/Assets/dodossh.ico index c3326f9..e10fb88 100644 Binary files a/src/DodoSSH.Client.App/Assets/dodossh.ico and b/src/DodoSSH.Client.App/Assets/dodossh.ico differ