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

268 lines
14 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg2860"
version="1.1"
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="defs2862">
<linearGradient
id="linearGradient3985">
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="0"
id="stop3987" />
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="1"
id="stop3989" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#f9d791;stop-opacity:1" />
<stop
id="stop3381"
offset="1"
style="stop-color:#f8ca69;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3851-7-2"
id="linearGradient3367"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-19.999999,-5.9999984)"
spreadMethod="reflect"
x1="-11"
y1="26"
x2="-18"
y2="14" />
<linearGradient
id="linearGradient3851-7-2">
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="0"
id="stop3853-9-4" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3855-8-4" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3838-1"
id="linearGradient3371"
gradientUnits="userSpaceOnUse"
x1="2802.9631"
y1="538.36249"
x2="2859.7263"
y2="786.05646" />
<linearGradient
id="linearGradient3838-1">
<stop
style="stop-color:#94e2d5;stop-opacity:1"
offset="0"
id="stop3840-2" />
<stop
style="stop-color:#258e7e;stop-opacity:1"
offset="1"
id="stop3842-0" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3859-3-8"
id="linearGradient3369"
gradientUnits="userSpaceOnUse"
x1="32.557789"
y1="32.917992"
x2="26.30212"
y2="12.206754" />
<linearGradient
id="linearGradient3859-3-8">
<stop
style="stop-color:#f8c459;stop-opacity:1"
offset="0"
id="stop3861-1-7" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3863-2-4" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3985"
id="linearGradient3991"
x1="15.84577"
y1="50.435566"
x2="11.070066"
y2="32.495457"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata2865">
<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>[vdwalts]</dc:title>
</cc:Agent>
</dc:creator>
<dc:date>2016-08-01</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/</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">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:black;fill-opacity:1;stroke:none"
x="37.204151"
y="59.238754"
id="text3009">   </text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:black;fill-opacity:1;stroke:none"
x="35.98616"
y="58.574394"
id="text3013">   </text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:black;fill-opacity:1;stroke:none"
x="37.64706"
y="57.910034"
id="text3017">   </text>
<g
id="g3350"
transform="translate(87.958336,2.103574)">
<path
id="path3063-1"
d="M -60.49828,12.297578 -44.276817,1.6539792 c 11.343458,-4.6432832 24.728769,13.2093768 12.401376,22.2560528 l -15.695501,9.840822 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:#f8c459;fill-opacity:1;fill-rule:nonzero;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3063-3-0"
d="M -61.579091,15.205413 -45.631684,4.7575543 c 10.364771,-7.6968104 23.945833,10.6256217 12.009914,17.8715007 l -15.695501,9.840823 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:url(#linearGradient3367);fill-opacity:1;fill-rule:nonzero;stroke:#f9e2af;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3875-5-7"
d="m -51.199941,6 c 11.999989,-0.9999991 18.571392,11.000001 14.571396,20.999994"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#664506;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3895-60"
d="M -51.999998,13 -35.000001,2.000001"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#664506;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3895-6-1"
d="M -44.000006,21.999999 -27.000008,11.000001"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#664506;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;font-family:Arial;-inkscape-font-specification:Arial" />
<g
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:url(#linearGradient3371);fill-opacity:1;fill-rule:nonzero;stroke:#103b35;stroke-width:15.05897331;stroke-linecap:round;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;font-family:Arial;-inkscape-font-specification:Arial"
transform="matrix(0.92148168,0.21647657,-0.04656812,0.97752701,-67.128334,5.0954655)"
id="g3031-0">
<path
id="path3011-2"
d="m 44,22 c 0,6.627417 -5.372583,12 -12,12 -6.627417,0 -12,-5.372583 -12,-12 0,-6.627417 5.372583,-12 12,-12 6.627417,0 12,5.372583 12,12 z"
style="fill:#f2cdcd;stroke:#912424;stroke-width:2.0955863;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
transform="translate(-17,-7)" />
<path
id="path3011-3-5"
d="m 44,22 c 0,6.627417 -5.372583,12 -12,12 -6.627417,0 -12,-5.372583 -12,-12 0,-6.627417 5.372583,-12 12,-12 6.627417,0 12,5.372583 12,12 z"
style="fill:url(#linearGradient3369);fill-opacity:1;stroke:#f2cdcd;stroke-width:2.51470399;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
transform="matrix(0.83333334,0,0,0.83333333,-11.666667,-3.3333333)" />
</g>
<g
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#103b35;stroke-width:15.05897331;stroke-linecap:round;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;font-family:Arial;-inkscape-font-specification:Arial"
transform="matrix(0.92148168,0.21647657,-0.04656812,0.97752701,-67.195852,5.0728652)"
id="g3031-3">
<path
id="path3011-5"
d="m 44,22 c 0,6.627417 -5.372583,12 -12,12 -6.627417,0 -12,-5.372583 -12,-12 0,-6.627417 5.372583,-12 12,-12 6.627417,0 12,5.372583 12,12 z"
style="fill:none;stroke:#912424;stroke-width:2.0955863;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
transform="translate(-17,-7)" />
<path
id="path3011-3-6"
d="m 44,22 c 0,6.627417 -5.372583,12 -12,12 -6.627417,0 -12,-5.372583 -12,-12 0,-6.627417 5.372583,-12 12,-12 6.627417,0 12,5.372583 12,12 z"
style="fill:none;stroke:#f2cdcd;stroke-width:2.51470399;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
transform="matrix(0.83333334,0,0,0.83333333,-11.666667,-3.3333333)" />
</g>
<path
id="path3867-1"
d="m -50.999999,12 0,22.999991"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#912424;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3869-9"
d="m -58.000006,12 0,20.99999"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#912424;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3871-7"
d="m -64,16 20.999994,6.999998"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#912424;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;font-family:Arial;-inkscape-font-specification:Arial" />
<path
id="path3873-1"
d="m -64.999999,22.999998 20.999993,6.999993"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#912424;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;font-family:Arial;-inkscape-font-specification:Arial" />
</g>
<g
id="g1"
transform="matrix(1.0770649,0,0,1.0762965,-0.23304416,-4.6596442)"
style="stroke-width:0.928781">
<path
style="fill:url(#linearGradient3991);fill-opacity:1;stroke:#d76363;stroke-width:1.92065;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
d="M 3.2072609,31.86575 26.727174,31.547918 v 20 L 3.2072609,51.86575 Z"
id="rect3178"
transform="matrix(0.93537759,0.35365063,0,1,0,0)" />
<path
style="fill:#cdd6f4;stroke:#d76363;stroke-width:1.85756;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 3,32.77936 4,-2 22,8 -4,2 z"
id="path3181" />
<path
style="fill:#585b70;stroke:#d76363;stroke-width:1.85756;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 25.233862,61.089864 4,-2.018807 V 38.882985 l -4,2.018807 z"
id="path3951" />
<path
style="fill:none;stroke:#664506;stroke-width:1.85756;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 7.006984,44.927721 c -1.0941501,5.038436 8.753201,8.061498 15.318101,4.030749"
id="path3953" />
<path
style="fill:none;stroke:#664506;stroke-width:1.85756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 19.437668,47.202693 2.887417,1.755777 -0.84956,2.920053"
id="path3955" />
<path
style="fill:none;stroke:#664506;stroke-width:1.85756;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 14.721583,54.401635 C 9.1540565,54.070943 8.532135,44.528356 14.458727,39.731484"
id="path3953-6" />
<path
style="fill:none;stroke:#664506;stroke-width:1.85756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 15.552877,42.754546 -1.09415,-3.023062 h -3.282449"
id="path3955-7" />
</g>
</g>
</svg>