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

350 lines
16 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2766"
sodipodi:version="0.32"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="Image_Scale_v3.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2768">
<linearGradient
inkscape:collect="always"
id="linearGradient3856">
<stop
style="stop-color:#307bf7;stop-opacity:1"
offset="0"
id="stop3858" />
<stop
style="stop-color:#89b4fa;stop-opacity:1"
offset="1"
id="stop3860" />
</linearGradient>
<linearGradient
id="linearGradient3787">
<stop
id="stop3789"
offset="0"
style="stop-color:#2168de;stop-opacity:1;" />
<stop
id="stop3791"
offset="1"
style="stop-color:#7cacfa;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
id="stop3866"
offset="0"
style="stop-color:#2168de;stop-opacity:1;" />
<stop
id="stop3868"
offset="1"
style="stop-color:#7cacfa;stop-opacity:1;" />
</linearGradient>
<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="perspective2774" />
<linearGradient
gradientTransform="matrix(0,-1.4500001,1.4705882,0,-15.05882,91.45)"
y2="36.079998"
x2="21.689653"
y1="29.279999"
x1="56.172409"
gradientUnits="userSpaceOnUse"
id="linearGradient3036"
xlink:href="#linearGradient3895"
inkscape:collect="always" />
<linearGradient
id="linearGradient3895">
<stop
style="stop-color:#89b4fa;stop-opacity:1;"
offset="0"
id="stop3897" />
<stop
style="stop-color:#0846b3;stop-opacity:1;"
offset="1"
id="stop3899" />
</linearGradient>
<linearGradient
y2="43.940212"
x2="32.329041"
y1="18.865765"
x1="44.058071"
gradientTransform="matrix(0.38366341,-0.38366341,0.41875298,0.41875298,12.196434,25.003375)"
gradientUnits="userSpaceOnUse"
id="linearGradient3012"
xlink:href="#linearGradient3895"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3856"
id="linearGradient3862"
x1="613.25824"
y1="135.1946"
x2="595.35895"
y2="68.194603"
gradientUnits="userSpaceOnUse" />
<linearGradient
y2="140.56369"
x2="408.87384"
y1="187.25706"
x1="416.49524"
gradientTransform="matrix(0.56580343,0,0,0.60059644,361.51953,16.460413)"
gradientUnits="userSpaceOnUse"
id="linearGradient5087"
xlink:href="#linearGradient3814"
inkscape:collect="always" />
<linearGradient
id="linearGradient3814">
<stop
id="stop3816"
offset="0"
style="stop-color:#359b2e;stop-opacity:1" />
<stop
id="stop3818"
offset="1"
style="stop-color:#a6e3a1;stop-opacity:1" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#cdd6f4"
bordercolor="#38394b"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="9.6875"
inkscape:cx="-3.8709677"
inkscape:cy="32"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="2560"
inkscape:window-height="1361"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:snap-global="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2997"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3518"
transform="matrix(1.0614931,0,0,1,-612.96941,-69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044">
<path
id="rect3446"
d="m 580.28581,72.194602 3e-5,14 h 5.65241 v -8 h 1.88414 v -6 z m 11.30486,0 v 6 h 7.53655 v -6 z m 11.30483,0 v 6 h 7.53655 v -6 z m 11.30483,0 v 6 h 7.53655 v -6 z m 11.30483,0 v 6 h 3.76828 v 4 h 5.65241 v -10 z m 3.76828,14 v 8 h 5.65241 v -8 z m -48.9876,4 v 8 h 5.65241 v -8 z m 48.9876,8 v 7.999998 h 5.65241 v -7.999998 z m 0,11.999998 v 8 h 5.65241 v -8 z m 0,12 v 2 h -3.76828 v 6 h 9.42069 v -8 z m -18.84139,2 v 6 h 11.30483 v -6 z"
style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3862);fill-opacity:1;fill-rule:nonzero;stroke:#0846b3;stroke-width:1.94120502;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 36,57 H 46"
id="path3832"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 52,57 h 5 v -2 h 3"
id="path3834"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 57,48 V 42"
id="path3836"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 57,36 V 30"
id="path3838"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 57,24 V 18"
id="path3840"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 53,8 V 5 h 7"
id="path3842"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 46,5 H 40"
id="path3844"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 34,5 H 28"
id="path3846"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 22,5 H 16"
id="path3848"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 10,5 H 5 v 11"
id="path3850"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5,22 v 6"
id="path3852"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 57,12 V 9"
id="path3854"
inkscape:connector-curvature="0"
transform="matrix(0.94206924,0,0,1,577.45963,69.194602)"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
sodipodi:nodetypes="ccczzzzzzzzczzczcczzccz"
id="path3464"
d="m 595.37263,130.43281 c -1.20088,0 -1.20088,-1.91208 -1.20088,-3.82416 0,-3.18681 0,-7.86924 0,-11.4725 -1.80131,-0.63735 -4.20306,0 -6.00438,-2.54944 -1.80131,-2.54944 -1.74927,-9.60412 -0.60043,-12.747208 1.14883,-3.143078 3.00219,-1.912076 3.60263,0 0.60043,1.912088 1.20087,3.186808 2.40174,0 1.20088,-3.186788 3.60263,-3.186788 4.80351,0 1.20087,3.186808 1.80131,1.912088 2.40174,0 0.60044,-1.912076 2.40175,-3.186788 3.60263,0 1.20088,3.186808 1.20088,10.197768 -0.60044,12.747208 -1.80131,2.54944 -4.20306,1.91209 -6.00437,2.54944 0,2.54945 0,5.73625 0,7.64833 0,1.91208 0.95299,2.21737 2.87825,-0.16604 1.92525,-2.3834 6.12832,-6.84492 9.70077,-9.96605 0.0302,3.75849 1.23104,7.58265 -0.42167,11.4925 -1.65271,3.90985 -9.15517,6.28792 -14.5591,6.28792 z m -14.41051,-6.3736 c -1.20088,-3.82417 -0.75596,-8.16162 -0.56363,-11.87601 3.41253,1.22916 8.689,7.73953 11.37151,10.60128 0.0368,2.14594 0,5.09889 0,7.64833 -4.28697,0.029 -9.607,-2.54944 -10.80788,-6.3736 z"
style="fill:url(#linearGradient5087);fill-opacity:1;stroke:#154b00;stroke-width:1.94120502;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
sodipodi:nodetypes="ccczzzzzzzzczzczccczcc"
id="path3464-9"
d="m 596.20505,129.1436 c -1.119,0.0869 -0.66867,0.44905 -0.85971,-3.46203 0,-3.1868 0.0136,-7.88371 0.0136,-11.48697 -1.80132,-0.63736 -5.33571,-0.68081 -6.34554,-2.50598 -1.00982,-1.82518 -1.69468,-7.3444 -0.54585,-10.48749 1.14884,-3.143074 1.31969,-1.250708 2.15612,0.57943 0.83642,1.83014 2.84974,1.90506 3.95411,-1.13835 1.10439,-3.043397 1.71944,-2.590114 2.97821,0.44305 1.25877,3.03316 3.32913,2.19039 4.09361,0.002 0.76448,-2.188624 1.08868,-2.883324 1.93475,0.5642 0.84607,3.44756 0.36886,8.06156 -0.96848,10.52408 -1.33735,2.46254 -4.22745,1.324 -6.02876,1.96137 0,2.54944 0.005,7.47073 -0.009,9.06413 -0.0136,1.5934 1.71752,3.84634 4.12039,1.18772 2.40288,-2.65864 4.98873,-5.92908 8.56117,-9.05021 0.37758,3.67655 0.65209,6.27158 -0.74973,8.91132 -1.40184,2.63975 -7.67312,4.56621 -12.30511,4.89397 z m -14.31499,-6.33015 c -0.90077,-4.04184 -0.41033,-5.71965 -0.35479,-8.54642 2.32083,1.37401 6.35134,6.1482 9.03386,9.00996 0.0368,2.14593 0.0274,3.27372 0.0274,5.82316 -3.33172,-0.40562 -7.86014,-2.36074 -8.70635,-6.2867 z"
style="fill:none;stroke:#a6e3a1;stroke-width:1.23724735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3012);fill-opacity:1;fill-rule:evenodd;stroke:#052459;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 35,15 39.062816,19.37832 31,27 l 6,6 7.71967,-7.964826 4.24264,4.242641 L 49,15 Z"
id="path3343"
sodipodi:nodetypes="cccccccc"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 39.550023,17 2.32515,2.37832 -7.987667,7.653821 3.080353,3.112494 7.751811,-7.937888 2.221642,2.240472 L 47.000002,17 Z"
id="path3343-2"
sodipodi:nodetypes="cccccccc"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
inkscape:export-xdpi="102.50044"
inkscape:export-ydpi="102.50044" />
</g>
<metadata
id="metadata5370">
<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 />
<cc:license
rdf:resource="" />
<dc:date>Mon Oct 10 13:44:52 2011 +0000</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>[wmayer]</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>FreeCAD/src/Mod/Draft/Resources/icons/Draft_Scale.svg</dc:identifier>
<dc:relation>https://www.freecad.org/wiki/index.php?title=Artwork</dc:relation>
<dc:contributor>
<cc:Agent>
<dc:title>[agryson] Alexander Gryson</dc:title>
</cc:Agent>
</dc:contributor>
<dc:subject>
<rdf:Bag>
<rdf:li>square</rdf:li>
<rdf:li>arrow</rdf:li>
<rdf:li>dotted line</rdf:li>
<rdf:li />
</rdf:Bag>
</dc:subject>
<dc:description>A small square in the bottom left corner of a large dotted box with an arrow pointing from the top left corner of the inner box to the top left corner of the outer box</dc:description>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>