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

535 lines
21 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="svg2784"
height="64px"
width="64px">
<defs
id="defs2786">
<linearGradient
id="linearGradient4069">
<stop
id="stop4071"
offset="0"
style="stop-color:#f9e2af;stop-opacity:1" />
<stop
id="stop4073"
offset="1"
style="stop-color:#bc8009;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3960">
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="0"
id="stop3962" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3964" />
</linearGradient>
<linearGradient
id="linearGradient3884">
<stop
id="stop3886"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3888"
offset="1"
style="stop-color:#f9e2af;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3842">
<stop
id="stop3844"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3846"
offset="1"
style="stop-color:#f8c459;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3834">
<stop
id="stop3836"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3838"
offset="1"
style="stop-color:#f9e2af;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3826">
<stop
id="stop3828"
offset="0"
style="stop-color:#f8c459;stop-opacity:1" />
<stop
id="stop3830"
offset="1"
style="stop-color:#bc8009;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3808">
<stop
id="stop3810"
offset="0"
style="stop-color:#e4ea00;stop-opacity:1;" />
<stop
id="stop3812"
offset="1"
style="stop-color:#f2db00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="0"
id="stop3379" />
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="1"
id="stop3381" />
</linearGradient>
<radialGradient
gradientTransform="matrix(0.58858121,0.89357879,-0.83511467,0.55007389,42.986662,-28.011196)"
gradientUnits="userSpaceOnUse"
r="19.467436"
fy="29.18952"
fx="43.599617"
cy="29.18952"
cx="43.599617"
id="radialGradient3692"
xlink:href="#linearGradient3377" />
<radialGradient
gradientTransform="translate(2.5454545,3.8181818)"
gradientUnits="userSpaceOnUse"
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
id="radialGradient3692-1"
xlink:href="#linearGradient3377-7" />
<linearGradient
id="linearGradient3377-7">
<stop
style="stop-color:#f9d791;stop-opacity:1;"
offset="0"
id="stop3379-4" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3381-0" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3377-7"
id="radialGradient3777"
gradientUnits="userSpaceOnUse"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436" />
<linearGradient
id="linearGradient3377-2">
<stop
style="stop-color:#f9d791;stop-opacity:1;"
offset="0"
id="stop3379-45" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3381-5" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3377-2"
id="radialGradient3777-1"
gradientUnits="userSpaceOnUse"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436" />
<radialGradient
gradientTransform="matrix(1.1841662,0,0,1.1841642,-0.69479429,-8.8496725)"
gradientUnits="userSpaceOnUse"
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
id="radialGradient3692-5"
xlink:href="#linearGradient3377-27" />
<linearGradient
id="linearGradient3377-27">
<stop
style="stop-color:#f9d791;stop-opacity:1;"
offset="0"
id="stop3379-6" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3381-1" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3377-27"
id="radialGradient3777-4"
gradientUnits="userSpaceOnUse"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436" />
<radialGradient
gradientUnits="userSpaceOnUse"
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
id="radialGradient3692-3"
xlink:href="#linearGradient3377-6" />
<linearGradient
id="linearGradient3377-6">
<stop
style="stop-color:#f9d791;stop-opacity:1;"
offset="0"
id="stop3379-7" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3381-53" />
</linearGradient>
<linearGradient
gradientTransform="matrix(1.0492215,0,0,1.0539809,-1.6944067,-0.70794444)"
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="7.3131728"
x2="32.11372"
y1="7.3131728"
x1="41.644596"
id="linearGradient3824"
xlink:href="#linearGradient3826" />
<linearGradient
gradientTransform="matrix(1.0143154,0,0,1.0155293,0.0259269,-0.68916943)"
gradientUnits="userSpaceOnUse"
y2="51"
x2="20"
y1="39"
x1="10"
id="linearGradient3832"
xlink:href="#linearGradient3834" />
<linearGradient
gradientTransform="matrix(1.0799199,0,0,1.105453,-3.4193043,-3.9088685)"
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="40"
x2="54"
y1="46"
x1="48"
id="linearGradient3840"
xlink:href="#linearGradient3842" />
<linearGradient
gradientTransform="matrix(1.0492215,0,0,1.0539809,-1.6944067,-0.70794444)"
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="7"
x2="30"
y1="7"
x1="39"
id="linearGradient3824-6"
xlink:href="#linearGradient3826-2" />
<linearGradient
id="linearGradient3826-2">
<stop
id="stop3828-9"
offset="0"
style="stop-color:#f8c459;stop-opacity:1" />
<stop
id="stop3830-1"
offset="1"
style="stop-color:#bc8009;stop-opacity:1" />
</linearGradient>
<linearGradient
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="11"
x2="33"
y1="11"
x1="28"
id="linearGradient3890"
xlink:href="#linearGradient3884" />
<linearGradient
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="11"
x2="33"
y1="11"
x1="28"
id="linearGradient3890-7"
xlink:href="#linearGradient3884-0" />
<linearGradient
id="linearGradient3884-0">
<stop
id="stop3886-9"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3888-3"
offset="1"
style="stop-color:#f9e2af;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3960"
id="linearGradient3907"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
x1="30.577625"
y1="11.483715"
x2="26.346874"
y2="11.801114"
gradientTransform="matrix(-0.6522254,-0.75802508,0.75802508,-0.6522254,30.23856,73.668577)" />
<linearGradient
gradientTransform="matrix(1.0143154,0,0,1.0155293,0.0259269,-0.68916943)"
gradientUnits="userSpaceOnUse"
y2="51"
x2="20"
y1="39"
x1="10"
id="linearGradient3832-0"
xlink:href="#linearGradient3834-6" />
<linearGradient
id="linearGradient3834-6">
<stop
id="stop3836-2"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3838-6"
offset="1"
style="stop-color:#f9e2af;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3960-7"
id="linearGradient3907-8"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
x1="30.577625"
y1="11.483715"
x2="26.346874"
y2="11.801114"
gradientTransform="matrix(-0.6522254,-0.75802508,0.75802508,-0.6522254,30.23856,73.668577)" />
<linearGradient
id="linearGradient3960-7">
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="0"
id="stop3962-9" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3964-2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3960-7"
id="linearGradient3981"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.74430745,0.66783712,-0.66783712,-0.74430745,78.706744,27.311789)"
spreadMethod="reflect"
x1="30.577625"
y1="11.483715"
x2="26.346874"
y2="11.801114" />
<linearGradient
gradientTransform="matrix(1.0799199,0,0,1.105453,-3.4193043,-3.9088685)"
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="40"
x2="54"
y1="46"
x1="48"
id="linearGradient3840-3"
xlink:href="#linearGradient3842-7" />
<linearGradient
id="linearGradient3842-7">
<stop
id="stop3844-5"
offset="0"
style="stop-color:#bc8009;stop-opacity:1" />
<stop
id="stop3846-9"
offset="1"
style="stop-color:#f8c459;stop-opacity:1" />
</linearGradient>
<linearGradient
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="36"
x2="8"
y1="47"
x1="16"
id="linearGradient4075"
xlink:href="#linearGradient4069" />
<radialGradient
xlink:href="#linearGradient2269-0"
id="radialGradient3169"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.32526,0,28.08607)"
cx="25.1875"
cy="41.625"
fx="25.1875"
fy="41.625"
r="18.0625" />
<linearGradient
id="linearGradient2269-0">
<stop
style="stop-color:#11111b;stop-opacity:1;"
id="stop2271-4"
offset="0" />
<stop
style="stop-color:#11111b;stop-opacity:0;"
id="stop2273-87"
offset="1" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient2269-0"
id="radialGradient3027"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.32526,0,28.08607)"
cx="25.1875"
cy="41.625"
fx="25.1875"
fy="41.625"
r="18.0625" />
</defs>
<metadata
id="metadata2789">
<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:creator>
<cc:Agent>
<dc:title>[triplus]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>OpenSCADWorkbench</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/OpenSCAD/Resources/icons/OpenSCADWorkbench.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
style="opacity:0.26704544;color:#11111b;fill:url(#radialGradient3027);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 43.25,41.625 a 18.0625,5.875 0 1 1 -36.125,0 18.0625,5.875 0 1 1 36.125,0 z"
transform="matrix(1.6608996,0,0,1.0662685,-7.8339099,13.352245)"
id="path2267" />
<g
transform="translate(-0.8153068,-67.540042)"
id="g3564">
<path
style="fill:url(#radialGradient3692);fill-opacity:1;fill-rule:evenodd;stroke:#664506;stroke-width:1.37573910000000010;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"
id="path3696"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
transform="matrix(1.4537651,0,0,1.4537628,-44.545755,47.281337)" />
<path
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#f9e2af;stroke-width:1.48571420000000010;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"
id="path3696-5"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
transform="matrix(1.3461538,0,0,1.3461539,-38.819309,51.001581)" />
</g>
<path
style="color:#11111b;fill:url(#linearGradient4075);stroke:#664506;stroke-width:1.79201257000000003;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;fill-opacity:1.0"
d="m 11.574714,47.876578 c 4.841899,5.547019 10.53529,8.541003 12.695713,6.670124 2.160426,-1.870879 -0.02479,-7.902858 -4.866693,-13.449879 -4.8419,-5.547018 -10.509309,-8.51124 -12.669735,-6.640359 -2.160423,1.870877 -0.0012,7.873094 4.840715,13.420114 z"
id="path3800-1" />
<path
id="path3758"
d="m 32.019412,2.8960063 c -7.23616,0 -13.123407,2.2894937 -13.123407,5.1093543 0,2.8198614 5.887247,5.1093554 13.123407,5.1093554 7.236159,0 13.08458,-2.289494 13.08458,-5.1093554 0,-2.8198606 -5.848421,-5.1093543 -13.08458,-5.1093543 z"
style="color:#11111b;fill:url(#linearGradient3824);fill-opacity:1;fill-rule:evenodd;stroke:#664506;stroke-width:1.79201280999999990;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="path3848"
d="m 32.859401,9.9942376 -4.952493,-1.0219431 -4.873883,2.2011085 6.603325,1.414998 2.908607,0.393055 6.524714,-0.707499 1.965275,-1.021943 -2.594163,-2.1224975 z"
style="fill:url(#linearGradient3890);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0" />
<path
id="path3804"
d="m 44.248159,40.762384 c -5.176792,5.481192 -7.702037,11.609687 -5.624823,13.665404 2.077214,2.055718 7.97551,-0.734634 13.152303,-6.21582 5.176796,-5.481192 7.674265,-11.580275 5.597049,-13.635995 -2.077216,-2.055717 -7.947734,0.705223 -13.124529,6.186411 z"
style="color:#11111b;fill:url(#linearGradient3840);fill-opacity:1;fill-rule:evenodd;stroke:#664506;stroke-width:1.79201281;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="path3816"
d="m 22.876876,11.218371 c 1.556251,-1.8642167 5.626557,-3.1408527 9.928236,-1.162011 4.844018,-2.1387547 7.538964,0.201582 8.461115,1.678581"
style="color:#11111b;fill:none;stroke:#664506;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="path3838"
d="M 32.971953,9.6663518 32.952301,13.42476"
style="color:#11111b;fill:url(#radialGradient3692-5);fill-opacity:1;fill-rule:evenodd;stroke:#664506;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="path3848-6"
d="m 16.382707,42.241832 2.455483,4.420651 4.886672,1.512101 -3.273558,-5.181578 -1.599123,-2.461157 -4.791885,-4.484449 -2.056461,-0.82319 0.08307,3.350787 z"
style="fill:url(#linearGradient3907);fill-opacity:1;stroke:none" />
<path
style="color:#11111b;fill:none;stroke:#664506;stroke-width:1.79201281;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 23.897135,48.418401 c -2.427392,0.07062 -6.116658,-1.672506 -7.486677,-6.204973 -4.812409,-2.208956 -5.056963,-5.420666 -4.56242,-7.090191"
id="path3858" />
<path
style="color:#11111b;fill:none;stroke:#664506;stroke-width:1.79201280999999990;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 16.203277,42.567762 2.740376,-2.426316"
id="path3860" />
<path
id="path3848-6-0"
d="m 47.574725,41.817731 4.368669,-2.546818 1.410224,-4.91704 -5.112431,3.38053 -2.427393,1.649922 -4.383901,4.884042 -0.780276,2.073124 3.348336,-0.152685 z"
style="fill:url(#linearGradient3981);fill-opacity:1;stroke:none" />
<path
style="color:#11111b;fill:none;stroke:#664506;stroke-width:1.79201281;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 53.422935,34.663278 c 0.04831,2.427936 -1.645327,5.982768 -6.190196,7.311085 -2.25308,4.791907 -5.113172,5.010191 -6.778083,4.500333"
id="path3866" />
<path
style="color:#11111b;fill:none;stroke:#664506;stroke-width:1.79201280999999990;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 47.585155,42.184794 45.184113,39.422246"
id="path3868" />
<path
id="path3758-2"
d="m 32.019412,2.8960064 c -7.23616,0 -13.123407,2.2894937 -13.123407,5.1093543 0,2.8198613 5.887247,5.1093553 13.123407,5.1093553 7.236159,0 13.08458,-2.289494 13.08458,-5.1093553 0,-2.8198606 -5.848421,-5.1093543 -13.08458,-5.1093543 z"
style="color:#11111b;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#664506;stroke-width:1.79201280999999990;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
style="color:#11111b;fill:none;stroke:#664506;stroke-width:1.79201257;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 11.574714,47.876578 c 4.841899,5.547019 10.53529,8.541003 12.695713,6.670124 2.160426,-1.870879 -0.02479,-7.902858 -4.866693,-13.449879 -4.8419,-5.547018 -10.509309,-8.51124 -12.669735,-6.640359 -2.160423,1.870877 -0.0012,7.873094 4.840715,13.420114 z"
id="path3800-1-2" />
<path
id="path3804-2"
d="m 44.248159,40.762384 c -5.176792,5.481192 -7.702037,11.609687 -5.624823,13.665404 2.077214,2.055718 7.97551,-0.734634 13.152303,-6.21582 5.176796,-5.481192 7.674265,-11.580275 5.597049,-13.635995 -2.077216,-2.055717 -7.947734,0.705223 -13.124529,6.186411 z"
style="color:#11111b;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#664506;stroke-width:1.79201280999999990;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" />
</g>
</svg>