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

502 lines
16 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg2943"
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="defs2945">
<linearGradient
id="linearGradient2">
<stop
style="stop-color:#45475a;stop-opacity:1;"
offset="0"
id="stop2" />
<stop
style="stop-color:#585b70;stop-opacity:1;"
offset="1"
id="stop3" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#956363;stop-opacity:1;"
offset="0"
id="stop3878" />
<stop
style="stop-color:#ebe0a9;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<linearGradient
id="linearGradient3858">
<stop
style="stop-color:#956363;stop-opacity:1;"
offset="0"
id="stop3860" />
<stop
style="stop-color:#d17878;stop-opacity:1;"
offset="1"
id="stop3862" />
</linearGradient>
<linearGradient
id="linearGradient4158">
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="0"
id="stop4160" />
<stop
style="stop-color:#f6f6f6;stop-opacity:0;"
offset="1"
id="stop4162" />
</linearGradient>
<linearGradient
id="linearGradient4122">
<stop
style="stop-color:#e3d328;stop-opacity:1;"
offset="0"
id="stop4124" />
<stop
style="stop-color:#e1dec3;stop-opacity:1;"
offset="1"
id="stop4126" />
</linearGradient>
<linearGradient
id="linearGradient4088">
<stop
style="stop-color:#e9cd23;stop-opacity:1;"
offset="0"
id="stop4090" />
<stop
style="stop-color:#040000;stop-opacity:0;"
offset="1"
id="stop4092" />
</linearGradient>
<linearGradient
id="linearGradient4060">
<stop
style="stop-color:#ada9a9;stop-opacity:1;"
offset="0"
id="stop4062" />
<stop
style="stop-color:#ada9a9;stop-opacity:0;"
offset="1"
id="stop4064" />
</linearGradient>
<linearGradient
id="linearGradient4052">
<stop
style="stop-color:#ada9a9;stop-opacity:1;"
offset="0"
id="stop4054" />
<stop
style="stop-color:#ada9a9;stop-opacity:0;"
offset="1"
id="stop4056" />
</linearGradient>
<linearGradient
id="linearGradient4349">
<stop
style="stop-color:#898709;stop-opacity:1;"
offset="0"
id="stop4351" />
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="1"
id="stop4353" />
</linearGradient>
<linearGradient
id="linearGradient5241">
<stop
style="stop-color:#212c45;stop-opacity:1;"
offset="0"
id="stop5243" />
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="1"
id="stop5245" />
</linearGradient>
<linearGradient
id="linearGradient5227">
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="0"
id="stop5229" />
</linearGradient>
<linearGradient
id="linearGradient3902">
<stop
style="stop-color:#11111b;stop-opacity:0.58823532;"
offset="0"
id="stop3904" />
<stop
style="stop-color:#11111b;stop-opacity:0.39215687;"
offset="1"
id="stop3906" />
</linearGradient>
<linearGradient
id="linearGradient3894">
<stop
style="stop-color:#45351d;stop-opacity:1;"
offset="0"
id="stop3896" />
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="1"
id="stop3898" />
</linearGradient>
<linearGradient
id="linearGradient3886">
<stop
style="stop-color:#45351d;stop-opacity:1;"
offset="0"
id="stop3888" />
<stop
style="stop-color:#11111b;stop-opacity:1;"
offset="1"
id="stop3890" />
</linearGradient>
<linearGradient
id="linearGradient3792">
<stop
style="stop-color:#aaaaaa;stop-opacity:1;"
offset="0"
id="stop3794" />
<stop
style="stop-color:#d2d2d2;stop-opacity:1;"
offset="1"
id="stop3796" />
</linearGradient>
<linearGradient
id="linearGradient3784">
<stop
style="stop-color:#bebebe;stop-opacity:1;"
offset="0"
id="stop3786" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0.39215687;"
offset="1"
id="stop3788" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#89b4fa;stop-opacity:1;" />
<stop
id="stop3381"
offset="1"
style="stop-color:#0841a6;stop-opacity:1;" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4052"
id="linearGradient4058"
x1="138.99986"
y1="44.863674"
x2="92.497559"
y2="-14.356517"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(248.6744,65.825928)" />
<linearGradient
xlink:href="#linearGradient4060"
id="linearGradient4066"
x1="103.93729"
y1="49.179436"
x2="120.49899"
y2="0.21229285"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(248.6744,65.825928)" />
<linearGradient
xlink:href="#linearGradient4122"
id="linearGradient4128"
x1="391.3074"
y1="120.81136"
x2="394.43201"
y2="112.43636"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-8.034794,-1.0606602)" />
<linearGradient
xlink:href="#linearGradient4158"
id="linearGradient4164"
x1="419.99387"
y1="102.77802"
x2="458.7193"
y2="69.431564"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-49.22376,-0.88388348)" />
<linearGradient
xlink:href="#linearGradient4122"
id="linearGradient3856"
x1="116.83871"
y1="21.107124"
x2="89.015228"
y2="23.486774"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3858"
id="linearGradient3864"
x1="94.744598"
y1="31.189295"
x2="70.261253"
y2="42.461311"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3876"
id="linearGradient3882"
x1="123.75154"
y1="-0.084563509"
x2="104.85488"
y2="16.387842"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3858"
id="linearGradient3892"
gradientUnits="userSpaceOnUse"
x1="94.744598"
y1="31.189295"
x2="70.261253"
y2="42.461311" />
<linearGradient
xlink:href="#linearGradient4122"
id="linearGradient3895"
gradientUnits="userSpaceOnUse"
x1="116.83871"
y1="21.107124"
x2="89.015228"
y2="23.486774" />
<linearGradient
xlink:href="#linearGradient3876"
id="linearGradient3897"
gradientUnits="userSpaceOnUse"
x1="123.75154"
y1="-0.084563509"
x2="104.85488"
y2="16.387842" />
<filter
id="filter3911"
height="1"
width="1"
y="0"
x="0"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3913"
result="result14"
type="luminanceToAlpha"
in="SourceGraphic" />
<feComposite
id="feComposite3915"
in2="result14"
in="SourceGraphic"
result="fbSourceGraphic"
operator="out" />
<feBlend
id="feBlend3917"
in2="fbSourceGraphic"
mode="normal"
result="result15" />
</filter>
<linearGradient
xlink:href="#linearGradient4061"
id="linearGradient4059"
gradientUnits="userSpaceOnUse"
x1="266.08176"
y1="90.401306"
x2="301.7092"
y2="119.88659" />
<linearGradient
id="linearGradient4061">
<stop
id="stop4063"
offset="0"
style="stop-color:#f2cdcd;stop-opacity:1" />
<stop
id="stop4065"
offset="1"
style="stop-color:#912424;stop-opacity:1" />
</linearGradient>
<linearGradient
gradientTransform="matrix(-0.02477995,1.1554758,-1.231953,0.36165297,588.8059,-370.77187)"
xlink:href="#linearGradient3944"
id="linearGradient3950"
x1="285.7092"
y1="75.886589"
x2="301.7092"
y2="119.88659"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3944">
<stop
style="stop-color:#a6e3a1;stop-opacity:1"
offset="0"
id="stop3946" />
<stop
style="stop-color:#359b2e;stop-opacity:1"
offset="1"
id="stop3948" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3953"
id="linearGradient3959"
x1="214.70918"
y1="80.886589"
x2="218.70918"
y2="104.88659"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.02477995,1.1554758,-1.231953,0.36165297,586.8235,-278.33381)" />
<linearGradient
id="linearGradient3953">
<stop
style="stop-color:#585b70;stop-opacity:1"
offset="0"
id="stop3955" />
<stop
style="stop-color:#313244;stop-opacity:1"
offset="1"
id="stop3957" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3961"
id="linearGradient3967"
x1="196.70918"
y1="106.88659"
x2="190.70918"
y2="80.886589"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.02477995,1.1554758,-1.231953,0.36165297,586.8235,-278.33381)" />
<linearGradient
id="linearGradient3961">
<stop
style="stop-color:#585b70;stop-opacity:1"
offset="0"
id="stop3963" />
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="1"
id="stop3965" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2"
id="linearGradient3"
x1="10.915542"
y1="50.440987"
x2="37.282467"
y2="9.9869757"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata2948">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<g
id="g19">
<rect
style="fill:#6c7086;stroke:#313244;stroke-width:2.00575;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;paint-order:fill markers stroke"
id="rect1"
width="33.501892"
height="51.994255"
x="6.1588979"
y="6.1588979" />
<path
style="fill:url(#linearGradient3);stroke:#6c7086;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;paint-order:fill markers stroke"
id="rect2"
width="33.501892"
height="51.994255"
x="6.1588979"
y="6.1588979"
d="M 8.1582031,8.1582031 H 37.660156 V 56.152344 H 8.1582031 Z" />
<path
style="display:inline;fill:none;stroke:#052459;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:3.99999, 3.99999, 1, 3.99999, 1, 3.99999;stroke-dashoffset:0"
d="m 12.161851,40.244641 21.45613,-0.08279"
id="path7" />
<path
style="display:inline;fill:none;stroke:#0846b3;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:3.99999, 3.99999, 1, 3.99999, 1, 3.99999;stroke-dashoffset:0"
d="m 12.161851,36.244641 21.45613,-0.08279"
id="path4-7" />
<path
style="display:inline;fill:none;stroke:#052459;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:3.99998, 3.99998;stroke-dashoffset:0"
d="M 12.161601,32.233749 33.63119,32.156299"
id="path5" />
<path
style="display:inline;fill:none;stroke:#0846b3;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:3.99998, 3.99998;stroke-dashoffset:0"
d="M 12.161601,28.233749 33.63119,28.156299"
id="path6" />
<path
style="display:inline;fill:none;stroke:#052459;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:1, 3.99999;stroke-dashoffset:0"
d="m 33.160789,24.160919 -21.682604,0.06338"
id="path4" />
<path
style="display:inline;fill:none;stroke:#0846b3;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:1, 3.99999;stroke-dashoffset:0"
d="m 33.160789,20.160919 -21.682604,0.06338"
id="path9" />
<path
style="display:inline;fill:none;stroke:#052459;stroke-width:1.99493;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0"
d="m 33.659655,16.159291 -21.500364,0.08262"
id="path3" />
<path
style="display:inline;fill:none;stroke:#0846b3;stroke-width:1.99493;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0"
d="m 33.659655,12.159291 -21.500364,0.08262"
id="path8" />
</g>
<g
transform="matrix(0.28110655,-0.85880332,0.95757553,-0.01841762,-200.64212,426.33927)"
id="g1102"
style="stroke:#490b38;stroke-width:1">
<rect
transform="matrix(0.61920579,-0.78522875,-0.859092,-0.51182119,0,0)"
y="-452.2778"
x="133.36198"
height="4.1084733"
width="16.667767"
id="rect3933"
style="display:inline;fill:#f9e2af;fill-opacity:1;stroke:#0846b3;stroke-width:2.38885;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.9;stroke-dasharray:none;stroke-opacity:1" />
<path
style="display:inline;fill:#7f849c;stroke:#0846b3;stroke-width:2.37868;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 435.83118,105.73766 -8.85181,-15.089687 19.53477,2.189409 2.86855,3.340104 -8.75107,11.097434 z"
id="path3969" />
<path
style="display:inline;fill:#89b4fa;stroke:#0846b3;stroke-width:2.37868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 467.59719,124.66289 3.44025,-4.36267 -30.88361,-18.39953 c 0.6854,3.41806 0.0448,3.2327 -4.32265,3.83697 z"
id="path3843-5-6" />
<path
style="display:inline;fill:#307bf7;stroke:#0846b3;stroke-width:2.37868;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 471.03744,120.30022 3.44027,-4.36267 -30.88363,-18.399533 c 0.625,3.494403 0.68541,3.418073 -3.44025,4.362673 z"
id="path3843-5-6-2" />
<path
style="display:inline;fill:#89b4fa;stroke:#0846b3;stroke-width:2.37868;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 474.47771,115.93755 3.44025,-4.36267 -30.88361,-18.399531 c 0.0446,3.232733 0.62499,3.494399 -3.44027,4.362668 z"
id="path3843-5-6-9" />
<path
style="display:inline;fill:#052459;stroke:#0846b3;stroke-width:1.18917695;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
d="m 431.56331,97.992416 c 3.27386,-0.862299 4.99399,-3.043633 4.95035,-6.277661 l -9.53429,-1.066782 4.58394,7.344443 v 0"
id="path3971" />
<rect
transform="matrix(0.61920579,-0.78522875,-0.859092,-0.51182119,0,0)"
y="-458.52631"
x="133.40527"
height="6.1627097"
width="16.667767"
id="rect3935"
style="display:inline;fill:#f2cdcd;fill-opacity:1;stroke:#912424;stroke-width:2.38885;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.9;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>