diff options
| -rw-r--r-- | server/tools/src/book_html.css | 1 | ||||
| -rw-r--r-- | server/tools/src/diagram_svg.rs | 18 | 
2 files changed, 12 insertions, 7 deletions
| diff --git a/server/tools/src/book_html.css b/server/tools/src/book_html.css index fb60eb60..d64e9ef1 100644 --- a/server/tools/src/book_html.css +++ b/server/tools/src/book_html.css @@ -37,4 +37,5 @@ body {      aspect-ratio: 0.707;      width: 30em;      height: auto; +    overflow-y: auto;  }
\ No newline at end of file diff --git a/server/tools/src/diagram_svg.rs b/server/tools/src/diagram_svg.rs index a5d09316..0fc75668 100644 --- a/server/tools/src/diagram_svg.rs +++ b/server/tools/src/diagram_svg.rs @@ -72,21 +72,25 @@ pub fn diagram_svg(data: &Gamedata, diagram: &Diagram) -> Result<String> {          let src_node = &diagram.nodes[edge.src];          let dst_node = &diagram.nodes[edge.dst];          let src = node_edge_connect_pos(src_node, dst_node); -        let dst = node_edge_connect_pos(dst_node, src_node); +        let mut dst = node_edge_connect_pos(dst_node, src_node); + +        let dir = (src - dst).normalize_or_zero(); +        let tip0 = dst; +        let tip1 = dst + (dir + dir.perp() * 0.5) * 10.; +        let tip2 = dst + (dir + dir.perp() * -0.5) * 10.; +        dst += dir * 5.; // prevent miter line cap from peeking out + +        // line path          writeln!(              out,              r#"<path fill="none" stroke="black" stroke-width="2" d="M{} {} L{} {}" />"#,              src.x, src.y, dst.x, dst.y,          )?; - -        // Array tip -        let dir = (src - dst).normalize_or_zero(); -        let c1 = dst + (dir + dir.perp() * 0.5) * 10.; -        let c2 = dst + (dir + dir.perp() * -0.5) * 10.; +        // tip path          writeln!(              out,              r#"<path fill="black" stroke="none" d="M{} {} L{} {} L{} {} Z" />"#, -            dst.x, dst.y, c1.x, c1.y, c2.x, c2.y +            tip0.x, tip0.y, tip1.x, tip1.y, tip2.x, tip2.y          )?;      } | 
