예제 #1
0
 public int ParseTruthTableUserControl(LogicPad2.TruthTable.UserControl1 userControl, 
     out string generatedExpr, out XElement generatedXElement)
 {
     if (userControl.TruthTableInkCanvas.TruthTable == null)
     {
         generatedExpr = null;
         generatedXElement = null;
         return 2;
     }
     else {
         generatedXElement = userControl.Parse(out generatedExpr);
         //changed generatedXElement to generatedExpr 
         if (generatedExpr.Equals("1"))
         {
             return 1;
         }
         //changed generatedXElement to generatedExpr
         else if (generatedExpr.Equals("0"))
         {
             return 0;
         }
         else 
         {
             return 2;
         }
     }
 }
예제 #2
0
        public void ParseDiagramUserControl(LogicPad2.Diagram.UserControl1 userControl, 
            out string generatedExpr, out TruthTableWindow.TruthTable generatedTruthTable)
        { 
            userControl.Parse(out generatedExpr);

            generatedTruthTable = new TruthTableWindow.TruthTable();

            int numberOfTerm;
            String[] terms_names;
            int[] fvalues;
            String outputName;
            LogicPadParser.LogicPadParser.Instance.ParseInterTreeToTruthTable(
                LogicPadParser.LogicPadParser.diagram,
                out numberOfTerm,
                out terms_names,
                out fvalues,
                out outputName
             );

            LogicPadParser.TruthTable interTruthTable = new LogicPadParser.TruthTable(numberOfTerm);
            interTruthTable.Terms_names = terms_names;
            interTruthTable.Fvalues = fvalues;
            interTruthTable.OutputName = outputName;

            //Diagram To TruthTable Minimization
            LogicPadParser.TruthTableSolver solver = new LogicPadParser.TruthTableSolver();
            solver.CurrentTruthTable = interTruthTable;
            solver.Solve();

            LogicPadParser.LogicPadParser.Instance.ParseInterTreeToTruthTable(
                LogicPadParser.LogicPadParser.truthTable,
                out numberOfTerm,
                out terms_names,
                out fvalues,
                out outputName
             );

            generatedTruthTable.Number_of_terms = numberOfTerm;
            generatedTruthTable.Terms_names = terms_names;
            generatedTruthTable.Fvalues = fvalues;
            generatedTruthTable.Rows = (int)Math.Pow(2, generatedTruthTable.Number_of_terms) + 1;
            generatedTruthTable.Columns = generatedTruthTable.Number_of_terms + 2;
            generatedTruthTable.OutputName = outputName;


            generatedExpr = InterTree.ParseExpressionToString(LogicPadParser.LogicPadParser.truthTable);
        }
예제 #3
0
        void DragDropHelper_ItemDropped(object sender, LogicPad2.Diagram.DragDrop.DragDropEventArgs e)
        {
            if (e.DropTarget.IsDescendantOf(inkCanvas))
            {
                Gate newGate = null;
                newGate = ((Gate)e.Content).CreateUserInstance();

                inkCanvas.AddGate(newGate, new GateLocation(inkCanvas.GetNearestSnapTo(inkCanvas.TranslateScrolledPoint(e.Position))));
                inkCanvas.UpdateLayout();
            }
        }
예제 #4
0
        public int ParseExpressionUserControl(LogicPad2.Expression.UserControl1 userControl,
            out TruthTableWindow.TruthTable generatedTruthTable, out XElement generatedXElement)
        {
            int output = 2;
            generatedXElement = userControl.Parse(ref output);
            if(output != 2)
            {
                generatedTruthTable = null;
                return output;
            }
            LogicPadParser.LogicPadParser.Instance.ParseExpressionXElement(generatedXElement);
           
            generatedTruthTable = new TruthTableWindow.TruthTable();

            int numberOfTerm;
            String[] terms_names;
            int[] fvalues;
            string outputName;

            LogicPadParser.LogicPadParser.Instance.ParseInterTreeToTruthTable(
                LogicPadParser.LogicPadParser.expression,
                out numberOfTerm,
                out terms_names,
                out fvalues,
                out outputName
             );

            if (numberOfTerm == 0)
            {
                generatedTruthTable = null;
                return 0;
            }
            else if (numberOfTerm == -1)
            {
                generatedTruthTable = null;
                return 1;
            }

            LogicPadParser.TruthTable interTruthTable = new LogicPadParser.TruthTable(numberOfTerm);
            interTruthTable.Terms_names = terms_names;
            interTruthTable.Fvalues = fvalues;
            interTruthTable.OutputName = outputName;
            
            //Expression Minimization
            LogicPadParser.TruthTableSolver solver = new LogicPadParser.TruthTableSolver();
            solver.CurrentTruthTable = interTruthTable;
            solver.Solve();

            LogicPadParser.LogicPadParser.Instance.ParseInterTreeToTruthTable(
                LogicPadParser.LogicPadParser.truthTable,
                out numberOfTerm,
                out terms_names,
                out fvalues,
                out outputName
             );

            if (numberOfTerm == 0)
            {
                generatedTruthTable = null;
                return 0;
            }
            else if (numberOfTerm == -1)
            {
                generatedTruthTable = null;
                return 1;
            }

            generatedTruthTable.Number_of_terms = numberOfTerm;
            generatedTruthTable.Terms_names = terms_names;
            generatedTruthTable.Fvalues = fvalues;
            generatedTruthTable.Rows = (int)Math.Pow(2, generatedTruthTable.Number_of_terms) + 1;
            generatedTruthTable.Columns = generatedTruthTable.Number_of_terms + 2;

            return 2;
        }