Rework the Wallace tartan from a reference, and set it on the bias
The old sett was three flat stripes in roughly equal measure, which read as a generic red-and-black check rather than as Wallace. Rebuilt against a reference swatch. - Setts are now written as a half-sett and reflected about their pivots, the way a threadcount is actually published, so the data stays in the form it is quoted in instead of a flat list kept symmetric by hand. - Wallace is gold 6, black 6, red 36, black 24, red 36, black 6: a red ground at about two thirds, black bands alternating wide and narrow, and one thin gold overstripe per repeat. The reflection puts black on both sides of the gold line, which is what the reference shows. - Colours taken from the swatch: a brighter scarlet and a stronger gold than before. - Both the cloth and the icon are turned 45 degrees. The renderer draws well past the canvas edges so the corners stay covered once rotated. The icon vector is generated from the same numbers rather than written out by hand, so the icon and the splash cannot drift apart — changing the sett rebrands both. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015qjfMiPUDshdKEUa6vxqzN
This commit is contained in:
@@ -5,7 +5,7 @@ or against other people over Wi-Fi (LAN) or Bluetooth.
|
||||
|
||||
## What works today
|
||||
|
||||
The app shell is complete and two games are playable end to end:
|
||||
The app shell is complete and four games are playable end to end:
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
@@ -59,9 +59,9 @@ them.
|
||||
|
||||
## Branding
|
||||
|
||||
The launcher icon is a single square of the Wallace tartan, and the app opens on
|
||||
a tartan splash carrying the name in a Celtic uncial hand for two seconds before
|
||||
fading into the menu.
|
||||
The launcher icon is a single square of the Wallace tartan set on the bias, and
|
||||
the app opens on the same cloth carrying the name in a Celtic uncial hand for two
|
||||
seconds before fading into the menu.
|
||||
|
||||
The tartan is drawn, not an image: `ui/theme/Tartan.kt` lays the sett down as
|
||||
warp and then as weft at half opacity, which is what produces the blended
|
||||
@@ -70,12 +70,14 @@ drawable, so it stays sharp at every density and needs no PNGs.
|
||||
|
||||
Two honest caveats:
|
||||
|
||||
- **The sett is an approximation.** `WallaceSett` reproduces what the Wallace
|
||||
tartan reads as — a bold red and black check divided by a narrow gold
|
||||
overstripe — but the registered threadcount could not be verified, so the
|
||||
numbers were chosen to look right rather than to be authoritative. They are
|
||||
plain data; replacing them with the registered counts rebrands the whole app
|
||||
and needs no other change.
|
||||
- **The sett is matched by eye, not to a registered threadcount.**
|
||||
`WallaceSett` is written as a half-sett and reflected about its pivots, the way
|
||||
a threadcount is published: gold 6, black 6, red 36, black 24, red 36, black 6.
|
||||
That gives a red ground at about two thirds, black bands alternating wide and
|
||||
narrow, and one thin gold overstripe per repeat flanked by black — matched
|
||||
against a reference swatch rather than to the Scottish Register of Tartans.
|
||||
Substituting registered counts is an edit to that one list; the icon is
|
||||
generated from the same numbers, so both follow.
|
||||
- **The typeface is bundled under a licence.** Uncial Antiqua, © 2011 Brian J.
|
||||
Bonislawsky DBA Astigmatic, Reserved Font Name "Uncial Antiqua", used under
|
||||
the SIL Open Font License 1.1. The full licence is at
|
||||
|
||||
@@ -82,6 +82,8 @@ fun SplashScreen(
|
||||
TartanBackground(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
threadWidth = threadWidth,
|
||||
// On the bias, matching the icon.
|
||||
rotationDegrees = 45f,
|
||||
)
|
||||
|
||||
// A scrim keeps the lettering legible over the busiest part of the sett.
|
||||
|
||||
@@ -7,57 +7,85 @@ import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.drawscope.DrawScope
|
||||
import androidx.compose.ui.graphics.drawscope.rotate
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
/** One band of a tartan sett, measured in threads. */
|
||||
data class TartanStripe(val color: Color, val threads: Int)
|
||||
|
||||
val WallaceRed = Color(0xFFB3121B)
|
||||
val WallaceBlack = Color(0xFF111111)
|
||||
val WallaceGold = Color(0xFFF2C200)
|
||||
val WallaceRed = Color(0xFFE01B24)
|
||||
val WallaceBlack = Color(0xFF0C0C0C)
|
||||
val WallaceGold = Color(0xFFF2C518)
|
||||
|
||||
/**
|
||||
* The Wallace sett.
|
||||
* Expands a half-sett into a full repeat by reflecting it.
|
||||
*
|
||||
* NOTE: this is an approximation, not a certified threadcount. It reproduces
|
||||
* what the Wallace tartan reads as — a bold red and black check divided by a
|
||||
* narrow gold overstripe — but the exact thread counts held by the Scottish
|
||||
* Register of Tartans could not be verified from here, so the numbers below
|
||||
* are chosen to look right rather than to be authoritative. They are plain
|
||||
* data: replacing them with the registered counts changes the whole app's
|
||||
* branding and needs no other edit.
|
||||
* Tartans are specified as a half-sett between two pivots and woven out to
|
||||
* both sides, so `A B C` becomes `A B C B` — the pivot stripes are not
|
||||
* doubled. Writing the data this way keeps it in the same form a threadcount
|
||||
* is published in, instead of a flat list that has to be kept symmetric by
|
||||
* hand.
|
||||
*/
|
||||
fun List<TartanStripe>.pivoted(): List<TartanStripe> =
|
||||
if (size < 3) this else this + drop(1).dropLast(1).reversed()
|
||||
|
||||
/**
|
||||
* The Wallace sett, as a half-sett between the gold line and the centre of a
|
||||
* narrow black guard.
|
||||
*
|
||||
* Matched by eye to a reference swatch rather than to a registered
|
||||
* threadcount: red ground, black bands alternating wide and narrow, and one
|
||||
* thin gold overstripe per repeat, flanked by black on both sides. The
|
||||
* proportions are the point — swapping in registered counts is an edit to this
|
||||
* list and nothing else.
|
||||
*/
|
||||
val WallaceSett: List<TartanStripe> = listOf(
|
||||
TartanStripe(WallaceRed, 40),
|
||||
TartanStripe(WallaceBlack, 40),
|
||||
TartanStripe(WallaceGold, 4),
|
||||
)
|
||||
TartanStripe(WallaceGold, 6),
|
||||
TartanStripe(WallaceBlack, 6),
|
||||
TartanStripe(WallaceRed, 36),
|
||||
TartanStripe(WallaceBlack, 24),
|
||||
TartanStripe(WallaceRed, 36),
|
||||
TartanStripe(WallaceBlack, 6),
|
||||
).pivoted()
|
||||
|
||||
/**
|
||||
* Draws a tartan by laying the sett down vertically as warp, then across as
|
||||
* weft at half opacity. The overlap is what produces the blended squares and
|
||||
* the sense of a woven cloth rather than a printed grid — red warp under black
|
||||
* weft comes out a darker red, exactly as it does on the loom.
|
||||
*
|
||||
* [rotationDegrees] turns the cloth on the bias. The stripes are drawn well
|
||||
* past the edges of the canvas so the corners stay covered once it is turned.
|
||||
*/
|
||||
fun DrawScope.drawTartan(
|
||||
sett: List<TartanStripe> = WallaceSett,
|
||||
threadSize: Float,
|
||||
rotationDegrees: Float = 0f,
|
||||
) {
|
||||
if (sett.isEmpty() || threadSize <= 0f) return
|
||||
val repeat = sett.sumOf { it.threads } * threadSize
|
||||
if (repeat <= 0f) return
|
||||
|
||||
// Turning a square by 45 degrees needs about 0.21 of its size spare on
|
||||
// every edge; three quarters is generous enough for any angle.
|
||||
val pad = if (rotationDegrees == 0f) 0f else size.maxDimension * 0.75f
|
||||
val left = -pad
|
||||
val top = -pad
|
||||
val right = size.width + pad
|
||||
val bottom = size.height + pad
|
||||
|
||||
rotate(degrees = rotationDegrees) {
|
||||
// Warp: full-height bands.
|
||||
var x = 0f
|
||||
while (x < size.width) {
|
||||
var x = left - (left.mod(repeat))
|
||||
while (x < right) {
|
||||
var offset = x
|
||||
for (stripe in sett) {
|
||||
val width = stripe.threads * threadSize
|
||||
drawRect(
|
||||
color = stripe.color,
|
||||
topLeft = Offset(offset, 0f),
|
||||
size = Size(width, size.height),
|
||||
topLeft = Offset(offset, top),
|
||||
size = Size(width, bottom - top),
|
||||
)
|
||||
offset += width
|
||||
}
|
||||
@@ -65,21 +93,22 @@ fun DrawScope.drawTartan(
|
||||
}
|
||||
|
||||
// Weft: full-width bands, half opacity so the warp shows through.
|
||||
var y = 0f
|
||||
while (y < size.height) {
|
||||
var y = top - (top.mod(repeat))
|
||||
while (y < bottom) {
|
||||
var offset = y
|
||||
for (stripe in sett) {
|
||||
val height = stripe.threads * threadSize
|
||||
drawRect(
|
||||
color = stripe.color.copy(alpha = 0.5f),
|
||||
topLeft = Offset(0f, offset),
|
||||
size = Size(size.width, height),
|
||||
topLeft = Offset(left, offset),
|
||||
size = Size(right - left, height),
|
||||
)
|
||||
offset += height
|
||||
}
|
||||
y += repeat
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A tartan fill. [threadWidth] sets the weave scale, so the same cloth can be
|
||||
@@ -90,8 +119,13 @@ fun TartanBackground(
|
||||
modifier: Modifier = Modifier,
|
||||
sett: List<TartanStripe> = WallaceSett,
|
||||
threadWidth: Dp = 2.dp,
|
||||
rotationDegrees: Float = 0f,
|
||||
) {
|
||||
Canvas(modifier = modifier) {
|
||||
drawTartan(sett = sett, threadSize = threadWidth.toPx())
|
||||
drawTartan(
|
||||
sett = sett,
|
||||
threadSize = threadWidth.toPx(),
|
||||
rotationDegrees = rotationDegrees,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
A single square of the Wallace tartan.
|
||||
A single square of the Wallace tartan, set on the bias.
|
||||
|
||||
The sett is laid down as warp (opaque, vertical) over a black ground, then as
|
||||
weft (half opacity, horizontal), which is what produces the blended squares
|
||||
rather than a flat grid. One full repeat is 72 units wide, so the centre
|
||||
72x72 safe zone of the adaptive icon shows exactly one repeat.
|
||||
Generated from the same sett as WallaceSett in Tartan.kt: a half-sett of
|
||||
gold 6, black 6, red 36, black 24, red 36, black 6, reflected about its
|
||||
pivots. Warp is drawn opaque, weft over it at half opacity, which is what
|
||||
gives the blended squares rather than a flat grid.
|
||||
|
||||
Thread proportions match WallaceSett in Tartan.kt — see the note there about
|
||||
these being a visual approximation rather than the registered threadcount.
|
||||
The paths run well past the viewport because the whole thing is rotated 45
|
||||
degrees; the overspill is what keeps the corners covered.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
|
||||
<!-- Ground -->
|
||||
<path
|
||||
android:fillColor="#111111"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
|
||||
<!-- Warp: red -->
|
||||
<path
|
||||
android:fillColor="#B3121B"
|
||||
android:pathData="M0,0h34.29v108h-34.29z" />
|
||||
<path
|
||||
android:fillColor="#B3121B"
|
||||
android:pathData="M72,0h34.29v108h-34.29z" />
|
||||
<!-- Warp: gold overstripe -->
|
||||
<path
|
||||
android:fillColor="#F2C200"
|
||||
android:pathData="M68.57,0h3.43v108h-3.43z" />
|
||||
|
||||
<!-- Weft: red -->
|
||||
<path
|
||||
android:fillColor="#B3121B"
|
||||
android:fillAlpha="0.5"
|
||||
android:pathData="M0,0h108v34.29h-108z" />
|
||||
<path
|
||||
android:fillColor="#B3121B"
|
||||
android:fillAlpha="0.5"
|
||||
android:pathData="M0,72h108v34.29h-108z" />
|
||||
<!-- Weft: black -->
|
||||
<path
|
||||
android:fillColor="#111111"
|
||||
android:fillAlpha="0.5"
|
||||
android:pathData="M0,34.29h108v34.28h-108z" />
|
||||
<path
|
||||
android:fillColor="#111111"
|
||||
android:fillAlpha="0.5"
|
||||
android:pathData="M0,106.29h108v1.71h-108z" />
|
||||
<!-- Weft: gold overstripe -->
|
||||
<path
|
||||
android:fillColor="#F2C200"
|
||||
android:fillAlpha="0.5"
|
||||
android:pathData="M0,68.57h108v3.43h-108z" />
|
||||
<group
|
||||
android:rotation="45"
|
||||
android:pivotX="54.0"
|
||||
android:pivotY="54.0">
|
||||
<path android:fillColor="#0C0C0C" android:pathData="M-90.00,-90.00h288.00v288.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-90.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-63.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-26.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M0.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M7.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M45.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M71.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M108.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M135.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M142.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M180.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,-135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-127.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-105.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-90.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-63.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-41.25h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-26.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,0.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,7.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,30.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,45.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,71.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,93.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,108.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,138.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,142.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,165.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,180.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,202.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,206.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,228.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,243.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,266.25h288.00v3.75h-288.00z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -1,21 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Fallback launcher icon for API < 26, which has no adaptive-icon support.
|
||||
Same Wallace tartan swatch as drawable/ic_launcher_background.xml, drawn
|
||||
at icon scale so one full sett repeat fills the tile. -->
|
||||
<!--
|
||||
A single square of the Wallace tartan, set on the bias.
|
||||
|
||||
Generated from the same sett as WallaceSett in Tartan.kt: a half-sett of
|
||||
gold 6, black 6, red 36, black 24, red 36, black 6, reflected about its
|
||||
pivots. Warp is drawn opaque, weft over it at half opacity, which is what
|
||||
gives the blended squares rather than a flat grid.
|
||||
|
||||
The paths run well past the viewport because the whole thing is rotated 45
|
||||
degrees; the overspill is what keeps the corners covered.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="84"
|
||||
android:viewportHeight="84">
|
||||
|
||||
<path android:fillColor="#111111" android:pathData="M0,0h84v84h-84z" />
|
||||
|
||||
<!-- Warp -->
|
||||
<path android:fillColor="#B3121B" android:pathData="M0,0h40v84h-40z" />
|
||||
<path android:fillColor="#F2C200" android:pathData="M80,0h4v84h-4z" />
|
||||
|
||||
<!-- Weft -->
|
||||
<path android:fillColor="#B3121B" android:fillAlpha="0.5" android:pathData="M0,0h84v40h-84z" />
|
||||
<path android:fillColor="#111111" android:fillAlpha="0.5" android:pathData="M0,40h84v40h-84z" />
|
||||
<path android:fillColor="#F2C200" android:fillAlpha="0.5" android:pathData="M0,80h84v4h-84z" />
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group
|
||||
android:rotation="45"
|
||||
android:pivotX="54.0"
|
||||
android:pivotY="54.0">
|
||||
<path android:fillColor="#0C0C0C" android:pathData="M-90.00,-90.00h288.00v288.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-90.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-63.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-26.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M0.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M7.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M45.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M71.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M108.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M135.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M142.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M180.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,-135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-127.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-105.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-90.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-63.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-41.25h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-26.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,0.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,7.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,30.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,45.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,71.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,93.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,108.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,138.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,142.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,165.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,180.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,202.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,206.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,228.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,243.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,266.25h288.00v3.75h-288.00z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -1,21 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Fallback launcher icon for API < 26, which has no adaptive-icon support.
|
||||
Same Wallace tartan swatch as drawable/ic_launcher_background.xml, drawn
|
||||
at icon scale so one full sett repeat fills the tile. -->
|
||||
<!--
|
||||
A single square of the Wallace tartan, set on the bias.
|
||||
|
||||
Generated from the same sett as WallaceSett in Tartan.kt: a half-sett of
|
||||
gold 6, black 6, red 36, black 24, red 36, black 6, reflected about its
|
||||
pivots. Warp is drawn opaque, weft over it at half opacity, which is what
|
||||
gives the blended squares rather than a flat grid.
|
||||
|
||||
The paths run well past the viewport because the whole thing is rotated 45
|
||||
degrees; the overspill is what keeps the corners covered.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="84"
|
||||
android:viewportHeight="84">
|
||||
|
||||
<path android:fillColor="#111111" android:pathData="M0,0h84v84h-84z" />
|
||||
|
||||
<!-- Warp -->
|
||||
<path android:fillColor="#B3121B" android:pathData="M0,0h40v84h-40z" />
|
||||
<path android:fillColor="#F2C200" android:pathData="M80,0h4v84h-4z" />
|
||||
|
||||
<!-- Weft -->
|
||||
<path android:fillColor="#B3121B" android:fillAlpha="0.5" android:pathData="M0,0h84v40h-84z" />
|
||||
<path android:fillColor="#111111" android:fillAlpha="0.5" android:pathData="M0,40h84v40h-84z" />
|
||||
<path android:fillColor="#F2C200" android:fillAlpha="0.5" android:pathData="M0,80h84v4h-84z" />
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group
|
||||
android:rotation="45"
|
||||
android:pivotX="54.0"
|
||||
android:pivotY="54.0">
|
||||
<path android:fillColor="#0C0C0C" android:pathData="M-90.00,-90.00h288.00v288.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-90.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-63.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M-26.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M0.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M7.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M45.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M71.25,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M108.75,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:pathData="M135.00,-90.00h3.75v288.00h-3.75z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M142.50,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#E01B24" android:pathData="M180.00,-90.00h22.50v288.00h-22.50z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,-135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-127.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-105.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-90.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-63.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-41.25h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,-26.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,-3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,0.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,3.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,7.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,30.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,45.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,67.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,71.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,93.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,108.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,131.25h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#F2C518" android:fillAlpha="0.5" android:pathData="M-90.00,135.00h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,138.75h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,142.50h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,165.00h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,180.00h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,202.50h288.00v3.75h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,206.25h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,228.75h288.00v15.00h-288.00z" />
|
||||
<path android:fillColor="#E01B24" android:fillAlpha="0.5" android:pathData="M-90.00,243.75h288.00v22.50h-288.00z" />
|
||||
<path android:fillColor="#0C0C0C" android:fillAlpha="0.5" android:pathData="M-90.00,266.25h288.00v3.75h-288.00z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
Reference in New Issue
Block a user