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