// todo drag lines up/down

        private static SlopedLineVectorized GetLine(Coord from, Coord to)
        {
            SlopedLineVectorized l1 = new SlopedLineVectorized();

            l1.Segments.Add(new LineSegment(l1, from, to, SegmentType.Line));
            return(l1);
        }
            public void PaintLine_horizontal()
            {
                var line = new SlopedLineVectorized();

                line.Segments.Add(new LineSegment(line, new Coord(0, 0), new Coord(0, 1), SegmentType.Line));

                var res = PaintOneLine(line);

                Test.AssertString(
                    @"|
|", res);
            }
Exemplo n.º 3
0
        private static void PaintSlopedLine(Canvass canvass, SlopedLineVectorized slopedLineVectorized, Model model)
        {
            foreach (var segment in slopedLineVectorized.Segments)
            {
                var 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 (var i = 0; i <= delta; i++)
                {
                    var newPos = new Coord(segment.From.X + i * direction, segment.From.Y);
                    PaintLineOrCross(canvass, newPos, c, segment.Id, model);
                }

                direction = segment.From.Y < segment.To.Y ? 1 : -1;
                delta     = Math.Abs(segment.From.Y - segment.To.Y);
                for (var i = 0; i <= delta; i++)
                {
                    var newPos = new Coord(segment.From.X, segment.From.Y + i * direction);
                    PaintLineOrCross(canvass, newPos, c, segment.Id, model);
                }
            }
        }