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

550 lines
21 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg2816"
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="defs2818">
<linearGradient
id="linearGradient4006">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop4008" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop4010" />
</linearGradient>
<linearGradient
id="linearGradient3908">
<stop
style="stop-color:#307bf7;stop-opacity:1"
offset="0"
id="stop3910" />
<stop
style="stop-color:#0846b3;stop-opacity:1"
offset="1"
id="stop3912" />
</linearGradient>
<linearGradient
id="linearGradient3867">
<stop
style="stop-color:#0846b3;stop-opacity:1;"
offset="0"
id="stop3869" />
<stop
style="stop-color:#307bf7;stop-opacity:1"
offset="1"
id="stop3871" />
</linearGradient>
<linearGradient
id="linearGradient3859">
<stop
style="stop-color:#307bf7;stop-opacity:1;"
offset="0"
id="stop3861" />
<stop
style="stop-color:#89b4fa;stop-opacity:1"
offset="1"
id="stop3863" />
</linearGradient>
<linearGradient
id="linearGradient4009">
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="0"
id="stop4011" />
<stop
style="stop-color:#912424;stop-opacity:1"
offset="1"
id="stop4013" />
</linearGradient>
<linearGradient
id="linearGradient4407">
<stop
id="stop4409"
offset="0"
style="stop-color:#266ee6;stop-opacity:0" />
<stop
id="stop4411"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3669">
<stop
style="stop-color:#266ee6;stop-opacity:1;"
offset="0"
id="stop3671" />
<stop
style="stop-color:#00afff;stop-opacity:1;"
offset="1"
id="stop3673" />
</linearGradient>
<linearGradient
id="linearGradient3602">
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="0"
id="stop3604" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3602-7"
id="linearGradient3608-5"
x1="3.909091"
y1="14.363636"
x2="24.81818"
y2="14.363636"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3602-7">
<stop
style="stop-color:#cb5858;stop-opacity:1;"
offset="0"
id="stop3604-1" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606-3" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3602-5"
id="linearGradient3608-1"
x1="3.909091"
y1="14.363636"
x2="24.81818"
y2="14.363636"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3602-5">
<stop
style="stop-color:#cb5858;stop-opacity:1;"
offset="0"
id="stop3604-9" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606-9" />
</linearGradient>
<linearGradient
y2="14.363636"
x2="24.81818"
y1="14.363636"
x1="3.909091"
gradientUnits="userSpaceOnUse"
id="linearGradient3686"
xlink:href="#linearGradient3602-5" />
<linearGradient
xlink:href="#linearGradient3602-58"
id="linearGradient3608-8"
x1="3.909091"
y1="14.363636"
x2="24.81818"
y2="14.363636"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3602-58">
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="0"
id="stop3604-2" />
<stop
style="stop-color:#840000;stop-opacity:1;"
offset="1"
id="stop3606-2" />
</linearGradient>
<linearGradient
y2="14.363636"
x2="24.81818"
y1="14.363636"
x1="3.909091"
gradientUnits="userSpaceOnUse"
id="linearGradient3726"
xlink:href="#linearGradient3602-58" />
<linearGradient
id="linearGradient3602-1">
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="0"
id="stop3604-8" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606-96" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3602-1"
id="linearGradient2875"
gradientUnits="userSpaceOnUse"
x1="3.909091"
y1="14.363636"
x2="24.81818"
y2="14.363636" />
<linearGradient
id="linearGradient3602-1-5">
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="0"
id="stop3604-8-3" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606-96-8" />
</linearGradient>
<linearGradient
id="linearGradient3602-1-8">
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="0"
id="stop3604-8-5" />
<stop
style="stop-color:#f7863f;stop-opacity:1;"
offset="1"
id="stop3606-96-2" />
</linearGradient>
<linearGradient
id="linearGradient3669-2">
<stop
style="stop-color:#b07809;stop-opacity:1;"
offset="0"
id="stop3671-7" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3673-5" />
</linearGradient>
<linearGradient
gradientTransform="matrix(0.73872768,0,0,1.3536788,-2.25,-1.9999999)"
y2="1.8468192"
x2="48.259949"
y1="33.61211"
x1="34.290413"
gradientUnits="userSpaceOnUse"
id="linearGradient3698"
xlink:href="#linearGradient3669-2" />
<linearGradient
id="linearGradient3669-22">
<stop
style="stop-color:#b07809;stop-opacity:1;"
offset="0"
id="stop3671-8" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3673-4" />
</linearGradient>
<linearGradient
gradientTransform="matrix(0.73872768,0,0,1.3536788,-2.25,-1.9999999)"
y2="1.8468192"
x2="48.259949"
y1="33.61211"
x1="34.290413"
gradientUnits="userSpaceOnUse"
id="linearGradient3698-3"
xlink:href="#linearGradient3669-22" />
<linearGradient
id="linearGradient3669-0">
<stop
style="stop-color:#b07809;stop-opacity:1;"
offset="0"
id="stop3671-9" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3673-1" />
</linearGradient>
<linearGradient
gradientTransform="matrix(0.73872768,0,0,1.3536788,-2.25,-1.9999999)"
y2="1.8468192"
x2="48.259949"
y1="33.61211"
x1="34.290413"
gradientUnits="userSpaceOnUse"
id="linearGradient3698-9"
xlink:href="#linearGradient3669-0" />
<linearGradient
xlink:href="#linearGradient3602-58-5"
id="linearGradient4030-1"
x1="42.239037"
y1="23.095947"
x2="36.44146"
y2="21.198208"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3602-58-5">
<stop
style="stop-color:#d82b1e;stop-opacity:1;"
offset="0"
id="stop3604-2-5" />
<stop
style="stop-color:#840000;stop-opacity:1;"
offset="1"
id="stop3606-2-4" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3602-58-50"
id="linearGradient4030-6"
x1="42.239037"
y1="23.095947"
x2="36.44146"
y2="21.198208"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3602-58-50">
<stop
style="stop-color:#d82b1e;stop-opacity:1;"
offset="0"
id="stop3604-2-8" />
<stop
style="stop-color:#840000;stop-opacity:1;"
offset="1"
id="stop3606-2-2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3669-3"
id="linearGradient4329-0"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.81731796,0,0,1.9288701,-2.7299862,-14.350362)"
x1="78.740204"
y1="21.910299"
x2="70.337143"
y2="24.084332" />
<linearGradient
id="linearGradient3669-3">
<stop
style="stop-color:#266ee6;stop-opacity:1;"
offset="0"
id="stop3671-2" />
<stop
style="stop-color:#00afff;stop-opacity:1;"
offset="1"
id="stop3673-2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3669-22-5"
id="linearGradient3675-0-5"
x1="34.290413"
y1="33.61211"
x2="48.259949"
y2="1.8468192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.4976911,0,0,1.0526203,-3.6955244,-10.60101)" />
<linearGradient
id="linearGradient3669-22-5">
<stop
style="stop-color:#b07809;stop-opacity:1;"
offset="0"
id="stop3671-8-3" />
<stop
style="stop-color:#f8ca69;stop-opacity:1;"
offset="1"
id="stop3673-4-0" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient4009"
id="radialGradient4017"
cx="-38.110359"
cy="21.017715"
fx="-38.110359"
fy="21.017715"
r="17.227106"
gradientTransform="matrix(1.0284162,-0.00250002,0.00475038,0.581957,0.49198438,-0.85035592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3859"
id="linearGradient3865"
x1="21.658861"
y1="36.936382"
x2="20.305182"
y2="28.071651"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-89.353353,-3.7800688)" />
<linearGradient
xlink:href="#linearGradient3867"
id="linearGradient3873"
x1="66.330261"
y1="30.287834"
x2="62.269226"
y2="23.639286"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-89.353353,-3.7800688)" />
<linearGradient
xlink:href="#linearGradient3908"
id="linearGradient3914"
x1="48"
y1="16"
x2="54"
y2="58"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3908-5"
id="linearGradient3914-3"
x1="48"
y1="16"
x2="54"
y2="58"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3908-5">
<stop
style="stop-color:#307bf7;stop-opacity:1"
offset="0"
id="stop3910-6" />
<stop
style="stop-color:#0846b3;stop-opacity:1"
offset="1"
id="stop3912-2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4006"
id="linearGradient4012"
x1="21"
y1="18"
x2="28"
y2="47"
gradientUnits="userSpaceOnUse" />
</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:creator>
<cc:Agent>
<dc:title>[jmaustpc]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>PartDesign_Hole</dc:title>
<dc:date>2013-03-17</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/PartDesign/Gui/Resources/icons/PartDesign_Hole.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">
<g
transform="scale(0.73872768,1.3536788)"
style="font-size:54.21519089000000236px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#e9aaaa;fill-opacity:1;stroke:#731200;font-family:Arial;-inkscape-font-specification:Arial;color:#11111b;fill-rule:nonzero;stroke-width:2.19132471;stroke-linecap:square;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="text3796">
<g
id="g3130"
transform="translate(-100.1722,-4.4161524)"
style="stroke-linejoin:round;stroke-linecap:round">
<path
id="rect3099-3"
d="m 131.30684,6.6485491 0,35.4589279 51.4398,7.371064 0,-35.458927 -51.4398,-7.3710649 z m 25.7199,8.1178989 c 10.65353,1.526595 19.28992,8.717461 19.28992,16.061246 0,7.343784 -8.63639,12.059546 -19.28992,10.53295 -10.65353,-1.526597 -19.28992,-8.717464 -19.28992,-16.061248 0,-7.343785 8.63639,-12.059546 19.28992,-10.532948 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:#307bf7;fill-opacity:1;fill-rule:nonzero;stroke:#052459;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
<rect
transform="matrix(0.98988872,0.14184609,0,1,0,0)"
y="-10.631625"
x="135.39131"
height="32.352928"
width="46.498684"
id="rect3099-1-6"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#89b4fa;stroke-width:2.01018834;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
<path
transform="matrix(1.0716624,0.15356384,0,0.73872768,129.16352,4.8639661)"
d="M 44,26 C 44,35.941125 35.941125,44 26,44 16.058875,44 8,35.941125 8,26 8,16.058875 16.058875,8 26,8 c 9.941125,0 18,8.058875 18,18 z"
id="path3913-5"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#4c1313;stroke-width:2.24780583;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
</g>
<path
style="fill:url(#linearGradient4012);fill-opacity:1;stroke:none;stroke-linecap:round;stroke-linejoin:round"
d="M 34,15 7,14 v 35 l 32.170506,1.341179 C 39.170506,50.341179 29,45 27,31 25,17 34,15 34,15 Z"
id="path3986"
transform="scale(1.3536788,0.73872768)" />
<ellipse
style="color:#11111b;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.2152px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#f2cdcd;stroke-width:2.24781;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.04;stroke-opacity:1;marker:none;enable-background:accumulate"
id="path3913-1-2-7"
transform="matrix(1.0716624,0.15356384,0,0.73872768,26.283932,0.87519379)"
cx="26"
cy="26"
rx="17.687561"
ry="18" />
<ellipse
style="color:#11111b;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.2152px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#f2cdcd;stroke-width:2.32564;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.04;stroke-opacity:1;marker:none;enable-background:accumulate"
id="path3913-1-2"
transform="matrix(1.0716624,0.14345735,0,0.69010984,4.6250692,1.3595184)"
cx="26"
cy="26"
rx="18.885246"
ry="18.962406" />
<path
style="fill:#307bf7;stroke:#052459;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04"
d="m 4.0610364,2.216183 0,35.458929 51.4397936,7.371064 0,-35.4589286 L 4.0610364,2.216183 z m 25.7198976,8.117899 c 10.653529,1.526596 19.289922,8.717462 19.289922,16.061246 0,7.343784 -8.636393,12.059546 -19.289922,10.53295 C 19.127403,35.401681 10.49101,28.210815 10.49101,20.86703 c 0,-7.343784 8.636393,-12.059546 19.289924,-10.532948 z"
id="rect3099" />
<rect
style="color:#11111b;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.2152px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#89b4fa;stroke-width:2.01019;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.04;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3099-1"
width="47.45311"
height="31.425747"
x="6.1128764"
y="3.6086419"
transform="matrix(0.98988872,0.14184609,0,1,0,0)" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:1.99819779;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04"
id="path3887"
d="M 45,27 A 18,18 0 1 1 9,27 18,18 0 1 1 45,27 z"
transform="matrix(1.190736,0.17489293,0,0.84133243,-2.368938,-3.4295014)" />
<path
style="fill:none;stroke:#4c1313;stroke-width:2.24780583;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04"
id="path3913"
d="M 44,26 C 44,35.941125 35.941125,44 26,44 16.058875,44 8,35.941125 8,26 8,16.058875 16.058875,8 26,8 c 9.941125,0 18,8.058875 18,18 z"
transform="matrix(1.0716624,0.15356384,0,0.73872768,1.9177116,0.43160004)" />
<path
style="fill:#89b4fa;stroke:#052459;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m 3.2623523,2.562746 19.9999997,10e-8 L 61,12.883399 H 41 Z"
id="path3136"
transform="scale(1.3536788,0.73872768)" />
<path
style="fill:url(#linearGradient3914);fill-opacity:1;stroke:#052459;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 41,12.708497 V 61.378953 H 61 V 12.708497 Z"
id="path3138"
transform="scale(1.3536788,0.73872768)" />
<path
style="color:#11111b;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.2152px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#307bf7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 57.765234,11.22758 v 32.265991 l 22.113425,-0.0835 -4e-6,-32.182493 z"
id="path3138-9" />
<path
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#11111b;fill:none;stroke:#4c1313;stroke-width:2.24780583;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.04;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3913-1"
d="M 44,26 A 18,18 0 1 1 8,26 18,18 0 1 1 44,26 z"
transform="matrix(1.0716624,0.15356384,0,0.73872768,1.9177116,1.1703277)" />
</g>
</g>
</svg>