适配多个接口
This commit is contained in:
parent
4e52da5431
commit
7a6ed915d0
@ -5,7 +5,7 @@
|
||||
<path id="Y" d="M0 0L20 0" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square" transform="translate(75 26)" />
|
||||
<path id="B" d="M0 0L20 0" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square" transform="translate(0 52)" />
|
||||
<path id="ROAD" d="M10.6066 0L0 10.6066" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square" transform="translate(21 42)" />
|
||||
<path id="A" d="M0 0L20 0" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square" />
|
||||
<path id="A" d="M0 0L20 0" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square"/>
|
||||
<path id="ROAD" d="M0 0L10.6066 10.61" fill="none" stroke-width="2" stroke="#000000" stroke-linecap="square" transform="translate(21 1)" />
|
||||
<g fill="#279BB0" fill-rule="evenodd" transform="translate(27 2)">
|
||||
<path id="ge" d="M0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25Z" />
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.1 KiB |
460
out.svg
Normal file
460
out.svg
Normal file
@ -0,0 +1,460 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:s="https://github.com/nturley/netlistsvg" width="569" height="868.5">
|
||||
<style>svg {
|
||||
stroke:#000;
|
||||
fill:none;
|
||||
}
|
||||
text {
|
||||
fill:#000;
|
||||
stroke:none;
|
||||
font-size:10px;
|
||||
font-weight: bold;
|
||||
font-family: "Courier New", monospace;
|
||||
}
|
||||
.nodelabel {
|
||||
text-anchor: middle;
|
||||
}
|
||||
.inputPortLabel {
|
||||
text-anchor: end;
|
||||
}
|
||||
.splitjoinBody {
|
||||
fill:#000;
|
||||
}</style>
|
||||
<g s:type="add" transform="translate(94.66666666666667,699.5)" s:width="25" s:height="25" id="cell_$add$/dide/user/src/language/vlog/netlistview/netlistview.v:15$3">
|
||||
<s:alias val="$add"/>
|
||||
<circle r="12.5" cx="12.5" cy="12.5" class="cell_$add$/dide/user/src/language/vlog/netlistview/netlistview.v:15$3"/>
|
||||
<line x1="7.5" x2="17.5" y1="12.5" y2="12.5" class="cell_$add$/dide/user/src/language/vlog/netlistview/netlistview.v:15$3"/>
|
||||
<line x1="12.5" x2="12.5" y1="7.5" y2="17.5" class="cell_$add$/dide/user/src/language/vlog/netlistview/netlistview.v:15$3"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="25" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="and" transform="translate(365,814)" s:width="30" s:height="25" id="cell_$and$/dide/user/src/language/vlog/netlistview/netlistview.v:31$5">
|
||||
<s:alias val="$and"/>
|
||||
<s:alias val="$logic_and"/>
|
||||
<s:alias val="$_AND_"/>
|
||||
<path d="M0,0 L0,25 L15,25 A15 12.5 0 0 0 15,0 Z" class="cell_$and$/dide/user/src/language/vlog/netlistview/netlistview.v:31$5"/>
|
||||
<g s:x="0" s:y="5" s:pid="A"/>
|
||||
<g s:x="0" s:y="20" s:pid="B"/>
|
||||
<g s:x="30" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="and" transform="translate(365,19.5)" s:width="30" s:height="25" id="cell_$and$/dide/user/src/language/vlog/netlistview/netlistview.v:32$6">
|
||||
<s:alias val="$and"/>
|
||||
<s:alias val="$logic_and"/>
|
||||
<s:alias val="$_AND_"/>
|
||||
<path d="M0,0 L0,25 L15,25 A15 12.5 0 0 0 15,0 Z" class="cell_$and$/dide/user/src/language/vlog/netlistview/netlistview.v:32$6"/>
|
||||
<g s:x="0" s:y="5" s:pid="A"/>
|
||||
<g s:x="0" s:y="20" s:pid="B"/>
|
||||
<g s:x="30" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(432,302)" s:width="30" s:height="40" id="cell_$procdff$12">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$12"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$12"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(432,816.5)" s:width="30" s:height="40" id="cell_$procdff$13">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$13"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$13"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(432,22)" s:width="30" s:height="40" id="cell_$procdff$14">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$14"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$14"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(432,162)" s:width="30" s:height="40" id="cell_$procdff$15">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$15"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$15"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(497,731.5)" s:width="30" s:height="40" id="cell_$procdff$16">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$16"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$16"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(497,77)" s:width="30" s:height="40" id="cell_$procdff$17">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$17"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$17"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="dff" transform="translate(497,217)" s:width="30" s:height="40" id="cell_$procdff$18">
|
||||
<s:alias val="$dff"/>
|
||||
<s:alias val="$_DFF_"/>
|
||||
<s:alias val="$_DFF_P_"/>
|
||||
<rect width="30" height="40" x="0" y="0" class="cell_$procdff$18"/>
|
||||
<path d="M0,35 L5,30 L0,25" class="cell_$procdff$18"/>
|
||||
<g s:x="30" s:y="10" s:pid="Q"/>
|
||||
<g s:x="0" s:y="30" s:pid="CLK"/>
|
||||
<g s:x="0" s:y="30" s:pid="C"/>
|
||||
<g s:x="0" s:y="10" s:pid="D"/>
|
||||
</g>
|
||||
<g s:type="eq" transform="translate(162.66666666666666,579)" s:width="25" s:height="25" id="cell_$procmux$10_CMP0">
|
||||
<s:alias val="$eq"/>
|
||||
<circle r="12.5" cx="12.5" cy="12.5" class="cell_$procmux$10_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="10" y2="10" class="cell_$procmux$10_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="15" y2="15" class="cell_$procmux$10_CMP0"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="25" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="not" transform="translate(163,639)" s:width="30" s:height="20" id="cell_$procmux$11_CMP0">
|
||||
<s:alias val="$_NOT_"/>
|
||||
<s:alias val="$not"/>
|
||||
<s:alias val="$logic_not"/>
|
||||
<path d="M0,0 L0,20 L20,10 Z" class="cell_$procmux$11_CMP0"/>
|
||||
<circle cx="23" cy="10" r="3" class="cell_$procmux$11_CMP0"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
<g s:x="25" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="mux" transform="translate(309,292)" s:width="20" s:height="40" id="cell_$procmux$7">
|
||||
<s:alias val="$pmux"/>
|
||||
<s:alias val="$mux"/>
|
||||
<s:alias val="$_MUX_"/>
|
||||
<path d="M0,0 L20,10 L20,30 L0,40 Z" class="cell_$procmux$7"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
<g s:x="0" s:y="30" s:pid="B"/>
|
||||
<g s:x="10" s:y="35" s:pid="S"/>
|
||||
<g s:x="20" s:y="20" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="eq" transform="translate(162.66666666666666,436.5)" s:width="25" s:height="25" id="cell_$procmux$8_CMP0">
|
||||
<s:alias val="$eq"/>
|
||||
<circle r="12.5" cx="12.5" cy="12.5" class="cell_$procmux$8_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="10" y2="10" class="cell_$procmux$8_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="15" y2="15" class="cell_$procmux$8_CMP0"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="25" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="eq" transform="translate(162.66666666666666,496.5)" s:width="25" s:height="25" id="cell_$procmux$9_CMP0">
|
||||
<s:alias val="$eq"/>
|
||||
<circle r="12.5" cx="12.5" cy="12.5" class="cell_$procmux$9_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="10" y2="10" class="cell_$procmux$9_CMP0"/>
|
||||
<line x1="7.5" x2="17.5" y1="15" y2="15" class="cell_$procmux$9_CMP0"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="25" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="reduce_xor" transform="translate(364,159.5)" s:width="33" s:height="25" id="cell_$reduce_xor$/dide/user/src/language/vlog/netlistview/netlistview.v:30$4">
|
||||
<s:alias val="$xor"/>
|
||||
<s:alias val="$reduce_xor"/>
|
||||
<s:alias val="$_XOR_"/>
|
||||
<path d="M3,0 A30 25 0 0 1 3,25 A30 25 0 0 0 33,12.5 A30 25 0 0 0 3,0" class="cell_$reduce_xor$/dide/user/src/language/vlog/netlistview/netlistview.v:30$4"/>
|
||||
<path d="M0,0 A30 25 0 0 1 0,25" class="cell_$reduce_xor$/dide/user/src/language/vlog/netlistview/netlistview.v:30$4"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="33" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="sub" transform="translate(94.66666666666667,74.5)" s:width="25" s:height="25" id="cell_$sub$/dide/user/src/language/vlog/netlistview/netlistview.v:14$2">
|
||||
<s:alias val="$sub"/>
|
||||
<circle r="12.5" cx="12.5" cy="12.5" class="cell_$sub$/dide/user/src/language/vlog/netlistview/netlistview.v:14$2"/>
|
||||
<line x1="7.5" x2="17.5" y1="12.5" y2="12.5" class="cell_$sub$/dide/user/src/language/vlog/netlistview/netlistview.v:14$2"/>
|
||||
<g s:x="3" s:y="5" s:pid="A"/>
|
||||
<g s:x="3" s:y="20" s:pid="B"/>
|
||||
<g s:x="25" s:y="12.5" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="inputExt" transform="translate(367,248)" s:width="30" s:height="20" id="cell_clock">
|
||||
<text x="15" y="-4" class="nodelabel cell_clock" s:attribute="ref">clock</text>
|
||||
<s:alias val="$_inputExt_"/>
|
||||
<path d="M0,0 L0,20 L15,20 L30,10 L15,0 Z" class="cell_clock"/>
|
||||
<g s:x="28" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="inputExt" transform="translate(157,381.5)" s:width="30" s:height="20" id="cell_data_in">
|
||||
<text x="15" y="-4" class="nodelabel cell_data_in" s:attribute="ref">data_in</text>
|
||||
<s:alias val="$_inputExt_"/>
|
||||
<path d="M0,0 L0,20 L15,20 L30,10 L15,0 Z" class="cell_data_in"/>
|
||||
<g s:x="28" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="inputExt" transform="translate(12,809)" s:width="30" s:height="20" id="cell_up">
|
||||
<text x="15" y="-4" class="nodelabel cell_up" s:attribute="ref">up</text>
|
||||
<s:alias val="$_inputExt_"/>
|
||||
<path d="M0,0 L0,20 L15,20 L30,10 L15,0 Z" class="cell_up"/>
|
||||
<g s:x="28" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="inputExt" transform="translate(12,564)" s:width="30" s:height="20" id="cell_down">
|
||||
<text x="15" y="-4" class="nodelabel cell_down" s:attribute="ref">down</text>
|
||||
<s:alias val="$_inputExt_"/>
|
||||
<path d="M0,0 L0,20 L15,20 L30,10 L15,0 Z" class="cell_down"/>
|
||||
<g s:x="28" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="outputExt" transform="translate(497,816.5)" s:width="30" s:height="20" id="cell_carry_out">
|
||||
<text x="15" y="-4" class="nodelabel cell_carry_out" s:attribute="ref">carry_out</text>
|
||||
<s:alias val="$_outputExt_"/>
|
||||
<path d="M30,0 L30,20 L15,20 L0,10 L15,0 Z" class="cell_carry_out"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
</g>
|
||||
<g s:type="outputExt" transform="translate(497,22)" s:width="30" s:height="20" id="cell_borrow_out">
|
||||
<text x="15" y="-4" class="nodelabel cell_borrow_out" s:attribute="ref">borrow_out</text>
|
||||
<s:alias val="$_outputExt_"/>
|
||||
<path d="M30,0 L30,20 L15,20 L0,10 L15,0 Z" class="cell_borrow_out"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
</g>
|
||||
<g s:type="outputExt" transform="translate(497,302)" s:width="30" s:height="20" id="cell_count_out">
|
||||
<text x="15" y="-4" class="nodelabel cell_count_out" s:attribute="ref">count_out</text>
|
||||
<s:alias val="$_outputExt_"/>
|
||||
<path d="M30,0 L30,20 L15,20 L0,10 L15,0 Z" class="cell_count_out"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
</g>
|
||||
<g s:type="outputExt" transform="translate(497,162)" s:width="30" s:height="20" id="cell_parity_out">
|
||||
<text x="15" y="-4" class="nodelabel cell_parity_out" s:attribute="ref">parity_out</text>
|
||||
<s:alias val="$_outputExt_"/>
|
||||
<path d="M30,0 L30,20 L15,20 L0,10 L15,0 Z" class="cell_parity_out"/>
|
||||
<g s:x="0" s:y="10" s:pid="A"/>
|
||||
</g>
|
||||
<g s:type="constant" transform="translate(12,709.5)" s:width="30" s:height="20" id="cell_11">
|
||||
<text x="15" y="-4" class="nodelabel cell_11" s:attribute="ref">11</text>
|
||||
<s:alias val="$_constant_"/>
|
||||
<rect width="30" height="20" class="cell_11"/>
|
||||
<g s:x="30" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="constant" transform="translate(92,648.5)" s:width="30" s:height="20" id="cell_01">
|
||||
<text x="15" y="-4" class="nodelabel cell_01" s:attribute="ref">01</text>
|
||||
<s:alias val="$_constant_"/>
|
||||
<rect width="30" height="20" class="cell_01"/>
|
||||
<g s:x="30" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="constant" transform="translate(92,506.5)" s:width="30" s:height="20" id="cell_10">
|
||||
<text x="15" y="-4" class="nodelabel cell_10" s:attribute="ref">10</text>
|
||||
<s:alias val="$_constant_"/>
|
||||
<rect width="30" height="20" class="cell_10"/>
|
||||
<g s:x="30" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="constant" transform="translate(12,84.5)" s:width="30" s:height="20" id="cell_101">
|
||||
<text x="15" y="-4" class="nodelabel cell_101" s:attribute="ref">101</text>
|
||||
<s:alias val="$_constant_"/>
|
||||
<rect width="30" height="20" class="cell_101"/>
|
||||
<g s:x="30" s:y="10" s:pid="Y"/>
|
||||
</g>
|
||||
<g s:type="join" transform="translate(103,563.5)" s:width="4" s:height="40" id="cell_$join$,13,12,">
|
||||
<rect width="5" height="40" class="splitjoinBody" s:generic="body"/>
|
||||
<s:alias val="$_join_"/>
|
||||
<g s:x="5" s:y="20" s:pid="out"/>
|
||||
<g transform="translate(0,10)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">0</text>
|
||||
</g>
|
||||
<g transform="translate(0,30)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">1</text>
|
||||
</g>
|
||||
</g>
|
||||
<g s:type="join" transform="translate(268,301.5)" s:width="4" s:height="40" id="cell_$join$,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,59,60,61,62,63,64,65,66,67,3,4,5,6,7,8,9,10,11,">
|
||||
<rect width="5" height="80" class="splitjoinBody" s:generic="body"/>
|
||||
<s:alias val="$_join_"/>
|
||||
<g s:x="5" s:y="20" s:pid="out"/>
|
||||
<g transform="translate(0,10)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">0:8</text>
|
||||
</g>
|
||||
<g transform="translate(0,30)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">9:17</text>
|
||||
</g>
|
||||
<g transform="translate(0,50)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">18:26</text>
|
||||
</g>
|
||||
<g transform="translate(0,70)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">27:35</text>
|
||||
</g>
|
||||
</g>
|
||||
<g s:type="join" transform="translate(263.75,438.5)" s:width="4" s:height="40" id="cell_$join$,89,90,87,88,">
|
||||
<rect width="5" height="80" class="splitjoinBody" s:generic="body"/>
|
||||
<s:alias val="$_join_"/>
|
||||
<g s:x="5" s:y="20" s:pid="out"/>
|
||||
<g transform="translate(0,10)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">0</text>
|
||||
</g>
|
||||
<g transform="translate(0,30)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">1</text>
|
||||
</g>
|
||||
<g transform="translate(0,50)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">2</text>
|
||||
</g>
|
||||
<g transform="translate(0,70)" s:x="0" s:y="10" s:pid="in0">
|
||||
<text x="-3" y="-4" class="inputPortLabel">3</text>
|
||||
</g>
|
||||
</g>
|
||||
<g s:type="split" transform="translate(177.66666666666666,691.5)" s:width="5" s:height="40" id="cell_$split$,26,27,28,29,30,31,32,33,34,35,">
|
||||
<rect width="5" height="40" class="splitjoinBody" s:generic="body"/>
|
||||
<s:alias val="$_split_"/>
|
||||
<g s:x="0" s:y="20" s:pid="in"/>
|
||||
<g transform="translate(4,10)" s:x="4" s:y="10" s:pid="out0">
|
||||
<text x="5" y="-4">9</text>
|
||||
</g>
|
||||
<g transform="translate(4,30)" s:x="4" s:y="10" s:pid="out0">
|
||||
<text x="5" y="-4">0:8</text>
|
||||
</g>
|
||||
</g>
|
||||
<g s:type="split" transform="translate(177.66666666666666,100)" s:width="5" s:height="40" id="cell_$split$,59,60,61,62,63,64,65,66,67,37,">
|
||||
<rect width="5" height="40" class="splitjoinBody" s:generic="body"/>
|
||||
<s:alias val="$_split_"/>
|
||||
<g s:x="0" s:y="20" s:pid="in"/>
|
||||
<g transform="translate(4,10)" s:x="4" s:y="10" s:pid="out0">
|
||||
<text x="5" y="-4">9</text>
|
||||
</g>
|
||||
<g transform="translate(4,30)" s:x="4" s:y="10" s:pid="out0">
|
||||
<text x="5" y="-4">0:8</text>
|
||||
</g>
|
||||
</g>
|
||||
<line x1="462" x2="472" y1="312" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="472" y1="312" y2="678.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="82" y1="678.5" y2="678.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="82" x2="82" y1="678.5" y2="704.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="82" x2="97.66666666666667" y1="704.5" y2="704.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="462" x2="472" y1="312" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="472" y1="312" y2="278" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="82" y1="278" y2="278" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="82" x2="82" y1="278" y2="79.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<circle cx="472" cy="312" r="2" style="fill:#000" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="82" x2="97.66666666666667" y1="79.5" y2="79.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="462" x2="497" y1="312" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="462" x2="472" y1="312" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="472" y1="312" y2="278" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="472" x2="349" y1="278" y2="278" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="349" x2="349" y1="278" y2="678.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="349" x2="219" y1="678.5" y2="678.5" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="219" x2="219" y1="678.5" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<circle cx="219" cy="678.5" r="2" style="fill:#000" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<circle cx="349" cy="678.5" r="2" style="fill:#000" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<circle cx="349" cy="278" r="2" style="fill:#000" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="219" x2="268" y1="312" y2="312" class="net_16,17,18,19,20,21,22,23,24"/>
|
||||
<line x1="42" x2="97.66666666666667" y1="719.5" y2="719.5" class="net_91,92"/>
|
||||
<line x1="42" x2="62" y1="719.5" y2="719.5" class="net_91,92"/>
|
||||
<line x1="62" x2="62" y1="719.5" y2="456.5" class="net_91,92"/>
|
||||
<circle cx="62" cy="719.5" r="2" style="fill:#000" class="net_91,92"/>
|
||||
<line x1="62" x2="165.66666666666666" y1="456.5" y2="456.5" class="net_91,92"/>
|
||||
<line x1="40" x2="365" y1="819" y2="819" class="net_12"/>
|
||||
<line x1="40" x2="72" y1="819" y2="819" class="net_12"/>
|
||||
<line x1="72" x2="72" y1="819" y2="594" class="net_12"/>
|
||||
<circle cx="72" cy="819" r="2" style="fill:#000" class="net_12"/>
|
||||
<line x1="72" x2="103" y1="594" y2="594" class="net_12"/>
|
||||
<line x1="182.66666666666666" x2="239" y1="702" y2="702" class="net_35"/>
|
||||
<line x1="239" x2="239" y1="702" y2="834" class="net_35"/>
|
||||
<line x1="239" x2="365" y1="834" y2="834" class="net_35"/>
|
||||
<line x1="40" x2="52" y1="574" y2="574" class="net_13"/>
|
||||
<line x1="52" x2="52" y1="574" y2="24.5" class="net_13"/>
|
||||
<circle cx="52" cy="574" r="2" style="fill:#000" class="net_13"/>
|
||||
<line x1="52" x2="365" y1="24.5" y2="24.5" class="net_13"/>
|
||||
<line x1="40" x2="103" y1="574" y2="574" class="net_13"/>
|
||||
<line x1="182.66666666666666" x2="209" y1="110.5" y2="110.5" class="net_37"/>
|
||||
<line x1="209" x2="209" y1="110.5" y2="39.5" class="net_37"/>
|
||||
<line x1="209" x2="365" y1="39.5" y2="39.5" class="net_37"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="332" class="net_2"/>
|
||||
<circle cx="407" cy="258" r="2" style="fill:#000" class="net_2"/>
|
||||
<circle cx="407" cy="332" r="2" style="fill:#000" class="net_2"/>
|
||||
<line x1="407" x2="432" y1="332" y2="332" class="net_2"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="846.5" class="net_2"/>
|
||||
<line x1="407" x2="432" y1="846.5" y2="846.5" class="net_2"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="52" class="net_2"/>
|
||||
<line x1="407" x2="432" y1="52" y2="52" class="net_2"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="192" class="net_2"/>
|
||||
<circle cx="407" cy="192" r="2" style="fill:#000" class="net_2"/>
|
||||
<line x1="407" x2="432" y1="192" y2="192" class="net_2"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="761.5" class="net_2"/>
|
||||
<circle cx="407" cy="761.5" r="2" style="fill:#000" class="net_2"/>
|
||||
<line x1="407" x2="497" y1="761.5" y2="761.5" class="net_2"/>
|
||||
<line x1="395" x2="407" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="407" x2="407" y1="258" y2="107" class="net_2"/>
|
||||
<circle cx="407" cy="107" r="2" style="fill:#000" class="net_2"/>
|
||||
<line x1="407" x2="497" y1="107" y2="107" class="net_2"/>
|
||||
<line x1="395" x2="472" y1="258" y2="258" class="net_2"/>
|
||||
<line x1="472" x2="472" y1="258" y2="247" class="net_2"/>
|
||||
<line x1="472" x2="497" y1="247" y2="247" class="net_2"/>
|
||||
<line x1="329" x2="432" y1="312" y2="312" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="329" x2="339" y1="312" y2="312" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="339" x2="339" y1="312" y2="227" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<circle cx="339" cy="312" r="2" style="fill:#000" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<circle cx="339" cy="227" r="2" style="fill:#000" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="339" x2="497" y1="227" y2="227" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="329" x2="339" y1="312" y2="312" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="339" x2="339" y1="312" y2="164.5" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="339" x2="367" y1="164.5" y2="164.5" class="net_39,40,41,42,43,44,45,46,47"/>
|
||||
<line x1="395" x2="432" y1="826.5" y2="826.5" class="net_36"/>
|
||||
<line x1="395" x2="432" y1="32" y2="32" class="net_38"/>
|
||||
<line x1="397" x2="432" y1="172" y2="172" class="net_48"/>
|
||||
<line x1="119.66666666666667" x2="132" y1="712" y2="712" class="net_26,27,28,29,30,31,32,33,34,35"/>
|
||||
<line x1="132" x2="132" y1="712" y2="741.5" class="net_26,27,28,29,30,31,32,33,34,35"/>
|
||||
<circle cx="132" cy="712" r="2" style="fill:#000" class="net_26,27,28,29,30,31,32,33,34,35"/>
|
||||
<line x1="132" x2="497" y1="741.5" y2="741.5" class="net_26,27,28,29,30,31,32,33,34,35"/>
|
||||
<line x1="119.66666666666667" x2="177.66666666666666" y1="712" y2="712" class="net_26,27,28,29,30,31,32,33,34,35"/>
|
||||
<line x1="119.66666666666667" x2="497" y1="87" y2="87" class="net_59,60,61,62,63,64,65,66,67,37"/>
|
||||
<line x1="119.66666666666667" x2="132" y1="87" y2="87" class="net_59,60,61,62,63,64,65,66,67,37"/>
|
||||
<line x1="132" x2="132" y1="87" y2="120.5" class="net_59,60,61,62,63,64,65,66,67,37"/>
|
||||
<circle cx="132" cy="87" r="2" style="fill:#000" class="net_59,60,61,62,63,64,65,66,67,37"/>
|
||||
<line x1="132" x2="177.66666666666666" y1="120.5" y2="120.5" class="net_59,60,61,62,63,64,65,66,67,37"/>
|
||||
<line x1="109" x2="165.66666666666666" y1="584" y2="584" class="net_13,12"/>
|
||||
<line x1="109" x2="142" y1="584" y2="584" class="net_13,12"/>
|
||||
<line x1="142" x2="142" y1="584" y2="649" class="net_13,12"/>
|
||||
<circle cx="142" cy="584" r="2" style="fill:#000" class="net_13,12"/>
|
||||
<line x1="142" x2="163" y1="649" y2="649" class="net_13,12"/>
|
||||
<line x1="109" x2="142" y1="584" y2="584" class="net_13,12"/>
|
||||
<line x1="142" x2="142" y1="584" y2="441.5" class="net_13,12"/>
|
||||
<line x1="142" x2="165.66666666666666" y1="441.5" y2="441.5" class="net_13,12"/>
|
||||
<line x1="109" x2="142" y1="584" y2="584" class="net_13,12"/>
|
||||
<line x1="142" x2="142" y1="584" y2="501.5" class="net_13,12"/>
|
||||
<circle cx="142" cy="501.5" r="2" style="fill:#000" class="net_13,12"/>
|
||||
<line x1="142" x2="165.66666666666666" y1="501.5" y2="501.5" class="net_13,12"/>
|
||||
<line x1="122" x2="132" y1="658.5" y2="658.5" class="net_93,94"/>
|
||||
<line x1="132" x2="132" y1="658.5" y2="599" class="net_93,94"/>
|
||||
<line x1="132" x2="165.66666666666666" y1="599" y2="599" class="net_93,94"/>
|
||||
<line x1="274" x2="309" y1="322" y2="322" class="net_16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,59,60,61,62,63,64,65,66,67,3,4,5,6,7,8,9,10,11"/>
|
||||
<line x1="269.75" x2="319" y1="459" y2="459" class="net_89,90,87,88"/>
|
||||
<line x1="319" x2="319" y1="459" y2="327" class="net_89,90,87,88"/>
|
||||
<line x1="122" x2="165.66666666666666" y1="516.5" y2="516.5" class="net_97,98"/>
|
||||
<line x1="42" x2="97.66666666666667" y1="94.5" y2="94.5" class="net_99,100,101"/>
|
||||
<line x1="462" x2="497" y1="826.5" y2="826.5" class="net_14"/>
|
||||
<line x1="462" x2="497" y1="32" y2="32" class="net_15"/>
|
||||
<line x1="462" x2="497" y1="172" y2="172" class="net_25"/>
|
||||
<line x1="182.66666666666666" x2="229" y1="722" y2="722" class="net_26,27,28,29,30,31,32,33,34"/>
|
||||
<line x1="229" x2="229" y1="722" y2="332" class="net_26,27,28,29,30,31,32,33,34"/>
|
||||
<line x1="229" x2="268" y1="332" y2="332" class="net_26,27,28,29,30,31,32,33,34"/>
|
||||
<line x1="182.66666666666666" x2="239" y1="130.5" y2="130.5" class="net_59,60,61,62,63,64,65,66,67"/>
|
||||
<line x1="239" x2="239" y1="130.5" y2="352" class="net_59,60,61,62,63,64,65,66,67"/>
|
||||
<line x1="239" x2="268" y1="352" y2="352" class="net_59,60,61,62,63,64,65,66,67"/>
|
||||
<line x1="185" x2="268.5" y1="391.5" y2="391.5" class="net_3,4,5,6,7,8,9,10,11"/>
|
||||
<line x1="268.5" x2="268.5" y1="391.5" y2="372.5" class="net_3,4,5,6,7,8,9,10,11"/>
|
||||
<line x1="187.66666666666666" x2="263.75" y1="449" y2="449" class="net_89"/>
|
||||
<line x1="187.66666666666666" x2="209" y1="509" y2="509" class="net_90"/>
|
||||
<line x1="209" x2="209" y1="509" y2="469" class="net_90"/>
|
||||
<line x1="209" x2="263.75" y1="469" y2="469" class="net_90"/>
|
||||
<line x1="187.66666666666666" x2="239" y1="591.5" y2="591.5" class="net_87"/>
|
||||
<line x1="239" x2="239" y1="591.5" y2="489" class="net_87"/>
|
||||
<line x1="239" x2="263.75" y1="489" y2="489" class="net_87"/>
|
||||
<line x1="188" x2="264.25" y1="649" y2="649" class="net_88"/>
|
||||
<line x1="264.25" x2="264.25" y1="649" y2="509.5" class="net_88"/>
|
||||
</svg>
|
After Width: | Height: | Size: 25 KiB |
@ -15,7 +15,7 @@
|
||||
|
||||
<script>
|
||||
window.readNetFile = async () => {
|
||||
const inputVcdFile = 'IF_ID.json';
|
||||
const inputVcdFile = 'full_adder.json';
|
||||
const skin = 'dide.skin';
|
||||
const r1 = await fetch(inputVcdFile);
|
||||
const r2 = await fetch(skin);
|
||||
@ -23,7 +23,7 @@
|
||||
const skinBinary = await r2.arrayBuffer();
|
||||
return [ netJson, skinBinary ];
|
||||
}
|
||||
window.moduleName = 'IF_ID';
|
||||
window.moduleName = 'full_adder';
|
||||
// window.avoidWasm = 'avoid.wasm';
|
||||
</script>
|
||||
</head>
|
||||
|
@ -206,11 +206,14 @@ export class NetlistRender {
|
||||
// debug
|
||||
console.log(computedLayout);
|
||||
|
||||
// 底层模块
|
||||
const topModule = this.nameToModule.get(this.topModuleName);
|
||||
|
||||
// 生成连接
|
||||
await this.renderLine(g, computedLayout);
|
||||
await this.renderLine(g, computedLayout, topModule);
|
||||
|
||||
// 生成实体
|
||||
await this.renderEntity(g, computedLayout);
|
||||
await this.renderEntity(g, computedLayout, topModule);
|
||||
|
||||
// svg 挂载为全局注册的 selection
|
||||
this.selection = svg;
|
||||
@ -288,8 +291,9 @@ export class NetlistRender {
|
||||
* @description 绘制连线和交叉点
|
||||
* @param {d3.Selection} parentSelection
|
||||
* @param {ElkNode} computedLayout
|
||||
* @param {Module} module
|
||||
*/
|
||||
async renderLine(parentSelection, computedLayout) {
|
||||
async renderLine(parentSelection, computedLayout, module) {
|
||||
this.wireRender = new WireRender(parentSelection, this);
|
||||
this.crossDotRender = new CrossDotRender(parentSelection, this);
|
||||
|
||||
@ -304,6 +308,7 @@ export class NetlistRender {
|
||||
const rangeTree = new RangeTreeMap();
|
||||
|
||||
for (const edge of computedLayout.edges) {
|
||||
const width = module.id2EdgeCount.get(edge.id);
|
||||
for (const section of edge.sections || []) {
|
||||
const points = [];
|
||||
points.push(section.startPoint);
|
||||
@ -311,7 +316,7 @@ export class NetlistRender {
|
||||
points.push(point);
|
||||
}
|
||||
points.push(section.endPoint);
|
||||
this.wireRender.addAsD3DataItems(points, edge, id2port);
|
||||
this.wireRender.addAsD3DataItems(points, edge, id2port, width);
|
||||
|
||||
// 加入 range tree 中
|
||||
for (let i = 0; i < points.length - 1; ++ i) {
|
||||
@ -585,7 +590,6 @@ export class NetlistRender {
|
||||
elkNode.edges = [];
|
||||
elkNode.layoutOptions = this.defaultLayoutOptions;
|
||||
|
||||
|
||||
// elkNode.children.push(...portNodes);
|
||||
elkNode.children.push(...cellNodes);
|
||||
elkNode.children.push(...constantNodes);
|
||||
@ -627,8 +631,11 @@ export class NetlistRender {
|
||||
const parentSelection = s.parentSelection;
|
||||
const layout = s.layout;
|
||||
|
||||
await this.renderLine(parentSelection, layout);
|
||||
const { instances } = await this.renderEntity(parentSelection, layout);
|
||||
const layoutName = layout.renderName || this.topModuleName;
|
||||
const module = this.nameToModule.get(layoutName);
|
||||
|
||||
await this.renderLine(parentSelection, layout, module);
|
||||
const { instances } = await this.renderEntity(parentSelection, layout, module);
|
||||
|
||||
const id2selection = new Map();
|
||||
instances.each(function(data) {
|
||||
|
@ -330,7 +330,7 @@ export class Module {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (conn.direction === 'input') {
|
||||
if (connection.direction === 'output') {
|
||||
const edgeId = makeEdgeId(conn.id, connection.id);
|
||||
if (!id2EdgeCount.has(edgeId)) {
|
||||
id2EdgeCount.set(edgeId, 0);
|
||||
|
@ -6,6 +6,7 @@ import { ConnectionRender } from './connection';
|
||||
import { CellRender } from './cell';
|
||||
import { CrossDotRender } from './cross-dot';
|
||||
import { globalLookup } from '../global';
|
||||
import { ConstantRender } from './constant';
|
||||
|
||||
export class RenderViewNode {
|
||||
/**
|
||||
@ -45,10 +46,15 @@ export class RenderViewNode {
|
||||
*/
|
||||
this.portRender = undefined;
|
||||
|
||||
/**
|
||||
* @type {ConstantRender}
|
||||
*/
|
||||
this.constantRender = undefined;
|
||||
|
||||
/**
|
||||
* @type {Map<string, RenderViewNode>}
|
||||
*/
|
||||
this.id2children = new Map;
|
||||
this.id2children = new Map();
|
||||
}
|
||||
|
||||
hasChild(id) {
|
||||
|
@ -39,8 +39,9 @@ export class WireRender {
|
||||
* @param {import('../jsdoc').ElkPoint[]} points 长度至少为 2 的数组,代表经历过的点集
|
||||
* @param {import('../jsdoc').ElkEdge} edge
|
||||
* @param {Map<string, import('../jsdoc').ElkPort>} id2port
|
||||
* @param {number} width
|
||||
*/
|
||||
addAsD3DataItems(points, edge, id2port) {
|
||||
addAsD3DataItems(points, edge, id2port, width) {
|
||||
const linePaths = [];
|
||||
|
||||
const beginPoint = points.at(0);
|
||||
@ -86,6 +87,7 @@ export class WireRender {
|
||||
id: this.idCounter,
|
||||
svg: lineSvg,
|
||||
endPoint: points.at(-1),
|
||||
width: width,
|
||||
arrow: {
|
||||
icon: direction + '-arrow',
|
||||
x: arrowLocation.x,
|
||||
@ -107,7 +109,6 @@ export class WireRender {
|
||||
const arrowHeight = 12;
|
||||
const arrowWidth = 12;
|
||||
|
||||
|
||||
let lineSelections = this.selection.selectAll('path.lines')
|
||||
.data(data)
|
||||
.enter()
|
||||
@ -115,8 +116,9 @@ export class WireRender {
|
||||
.attr('d', d => d.svg)
|
||||
.attr('class', 'connection-line')
|
||||
.attr("fill", "none")
|
||||
.attr('stroke', 'var(--wire-color)');
|
||||
.attr('stroke', 'var(--wire-color)')
|
||||
|
||||
this.lineSelections = lineSelections;
|
||||
const arrows = new Map();
|
||||
|
||||
let arrowSelections = this.selection.selectAll('svg.line-arrow')
|
||||
@ -201,7 +203,10 @@ export class WireRender {
|
||||
}
|
||||
|
||||
lineSelections
|
||||
.attr('stroke-width', LINE_WIDTH)
|
||||
.attr('stroke-width', d => {
|
||||
const incrementWidth = globalSetting.boldMultiWidthWire ? 1 : 0;
|
||||
return d.width > 1 ? LINE_WIDTH + incrementWidth: LINE_WIDTH;
|
||||
})
|
||||
.each(function (data) {
|
||||
const selection = d3.select(this);
|
||||
// const manager = _this.createDataManager(selection, data);
|
||||
|
@ -81,6 +81,9 @@ class SkinMeta {
|
||||
const levelName = path.split('/')[1];
|
||||
const cssName = levelName2CssName[levelName];
|
||||
|
||||
this.path = path;
|
||||
this.svgString = svgString;
|
||||
|
||||
const color = `var(--${cssName}-color)`;
|
||||
const fillColor = `var(--${cssName}-fill-color)`;
|
||||
|
||||
@ -128,9 +131,12 @@ class SkinMeta {
|
||||
return 0;
|
||||
}
|
||||
const transform = pathElement.getAttribute('transform');
|
||||
const yOffset = parseFloat(transform.split(' ').at(-1));
|
||||
this.portToYOffset.set(portName, yOffset);
|
||||
return yOffset;
|
||||
if (transform) {
|
||||
const yOffset = parseFloat(transform.split(' ').at(-1));
|
||||
this.portToYOffset.set(portName, yOffset);
|
||||
return yOffset;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,9 +153,12 @@ class SkinMeta {
|
||||
return 0;
|
||||
}
|
||||
const transform = pathElement.getAttribute('transform');
|
||||
const offsetnumber = transform.split('(').at(-1).split(' ').at(0);
|
||||
const xOffset = parseFloat(offsetnumber);
|
||||
this.portToXOffset.set(portName, xOffset);
|
||||
return xOffset;
|
||||
if (transform) {
|
||||
const offsetnumber = transform.split('(').at(-1).split(' ').at(0);
|
||||
const xOffset = parseFloat(offsetnumber);
|
||||
this.portToXOffset.set(portName, xOffset);
|
||||
return xOffset;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user