Files
create/icons/themed/window-new.svg
forbes d7b532255b
Some checks failed
Build and Test / build (pull_request) Has been cancelled
feat(icons): add icon theming infrastructure with Catppuccin color remapping
- Remove hand-crafted kindred-icons/ in favor of auto-generated themed icons
- Add icons/mappings/ with FCAD.csv (Tango palette) and kindred.csv (Catppuccin Mocha)
- Add icons/retheme.py script to remap upstream FreeCAD SVG colors
- Generate icons/themed/ with 1,595 themed SVGs (45,300 color replacements)
- BitmapFactory loads icons/themed/ as highest priority before default icons
- 157-color mapping covers the full Tango palette, interpolating between
  4 luminance anchors per color family

Regenerate: python3 icons/retheme.py
2026-02-15 20:34:22 -06:00

240 lines
7.9 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
id="svg2869"
version="1.1"
viewBox="0 0 64 64"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2871">
<linearGradient
xlink:href="#linearGradient3765"
id="linearGradient3771"
x1="98"
y1="1047.3622"
x2="81"
y2="993.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-60,-988.36218)" />
<linearGradient
id="linearGradient3765">
<stop
style="stop-color:#6c7086;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
<linearGradient
id="linearGradient12512">
<stop
style="stop-color:#cdd6f4;stop-opacity:1.0000000"
offset="0.0000000"
id="stop12513" />
<stop
style="stop-color:#f9d487;stop-opacity:0.89108908"
offset="0.50000000"
id="stop12517" />
<stop
style="stop-color:#f8ca69;stop-opacity:0.0000000"
offset="1.0000000"
id="stop12514" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4816"
id="linearGradient2264"
gradientUnits="userSpaceOnUse"
x1="13.008913"
y1="8.6325979"
x2="13.269135"
y2="10.802"
gradientTransform="matrix(3.8428765,0,0,4.6095645,-18.991646,-33.792515)" />
<linearGradient
id="linearGradient4816">
<stop
style="stop-color:#307bf7;stop-opacity:1"
offset="0.0000000"
id="stop4818" />
<stop
style="stop-color:#89b4fa;stop-opacity:1"
offset="1.0000000"
id="stop4820" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3832"
id="linearGradient2267"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.6054681,0,0,3.65147,-16.830069,-26.182332)"
x1="13.817399"
y1="8.6647825"
x2="17.88068"
y2="21.767578" />
<linearGradient
id="linearGradient3832">
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="0.0000000"
id="stop3834" />
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="1.0000000"
id="stop3836" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient5048"
id="linearGradient5027"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
x1="302.85715"
y1="366.64789"
x2="302.85715"
y2="609.50507" />
<linearGradient
id="linearGradient5048">
<stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop5050" />
<stop
id="stop5056"
offset="0.5"
style="stop-color:black;stop-opacity:1;" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5052" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient5060"
id="radialGradient5029"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" />
<linearGradient
id="linearGradient5060">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop5062" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5064" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient5060"
id="radialGradient5031"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" />
</defs>
<metadata
id="metadata2874">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>[maxwxyz]</dc:title>
</cc:Agent>
</dc:creator>
<dc:relation>https://www.freecad.org/wiki/index.php?title=Artwork</dc:relation>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>FreeCAD/src/</dc:identifier>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>2024</dc:date>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
id="g5022"
transform="matrix(0.03152036,0,0,0.02090488,60.035326,57.1503)">
<rect
y="-150.69685"
x="-1559.2523"
height="478.35718"
width="1339.6335"
id="rect4173"
style="color:#11111b;display:inline;overflow:visible;visibility:visible;opacity:0.402062;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none" />
<path
id="path5058"
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
style="color:#11111b;display:inline;overflow:visible;visibility:visible;opacity:0.402062;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none" />
<path
style="color:#11111b;display:inline;overflow:visible;visibility:visible;opacity:0.402062;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none"
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
id="path5018" />
</g>
<rect
width="58"
height="58"
rx="1.4255738"
ry="1.5645262"
x="3"
y="3"
style="color:#11111b;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient2267);fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8d;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
id="rect3818" />
<rect
width="53.602604"
height="9.9921741"
rx="0.29144666"
ry="0.36611399"
x="5.9277453"
y="6.0078259"
style="color:#11111b;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient2264);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none"
id="rect3820" />
<rect
width="54"
height="54"
rx="0"
ry="0"
x="5"
y="5"
style="color:#11111b;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#cdd6f4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
id="rect4962" />
<g
id="g5"
style="stroke:#1e1e2e">
<circle
style="fill:#7f849c;stroke:#313244;stroke-width:2.00001;stroke-linecap:round;stroke-linejoin:round"
id="path2"
cx="45.99572"
cy="45.994976"
r="15.005042" />
<path
id="path1"
style="fill:#a6e3a1;stroke:#1c5017;stroke-width:1.99998;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m 43.99572,35.994976 h 4 v 8 h 8 v 4 h -8 v 8 h -4 v -8 h -8 v -4 h 8 z" />
</g>
</svg>