Ejemplo n.º 1
0
        private List <List <IPaletteItem> > GenerateRows(TextPatternStart textPatternStart)
        {
            var result = new List <List <IPaletteItem> >(this.RowCount);
            var rows   = GetRowCoordinates();

            if (textPatternStart == TextPatternStart.BottomRight)
            {
                rows = rows.Reverse();
            }

            int rowIndex = 0;

            foreach (var rowCoordinates in rows)
            {
                List <IPaletteItem> row = new List <IPaletteItem>();

                int x = rowCoordinates.Start.X;
                int y = rowCoordinates.Start.Y;
                for (; x <= rowCoordinates.End.X && y >= rowCoordinates.End.Y; x++, y--)
                {
                    row.Add(this[x, y]);
                }

                if (rowIndex++ % 2 == 0)
                {
                    row.Reverse();
                }

                result.Add(row);
            }

            return(result);
        }
Ejemplo n.º 2
0
        public string GenerateTextPattern(TextPatternStart textPatternStart = TextPatternStart.BottomRight)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine($"Pattern starts {(textPatternStart == TextPatternStart.TopLeft ? "top left" : "bottom right")}");
            sb.AppendLine("Odd rows (1, 3 etc) are down rows");
            sb.AppendLine();

            int rowNumber = 1;

            foreach (List <IPaletteItem> row in GenerateRows(textPatternStart))
            {
                IPaletteItem lastColor      = null;
                int          lastColorCount = 0;

                Action <bool> appendColor = (includeComma) =>
                {
                    if (lastColorCount > 0)
                    {
                        string colorString = lastColor.Text;
                        sb.Append(lastColorCount);
                        sb.Append(colorString);
                        if (includeComma)
                        {
                            sb.Append(",");
                        }
                    }

                    lastColorCount = 0;
                };

                sb.Append(rowNumber++);
                sb.Append(":");
                sb.Append("\t");

                for (int i = 0; i < row.Count; i++)
                {
                    if (row[i] != lastColor)
                    {
                        appendColor(true);
                        lastColor = row[i];
                    }

                    lastColorCount++;
                }

                appendColor(false);
                sb.AppendFormat("({0})", row.Count);
                sb.AppendLine();
            }

            return(sb.ToString());
        }