Example #1
0
        // 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);
            }
Example #3
0
        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);
                }
            }
        }