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

493 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="svg2869"
version="1.1"
sodipodi:docname="Constraint_PointOnPoint.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
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="#cdd6f4"
bordercolor="#11111b"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#6a6e84"
showgrid="true"
showguides="true"
inkscape:zoom="4.546875"
inkscape:cx="15.175258"
inkscape:cy="52.563574"
inkscape:window-width="2560"
inkscape:window-height="1368"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g3797-7">
<inkscape:grid
id="grid1"
units="px"
originx="0"
originy="0"
spacingx="1"
spacingy="1"
empcolor="#3b82f7"
empopacity="0.30196078"
color="#3b82f7"
opacity="0.14901961"
empspacing="5"
dotted="false"
gridanglex="30"
gridanglez="30"
visible="true" />
<sodipodi:guide
position="32,52"
orientation="1,0"
id="guide1"
inkscape:locked="false" />
<sodipodi:guide
position="1,32"
orientation="0,-1"
id="guide2"
inkscape:locked="false" />
</sodipodi:namedview>
<title
id="title1757">Constraint PointOnPoint</title>
<defs
id="defs2871">
<linearGradient
id="linearGradient3144">
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="0"
id="stop3146" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient5114"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient5118"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient5130"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
id="linearGradient3144-9-6">
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="0"
id="stop3146-2-9" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0"
offset="1"
id="stop3148-6-5" />
</linearGradient>
<linearGradient
id="linearGradient3144-0">
<stop
style="stop-color:#cdd6f4;stop-opacity:1"
offset="0"
id="stop3146-0" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0"
offset="1"
id="stop3148-5" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3144-0"
id="radialGradient3150-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient3166"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144-9-6"
id="radialGradient3209"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144-9-6"
id="radialGradient4003"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient4017"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144-0"
id="radialGradient4019"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.75636158,0.04652811,-0.0510977,0.69887118,89.261365,192.11757)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
xlink:href="#linearGradient3144"
id="radialGradient4025"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
y2="5"
x2="-22"
y1="18"
x1="-18"
gradientTransform="matrix(0.53559025,0,0,0.53556875,-6.4812797,2.8041108)"
gradientUnits="userSpaceOnUse"
id="linearGradient3323-4-8"
xlink:href="#linearGradient3836-9-3-7-2-7-7-2-6-8" />
<linearGradient
id="linearGradient3836-9-3-7-2-7-7-2-6-8">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8-5-4-4-6-4-4-61-2" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1-6-0-5-1-0-5-8-9" />
</linearGradient>
<linearGradient
y2="5"
x2="-22"
y1="18"
x1="-18"
gradientTransform="matrix(0.53559025,0,0,0.53556875,-6.4812797,2.8041108)"
gradientUnits="userSpaceOnUse"
id="linearGradient3323-4"
xlink:href="#linearGradient3836-9-3-7-2-7-7-2-6" />
<linearGradient
id="linearGradient3836-9-3-7-2-7-7-2-6">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8-5-4-4-6-4-4-61" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1-6-0-5-1-0-5-8" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3836-9-7-6"
id="linearGradient3093-3"
gradientUnits="userSpaceOnUse"
x1="-25.073793"
y1="8.5160742"
x2="-11.638764"
y2="13.465822" />
<linearGradient
id="linearGradient3836-9-7-6">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8-0-7" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1-9-5" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3836-9-5"
id="linearGradient3091-3"
gradientUnits="userSpaceOnUse"
x1="-24.890066"
y1="10.114055"
x2="-12.869251"
y2="13.649589" />
<linearGradient
id="linearGradient3836-9-5">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8-6" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1-2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3836-9-7"
id="linearGradient3093"
gradientUnits="userSpaceOnUse"
x1="-25.073793"
y1="8.5160742"
x2="-11.638764"
y2="13.465822" />
<linearGradient
id="linearGradient3836-9-7">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8-0" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1-9" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3836-9"
id="linearGradient3091"
gradientUnits="userSpaceOnUse"
x1="-24.890066"
y1="10.114055"
x2="-12.869251"
y2="13.649589" />
<linearGradient
id="linearGradient3836-9">
<stop
style="stop-color:#912424;stop-opacity:1"
offset="0"
id="stop3838-8" />
<stop
style="stop-color:#f2cdcd;stop-opacity:1"
offset="1"
id="stop3840-1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3836-9"
id="linearGradient3172"
gradientUnits="userSpaceOnUse"
x1="-24.890066"
y1="10.114055"
x2="-12.869251"
y2="13.649589"
gradientTransform="matrix(1.0503856,0,0,1.0503856,0.95927189,-0.59139936)" />
</defs>
<metadata
id="metadata2874">
<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>Constraint PointOnPoint</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Sketcher_Symmetry</dc:title>
<dc:date>2020-01-27</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 />
<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, [Abdullah Tahiri]</dc:title>
</cc:Agent>
</dc:contributor>
<dc:description>New version of Constraint PointOnPoint icon, based on Abdullah Tahiri's work</dc:description>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<g
id="g3827-0"
transform="matrix(-0.67319698,-0.67356536,0.67319698,-0.67356536,5.0683576,75.108085)"
style="stroke-width:1.50417">
<g
id="g3797-7"
transform="translate(31.322131,40.570289)"
style="stroke-width:1.50417">
<path
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z"
id="path4250-6"
style="fill:#f2cdcd;stroke:#4c1313;stroke-width:3.00834;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="M -24.915495,6.6495262 A 7.3526993,7.3526989 90 1 1 -13.746127,16.21477 7.3526993,7.3526989 90 0 1 -24.915495,6.6495262 Z"
id="path4250-7-0"
style="fill:url(#linearGradient3172);fill-opacity:1;stroke:#f2cdcd;stroke-width:2.10017;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g3"
transform="rotate(45,58.121318,11.878684)">
<rect
style="fill:#11111b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2"
width="8"
height="24"
x="49.999996"
y="5"
rx="2"
ry="2" />
<rect
style="fill:#9a2c2c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-6"
width="4"
height="20"
x="51.999996"
y="7"
rx="1"
ry="1" />
<path
d="m 53,7 c -0.553999,0 -1,0.4460006 -1,1 v 18 c 0,0.553999 0.446001,1 1,1 h 1 V 7 Z"
style="fill:#f2cdcd;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="path3" />
</g>
<g
id="g3-5"
transform="rotate(45,-8.455846,-15.69848)">
<rect
style="fill:#11111b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-62"
width="8"
height="24"
x="49.999996"
y="5"
rx="2"
ry="2" />
<rect
style="fill:#9a2c2c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-6-9"
width="4"
height="20"
x="51.999996"
y="7"
rx="1"
ry="1" />
<path
d="m 53,7 c -0.553999,0 -1,0.4460006 -1,1 v 18 c 0,0.553999 0.446001,1 1,1 h 1 V 7 Z"
style="fill:#f2cdcd;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="path3-1" />
</g>
<g
id="g3-5-7"
transform="rotate(135,34.142134,6.2304482)">
<rect
style="fill:#11111b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-62-0"
width="8"
height="24"
x="49.999996"
y="5"
rx="2"
ry="2" />
<rect
style="fill:#9a2c2c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-6-9-9"
width="4"
height="20"
x="51.999996"
y="7"
rx="1"
ry="1" />
<path
d="m 53,7 c -0.553999,0 -1,0.4460006 -1,1 v 18 c 0,0.553999 0.446001,1 1,1 h 1 V 7 Z"
style="fill:#f2cdcd;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="path3-1-3" />
</g>
<g
id="g3-5-7-0"
transform="rotate(135,45.62994,33.792894)">
<rect
style="fill:#11111b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-62-0-6"
width="8"
height="24"
x="49.999996"
y="5"
rx="2"
ry="2" />
<rect
style="fill:#9a2c2c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="rect2-6-9-9-2"
width="4"
height="20"
x="51.999996"
y="7"
rx="1"
ry="1" />
<path
d="m 53,7 c -0.553999,0 -1,0.4460006 -1,1 v 18 c 0,0.553999 0.446001,1 1,1 h 1 V 7 Z"
style="fill:#f2cdcd;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:100;stroke-dashoffset:3.45"
id="path3-1-3-6" />
</g>
</g>
</svg>