public void ReduceColor(ColorMul oldcolor, ColorMul newcolor) { if (Color_array.Select(z => z.color == oldcolor).Count() == 0) { return; } else if (Color_array.Select(z => z.color == newcolor).Count() == 0) { Color_array.Find(z => z.color == oldcolor).color = newcolor; } else { List<Point> oldpoints = Color_array.Find(z => z.color == oldcolor).points; Color_array.Find(z => z.color == newcolor).points.AddRange(oldpoints); Color_array.Remove(Color_array.Find(z => z.color == oldcolor)); } return; }
public void AddPoint(ColorMul color, int x, int y) { if (x < 0 || x >= weigth || y < 0 || y >= height) { return; } Point p = new Point() { x = x, y = y }; ColorMul oldColor = null; /*if color is new*/ if (Color_array.Select(z => z.color == color).Count() == 0 || Color_array.Find(z => z.color == color) == null) { ColorArray ca = new ColorArray() { color = color, points = new List<Point>() }; ca.points.Add(p); Color_array.Add(ca); } else { /*Check unique of point by coordinates*/ foreach (ColorArray ar in Color_array) { if (ar.points.Contains(p)) { oldColor = ar.color; break; } } if (oldColor == color) { /*it means that point already exists with the same color*/ /*do nothing*/ } else if (oldColor == null) { /*it means that point is new and we need add it*/ Color_array.Find(z => z.color == color).points.Add(p); } else { /*point exist with another color. It means we need to change color of the point*/ Color_array.Find(z => z.color == oldColor).points.Remove(p); Color_array.Find(z => z.color == color).points.Add(p); } } }
public ColorMul[,] GetColorGrid() { int i = 0; ColorMul[,] grid = new ColorMul[this.height,this.weigth]; foreach (ColorArray ca in this.Color_array) { ColorMul x = ca.color; x.im = i < 10 ? "0" + (i).ToString() : (i).ToString(); foreach (Point p in ca.points) { grid[p.y, p.x] = x; } i++; } return grid; }
public void AddPoint(ColorMul color, IList<Point>Points) { if (Color_array.FindAll(z => z.color == color).Count() == 0 || Color_array.Find(z => z.color == color) == null) { ColorArray ca = new ColorArray() { color = color, points = Points.ToList()}; Color_array.Add(ca); } else { Color_array.Find(z => z.color == color).points.AddRange(Points); } }