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

362 lines
13 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg2821"
sodipodi:version="0.32"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="Assembly_CreateJointFixedNew.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
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="defs2823">
<linearGradient
inkscape:collect="always"
id="linearGradient4">
<stop
style="stop-color:#307bf7;stop-opacity:1;"
offset="0"
id="stop3" />
<stop
style="stop-color:#89b4fa;stop-opacity:1;"
offset="1"
id="stop4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3801">
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="0"
id="stop3803" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3805" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377"
id="radialGradient3701"
gradientUnits="userSpaceOnUse"
cx="84.883324"
cy="77.042847"
fx="84.883324"
fy="77.042847"
r="19.467436"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" />
<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>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377"
id="radialGradient3699"
gradientUnits="userSpaceOnUse"
cx="76.383331"
cy="94.369568"
fx="76.383331"
fy="94.369568"
r="19.467436"
gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2829" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3801"
id="linearGradient3807"
x1="110"
y1="35"
x2="85"
y2="35"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
gradientTransform="translate(-61,-0.19620034)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3801-5"
id="linearGradient3807-7"
x1="110"
y1="35"
x2="85"
y2="35"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
gradientTransform="translate(-62,-16)" />
<linearGradient
inkscape:collect="always"
id="linearGradient3801-5">
<stop
style="stop-color:#bc8009;stop-opacity:1"
offset="0"
id="stop3803-3" />
<stop
style="stop-color:#f9e2af;stop-opacity:1"
offset="1"
id="stop3805-5" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3838"
id="linearGradient3844"
x1="2802.9631"
y1="538.36249"
x2="2859.7263"
y2="786.05646"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3838">
<stop
style="stop-color:#94e2d5;stop-opacity:1"
offset="0"
id="stop3840" />
<stop
style="stop-color:#258e7e;stop-opacity:1"
offset="1"
id="stop3842" />
</linearGradient>
<linearGradient
y2="786.05646"
x2="2859.7263"
y1="538.36249"
x1="2802.9631"
gradientUnits="userSpaceOnUse"
id="linearGradient3045"
xlink:href="#linearGradient3172" />
<linearGradient
id="linearGradient3172">
<stop
id="stop3174"
offset="0"
style="stop-color:#f2cdcd;stop-opacity:1" />
<stop
id="stop3176"
offset="1"
style="stop-color:#912424;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3172"
id="linearGradient3880"
gradientUnits="userSpaceOnUse"
x1="2802.9631"
y1="626.0874"
x2="2849.4058"
y2="822.17853" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4"
id="linearGradient3"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-61,-0.19620034)"
x1="110"
y1="35"
x2="85"
y2="35"
spreadMethod="reflect" />
<linearGradient
id="linearGradient4067-6">
<stop
style="stop-color:#45475a;stop-opacity:1;"
offset="0"
id="stop4069-7" />
<stop
style="stop-color:#1e1e2e;stop-opacity:1;"
offset="1"
id="stop4071-5" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#cdd6f4"
bordercolor="#38394b"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.2080076"
inkscape:cx="44.186968"
inkscape:cy="8.4628102"
inkscape:current-layer="g2"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="2560"
inkscape:window-height="1356"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#6a6e84"
showguides="true">
<inkscape:grid
type="xygrid"
id="grid2992"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px" />
<sodipodi:guide
position="32,65.942284"
orientation="-1,0"
id="guide1"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,134,229)" />
<sodipodi:guide
position="22,67.121528"
orientation="-1,0"
id="guide2"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,134,229)" />
<sodipodi:guide
position="42,66.289121"
orientation="-1,0"
id="guide3"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,134,229)" />
</sodipodi:namedview>
<metadata
id="metadata2826">
<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>[wmayer]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Part_Cylinder</dc:title>
<dc:date>2011-10-10</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/Part/Gui/Resources/icons/Part_Cylinder.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"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g2"
inkscape:label="Main"
transform="matrix(1.0416665,0,0,1.0416665,-1.3333273,-2.3320947)">
<g
id="g1"
inkscape:label="Part"
transform="translate(3.6192085e-6,-0.89630564)">
<path
style="fill:#f9e2af;stroke:#664506;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 56.000001,52.8038 c 0,4.418278 -10.745166,8 -24,8 -13.254833,0 -23.9999985,-3.581722 -23.9999985,-8 l -2e-6,-22.788679 L 56,30.015122 Z"
id="path2994-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscccs" />
<path
style="fill:url(#linearGradient3807);fill-opacity:1;stroke:#f9e2af;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 54,51.531073 c 0,4.016616 -9.84973,7.272727 -22,7.272727 -12.150264,0 -21.999999,-3.256111 -21.999999,-7.272727 l -1.5e-6,-17.675951 H 54 Z"
id="path2994-3-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscccs" />
<path
style="fill:none;stroke:#f9e2af;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 53.883463,36.735122 c -2.106548,1.373238 -5.918402,2.880001 -9.403465,3.127242 l -0.005,9.10552 c 0,0 -4.321609,1.454482 -12.474967,1.454482 -8.153358,0 -12.5599,-1.348891 -12.5599,-1.348891 l 0.07989,-9.211111 c -2.251676,-0.247241 -6.445502,-1.207241 -9.370239,-3.127242"
id="path2994-3-6-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccczccc" />
<ellipse
style="fill:#f9e2af;stroke:#664506;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dasharray:none;stroke-dashoffset:20.4;stroke-opacity:1"
id="path2994"
cx="32"
cy="31.700123"
ry="7.9999995"
rx="24" />
</g>
<path
d="m 42.539277,35.800977 0.02691,10.547767 c 0,0 -3.169859,1.167493 -10.566183,1.116355 -7.396326,-0.05114 -10.566196,-1.116355 -10.566196,-1.116355 l -0.02323,-10.555835"
style="fill:none;fill-opacity:1;stroke:#664506;stroke-width:2.22135;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
id="path1-6"
sodipodi:nodetypes="ccscc" />
<g
id="g3"
inkscape:label="Part 2"
transform="translate(3.6192085e-6,-20.496033)">
<path
style="fill:#89b4fa;fill-opacity:1;stroke:#052459;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 56,49.614849 c -10e-7,3.283664 -5.935052,6.10526 -14.424452,7.337886 l 0.02445,8.673166 c 0,0 -2.880002,0.96 -9.599996,0.917951 -6.719994,-0.04205 -9.600007,-0.917951 -9.600007,-0.917951 l -0.0211,-8.6798 C 13.913825,55.710006 8.000001,52.892635 8.000001,49.614849 l -5e-7,-15.028454 H 56 Z"
id="path1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="scczcccccs" />
<path
style="fill:url(#linearGradient3);fill-opacity:1;stroke:#89b4fa;stroke-width:1.68;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dasharray:none;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 54.079999,48.654848 c 0.01917,3.133054 -5.916694,5.700603 -14.320003,6.723777 V 63.8129 c 0,0 -2.247749,0.778588 -7.76,0.778588 -5.512251,0 -7.600003,-0.572862 -7.600003,-0.572862 V 55.542947 C 16.171126,54.490553 10.08,51.746576 10.08,48.654848 L 9.9999995,35.580766 H 54 Z"
id="path2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="scczcccccs" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dashoffset:20.4;stroke-opacity:1"
d="m 54,38.835626 c -2,3.272727 -9.84973,5.272727 -22,5.272727 -12.150264,0 -19,-2 -21.999999,-5.272727"
id="path3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csc" />
<ellipse
style="fill:#89b4fa;fill-opacity:1;stroke:#052459;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-dasharray:none;stroke-dashoffset:20.4;stroke-opacity:1"
id="ellipse3"
cx="32"
cy="34.381172"
rx="24"
ry="7.9999995" />
</g>
</g>
<g
id="g4"
transform="matrix(0.53791749,0,0,0.53791749,5.3006475,37.927524)" />
</g>
</svg>