Exemple #1
0
 private void SetDefaultHarnessOrder()
 {
     if (string.IsNullOrEmpty(HarnessOrder.Trim()))
     {
         HarnessOrder = string.Join(", ", Harnesses.Select(h => h.Letter.ToLower()));
     }
 }
Exemple #2
0
        private bool AnyDuplicateHarnessLetters(out string letters)
        {
            var dups = Harnesses.Select(h => h.Letter.ToLower()).GroupBy(s => s).Where(grp => grp.Count() > 1).Select(grp => grp.Key);

            if (dups.Any())
            {
                letters = string.Join(", ", dups);
                return(true);
            }

            letters = null;
            return(false);
        }
Exemple #3
0
        public void Draw(Control drawingSurface)
        {
            int width  = drawingSurface.ClientRectangle.Width / SquareSize;
            int height = drawingSurface.ClientRectangle.Height / SquareSize;

            if (AnyDuplicateHarnessLetters(out string letters))
            {
                throw new ArgumentException($"Can't have duplicate harness letter: {letters}");
            }

            SetDefaultHarnessOrder();

            var harnessGroups = GetHarnessGroups();
            var allHarnesses  = Harnesses.ToDictionary(row => row.Letter.ToLower());

            ValidateHarnessLetters(harnessGroups, allHarnesses);

            _warpSquares = new HashSet <Point>();

            using (Graphics g = drawingSurface.CreateGraphics())
            {
                for (int y = 1; y < height; y++)
                {
                    int index = (y - 1) % harnessGroups.Count;

                    foreach (var harnessLetter in harnessGroups[index])
                    {
                        var pattern = allHarnesses[harnessLetter].GetPattern(width);

                        for (int x = 1; x < width; x++)
                        {
                            if (pattern.Contains(x))
                            {
                                DrawBox(g, x, y, WarpColor);
                                _warpSquares.Add(new Point(x, y));
                            }
                            else
                            {
                                if (!HasWarp(x, y))
                                {
                                    DrawBox(g, x, y, WeftColor);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #4
0
        public void AlertUnusedHarnesses(DataGridView dataGridView)
        {
            SetDefaultHarnessOrder();

            var harnessesDefined = Harnesses.Select(h => h.Letter.ToLower());
            var harnessesInUse   = HarnessOrder.ToCharArray().Select(c => c.ToString().ToLower());
            var unused           = harnessesDefined.Except(harnessesInUse);

            foreach (DataGridViewRow row in dataGridView.Rows)
            {
                if (row.IsNewRow)
                {
                    continue;
                }

                row.ErrorText = null;
                if (unused.Contains(row.Cells["colLetter"].Value.ToString().ToLower()))
                {
                    row.ErrorText = "Your pattern doesn't use this harness";
                }
            }
        }