From 99f5596e8d7064bf36f106cfb1a1e4d64396d396 Mon Sep 17 00:00:00 2001 From: Daniel Suh <23denial@gmail.com> Date: Thu, 16 May 2024 23:41:50 -0400 Subject: [PATCH] shortened for loops --- ci/release/changelogs/next.md | 1 + d2renderers/d2svg/d2svg.go | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 10845d9dd..f0d6d64d8 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -3,6 +3,7 @@ #### Improvements 🧹 - Opacity 0 shapes no longer have a label mask which made any segment of connections going through them lower opacity [#1940](https://github.com/terrastruct/d2/pull/1940) +- Bidirectional connections are now animated in opposite directions rather than one direction [#1939](https://github.com/terrastruct/d2/pull/1939) #### Bugfixes ⛑️ diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 918b6c2bf..2a500574b 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -539,8 +539,9 @@ func getPathStringIncrement(pathType *string) (int, error) { func pathLength(pathData []string) (float64, error) { var x, y, pathLength float64 var prevPosition geo.Point + var increment int - for i := 0; i < len(pathData); { + for i := 0; i < len(pathData); i += increment { switch pathData[i] { case "M": x, _ = strconv.ParseFloat(pathData[i+1], 64) @@ -565,13 +566,13 @@ func pathLength(pathData []string) (float64, error) { } prevPosition = geo.Point{X: x, Y: y} - increment, err := getPathStringIncrement(&pathData[i]) + + incr, err := getPathStringIncrement(&pathData[i]) + increment = incr if err != nil { return 0, err } - - i += increment } return pathLength, nil @@ -582,6 +583,7 @@ func splitPath(path string, percentage float64) (string, string, error) { var sumPathLens, curPathLen, x, y float64 var prevPosition geo.Point var path1, path2 string + var increment int pastHalf := false pathData := strings.Split(path, " ") @@ -591,9 +593,7 @@ func splitPath(path string, percentage float64) (string, string, error) { return "", "", err } - i := 0 - - for i < len(pathData) { + for i := 0; i < len(pathData); i += increment { switch pathData[i] { case "M": @@ -670,13 +670,13 @@ func splitPath(path string, percentage float64) (string, string, error) { pastHalf = true } - increment, err := getPathStringIncrement(&pathData[i]) + incr, err := getPathStringIncrement(&pathData[i]) + increment = incr if err != nil { return "", "", err } - i += increment prevPosition = geo.Point{X: x, Y: y} }