Пример #1
0
        private void DrawBaseTypes()
        {
            var offset = _leftMargin;

            for (int i = 0; i < _classDiagram.BaseTypes.Count; i++)
            {
                var diagram     = _classDiagramSvgRenderer.RenderDiagram(_classDiagram.BaseTypes[i]);
                var diagramSize = new Size(
                    _classDiagramSvgRenderer.CalculateDiagramWidth(_classDiagram.BaseTypes[i]),
                    _classDiagramSvgRenderer.CalculateDiagramHeight(_classDiagram.BaseTypes[i]));

                var positionX = (i * 50) + offset;
                var positionY = 0;

                var translate = diagram.CreateAttribute("transform");
                translate.Value = string.Format("translate({0}, {1})", positionX.ToString("0.00", CultureInfo.InvariantCulture), positionY.ToString("0.00", CultureInfo.InvariantCulture));
                diagram["svg"]["g"].Attributes.Append(translate);

                _mainDiagram.ImportAdd((SvgElement)diagram["svg"]["g"]);

                offset += diagramSize.Width;

                var pathGraphic = new SvgGraphic(_mainDiagram);

                //line
                if (i == 0)
                {
                    var path = new SvgPath(_mainDiagram, string.Format("M{0},{1}L{0},{2}",
                                                                       (positionX + 50).ToString("0.00", CultureInfo.InvariantCulture),
                                                                       (positionY + diagramSize.Height).ToString("0.00", CultureInfo.InvariantCulture),
                                                                       _topMargin.ToString("0.00", CultureInfo.InvariantCulture)));
                    path.StrokeWidth = 1;
                    path.Stroke      = "#979797";
                    pathGraphic.Add(path);
                }

                //arrow
                var startX = positionX + 50;
                var startY = diagramSize.Height;

                var points = string.Format("{0},{1} {2},{3} {4},{3}",
                                           startX.ToString("0.00", CultureInfo.InvariantCulture),
                                           startY.ToString("0.00", CultureInfo.InvariantCulture),
                                           (startX - 5).ToString("0.00", CultureInfo.InvariantCulture),
                                           (startY + 10).ToString("0.00", CultureInfo.InvariantCulture),
                                           (startX + 5).ToString("0.00", CultureInfo.InvariantCulture));
                var arrow = new SvgPolygon(_mainDiagram, points);
                arrow.Stroke = "#979797";
                arrow.Fill   = "#FFFFFF";

                pathGraphic.Add(arrow);

                _mainDiagram.Add(pathGraphic);
            }
        }
        private void RenderFrame()
        {
            var rect = new SvgRectangle(_svgRoot, 0.5, 0.5, _diagramSize.Width, _diagramSize.Height);

            rect.StrokeWidth = 1;
            rect.Stroke      = "#979797";
            rect.Fill        = "#FFFFFF";
            _svgGraphic.Add(rect);
        }
        private void DrawNode(SequenceDiagramNode node)
        {
            var textWidth    = node.Text.GetWidth(12, Fonts.FontLight);
            var textPosition = new Point(_diagramSize.Width, 10);
            var textSize     = new Size(textWidth + 20, 35);

            _diagramSize = new Size(_diagramSize.Width + textWidth + 40, _diagramSize.Height);

            var rectangle = new SvgRectangle(_svgRoot, textPosition.X, textPosition.Y, textSize.Width, textSize.Height);

            rectangle.StrokeWidth = 1;
            rectangle.Stroke      = "#979797";
            rectangle.Fill        = "#FFFFFF";

            var link = new SvgLink(_svgRoot, node.Text, string.Format("{{{{type-link:{0}}}}}", node.TypeIdentifier), textPosition.X + 15, textPosition.Y + 22);

            link.Text.FontSize = 12;

            _svgGraphic.Add(rectangle);
            _svgGraphic.Add(link);

            _nodeMiddlePoints.Add(node.ID, textSize.Width / 2 + textPosition.X);
        }
Пример #4
0
        private void DrawUses()
        {
            var leftOffset = _leftMargin + _classDiagramSvgRenderer.CalculateDiagramWidth(_classDiagram);
            var offset     = leftOffset;

            for (int i = 0; i < _classDiagram.Uses.Count; i++)
            {
                var diagram     = _classDiagramSvgRenderer.RenderDiagram(_classDiagram.Uses[i]);
                var diagramSize = new Size(
                    _classDiagramSvgRenderer.CalculateDiagramWidth(_classDiagram.Uses[i]),
                    _classDiagramSvgRenderer.CalculateDiagramHeight(_classDiagram.Uses[i]));

                var positionX = (i * 50) + offset + 50;
                var positionY = _topMargin + 50;

                var translate = diagram.CreateAttribute("transform");
                translate.Value = string.Format("translate({0}, {1})", positionX.ToString("0.00", CultureInfo.InvariantCulture), positionY.ToString("0.00", CultureInfo.InvariantCulture));
                diagram["svg"]["g"].Attributes.Append(translate);

                _mainDiagram.ImportAdd((SvgElement)diagram["svg"]["g"]);

                var pathGraphic = new SvgGraphic(_mainDiagram);

                var path = new SvgPath(_mainDiagram, string.Format("M{0},{1}L{0},{2}",
                                                                   (positionX + (diagramSize.Width / 2)).ToString("0.00", CultureInfo.InvariantCulture),
                                                                   positionY.ToString("0.00", CultureInfo.InvariantCulture),
                                                                   (positionY - 25).ToString("0.00", CultureInfo.InvariantCulture)));
                path.StrokeWidth = 1;
                path.Stroke      = "#979797";
                pathGraphic.Add(path);

                path = new SvgPath(_mainDiagram, string.Format("M{0},{1}L{2},{3}",
                                                               (positionX + (diagramSize.Width / 2) - 5).ToString("0.00", CultureInfo.InvariantCulture),
                                                               (positionY - 10).ToString("0.00", CultureInfo.InvariantCulture),
                                                               (positionX + (diagramSize.Width / 2)).ToString("0.00", CultureInfo.InvariantCulture),
                                                               positionY.ToString("0.00", CultureInfo.InvariantCulture)));
                path.StrokeWidth = 1;
                path.Stroke      = "#979797";
                pathGraphic.Add(path);

                path = new SvgPath(_mainDiagram, string.Format("M{0},{1}L{2},{3}",
                                                               (positionX + (diagramSize.Width / 2) + 5).ToString("0.00", CultureInfo.InvariantCulture),
                                                               (positionY - 10).ToString("0.00", CultureInfo.InvariantCulture),
                                                               (positionX + (diagramSize.Width / 2)).ToString("0.00", CultureInfo.InvariantCulture),
                                                               positionY.ToString("0.00", CultureInfo.InvariantCulture)));
                path.StrokeWidth = 1;
                path.Stroke      = "#979797";
                pathGraphic.Add(path);

                if (i == _classDiagram.Uses.Count - 1)
                {
                    path = new SvgPath(_mainDiagram, string.Format("M{0},{2}L{1},{2}",
                                                                   (positionX + (diagramSize.Width / 2)).ToString("0.00", CultureInfo.InvariantCulture),
                                                                   leftOffset.ToString("0.00", CultureInfo.InvariantCulture),
                                                                   (positionY - 25.5d).ToString("0.00", CultureInfo.InvariantCulture)));
                    path.StrokeWidth = 1;
                    path.Stroke      = "#979797";
                    pathGraphic.Add(path);
                }

                _mainDiagram.Add(pathGraphic);
                offset += diagramSize.Width;
            }
        }