Files
create/icons/themed/CAMWorkbench.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

436 lines
15 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
id="svg2816"
height="64px"
width="64px">
<defs
id="defs2818">
<linearGradient
id="linearGradient4031">
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="0"
id="stop4033" />
<stop
style="stop-color:#45475a;stop-opacity:1"
offset="1"
id="stop4035" />
</linearGradient>
<linearGradient
id="linearGradient3989">
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="0"
id="stop3991" />
<stop
style="stop-color:#45475a;stop-opacity:1"
offset="1"
id="stop3993" />
</linearGradient>
<linearGradient
id="linearGradient3945">
<stop
id="stop3947"
offset="0"
style="stop-color:#b11b87;stop-opacity:1" />
<stop
id="stop3949"
offset="1"
style="stop-color:#f5c2e7;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3937">
<stop
id="stop3939"
offset="0"
style="stop-color:#b11b87;stop-opacity:1" />
<stop
id="stop3941"
offset="1"
style="stop-color:#f5c2e7;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4513">
<stop
id="stop4515"
offset="0"
style="stop-color:#6c7086;stop-opacity:1" />
<stop
id="stop4517"
offset="1"
style="stop-color:#45475a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3681">
<stop
style="stop-color:#f8cf78;stop-opacity:1;"
offset="0"
id="stop3697" />
<stop
id="stop3685"
offset="1"
style="stop-color:#c35512;stop-opacity:1;" />
</linearGradient>
<pattern
xlink:href="#Strips1_1-4"
id="pattern5231"
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)" />
<pattern
patternUnits="userSpaceOnUse"
width="2"
height="1"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
id="Strips1_1-4">
<rect
style="fill:black;stroke:none"
x="0"
y="-0.5"
width="1"
height="2"
id="rect4483-4" />
</pattern>
<pattern
xlink:href="#Strips1_1-6"
id="pattern5231-4"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)" />
<pattern
patternUnits="userSpaceOnUse"
width="2"
height="1"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
id="Strips1_1-6">
<rect
style="fill:black;stroke:none"
x="0"
y="-0.5"
width="1"
height="2"
id="rect4483-0" />
</pattern>
<pattern
xlink:href="#pattern5231-3"
id="pattern5296"
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)" />
<pattern
xlink:href="#Strips1_1-4-3"
id="pattern5231-3"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)" />
<pattern
patternUnits="userSpaceOnUse"
width="2"
height="1"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
id="Strips1_1-4-3">
<rect
style="fill:black;stroke:none"
x="0"
y="-0.5"
width="1"
height="2"
id="rect4483-4-6" />
</pattern>
<pattern
xlink:href="#Strips1_1-9"
id="pattern5330"
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)" />
<pattern
patternUnits="userSpaceOnUse"
width="2"
height="1"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
id="Strips1_1-9">
<rect
style="fill:black;stroke:none"
x="0"
y="-0.5"
width="1"
height="2"
id="rect4483-3" />
</pattern>
<linearGradient
gradientTransform="translate(127.27273,-51.272729)"
gradientUnits="userSpaceOnUse"
y2="40.168594"
x2="4.0605712"
y1="41.087898"
x1="37.89756"
id="linearGradient3687"
xlink:href="#linearGradient3681" />
<linearGradient
gradientTransform="translate(127.27273,-51.272729)"
gradientUnits="userSpaceOnUse"
y2="43.558987"
x2="59.811455"
y1="40.484772"
x1="37.894287"
id="linearGradient3695"
xlink:href="#linearGradient3681" />
<linearGradient
id="linearGradient3681-3">
<stop
style="stop-color:#f8cf78;stop-opacity:1;"
offset="0"
id="stop3697-3" />
<stop
id="stop3685-4"
offset="1"
style="stop-color:#c35512;stop-opacity:1;" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3681-3"
id="linearGradient3608"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-37.00068,-20.487365)"
x1="37.894287"
y1="40.484772"
x2="59.811455"
y2="43.558987" />
<linearGradient
id="linearGradient4513-2">
<stop
id="stop4515-2"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop4517-4"
offset="1"
style="stop-color:#585b70;stop-opacity:1;" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient4513-2"
id="radialGradient4538"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1841158,-8.5173246,-3.4097568)"
cx="32.151962"
cy="7.9319997"
fx="32.151962"
fy="7.9319997"
r="23.634638" />
<linearGradient
id="linearGradient4513-1">
<stop
id="stop4515-8"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop4517-6"
offset="1"
style="stop-color:#585b70;stop-opacity:1;" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient4513-1"
id="radialGradient4538-6"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1841158,-8.5173246,-3.4097568)"
cx="32.151962"
cy="7.9319997"
fx="32.151962"
fy="7.9319997"
r="23.634638" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0155652,0,0,1.1851825,-0.65241357,-1.4008677)"
r="23.634638"
fy="7.9319997"
fx="32.151962"
cy="7.9319997"
cx="32.151962"
id="radialGradient4521-5"
xlink:href="#linearGradient4513-6" />
<linearGradient
id="linearGradient4513-6">
<stop
id="stop4515-29"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop4517-1"
offset="1"
style="stop-color:#585b70;stop-opacity:1;" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
y2="11"
x2="33"
y1="5"
x1="32"
id="linearGradient3935"
xlink:href="#linearGradient4513" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="49"
x2="11"
y1="59"
x1="14"
id="linearGradient3943"
xlink:href="#linearGradient3937" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="49"
x2="51"
y1="59"
x1="54"
id="linearGradient3951"
xlink:href="#linearGradient3945" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.67911969,0,0,1.122061,10.189733,-0.72498825)"
r="23.634638"
fy="17.949734"
fx="32.151962"
cy="17.949734"
cx="32.151962"
id="radialGradient4521-0-7"
xlink:href="#linearGradient4513-2-0" />
<linearGradient
id="linearGradient4513-2-0">
<stop
id="stop4515-2-9"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop4517-4-3"
offset="1"
style="stop-color:#585b70;stop-opacity:1;" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
y2="23"
x2="33"
y1="15"
x1="31"
id="linearGradient3987"
xlink:href="#linearGradient3989" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.39497909,0,0,1.1841158,19.452609,-1.4604067)"
r="23.634638"
fy="35.869175"
fx="32.151962"
cy="35.869175"
cx="32.151962"
id="radialGradient4521-4-0"
xlink:href="#linearGradient4513-1-6" />
<linearGradient
id="linearGradient4513-1-6">
<stop
id="stop4515-8-2"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop4517-6-6"
offset="1"
style="stop-color:#585b70;stop-opacity:1;" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
y2="54.227272"
x2="36"
y1="27.90909"
x1="27.909092"
id="linearGradient4029"
xlink:href="#linearGradient4031" />
</defs>
<metadata
id="metadata2821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title>PathWorkbench</dc:title>
<dc:date>2016-02-26</dc:date>
<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/Mod/CAM/Gui/Resources/icons/PathWorkbench.svg</dc:identifier>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
<dc:contributor>
<cc:Agent>
<dc:title>[agryson] Alexander Gryson</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<path
id="rect4590-5"
d="m 61,47 0,14 -29,0 13,-8 c 0,0 0.05185,-3.282514 0,-6 z"
style="color:#11111b;fill:url(#linearGradient3951);fill-opacity:1;fill-rule:nonzero;stroke:#490b38;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
id="rect4590"
d="m 3,47 0,14 29,0 -13,-8 c 0,0 -0.05185,-3.282514 0,-6 z"
style="color:#11111b;fill:url(#linearGradient3943);fill-opacity:1;fill-rule:nonzero;stroke:#490b38;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
y="12.572689"
x="17"
height="12.427311"
width="29.999998"
id="rect4411"
style="color:#11111b;fill:url(#linearGradient3987);fill-opacity:1;fill-rule:nonzero;stroke:#1e1e2e;stroke-width:1.99999975999999990;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
y="3"
x="9"
height="10"
width="46"
id="rect3591"
style="color:#11111b;fill:url(#linearGradient3935);fill-opacity:1;fill-rule:nonzero;stroke:#1e1e2e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
id="rect4590-6"
d="m 5,49 0,10 20,0 -8,-5 0,-5 z"
style="color:#11111b;fill:none;stroke:#f5c2e7;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:11.60000038;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
id="rect4590-6-7"
d="m 59,49 0,10 -20,0 8,-5 0,-5 z"
style="color:#11111b;fill:none;stroke:#f5c2e7;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:11.60000038;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
y="5"
x="11"
height="6"
width="42"
id="rect3591-2"
style="color:#11111b;fill:none;stroke:#6c7086;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
y="15"
x="19"
height="8"
width="26"
id="rect4411-6"
style="color:#11111b;fill:none;stroke:#6c7086;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<g
id="g3859">
<path
style="color:#11111b;fill:url(#linearGradient4029);fill-opacity:1;fill-rule:nonzero;stroke:#1e1e2e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 32,25 -9,4 0,8 18,-8 0,-4 z m 9,6 -18,8 0,9 18,-7 z m 0,12 -18,7 9,6 9,-6 z"
id="rect4417" />
<path
style="color:#11111b;fill:none;stroke:#6c7086;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 32.369624,26.992756 25.011364,30.170455 25,34 39,28 39,27 z M 38.967859,34.128565 25.064282,40.321412 25,45 38.935718,39.578542 z M 38.981168,45.978888 27.318182,50.5 l 4.762171,3.178588 6.903577,-4.674966 z"
id="rect4417-1" />
<path
style="fill:#6c7086;stroke:#1e1e2e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 23,27 0,-2 8,0 z"
id="path3085" />
</g>
</g>
</svg>