예제 #1
0
        /// <summary>
        /// Konstruktor okna warunków początkowych
        /// </summary>
        internal InitialCondition(int _mode = SPDAssets.MAX, InitialConditions condition = null)
        {
            _tooltip = -1;
            InitializeComponent();

            Mode = _mode;
            _selectedOperation     = Operation.None;
            ComboBox.ItemsSource   = SPDAssets.GetBrushRectangles(Mode, InitialConditions.GetTransformation(Mode));
            ComboBox.SelectedIndex = 0;
            DataContext            = this;
            _conditionNames        = new List <Tuple <string, Tuple <string, bool> > >();
            _conditions            = new Dictionary <Tuple <string, bool>, Func <bool, int, int, bool, InitialConditions> >();
            foreach (var T in new[] { false, true })
            {
                _conditions.Add(new Tuple <string, bool>("Donut", T), InitialConditions.DonutFactory);
                _conditions.Add(new Tuple <string, bool>("Circle", T), InitialConditions.CircleFactory);
                _conditions.Add(new Tuple <string, bool>("Diagonal", T), InitialConditions.DiagonalFactory);
                _conditions.Add(new Tuple <string, bool>("NowakMay", T), InitialConditions.NowakMayFactory);
            }
            _conditionNames.AddRange(
                _conditions.Select(
                    k =>
                    new Tuple <string, Tuple <string, bool> >(k.Value(k.Key.Item2, 1, 10, false).Name,
                                                              new Tuple <string, bool>(k.Key.Item1, k.Key.Item2))));
            ComboBoxCopy.ItemsSource = _conditionNames.Select(s => s.Item1);
            var D = SPDAssets.GenerateLegend(Legend.Height, Mode, InitialConditions.GetTransformation(Mode));

            D.Stretch = Stretch.Fill;

            Legend.Children.Add(D);
            if (condition != null)
            {
                Condition = condition;
            }
        }
예제 #2
0
        private void MenuItemDelete_Click(object sender, RoutedEventArgs e)
        {
            if (MatricesListBox.SelectedIndex == -1)
            {
                return;
            }
            var MatrixDescription = (MatricesListBox.SelectedItems[0] as MatrixDescription);
            var L = Condition.Matrices;
            var M = Condition.Matrices.Where(m => m.ToString() != MatrixDescription.Description).ToList();

            for (int i = 0; i < Condition.Indices.GetLength(0); i++)
            {
                for (int j = 0; j < Condition.Indices.GetLength(1); j++)
                {
                    var I = Condition.Indices[i, j];
                    if (Condition.Matrices[I].ToString() == MatrixDescription.Description)
                    {
                        Condition.Indices[i, j] = 0;
                    }
                    else
                    {
                        Condition.Indices[i, j] = M.FindIndex(m => m.ToString() == L[I].ToString());
                    }
                }
            }
            Condition.Matrices    = M;
            BrushRectangles       = SPDAssets.GetBrushRectangles(MatrixCount);
            _comboBox.ItemsSource = BrushRectangles;
            Condition             = Condition;
        }
예제 #3
0
        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            var D = Validate();

            if (D == null)
            {
                MessageBox.Show(MainWindow.ErrorMessages[(int)Error]);
            }
            else
            {
                Condition.Matrices.Add(new PointMatrix((float)D[3], (float)D[2], (float)D[1], (float)D[0]));
                BrushRectangles       = SPDAssets.GetBrushRectangles(MatrixCount);
                _comboBox.ItemsSource = BrushRectangles;
                Condition             = Condition;
            }
        }
예제 #4
0
        internal PointMatrixPicker(PointMatrix matrix, int Size1, int Size2, PointMatrixPick condition = null)
        {
            _condition      = condition ?? PointMatrixPick.SingularMatrixCondition(matrix, Size1, Size2);
            BrushRectangles = SPDAssets.GetBrushRectangles((int)MatrixCount);
            if (Condition.Size != Size)
            {
                _condition = Condition.Resize(Size);
            }
            this.Size1 = Size1;
            this.Size2 = Size2;
            Size       = Math.Max(Size1, Size2);
            InitializeComponent();


            _selectedOperation = Operation.None;

            _comboBox.ItemsSource   = BrushRectangles;
            _comboBox.SelectedIndex = 0;

            DataContext     = this;
            _conditionNames = new List <Tuple <string, Tuple <string, bool> > >();
            _conditions     = new Dictionary <Tuple <string, bool>, Func <bool, int, int, bool, InitialConditions> >();
            foreach (var T in new[] { false, true })
            {
                _conditions.Add(new Tuple <string, bool>("Donut", T), InitialConditions.DonutFactory);
                _conditions.Add(new Tuple <string, bool>("Circle", T), InitialConditions.CircleFactory);
                _conditions.Add(new Tuple <string, bool>("Diagonal", T), InitialConditions.DiagonalFactory);
            }
            _conditionNames.AddRange(
                _conditions.Select(
                    k =>
                    new Tuple <string, Tuple <string, bool> >(k.Value(k.Key.Item2, 1, 10, false).Name,
                                                              new Tuple <string, bool>(k.Key.Item1, k.Key.Item2))));
            ComboBoxCopy.ItemsSource = _conditionNames.Select(s => s.Item1);
            _canvalidate             = true;
            Condition = Condition;
        }