Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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];
                    }
                }
            }
        }