// todo drag lines up/down private static SlopedLine GetLine(Coord from, Coord to) { SlopedLine l1 = new SlopedLine(); l1.Segments.Add(new LineSegment(l1, from, to, SegmentType.Line)); return(l1); }
public void PaintLine_horizontal() { var line = new SlopedLine(); line.Segments.Add(new LineSegment(line, new Coord(0, 0), new Coord(0, 1), SegmentType.Line)); var res = PaintOneLine(line); Assert.AreEqual( @"| |", res); }
private static void PaintSlopedLine(Canvass canvass, SlopedLine slopedLine) { foreach (var segment in slopedLine.Segments) { char c = GetLineChar(segment.Direction, segment.Type); var delta = Math.Abs(segment.From.X - segment.To.X); int direction; direction = segment.From.X < segment.To.X ? 1 : -1; for (int i = 0; i <= delta; i++) { var newPos = new Coord(segment.From.X + (i * direction), segment.From.Y); PaintLineOrCross(canvass, newPos, c, segment.Id); } direction = segment.From.Y < segment.To.Y ? 1 : -1; delta = Math.Abs(segment.From.Y - segment.To.Y); for (int i = 0; i <= delta; i++) { var newPos = new Coord(segment.From.X, segment.From.Y + (i * direction)); PaintLineOrCross(canvass, newPos, c, segment.Id); } } }