예제 #1
0
 static void AssertNumbers(LayerBoundary lb, int[] expectedNumbers)
 {
     Assert.AreEqual(lb.Numbers.Length, expectedNumbers.Length);
     for (int i = 0; i < expectedNumbers.Length; i++)
     {
         Assert.AreEqual(expectedNumbers[i], lb.Numbers[i]);
     }
 }
        public override RenderedSvg RenderColumn()
        {
            RenderedSvg result     = base.RenderColumn();
            double      width      = result.RenderedSize.Width;
            SvgGroup    linesGroup = new SvgGroup();

            SvgColourServer blackPaint = new SvgColourServer(System.Drawing.Color.Black);

            int minRank = int.MaxValue;

            LayerBoundary[] boundaries = vm.Boundaries.OrderBy(b => b.Level).ToArray();

            var rank = boundaries.Select(b => b.Rank).Min();

            for (int i = 0; i < boundaries.Length; i++)
            {
                LayerBoundary boundary = boundaries[i];
                SvgLine       line     = new SvgLine();
                line.StartX = Helpers.dtos(0.0);
                line.EndX   = Helpers.dtos(width);
                line.StartY = Helpers.dtos(boundary.Level);
                line.EndY   = Helpers.dtos(boundary.Level);
                line.Stroke = blackPaint;
                linesGroup.Children.Add(line);

                minRank = Math.Min(minRank, boundary.Rank);

                string textStr = string.Format("{0}", boundary.Numbers[rank]);

                //putting layer number as well
                SvgText text2 = new SvgText(textStr);
                text2.Transforms.Add(new Svg.Transforms.SvgTranslate(labelXoffset, (float)(boundary.Level + labelYoffset)));
                text2.FontSize = Helpers.dtos(10.0);
                text2.Fill     = blackPaint;
                linesGroup.Children.Add(text2);
            }
            result.SVG = linesGroup;
            return(result);
        }