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);
 }
        public SvgRoot RenderDiagram(ClassDiagram classDiagram)
        {
            _diagramWidth = CalculateDiagramWidth(classDiagram);
            _svgRoot = new SvgRoot(100, _diagramWidth);

            var rect = new SvgRectangle(_svgRoot, 0.5, 0.5, _diagramWidth - 1, 100);
            rect.StrokeWidth = 1;
            rect.Stroke = "#979797";
            rect.Fill = "#FFFFFF";
            _svgRoot.AppendChild(rect.XmlElement);

            double position = 20.5d;
            position = RenderHeader(classDiagram, position);
            position = RenderAllRowSections(classDiagram, position);

            rect.Height = position - 9.5;
            _svgRoot.Height = position - 5;            
            return _svgRoot;
        }
        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);
        }