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); }
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; } }