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

553 lines
18 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
id="svg1307"
version="1.0"
sodipodi:docname="button_rotate.svg"
inkscape:version="1.4 (86a8ad7, 2024-10-11)"
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/">
<sodipodi:namedview
id="namedview1"
pagecolor="#2e2f41"
bordercolor="#8389a1"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#2e2f41"
inkscape:zoom="5.2851563"
inkscape:cx="-39.828529"
inkscape:cy="37.936438"
inkscape:window-width="3840"
inkscape:window-height="1571"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="svg1307" />
<defs
id="defs1309">
<linearGradient
id="linearGradient4191">
<stop
style="stop-color:#5190f8;stop-opacity:1;"
offset="0"
id="stop4193" />
<stop
style="stop-color:#5190f8;stop-opacity:0;"
offset="1"
id="stop4195" />
</linearGradient>
<linearGradient
id="linearGradient4150">
<stop
style="stop-color:#e9aaaa;stop-opacity:0.39130434;"
offset="0"
id="stop4152" />
<stop
style="stop-color:#e9aaaa;stop-opacity:1;"
offset="1"
id="stop4154" />
</linearGradient>
<linearGradient
id="linearGradient3867">
<stop
style="stop-color:#61c658;stop-opacity:1;"
offset="0"
id="stop3869" />
<stop
style="stop-color:#89da82;stop-opacity:0.99137932;"
offset="1"
id="stop3871" />
</linearGradient>
<linearGradient
id="linearGradient2817">
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="0"
id="stop2819" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0.48453608;"
offset="1"
id="stop2821" />
</linearGradient>
<linearGradient
id="linearGradient2584">
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="0"
id="stop2586" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0;"
offset="1"
id="stop2588" />
</linearGradient>
<linearGradient
id="linearGradient2697">
<stop
id="stop2699"
offset="0"
style="stop-color:#585b70" />
<stop
id="stop2701"
offset="1"
style="stop-color:#313244" />
</linearGradient>
<linearGradient
id="linearGradient2679">
<stop
id="stop2681"
offset="0"
style="stop-color:#aab2cd;stop-opacity:1" />
<stop
id="stop2683"
offset="1"
style="stop-color:#676a80;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3081">
<stop
style="stop-color:#cdd6f4;stop-opacity:1;"
offset="0"
id="stop3083" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0;"
offset="1"
id="stop3085" />
</linearGradient>
<linearGradient
id="linearGradient8662">
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="0"
id="stop8664" />
<stop
style="stop-color:#11111b;stop-opacity:0;"
offset="1"
id="stop8666" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2112"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2122"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-12,0)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2124"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(133,70.99999)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2137"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2139"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2725"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2727"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2729"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2731"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-12,0)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2733"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(133,70.99999)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2745"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient2747"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2749"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2751"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-12,0)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2753"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(133,70.99999)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2791"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2793"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-12,0)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2795"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-12,0)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2797"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(133,70.99999)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2800"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-4e-4,-0.09426)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2803"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2806"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-145.0004,-97.0943)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2809"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2817"
id="linearGradient2823"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2825"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-4e-4,-26.09426)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2831"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,186.6949)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2817"
id="linearGradient2858"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<radialGradient
xlink:href="#linearGradient2679"
id="radialGradient2860"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient2862"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient2864"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-4e-4,-0.09426)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
xlink:href="#linearGradient3081"
id="linearGradient3421"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.000198,0,0,1,-35.670225,-22.756043)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
xlink:href="#linearGradient2697"
id="linearGradient3424"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.498884,0,0,1.004384,-383.7419,-95.062012)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
xlink:href="#linearGradient2817"
id="linearGradient3430"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.624525,0,0,1.054917,-407.89189,-96.394408)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<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" />
<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="34.719997"
x2="54.103443"
y1="29.279999"
x1="23.758619"
gradientTransform="matrix(0,1.4479205,1.3553007,0,48.501888,-29.304674)"
gradientUnits="userSpaceOnUse"
id="linearGradient3012"
xlink:href="#linearGradient3895" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3393"
id="linearGradient3399"
x1="1650.4493"
y1="1752.9712"
x2="2052.8906"
y2="1767.5603"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.03496608,-0.13049518,-0.13216743,0.03541416,325.21476,214.13022)" />
<linearGradient
id="linearGradient3393">
<stop
style="stop-color:#89b4fa;stop-opacity:1;"
offset="0"
id="stop3395" />
<stop
style="stop-color:#0846b3;stop-opacity:1;"
offset="1"
id="stop3397" />
</linearGradient>
</defs>
<metadata
id="metadata1312">
<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 />
</cc:Agent>
</dc:creator>
<cc:license
rdf:resource="" />
<dc:subject>
<rdf:Bag />
</dc:subject>
<dc:contributor>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<path
id="path2396"
d="M 28.884042,58.047726 C 14.348451,57.724707 2.891974,45.793361 3.311123,31.414837 3.730299,17.036327 15.867118,5.6292828 30.402695,5.9522886 38.062964,6.1225418 44.866708,9.5165403 49.528725,14.793594 L 55.570336,9.9863147 60.700032,34.094821 36.249021,27.08396 41.92964,20.842846 c -3.026831,-3.288407 -7.357598,-5.392463 -12.219474,-5.50052 -9.465434,-0.210334 -17.367766,7.216787 -17.640708,16.57997 -0.272928,9.363198 7.186263,17.135919 16.651711,17.346267 2.708303,0.06017 5.286283,-0.507062 7.596553,-1.564321 l 4.299094,7.911533 c -3.56495,1.642732 -7.547694,2.524959 -11.732774,2.431951 z"
style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3399);fill-opacity:1;fill-rule:evenodd;stroke:#052459;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"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssscccccsssccs" />
<path
id="path2396-9"
d="M 28.551584,56.058955 C 17.748348,55.848607 9.5288725,48.539211 6.4184005,38.232165 1.9809325,23.527923 14.045448,11.318884 23.026538,8.8783873 36.819645,5.1302847 46.228771,13.438894 49.75553,17.498075 l 4.518192,-3.555638 3.906977,17.327068 -17.915526,-5.098721 4.966139,-5.18191 C 37.150018,13.333412 31.264666,12.332666 24.273934,14.09608 17.120467,15.90056 8.0773185,24.850922 10.797424,36.623216 c 2.364127,10.231607 11.358691,14.395833 18.477568,14.594377 2.382681,0.293537 4.646789,-0.312517 6.450531,-0.849499 l 2.406549,4.410738 c -2.812374,0.904287 -6.301421,1.34395 -9.580488,1.280123 z"
style="display:inline;overflow:visible;visibility:visible;fill:none;stroke:#89b4fa;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssscccccsscccs" />
</svg>