ModernUO/branding/gears.svg
Kamron Batman d2df7f7839
feat(build-tool): add application icon and refresh MUO.ico (#2487)
## What

- **BuildTool now has a distinct application icon** — the MUO mark with a three-gear "settings" cluster in the bottom-right, colored by size (azure / steel / teal), wired in via `<ApplicationIcon>` in `BuildTool.csproj`. This differentiates the (now signed) build tool from the server in the taskbar/Explorer.
- **Refreshed `Projects/Application/MUO.ico`** — re-rendered from vector with the full Windows size ladder (16/32/48/64/128/256). The previous icon only carried 128/256 frames, so Windows had nothing proper for small sizes.
- **Added `branding/`** — the source SVGs (`muo.svg`, `gears.svg`, `build-tool.svg`) the `.ico` files are rasterized from.

## How

Both icons are rasterized from the branding SVGs (high-density render → Lanczos downscale per frame → packed into a 6-frame `.ico`). The rasterization script and its node deps are kept local under the gitignored `tools/` dir and intentionally not committed — `branding/` is the source of truth.

## Verification

- `dotnet build Projects/BuildTool/BuildTool.csproj` succeeds (0 warnings/errors).
- The embedded icon resource extracts from the produced `build-tool.exe`.
- Both `.ico`s validate as 6-frame Windows icons.

### Icons

<img width="150" height="150" alt="build-tool" src="https://github.com/user-attachments/assets/9c443947-4c26-46a3-ad9b-5f50630d90ad" />
2026-06-14 11:59:54 -07:00

46 lines
No EOL
3.2 KiB
XML

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="238.000000pt" height="222.000000pt" viewBox="0 0 238.000000 222.000000" preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,222.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none">
<path d="M1161 2039 c-24 -5 -46 -11 -49 -14 -4 -3 -9 -27 -12 -53 -4 -34 -11
-49 -26 -57 -12 -6 -28 -16 -37 -23 -11 -10 -22 -9 -50 3 -56 23 -72 19 -106
-27 -17 -23 -31 -46 -31 -50 0 -5 13 -26 29 -48 26 -37 28 -42 17 -81 -10 -37
-17 -45 -59 -62 l-48 -20 7 -56 c3 -31 10 -61 15 -67 5 -6 31 -14 57 -18 39
-5 51 -12 65 -35 21 -37 21 -61 0 -106 -9 -19 -15 -36 -12 -38 2 -2 23 -18 45
-35 51 -39 64 -39 103 -6 26 22 37 25 70 19 43 -7 61 -23 81 -74 l13 -33 56 6
c68 8 81 19 81 66 0 30 6 43 27 59 38 30 65 35 107 17 20 -8 42 -13 49 -10 6
2 26 25 44 51 l32 46 -29 37 c-50 63 -36 120 36 151 l45 20 -7 57 c-3 31 -8
60 -11 64 -2 4 -20 10 -41 13 -62 11 -67 14 -87 51 -18 34 -18 37 -1 82 l17
47 -38 32 c-55 47 -68 49 -111 15 -33 -26 -41 -28 -79 -20 -39 8 -45 14 -64
59 -23 52 -24 53 -98 38z m157 -244 c98 -42 149 -152 116 -251 -30 -91 -104
-145 -199 -145 -119 0 -205 88 -205 208 1 85 52 160 130 192 38 15 116 13 158
-4z" />
<path d="M1160 1738 c-48 -33 -72 -70 -77 -120 -11 -93 57 -168 152 -168 93 0
155 62 155 155 0 120 -134 198 -230 133z" />
<path d="M1675 1316 c-8 -20 -15 -40 -15 -45 0 -12 -52 -41 -74 -41 -8 0 -31
10 -51 21 l-36 22 -40 -39 c-45 -44 -46 -51 -20 -100 20 -36 20 -37 1 -75 -15
-28 -28 -39 -52 -44 -50 -11 -58 -22 -58 -81 l0 -54 47 -13 c40 -10 49 -18 64
-52 17 -38 17 -41 -2 -71 -26 -43 -24 -55 18 -99 l37 -38 43 23 c40 21 45 22
80 7 32 -12 40 -22 51 -61 l13 -46 63 0 63 0 9 43 c7 34 16 46 46 62 l38 20
46 -24 45 -24 42 41 42 42 -23 44 c-23 43 -23 44 -5 81 14 30 26 41 58 50 l40
11 0 63 0 64 -39 11 c-29 8 -45 21 -59 45 -19 35 -19 35 4 83 l23 49 -41 41
-41 41 -43 -25 c-41 -24 -43 -25 -81 -9 -32 13 -40 23 -51 61 l-13 45 -57 3
c-57 3 -58 3 -72 -32z m154 -206 c127 -64 145 -223 37 -318 -149 -131 -379 36
-302 219 17 39 70 94 106 108 42 17 118 13 159 -9z" />
<path d="M1673 1060 c-68 -41 -91 -121 -53 -187 28 -51 66 -73 127 -73 39 0
55 6 85 31 61 49 69 125 23 196 -34 51 -125 68 -182 33z" />
<path d="M701 1277 c-5 -14 -15 -43 -21 -65 -9 -35 -17 -44 -57 -62 -59 -26
-63 -26 -124 10 l-51 31 -37 -33 c-20 -18 -47 -46 -60 -62 l-24 -28 32 -58 31
-58 -24 -55 c-23 -53 -25 -55 -82 -69 l-59 -14 0 -89 0 -89 59 -14 c57 -14 59
-16 82 -69 l24 -55 -32 -58 -32 -59 40 -43 c74 -82 75 -83 134 -48 60 35 65
36 121 11 40 -18 45 -25 65 -83 l21 -63 83 0 84 0 18 62 c17 59 21 64 65 83
59 26 63 26 124 -11 l52 -30 61 60 61 61 -18 33 c-11 17 -26 44 -35 59 -15 27
-11 48 27 118 4 8 35 22 67 31 l59 16 0 88 0 88 -59 16 c-32 9 -63 23 -67 31
-43 80 -43 85 -8 150 l34 60 -61 61 -61 60 -52 -30 c-61 -37 -65 -37 -124 -11
-44 19 -48 24 -65 83 l-18 62 -82 3 c-79 3 -83 2 -91 -21z m194 -301 c51 -22
116 -86 141 -141 105 -223 -139 -462 -361 -355 -133 65 -193 227 -130 355 29
60 39 72 87 109 73 55 177 68 263 32z" />
<path d="M728 936 c-56 -20 -85 -42 -118 -87 -101 -140 5 -342 180 -342 178 0
283 206 176 346 -58 77 -160 112 -238 83z" />
</g>
</svg>