circuit-json-to-lbrn 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +145 -79
  3. package/lib/ConvertContext.ts +3 -0
  4. package/lib/element-handlers/addPcbBoard/index.ts +1 -1
  5. package/lib/element-handlers/addPlatedHole/addCirclePlatedHole.ts +3 -2
  6. package/lib/element-handlers/addPlatedHole/addCircularHoleWithRectPad.ts +13 -2
  7. package/lib/element-handlers/addPlatedHole/addHoleWithPolygonPad.ts +3 -0
  8. package/lib/element-handlers/addPlatedHole/addOvalPlatedHole.ts +4 -7
  9. package/lib/element-handlers/addPlatedHole/addPillHoleWithRectPad.ts +13 -2
  10. package/lib/element-handlers/addPlatedHole/addPillPlatedHole.ts +4 -7
  11. package/lib/element-handlers/addPlatedHole/addRotatedPillHoleWithRectPad.ts +15 -2
  12. package/lib/element-handlers/addSmtPad/addCircleSmtPad.ts +3 -1
  13. package/lib/element-handlers/addSmtPad/addPillSmtPad.ts +7 -2
  14. package/lib/element-handlers/addSmtPad/addPolygonSmtPad.ts +6 -0
  15. package/lib/element-handlers/addSmtPad/addRectSmtPad.ts +9 -5
  16. package/lib/element-handlers/addSmtPad/addRotatedPillSmtPad.ts +13 -2
  17. package/lib/element-handlers/addSmtPad/addRotatedRectSmtPad.ts +15 -2
  18. package/lib/index.ts +5 -0
  19. package/package.json +2 -2
  20. package/tests/examples/__snapshots__/board-outline-soldermask-preset.snap.svg +1 -1
  21. package/tests/examples/soldermask/__snapshots__/copper-and-soldermask.snap.svg +1 -1
  22. package/tests/examples/soldermask/__snapshots__/soldermask-only.snap.svg +1 -1
  23. package/tests/examples/soldermask-margin/__snapshots__/negative-soldermask-margin.snap.svg +8 -0
  24. package/tests/examples/soldermask-margin/__snapshots__/positive-soldermask-margin.snap.svg +8 -0
  25. package/tests/examples/soldermask-margin/negative-soldermask-margin.test.ts +85 -0
  26. package/tests/examples/soldermask-margin/positive-soldermask-margin.test.ts +85 -0
@@ -0,0 +1,8 @@
1
+ <svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
2
+ <g transform="translate(0, 0)">
3
+ <style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="236.36363636363635" y="122.72727272727272" width="54.54545454545455" height="81.81818181818181" data-type="pcb_smtpad" data-pcb-layer="top"/><circle class="pcb-pad" fill="rgb(200, 52, 52)" cx="536.3636363636364" cy="163.63636363636363" r="40.90909090909091" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="-40.90909090909091" y="-20.454545454545453" width="81.81818181818181" height="40.90909090909091" rx="20.454545454545453" ry="20.454545454545453" data-type="pcb_smtpad" data-pcb-layer="top" transform="translate(263.6363636363636 436.3636363636364) rotate(-45)"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="509.0909090909091" y="395.4545454545455" width="54.54545454545455" height="81.81818181818181" rx="20.454545454545453" ry="20.454545454545453" data-type="pcb_smtpad" data-pcb-layer="top"/>
4
+ </g>
5
+ <g transform="translate(0, 600) scale(20, 20) translate(13.9, 20)">
6
+ <rect x="-13.9" y="-20" width="40" height="40" fill="white"/><g transform="matrix(1 0 0 -1 0 0)"><g transform="matrix(1,0,0,1,0,0)"><path d="M 0.09999999999999964 3.5 L 2.0999999999999996 3.5 L 2.0999999999999996 6.5 L 0.09999999999999964 6.5 L 0.09999999999999964 3.5 L 0.09999999999999964 3.5 Z" fill="none" stroke="#000000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764613975563-hldllh1xj__stack1"><path d="M -0.10000000000000031 3.3 L 2.3 3.3 L 2.3 6.7 L -0.10000000000000031 6.7 L -0.10000000000000031 3.3 L -0.10000000000000031 3.3 Z"/></clipPath><g clip-path="url(#clip-1764613975563-hldllh1xj__stack1)"><line x1="2.2001428534987273" y1="3.3" x2="2.3" y2="3.3998571465012724" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.94558441227157" y1="3.3" x2="2.3" y2="3.6544155877284297" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.691025971044413" y1="3.3" x2="2.3" y2="3.9089740289555865" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.4364675298172558" y1="3.3" x2="2.3" y2="4.163532470182743" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.1819090885900985" y1="3.3" x2="2.3" y2="4.418090911409901" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.9273506473629414" y1="3.3" x2="2.3" y2="4.672649352637058" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.672792206135784" y1="3.3" x2="2.3" y2="4.927207793864215" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.4182337649086285" y1="3.3" x2="2.3" y2="5.181766235091371" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.16367532368147097" y1="3.3" x2="2.3" y2="5.436324676318528" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.09088311754568634" y1="3.3" x2="2.3" y2="5.690883117545685" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="3.5454415587728425" x2="2.3" y2="5.945441558772842" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="3.8" x2="2.3" y2="6.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="4.054558441227157" x2="2.3" y2="6.454558441227157" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="4.3091168824543145" x2="2.290883117545686" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="4.563675323681471" x2="2.0363246763185288" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="4.818233764908629" x2="1.7817662350913712" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="5.0727922061357855" x2="1.5272077938642148" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="5.327350647362943" x2="1.2726493526370573" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="5.5819090885901" x2="1.0180909114099" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="5.8364675298172575" x2="0.7635324701827426" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="6.091025971044414" x2="0.508974028955586" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="6.345584412271572" x2="0.25441558772842787" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.10000000000000031" y1="6.600142853498729" x2="-0.00014285349872951436" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="6.600142853498728" x2="2.2001428534987273" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="6.34558441227157" x2="1.94558441227157" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="6.091025971044415" x2="1.6910259710444144" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="5.8364675298172575" x2="1.4364675298172571" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="5.5819090885901" x2="1.1819090885900998" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="5.327350647362943" x2="0.9273506473629425" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="5.0727922061357855" x2="0.6727922061357849" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="4.818233764908628" x2="0.41823376490862874" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="4.563675323681471" x2="0.16367532368147053" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="4.309116882454314" x2="-0.09088311754568545" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="4.054558441227156" x2="-0.10000000000000031" y2="6.454558441227157" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="3.7999999999999994" x2="-0.10000000000000031" y2="6.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3" y1="3.5454415587728425" x2="-0.10000000000000031" y2="5.945441558772843" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.290883117545685" y1="3.3" x2="-0.10000000000000031" y2="5.690883117545686" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.036324676318528" y1="3.3" x2="-0.10000000000000031" y2="5.436324676318529" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7817662350913708" y1="3.3" x2="-0.10000000000000031" y2="5.181766235091372" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.5272077938642143" y1="3.3" x2="-0.10000000000000031" y2="4.9272077938642145" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.2726493526370573" y1="3.3" x2="-0.10000000000000031" y2="4.672649352637057" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.0180909114098995" y1="3.3" x2="-0.10000000000000031" y2="4.4180909114099" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.7635324701827431" y1="3.3" x2="-0.10000000000000031" y2="4.163532470182743" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.5089740289555853" y1="3.3" x2="-0.10000000000000031" y2="3.9089740289555857" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.2544155877284293" y1="3.3" x2="-0.10000000000000031" y2="3.6544155877284292" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.00014285349872800168" y1="3.3" x2="-0.10000000000000031" y2="3.3998571465012724" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M -0.10000000000000031 3.3 L 2.3 3.3 L 2.3 6.7 L -0.10000000000000031 6.7 L -0.10000000000000031 3.3 L -0.10000000000000031 3.3 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 12.6 5 L 12.592777090008294 5.147025710494341 L 12.571177920604846 5.292635483024192 L 12.535410503598314 5.435427015881693 L 12.48581929876693 5.574025148547634 L 12.422881896522533 5.707095105238997 L 12.347204418453817 5.833355349529404 L 12.259515680044105 5.951589926245468 L 12.16066017177982 6.060660171779821 L 12.051589926245468 6.159515680044105 L 11.933355349529403 6.247204418453817 L 11.807095105238997 6.322881896522532 L 11.674025148547635 6.38581929876693 L 11.535427015881693 6.435410503598313 L 11.392635483024192 6.471177920604846 L 11.247025710494341 6.492777090008295 L 11.1 6.5 L 10.952974289505658 6.492777090008295 L 10.807364516975808 6.471177920604846 L 10.664572984118307 6.435410503598313 L 10.525974851452364 6.38581929876693 L 10.392904894761003 6.322881896522532 L 10.266644650470596 6.247204418453818 L 10.148410073754532 6.159515680044105 L 10.039339828220179 6.060660171779821 L 9.940484319955894 5.951589926245468 L 9.852795581546182 5.833355349529404 L 9.777118103477466 5.707095105238997 L 9.714180701233069 5.574025148547635 L 9.664589496401685 5.435427015881694 L 9.628822079395153 5.292635483024193 L 9.607222909991705 5.147025710494341 L 9.6 5 L 9.607222909991705 4.852974289505659 L 9.628822079395153 4.707364516975807 L 9.664589496401685 4.564572984118307 L 9.714180701233069 4.425974851452366 L 9.777118103477466 4.292904894761003 L 9.852795581546182 4.166644650470597 L 9.940484319955894 4.048410073754532 L 10.039339828220179 3.939339828220179 L 10.148410073754532 3.840484319955895 L 10.266644650470596 3.752795581546182 L 10.392904894761003 3.6771181034774676 L 10.525974851452364 3.61418070123307 L 10.664572984118307 3.5645894964016867 L 10.807364516975806 3.5288220793951544 L 10.95297428950566 3.5072229099917047 L 11.1 3.5 L 11.24702571049434 3.5072229099917047 L 11.392635483024192 3.5288220793951544 L 11.535427015881693 3.5645894964016867 L 11.674025148547635 3.61418070123307 L 11.807095105238997 3.6771181034774676 L 11.933355349529403 3.7527955815461818 L 12.051589926245468 3.8404843199558947 L 12.16066017177982 3.9393398282201786 L 12.259515680044105 4.048410073754531 L 12.347204418453817 4.166644650470596 L 12.422881896522531 4.292904894761003 L 12.485819298766929 4.425974851452365 L 12.535410503598314 4.564572984118306 L 12.571177920604844 4.707364516975807 L 12.592777090008294 4.852974289505659 L 12.6 5 L 12.6 5 Z" fill="none" stroke="#000000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764613975563-pj5zpr3mq__stack1"><path d="M 12.799999999999999 5 L 12.791814035342734 5.166629138560253 L 12.767334976685492 5.331653547427418 L 12.726798570744755 5.4934839513325855 L 12.670595205269187 5.650561835020652 L 12.599266149392204 5.801374452604196 L 12.513498340914326 5.944469396133323 L 12.414117770716652 6.078468583078197 L 12.30208152801713 6.20208152801713 L 12.178468583078196 6.314117770716653 L 12.044469396133323 6.413498340914327 L 11.901374452604196 6.499266149392203 L 11.750561835020653 6.570595205269187 L 11.593483951332585 6.626798570744755 L 11.431653547427418 6.667334976685492 L 11.266629138560253 6.691814035342734 L 11.1 6.7 L 10.933370861439746 6.691814035342735 L 10.768346452572581 6.667334976685492 L 10.606516048667414 6.626798570744755 L 10.449438164979346 6.570595205269187 L 10.298625547395803 6.499266149392204 L 10.155530603866676 6.413498340914327 L 10.021531416921803 6.314117770716653 L 9.89791847198287 6.202081528017131 L 9.785882229283347 6.078468583078197 L 9.686501659085673 5.944469396133323 L 9.600733850607796 5.801374452604197 L 9.529404794730812 5.650561835020653 L 9.473201429255244 5.493483951332586 L 9.432665023314508 5.331653547427418 L 9.408185964657266 5.166629138560253 L 9.4 5 L 9.408185964657266 4.833370861439747 L 9.432665023314508 4.668346452572582 L 9.473201429255244 4.5065160486674145 L 9.529404794730812 4.349438164979348 L 9.600733850607796 4.198625547395804 L 9.686501659085673 4.055530603866677 L 9.785882229283347 3.921531416921803 L 9.89791847198287 3.7979184719828694 L 10.021531416921801 3.6858822292833477 L 10.155530603866676 3.5865016590856733 L 10.298625547395803 3.500733850607797 L 10.449438164979346 3.429404794730813 L 10.606516048667414 3.373201429255245 L 10.768346452572581 3.3326650233145085 L 10.933370861439746 3.308185964657265 L 11.1 3.3 L 11.266629138560251 3.308185964657265 L 11.431653547427418 3.332665023314508 L 11.593483951332585 3.3732014292552446 L 11.750561835020653 3.4294047947308126 L 11.901374452604195 3.5007338506077965 L 12.044469396133323 3.586501659085673 L 12.178468583078198 3.6858822292833473 L 12.30208152801713 3.797918471982869 L 12.414117770716652 3.921531416921802 L 12.513498340914326 4.055530603866677 L 12.599266149392204 4.198625547395803 L 12.670595205269187 4.349438164979347 L 12.726798570744755 4.506516048667414 L 12.767334976685492 4.668346452572581 L 12.791814035342734 4.8333708614397475 L 12.799999999999999 5 L 12.799999999999999 5 Z"/></clipPath><g clip-path="url(#clip-1764613975563-pj5zpr3mq__stack1)"><line x1="12.581980515339463" y1="3.3" x2="12.799999999999999" y2="3.5180194846605355" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.327422074112306" y1="3.3" x2="12.799999999999999" y2="3.7725779258876924" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.072863632885149" y1="3.3" x2="12.799999999999999" y2="4.02713636711485" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.818305191657991" y1="3.3" x2="12.799999999999999" y2="4.2816948083420066" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.563746750430834" y1="3.3" x2="12.799999999999999" y2="4.536253249569164" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.309188309203677" y1="3.3" x2="12.799999999999999" y2="4.790811690796321" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.05462986797652" y1="3.3" x2="12.799999999999999" y2="5.0453701320234785" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.800071426749362" y1="3.3" x2="12.799999999999999" y2="5.299928573250636" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.545512985522205" y1="3.3" x2="12.799999999999999" y2="5.554487014477793" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.29095454429505" y1="3.3" x2="12.799999999999999" y2="5.80904545570495" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.036396103067892" y1="3.3" x2="12.799999999999999" y2="6.063603896932107" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.781837661840735" y1="3.3" x2="12.799999999999999" y2="6.318162338159264" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.527279220613577" y1="3.3" x2="12.799999999999999" y2="6.5727207793864215" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="3.4272792206135785" x2="12.672720779386422" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="3.681837661840736" x2="12.418162338159265" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="3.936396103067893" x2="12.163603896932107" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="4.19095454429505" x2="11.90904545570495" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="4.445512985522208" x2="11.654487014477793" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="4.700071426749364" x2="11.399928573250637" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="4.9546298679765215" x2="11.14537013202348" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="5.209188309203679" x2="10.890811690796323" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="5.463746750430836" x2="10.636253249569165" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="5.7183051916579934" x2="10.381694808342008" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="5.972863632885151" x2="10.12713636711485" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="6.227422074112308" x2="9.872577925887693" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.4" y1="6.481980515339465" x2="9.618019484660536" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="6.481980515339465" x2="12.581980515339465" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="6.227422074112308" x2="12.327422074112306" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="5.972863632885151" x2="12.07286363288515" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="5.7183051916579934" x2="11.818305191657991" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="5.463746750430836" x2="11.563746750430836" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="5.20918830920368" x2="11.309188309203678" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="4.9546298679765215" x2="11.054629867976521" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="4.700071426749365" x2="10.800071426749364" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="4.445512985522207" x2="10.545512985522207" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="4.19095454429505" x2="10.29095454429505" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="3.936396103067893" x2="10.036396103067892" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="3.681837661840736" x2="9.781837661840735" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.799999999999999" y1="3.4272792206135767" x2="9.527279220613577" y2="6.7" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.67272077938642" y1="3.3" x2="9.4" y2="6.5727207793864215" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.418162338159265" y1="3.3" x2="9.4" y2="6.318162338159264" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.163603896932106" y1="3.3" x2="9.4" y2="6.063603896932107" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.90904545570495" y1="3.3" x2="9.4" y2="5.80904545570495" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.654487014477793" y1="3.3" x2="9.4" y2="5.554487014477793" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.399928573250637" y1="3.3" x2="9.4" y2="5.299928573250637" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.14537013202348" y1="3.3" x2="9.4" y2="5.045370132023479" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.890811690796323" y1="3.3" x2="9.4" y2="4.790811690796322" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.636253249569165" y1="3.3" x2="9.4" y2="4.536253249569165" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.381694808342008" y1="3.3" x2="9.4" y2="4.281694808342007" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.12713636711485" y1="3.3" x2="9.4" y2="4.02713636711485" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.872577925887693" y1="3.3" x2="9.4" y2="3.772577925887693" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.618019484660536" y1="3.3" x2="9.4" y2="3.5180194846605355" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 12.799999999999999 5 L 12.791814035342734 5.166629138560253 L 12.767334976685492 5.331653547427418 L 12.726798570744755 5.4934839513325855 L 12.670595205269187 5.650561835020652 L 12.599266149392204 5.801374452604196 L 12.513498340914326 5.944469396133323 L 12.414117770716652 6.078468583078197 L 12.30208152801713 6.20208152801713 L 12.178468583078196 6.314117770716653 L 12.044469396133323 6.413498340914327 L 11.901374452604196 6.499266149392203 L 11.750561835020653 6.570595205269187 L 11.593483951332585 6.626798570744755 L 11.431653547427418 6.667334976685492 L 11.266629138560253 6.691814035342734 L 11.1 6.7 L 10.933370861439746 6.691814035342735 L 10.768346452572581 6.667334976685492 L 10.606516048667414 6.626798570744755 L 10.449438164979346 6.570595205269187 L 10.298625547395803 6.499266149392204 L 10.155530603866676 6.413498340914327 L 10.021531416921803 6.314117770716653 L 9.89791847198287 6.202081528017131 L 9.785882229283347 6.078468583078197 L 9.686501659085673 5.944469396133323 L 9.600733850607796 5.801374452604197 L 9.529404794730812 5.650561835020653 L 9.473201429255244 5.493483951332586 L 9.432665023314508 5.331653547427418 L 9.408185964657266 5.166629138560253 L 9.4 5 L 9.408185964657266 4.833370861439747 L 9.432665023314508 4.668346452572582 L 9.473201429255244 4.5065160486674145 L 9.529404794730812 4.349438164979348 L 9.600733850607796 4.198625547395804 L 9.686501659085673 4.055530603866677 L 9.785882229283347 3.921531416921803 L 9.89791847198287 3.7979184719828694 L 10.021531416921801 3.6858822292833477 L 10.155530603866676 3.5865016590856733 L 10.298625547395803 3.500733850607797 L 10.449438164979346 3.429404794730813 L 10.606516048667414 3.373201429255245 L 10.768346452572581 3.3326650233145085 L 10.933370861439746 3.308185964657265 L 11.1 3.3 L 11.266629138560251 3.308185964657265 L 11.431653547427418 3.332665023314508 L 11.593483951332585 3.3732014292552446 L 11.750561835020653 3.4294047947308126 L 11.901374452604195 3.5007338506077965 L 12.044469396133323 3.586501659085673 L 12.178468583078198 3.6858822292833473 L 12.30208152801713 3.797918471982869 L 12.414117770716652 3.921531416921802 L 12.513498340914326 4.055530603866677 L 12.599266149392204 4.198625547395803 L 12.670595205269187 4.349438164979347 L 12.726798570744755 4.506516048667414 L 12.767334976685492 4.668346452572581 L 12.791814035342734 4.8333708614397475 L 12.799999999999999 5 L 12.799999999999999 5 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 2.160660171779821 -5 L 2.2100879259119637 -4.9454648772328245 L 2.253932295116819 -4.886347588874791 L 2.291771034151176 -4.823217466729587 L 2.3232397352733747 -4.756682488383906 L 2.348035337689067 -4.687383422050936 L 2.365919046192333 -4.6159876556221855 L 2.3767186308940578 -4.54318276935726 L 2.38033008588991 -4.4696699141100895 L 2.3767186308940578 -4.396157058862919 L 2.3659190461923334 -4.3233521725979935 L 2.3480353376890672 -4.251956406169243 L 2.3232397352733756 -4.182657339836272 L 2.2917710341511763 -4.116122361490591 L 2.253932295116819 -4.052992239345388 L 2.2100879259119632 -3.993874950987356 L 2.160660171779821 -3.939339828220179 L 2.1061250490126437 -3.8899120740880364 L 2.047007760654612 -3.846067704883181 L 1.9838776385094088 -3.8082289658488233 L 1.9173426601637276 -3.776760264726624 L 1.848043593830757 -3.751964662310933 L 1.7766478274020068 -3.734080953807666 L 1.7038429411370806 -3.723281369105942 L 1.6303300858899104 -3.7196699141100895 L 1.55681723064274 -3.7232813691059423 L 1.4840123443778142 -3.734080953807667 L 1.412616577949064 -3.7519646623109333 L 1.3433175116160934 -3.776760264726625 L 1.2767825332704124 -3.8082289658488233 L 1.2136524111252092 -3.84606770488318 L 1.154535122767176 -3.8899120740880364 L 1.0999999999999996 -3.939339828220179 L 0.03933982822017834 -5 L 0.03933982822017834 -5 L -0.010087925911964057 -5.0545351227671755 L -0.05393229511681963 -5.113652411125209 L -0.09177103415117682 -5.176782533270413 L -0.12323973527337562 -5.243317511616094 L -0.14803533768906796 -5.312616577949063 L -0.16591904619233344 -5.3840123443778145 L -0.17671863089405865 -5.45681723064274 L -0.18033008588991079 -5.5303300858899105 L -0.17671863089405865 -5.603842941137081 L -0.1659190461923341 -5.676647827402007 L -0.14803533768906785 -5.748043593830757 L -0.12323973527337626 -5.817342660163728 L -0.09177103415117721 -5.883877638509409 L -0.05393229511682042 -5.9470077606546115 L -0.010087925911964023 -6.0061250490126445 L 0.03933982822017823 -6.060660171779821 L 0.09387495098735454 -6.110087925911963 L 0.15299223934538714 -6.153932295116819 L 0.21612236149059044 -6.191771034151177 L 0.28265733983627195 -6.223239735273376 L 0.3519564061692423 -6.248035337689067 L 0.42335217259799274 -6.265919046192334 L 0.49615705886291833 -6.276718630894058 L 0.5696699141100887 -6.2803300858899105 L 0.6431827693572596 -6.276718630894058 L 0.7159876556221849 -6.265919046192333 L 0.7873834220509353 -6.248035337689067 L 0.8566824883839056 -6.223239735273375 L 0.9232174667295868 -6.191771034151176 L 0.98634758887479 -6.15393229511682 L 1.0454648772328234 -6.110087925911964 L 1.0999999999999996 -6.060660171779821 L 2.160660171779821 -5 L 2.160660171779821 -5 L 2.160660171779821 -5 Z" fill="none" stroke="#000000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764613975563-jy6l5vfl6__stack1"><path d="M 2.3020815280171307 -5.14142135623731 L 2.36469001658451 -5.072343534065552 L 2.420226217577328 -4.997461635478711 L 2.4681552870208474 -4.917496814094787 L 2.508015641775633 -4.833219174856925 L 2.539423404835509 -4.7454403575018285 L 2.562076102272979 -4.655005720025411 L 2.5757555762284974 -4.562786197423172 L 2.5803300858899103 -4.4696699141100895 L 2.575755576228497 -4.376553630797007 L 2.5620761022729797 -4.284334108194768 L 2.5394234048355084 -4.19389947071835 L 2.5080156417756325 -4.106120653363255 L 2.4681552870208474 -4.021843014125392 L 2.4202262175773286 -3.941878192741468 L 2.3646900165845106 -3.8669962941546263 L 2.3020815280171307 -3.797918471982869 L 2.2330037058453738 -3.7353099834154895 L 2.158121807258532 -3.6797737824226715 L 2.0781569858746085 -3.6318447129791527 L 1.9938793466367453 -3.591984358224367 L 1.90610052928165 -3.560576595164491 L 1.8156658918052324 -3.5379238977270204 L 1.7234463692029927 -3.5242444237715027 L 1.630330085889911 -3.51966991411009 L 1.537213802576828 -3.5242444237715027 L 1.4449942799745883 -3.5379238977270204 L 1.3545596424981712 -3.5605765951644903 L 1.2667808251430746 -3.591984358224367 L 1.1825031859052129 -3.631844712979152 L 1.1025383645212887 -3.6797737824226715 L 1.0276564659344476 -3.735309983415489 L 0.9585786437626901 -3.7979184719828694 L -0.10208152801713133 -4.85857864376269 L -0.10208152801713133 -4.85857864376269 L -0.16469001658451088 -4.927656465934448 L -0.22022621757732874 -5.002538364521289 L -0.268155287020848 -5.082503185905212 L -0.30801564177563356 -5.166780825143075 L -0.33942340483550937 -5.2545596424981715 L -0.3620761022729797 -5.344994279974589 L -0.375755576228498 -5.437213802576828 L -0.3803300858899114 -5.5303300858899105 L -0.3757555762284979 -5.623446369202993 L -0.36207610227298015 -5.715665891805232 L -0.33942340483550926 -5.80610052928165 L -0.30801564177563356 -5.893879346636745 L -0.268155287020848 -5.978156985874609 L -0.22022621757732921 -6.058121807258533 L -0.1646900165845111 -6.133003705845374 L -0.10208152801713122 -6.20208152801713 L -0.03300370584537428 -6.264690016584511 L 0.04187819274146723 -6.320226217577329 L 0.12184301412539109 -6.368155287020848 L 0.20612065336325391 -6.408015641775633 L 0.29389947071834943 -6.439423404835509 L 0.3843341081947671 -6.462076102272979 L 0.47655363079700624 -6.475755576228497 L 0.5696699141100885 -6.480330085889911 L 0.6627861974231717 -6.475755576228497 L 0.7550057200254108 -6.462076102272979 L 0.845440357501828 -6.43942340483551 L 0.9332191748569234 -6.408015641775633 L 1.0174968140947864 -6.368155287020849 L 1.0974616354787106 -6.3202262175773285 L 1.172343534065552 -6.26469001658451 L 1.241421356237309 -6.202081528017131 L 2.3020815280171307 -5.14142135623731 L 2.3020815280171307 -5.14142135623731 L 2.3020815280171307 -5.14142135623731 Z"/></clipPath><g clip-path="url(#clip-1764613975563-jy6l5vfl6__stack1)"><line x1="2.419812767608817" y1="-6.480330085889911" x2="2.5803300858899103" y2="-6.319812767608817" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.165254326381659" y1="-6.480330085889911" x2="2.5803300858899103" y2="-6.06525432638166" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9106958851545026" y1="-6.480330085889911" x2="2.5803300858899103" y2="-5.810695885154503" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.6561374439273457" y1="-6.480330085889911" x2="2.5803300858899103" y2="-5.556137443927346" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.4015790027001884" y1="-6.480330085889911" x2="2.5803300858899103" y2="-5.301579002700189" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.1470205614730307" y1="-6.480330085889911" x2="2.5803300858899103" y2="-5.0470205614730315" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8924621202458738" y1="-6.480330085889911" x2="2.5803300858899103" y2="-4.792462120245874" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.6379036790187174" y1="-6.480330085889911" x2="2.5803300858899103" y2="-4.537903679018718" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.3833452377915605" y1="-6.480330085889911" x2="2.5803300858899103" y2="-4.283345237791561" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.12878679656440317" y1="-6.480330085889911" x2="2.5803300858899103" y2="-4.028786796564404" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.12577164466275415" y1="-6.480330085889911" x2="2.5803300858899103" y2="-3.7742283553372458" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.38033008588991124" y1="-6.480330085889911" x2="2.5803300858899094" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-6.225771644662754" x2="2.325771644662753" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-5.971213203435596" x2="2.071213203435595" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-5.716654762208439" x2="1.8166547622084375" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-5.462096320981281" x2="1.5620963209812806" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-5.207537879754126" x2="1.3075378797541248" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-4.9529794385269685" x2="1.0529794385269675" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-4.698420997299811" x2="0.7984209972998102" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-4.443862556072654" x2="0.5438625560726529" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-4.189304114845497" x2="0.2893041148454955" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-3.9347456736183393" x2="0.03474567361833819" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3803300858899114" y1="-3.6801872323911824" x2="-0.21981276760881877" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-3.6801872323911833" x2="2.419812767608817" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-3.9347456736183406" x2="2.1652543263816595" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-4.189304114845497" x2="1.9106958851545035" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-4.443862556072654" x2="1.6561374439273462" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-4.698420997299811" x2="1.401579002700189" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-4.952979438526969" x2="1.147020561473031" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-5.207537879754126" x2="0.8924621202458745" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-5.462096320981282" x2="0.6379036790187183" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-5.71665476220844" x2="0.38334523779156093" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-5.971213203435597" x2="0.12878679656440362" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899103" y1="-6.225771644662754" x2="-0.12577164466275326" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.5803300858899094" y1="-6.480330085889911" x2="-0.380330085889911" y2="-3.51966991411009" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.325771644662753" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-3.7742283553372458" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.0712132034355957" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-4.028786796564404" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.8166547622084381" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-4.283345237791561" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.5620963209812815" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-4.537903679018718" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.3075378797541255" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-4.792462120245873" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.0529794385269673" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-5.0470205614730315" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.7984209972998109" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-5.301579002700189" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.5438625560726522" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-5.556137443927346" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.28930411484549623" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-5.810695885154503" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.03474567361833936" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-6.06525432638166" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.21981276760881752" y1="-6.480330085889911" x2="-0.3803300858899114" y2="-6.319812767608817" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 2.3020815280171307 -5.14142135623731 L 2.36469001658451 -5.072343534065552 L 2.420226217577328 -4.997461635478711 L 2.4681552870208474 -4.917496814094787 L 2.508015641775633 -4.833219174856925 L 2.539423404835509 -4.7454403575018285 L 2.562076102272979 -4.655005720025411 L 2.5757555762284974 -4.562786197423172 L 2.5803300858899103 -4.4696699141100895 L 2.575755576228497 -4.376553630797007 L 2.5620761022729797 -4.284334108194768 L 2.5394234048355084 -4.19389947071835 L 2.5080156417756325 -4.106120653363255 L 2.4681552870208474 -4.021843014125392 L 2.4202262175773286 -3.941878192741468 L 2.3646900165845106 -3.8669962941546263 L 2.3020815280171307 -3.797918471982869 L 2.2330037058453738 -3.7353099834154895 L 2.158121807258532 -3.6797737824226715 L 2.0781569858746085 -3.6318447129791527 L 1.9938793466367453 -3.591984358224367 L 1.90610052928165 -3.560576595164491 L 1.8156658918052324 -3.5379238977270204 L 1.7234463692029927 -3.5242444237715027 L 1.630330085889911 -3.51966991411009 L 1.537213802576828 -3.5242444237715027 L 1.4449942799745883 -3.5379238977270204 L 1.3545596424981712 -3.5605765951644903 L 1.2667808251430746 -3.591984358224367 L 1.1825031859052129 -3.631844712979152 L 1.1025383645212887 -3.6797737824226715 L 1.0276564659344476 -3.735309983415489 L 0.9585786437626901 -3.7979184719828694 L -0.10208152801713133 -4.85857864376269 L -0.10208152801713133 -4.85857864376269 L -0.16469001658451088 -4.927656465934448 L -0.22022621757732874 -5.002538364521289 L -0.268155287020848 -5.082503185905212 L -0.30801564177563356 -5.166780825143075 L -0.33942340483550937 -5.2545596424981715 L -0.3620761022729797 -5.344994279974589 L -0.375755576228498 -5.437213802576828 L -0.3803300858899114 -5.5303300858899105 L -0.3757555762284979 -5.623446369202993 L -0.36207610227298015 -5.715665891805232 L -0.33942340483550926 -5.80610052928165 L -0.30801564177563356 -5.893879346636745 L -0.268155287020848 -5.978156985874609 L -0.22022621757732921 -6.058121807258533 L -0.1646900165845111 -6.133003705845374 L -0.10208152801713122 -6.20208152801713 L -0.03300370584537428 -6.264690016584511 L 0.04187819274146723 -6.320226217577329 L 0.12184301412539109 -6.368155287020848 L 0.20612065336325391 -6.408015641775633 L 0.29389947071834943 -6.439423404835509 L 0.3843341081947671 -6.462076102272979 L 0.47655363079700624 -6.475755576228497 L 0.5696699141100885 -6.480330085889911 L 0.6627861974231717 -6.475755576228497 L 0.7550057200254108 -6.462076102272979 L 0.845440357501828 -6.43942340483551 L 0.9332191748569234 -6.408015641775633 L 1.0174968140947864 -6.368155287020849 L 1.0974616354787106 -6.3202262175773285 L 1.172343534065552 -6.26469001658451 L 1.241421356237309 -6.202081528017131 L 2.3020815280171307 -5.14142135623731 L 2.3020815280171307 -5.14142135623731 L 2.3020815280171307 -5.14142135623731 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 10.1 -5.5 L 10.104815273327803 -5.598017140329561 L 10.11921471959677 -5.695090322016128 L 10.14305966426779 -5.790284677254462 L 10.176120467488714 -5.88268343236509 L 10.218078735651645 -5.971396736825998 L 10.268530387697455 -6.055570233019602 L 10.326989546637263 -6.134393284163645 L 10.392893218813452 -6.207106781186548 L 10.465606715836353 -6.273010453362737 L 10.544429766980397 -6.331469612302545 L 10.628603263174002 -6.381921264348355 L 10.71731656763491 -6.423879532511286 L 10.809715322745538 -6.456940335732209 L 10.904909677983872 -6.48078528040323 L 11.00198285967044 -6.495184726672197 L 11.1 -6.5 L 11.19801714032956 -6.495184726672197 L 11.295090322016128 -6.48078528040323 L 11.390284677254462 -6.456940335732209 L 11.48268343236509 -6.423879532511287 L 11.571396736825998 -6.381921264348355 L 11.655570233019601 -6.331469612302546 L 11.734393284163644 -6.273010453362738 L 11.807106781186548 -6.207106781186548 L 11.873010453362737 -6.134393284163645 L 11.931469612302545 -6.055570233019602 L 11.981921264348355 -5.971396736825998 L 12.023879532511286 -5.8826834323650905 L 12.05694033573221 -5.790284677254462 L 12.08078528040323 -5.695090322016129 L 12.095184726672196 -5.598017140329561 L 12.1 -5.5 L 12.1 -4.5 L 12.1 -4.5 L 12.095184726672196 -4.401982859670439 L 12.08078528040323 -4.304909677983872 L 12.05694033573221 -4.209715322745538 L 12.023879532511286 -4.11731656763491 L 11.981921264348355 -4.028603263174002 L 11.931469612302545 -3.944429766980398 L 11.873010453362737 -3.8656067158363543 L 11.807106781186548 -3.7928932188134525 L 11.734393284163644 -3.726989546637263 L 11.655570233019603 -3.6685303876974547 L 11.571396736825998 -3.618078735651645 L 11.48268343236509 -3.576120467488713 L 11.390284677254462 -3.5430596642677914 L 11.295090322016128 -3.5192147195967696 L 11.19801714032956 -3.5048152733278033 L 11.1 -3.5 L 11.00198285967044 -3.504815273327803 L 10.904909677983872 -3.5192147195967696 L 10.809715322745538 -3.543059664267791 L 10.71731656763491 -3.576120467488713 L 10.628603263174002 -3.618078735651645 L 10.544429766980398 -3.6685303876974547 L 10.465606715836355 -3.726989546637263 L 10.392893218813452 -3.7928932188134525 L 10.326989546637263 -3.8656067158363543 L 10.268530387697455 -3.944429766980398 L 10.218078735651645 -4.028603263174002 L 10.176120467488714 -4.11731656763491 L 10.14305966426779 -4.209715322745538 L 10.11921471959677 -4.304909677983871 L 10.104815273327803 -4.401982859670439 L 10.1 -4.5 L 10.1 -5.5 L 10.1 -5.5 L 10.1 -5.5 Z" fill="none" stroke="#000000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764613975563-fifov2pdy__stack1"><path d="M 9.9 -5.5 L 9.905778327993364 -5.6176205683954725 L 9.923057663516124 -5.734108386419354 L 9.951671597121349 -5.8483416127053545 L 9.991344560986455 -5.9592201188381075 L 10.041694482781974 -6.065676084191197 L 10.102236465236945 -6.166684279623523 L 10.172387455964715 -6.261271940996374 L 10.251471862576143 -6.348528137423857 L 10.338728059003625 -6.427612544035284 L 10.433315720376477 -6.497763534763054 L 10.534323915808802 -6.558305517218026 L 10.640779881161892 -6.6086554390135435 L 10.751658387294645 -6.648328402878651 L 10.865891613580645 -6.676942336483876 L 10.982379431604526 -6.694221672006636 L 11.1 -6.7 L 11.217620568395471 -6.694221672006636 L 11.334108386419354 -6.676942336483877 L 11.448341612705354 -6.648328402878651 L 11.559220118838107 -6.608655439013544 L 11.665676084191198 -6.558305517218026 L 11.766684279623522 -6.497763534763054 L 11.861271940996373 -6.427612544035285 L 11.948528137423857 -6.348528137423857 L 12.027612544035284 -6.261271940996374 L 12.097763534763054 -6.166684279623523 L 12.158305517218025 -6.065676084191198 L 12.208655439013544 -5.959220118838108 L 12.24832840287865 -5.848341612705355 L 12.276942336483875 -5.734108386419354 L 12.294221672006636 -5.6176205683954725 L 12.299999999999999 -5.5 L 12.299999999999999 -4.5 L 12.299999999999999 -4.5 L 12.294221672006636 -4.3823794316045275 L 12.276942336483875 -4.265891613580646 L 12.24832840287865 -4.1516583872946455 L 12.208655439013544 -4.0407798811618925 L 12.158305517218025 -3.934323915808803 L 12.097763534763054 -3.8333157203764774 L 12.027612544035284 -3.7387280590036256 L 11.948528137423857 -3.651471862576143 L 11.861271940996374 -3.5723874559647157 L 11.766684279623522 -3.5022364652369458 L 11.665676084191198 -3.4416944827819744 L 11.559220118838107 -3.3913445609864556 L 11.448341612705354 -3.3516715971213493 L 11.334108386419354 -3.3230576635161233 L 11.217620568395473 -3.305778327993364 L 11.1 -3.3 L 10.982379431604526 -3.3057783279933637 L 10.865891613580645 -3.3230576635161233 L 10.751658387294645 -3.3516715971213493 L 10.640779881161892 -3.3913445609864556 L 10.534323915808802 -3.441694482781974 L 10.433315720376477 -3.5022364652369458 L 10.338728059003625 -3.5723874559647157 L 10.251471862576143 -3.651471862576143 L 10.172387455964715 -3.7387280590036256 L 10.102236465236945 -3.8333157203764774 L 10.041694482781974 -3.9343239158088026 L 9.991344560986455 -4.0407798811618925 L 9.951671597121349 -4.1516583872946455 L 9.923057663516124 -4.265891613580646 L 9.905778327993364 -4.382379431604527 L 9.9 -4.5 L 9.9 -5.5 L 9.9 -5.5 L 9.9 -5.5 Z"/></clipPath><g clip-path="url(#clip-1764613975563-fifov2pdy__stack1)"><line x1="12.200142853498727" y1="-6.7" x2="12.299999999999999" y2="-6.6001428534987285" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.94558441227157" y1="-6.7" x2="12.299999999999999" y2="-6.345584412271571" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.691025971044413" y1="-6.7" x2="12.299999999999999" y2="-6.091025971044414" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.436467529817255" y1="-6.7" x2="12.299999999999999" y2="-5.836467529817257" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.1819090885901" y1="-6.7" x2="12.299999999999999" y2="-5.581909088590101" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.927350647362942" y1="-6.7" x2="12.299999999999999" y2="-5.327350647362944" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.672792206135785" y1="-6.7" x2="12.299999999999999" y2="-5.072792206135786" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.418233764908628" y1="-6.7" x2="12.299999999999999" y2="-4.81823376490863" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.16367532368147" y1="-6.7" x2="12.299999999999999" y2="-4.563675323681473" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.909116882454315" y1="-6.7" x2="12.299999999999999" y2="-4.309116882454316" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-6.454558441227156" x2="12.299999999999999" y2="-4.054558441227158" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-6.199999999999998" x2="12.299999999999999" y2="-3.8" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-5.945441558772841" x2="12.299999999999999" y2="-3.5454415587728425" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-5.690883117545684" x2="12.290883117545684" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-5.4363246763185264" x2="12.036324676318527" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-5.18176623509137" x2="11.781766235091371" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-4.927207793864214" x2="11.527207793864214" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-4.672649352637056" x2="11.272649352637057" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-4.418090911409899" x2="11.0180909114099" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-4.163532470182743" x2="10.763532470182744" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-3.908974028955586" x2="10.508974028955587" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-3.654415587728429" x2="10.25441558772843" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.9" y1="-3.3998571465012715" x2="9.999857146501272" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-3.399857146501272" x2="12.200142853498727" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-3.654415587728429" x2="11.94558441227157" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-3.9089740289555843" x2="11.691025971044414" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-4.163532470182743" x2="11.436467529817255" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-4.418090911409899" x2="11.1819090885901" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-4.672649352637056" x2="10.927350647362942" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-4.927207793864214" x2="10.672792206135785" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-5.181766235091369" x2="10.41823376490863" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-5.4363246763185264" x2="10.163675323681472" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-5.690883117545684" x2="9.909116882454315" y2="-3.3" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-5.945441558772841" x2="9.9" y2="-3.5454415587728425" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-6.199999999999998" x2="9.9" y2="-3.8" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.299999999999999" y1="-6.454558441227156" x2="9.9" y2="-4.054558441227157" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.290883117545684" y1="-6.7" x2="9.9" y2="-4.309116882454315" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="12.036324676318529" y1="-6.7" x2="9.9" y2="-4.563675323681472" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.781766235091371" y1="-6.7" x2="9.9" y2="-4.818233764908629" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.527207793864214" y1="-6.7" x2="9.9" y2="-5.072792206135786" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.272649352637057" y1="-6.7" x2="9.9" y2="-5.327350647362944" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="11.0180909114099" y1="-6.7" x2="9.9" y2="-5.581909088590101" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.763532470182744" y1="-6.7" x2="9.9" y2="-5.836467529817257" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.508974028955585" y1="-6.7" x2="9.9" y2="-6.091025971044416" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="10.254415587728431" y1="-6.7" x2="9.9" y2="-6.345584412271569" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="9.999857146501274" y1="-6.7" x2="9.9" y2="-6.600142853498727" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 9.9 -5.5 L 9.905778327993364 -5.6176205683954725 L 9.923057663516124 -5.734108386419354 L 9.951671597121349 -5.8483416127053545 L 9.991344560986455 -5.9592201188381075 L 10.041694482781974 -6.065676084191197 L 10.102236465236945 -6.166684279623523 L 10.172387455964715 -6.261271940996374 L 10.251471862576143 -6.348528137423857 L 10.338728059003625 -6.427612544035284 L 10.433315720376477 -6.497763534763054 L 10.534323915808802 -6.558305517218026 L 10.640779881161892 -6.6086554390135435 L 10.751658387294645 -6.648328402878651 L 10.865891613580645 -6.676942336483876 L 10.982379431604526 -6.694221672006636 L 11.1 -6.7 L 11.217620568395471 -6.694221672006636 L 11.334108386419354 -6.676942336483877 L 11.448341612705354 -6.648328402878651 L 11.559220118838107 -6.608655439013544 L 11.665676084191198 -6.558305517218026 L 11.766684279623522 -6.497763534763054 L 11.861271940996373 -6.427612544035285 L 11.948528137423857 -6.348528137423857 L 12.027612544035284 -6.261271940996374 L 12.097763534763054 -6.166684279623523 L 12.158305517218025 -6.065676084191198 L 12.208655439013544 -5.959220118838108 L 12.24832840287865 -5.848341612705355 L 12.276942336483875 -5.734108386419354 L 12.294221672006636 -5.6176205683954725 L 12.299999999999999 -5.5 L 12.299999999999999 -4.5 L 12.299999999999999 -4.5 L 12.294221672006636 -4.3823794316045275 L 12.276942336483875 -4.265891613580646 L 12.24832840287865 -4.1516583872946455 L 12.208655439013544 -4.0407798811618925 L 12.158305517218025 -3.934323915808803 L 12.097763534763054 -3.8333157203764774 L 12.027612544035284 -3.7387280590036256 L 11.948528137423857 -3.651471862576143 L 11.861271940996374 -3.5723874559647157 L 11.766684279623522 -3.5022364652369458 L 11.665676084191198 -3.4416944827819744 L 11.559220118838107 -3.3913445609864556 L 11.448341612705354 -3.3516715971213493 L 11.334108386419354 -3.3230576635161233 L 11.217620568395473 -3.305778327993364 L 11.1 -3.3 L 10.982379431604526 -3.3057783279933637 L 10.865891613580645 -3.3230576635161233 L 10.751658387294645 -3.3516715971213493 L 10.640779881161892 -3.3913445609864556 L 10.534323915808802 -3.441694482781974 L 10.433315720376477 -3.5022364652369458 L 10.338728059003625 -3.5723874559647157 L 10.251471862576143 -3.651471862576143 L 10.172387455964715 -3.7387280590036256 L 10.102236465236945 -3.8333157203764774 L 10.041694482781974 -3.9343239158088026 L 9.991344560986455 -4.0407798811618925 L 9.951671597121349 -4.1516583872946455 L 9.923057663516124 -4.265891613580646 L 9.905778327993364 -4.382379431604527 L 9.9 -4.5 L 9.9 -5.5 L 9.9 -5.5 L 9.9 -5.5 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -3.9000000000000004 -10 L 16.1 -10 L 16.1 10 L -3.9000000000000004 10 L -3.9000000000000004 -10 L -3.9000000000000004 -10 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -3.9000000000000004 -10 L 16.1 -10 L 16.1 10 L -3.9000000000000004 10 L -3.9000000000000004 -10 L -3.9000000000000004 -10" fill="none" stroke="#FF0000" stroke-width="0.1"/></g></g>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,85 @@
1
+ import { test, expect } from "bun:test"
2
+ import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"
3
+ import { generateLightBurnSvg } from "lbrnts"
4
+ import { convertCircuitJsonToLbrn } from "../../../lib"
5
+ import { stackSvgsVertically } from "stack-svgs"
6
+ import type { CircuitJson } from "circuit-json"
7
+ import { ShapePath } from "lbrnts"
8
+
9
+ const circuitJson: CircuitJson = [
10
+ {
11
+ type: "pcb_board",
12
+ pcb_board_id: "board",
13
+ width: 20,
14
+ height: 20,
15
+ center: { x: 0, y: 0 },
16
+ thickness: 1.6,
17
+ num_layers: 2,
18
+ material: "fr4",
19
+ },
20
+ {
21
+ type: "pcb_smtpad",
22
+ x: -5,
23
+ y: 5,
24
+ layer: "top",
25
+ shape: "rect",
26
+ pcb_smtpad_id: "rect_pad",
27
+ width: 2,
28
+ height: 3,
29
+ },
30
+ {
31
+ type: "pcb_smtpad",
32
+ x: 5,
33
+ y: 5,
34
+ layer: "top",
35
+ shape: "circle",
36
+ pcb_smtpad_id: "circle_pad",
37
+ radius: 1.5,
38
+ },
39
+ {
40
+ type: "pcb_smtpad",
41
+ x: -5,
42
+ y: -5,
43
+ layer: "top",
44
+ shape: "rotated_pill",
45
+ pcb_smtpad_id: "pill_pad",
46
+ width: 3,
47
+ height: 1.5,
48
+ radius: 0.75,
49
+ ccw_rotation: 45,
50
+ },
51
+ {
52
+ type: "pcb_smtpad",
53
+ shape: "pill",
54
+ x: 5,
55
+ y: -5,
56
+ layer: "top",
57
+ pcb_smtpad_id: "plated_hole",
58
+ width: 2,
59
+ height: 3,
60
+ radius: 0.75,
61
+ },
62
+ ]
63
+
64
+ test("renders soldermask with positive margin", async () => {
65
+ const pcbSvg = await convertCircuitJsonToPcbSvg(circuitJson)
66
+
67
+ const project = convertCircuitJsonToLbrn(circuitJson, {
68
+ includeSoldermask: true,
69
+ includeCopper: true,
70
+ soldermaskMargin: -0.2,
71
+ })
72
+
73
+ const lbrnSvg = await generateLightBurnSvg(project)
74
+
75
+ // Verify soldermask shapes are larger than copper
76
+ const soldermaskShapes = project.children.filter(
77
+ (child): child is ShapePath =>
78
+ child instanceof ShapePath && child.cutIndex === 2,
79
+ )
80
+ expect(soldermaskShapes.length).toBeGreaterThan(0)
81
+
82
+ expect(stackSvgsVertically([pcbSvg, lbrnSvg])).toMatchSvgSnapshot(
83
+ import.meta.filename,
84
+ )
85
+ })
@@ -0,0 +1,85 @@
1
+ import { test, expect } from "bun:test"
2
+ import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"
3
+ import { generateLightBurnSvg } from "lbrnts"
4
+ import { convertCircuitJsonToLbrn } from "../../../lib"
5
+ import { stackSvgsVertically } from "stack-svgs"
6
+ import type { CircuitJson } from "circuit-json"
7
+ import { ShapePath } from "lbrnts"
8
+
9
+ const circuitJson: CircuitJson = [
10
+ {
11
+ type: "pcb_board",
12
+ pcb_board_id: "board",
13
+ width: 20,
14
+ height: 20,
15
+ center: { x: 0, y: 0 },
16
+ thickness: 1.6,
17
+ num_layers: 2,
18
+ material: "fr4",
19
+ },
20
+ {
21
+ type: "pcb_smtpad",
22
+ x: -5,
23
+ y: 5,
24
+ layer: "top",
25
+ shape: "rect",
26
+ pcb_smtpad_id: "rect_pad",
27
+ width: 2,
28
+ height: 3,
29
+ },
30
+ {
31
+ type: "pcb_smtpad",
32
+ x: 5,
33
+ y: 5,
34
+ layer: "top",
35
+ shape: "circle",
36
+ pcb_smtpad_id: "circle_pad",
37
+ radius: 1.5,
38
+ },
39
+ {
40
+ type: "pcb_smtpad",
41
+ x: -5,
42
+ y: -5,
43
+ layer: "top",
44
+ shape: "rotated_pill",
45
+ pcb_smtpad_id: "pill_pad",
46
+ width: 3,
47
+ height: 1.5,
48
+ radius: 0.75,
49
+ ccw_rotation: 45,
50
+ },
51
+ {
52
+ type: "pcb_smtpad",
53
+ shape: "pill",
54
+ x: 5,
55
+ y: -5,
56
+ layer: "top",
57
+ pcb_smtpad_id: "plated_hole",
58
+ width: 2,
59
+ height: 3,
60
+ radius: 0.75,
61
+ },
62
+ ]
63
+
64
+ test("renders soldermask with positive margin", async () => {
65
+ const pcbSvg = await convertCircuitJsonToPcbSvg(circuitJson)
66
+
67
+ const project = convertCircuitJsonToLbrn(circuitJson, {
68
+ includeSoldermask: true,
69
+ includeCopper: true,
70
+ soldermaskMargin: 0.2,
71
+ })
72
+
73
+ const lbrnSvg = await generateLightBurnSvg(project)
74
+
75
+ // Verify soldermask shapes are larger than copper
76
+ const soldermaskShapes = project.children.filter(
77
+ (child): child is ShapePath =>
78
+ child instanceof ShapePath && child.cutIndex === 2,
79
+ )
80
+ expect(soldermaskShapes.length).toBeGreaterThan(0)
81
+
82
+ expect(stackSvgsVertically([pcbSvg, lbrnSvg])).toMatchSvgSnapshot(
83
+ import.meta.filename,
84
+ )
85
+ })