Exemple #1
0
        private void loadLogisimToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string text = File.ReadAllText(openFileDialog1.FileName, Encoding.UTF8);
                LogisimCirc = new XmlDocument();
                LogisimCirc.LoadXml(text);

                CircuitModel = LogisimConverter.LoadModel(LogisimCirc);
                VisualizeLogisim(CircuitModel);

                //Console.WriteLine("");
                //Console.WriteLine(text);

                this.Text = SavedText + " - " + Path.GetFileName(openFileDialog1.FileName);
            }
        }
Exemple #2
0
        private void loadModelToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog2.ShowDialog() == DialogResult.OK)
            {
                XmlSerializer ser = new XmlSerializer(typeof(LogisimConverter.LogisimModel));

                using (FileStream fs = new FileStream(openFileDialog2.FileName, FileMode.Open))
                {
                    CircuitModel = (LogisimConverter.LogisimModel)ser.Deserialize(fs);

                    // Restore wire linkage

                    LogisimConverter.RestoreLinkage(CircuitModel);

                    VisualizeLogisim(CircuitModel);

                    this.Text = SavedText + " - " + Path.GetFileName(openFileDialog2.FileName);
                }
            }
        }
Exemple #3
0
        private void VisualizeLogisim(LogisimConverter.LogisimModel model)
        {
            canvasControl1.RemoveAllItems();

            // Comps

            foreach (var comp in model.comps)
            {
                CanvasRect rect = new CanvasRect((PointF)comp.loc,
                                                 LogisimConverter.CompSize, LogisimConverter.CompSize, Color.Gold);

                rect.Text = comp.name;

                if (comp.name == "Text")
                {
                    // Skip labels
                    continue;
                }
                else if (comp.name == "1")
                {
                    rect.FrontColor = Color.Tomato;
                }
                else if (comp.name == "0")
                {
                    rect.FrontColor = Color.LimeGreen;
                }

#if DEBUG
                rect.Text += " #" + comp.id.ToString();
#endif

                canvasControl1.AddItem(rect);
            }

            // Wires

            foreach (var wire in model.wires)
            {
                List <PointF> path = new List <PointF>();

                foreach (var p in wire.path)
                {
                    path.Add(p);
                }

                CanvasPolyLine line = new CanvasPolyLine(path, 1, Color.Black);
                line.Text = wire.name;

                WireMeta meta = new WireMeta();

                meta.wire     = wire;
                line.UserData = meta;

                canvasControl1.AddItem(line);
                WireDirection(wire, meta);
            }

            // Vias

            foreach (var vias in model.viases)
            {
                CanvasPoint point = new CanvasPoint(vias.loc, 5, Color.Gold);
#if DEBUG
                //point.Text = vias.id.ToString();
                //point.TextColor = Color.DeepPink;
#endif
                canvasControl1.AddItem(point);
            }

            canvasControl1.Invalidate();
        }