public override void LayoutSymbol(SymbolLayout Sym) { Coord w = new Coord(0, 0); Sym.AddTerminal(Terminal, w); Coord dw = new Coord(1, 1); Coord pw = new Coord(dw.y, -dw.x); w += dw * 10; Sym.AddWire(Terminal, w); Sym.AddLine(color, w - pw * 4, w + pw * 4); Sym.AddLoop(color, w + pw * 2, w + pw * 2 + dw * 10, w + dw * 12, w - pw * 2 + dw * 10, w - pw * 2); if (ConnectedTo != null) { Sym.DrawText(() => V.ToString(), new Point(0, 6), Alignment.Far, Alignment.Near); } }
public Module(ModuleLayout layout) { _layout = layout; int[] labelsCount = new int[_layout.data.sectionsCount]; Array.Clear(labelsCount, 0, _layout.data.sectionsCount); Label[] labels = new Label[_layout.data.symbolsCount]; for (int i = 0; i < _layout.data.symbolsCount; i++) { SymbolLayout symbol = _layout.data.symbols[i]; labelsCount[symbol.sectionIndex]++; labels[i] = new Label() { Name = _layout.data.strings[symbol.nameIndex], Offset = symbol.blobEntryIndex, SectionId = symbol.sectionIndex }; } Sections = new Section[_layout.data.sectionsCount]; for (int i = 0; i < _layout.data.sectionsCount; i++) { SectionLayout section = _layout.data.sections[i]; int ind = 0; Sections[i] = new Section() { Data = _layout.data.blobs[section.blobIndex].data, Name = _layout.data.strings[section.bankNameIndex], Labels = new Label[labelsCount[i]] }; for (int j = 0; j < _layout.data.symbolsCount; j++) { if (labels[j].SectionId == i) { Sections[i].Labels[ind++] = labels[j]; } } } }