diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md
index f69885d70..f87fd6635 100644
--- a/ci/release/changelogs/next.md
+++ b/ci/release/changelogs/next.md
@@ -4,6 +4,7 @@
#### Improvements 🧹
- `dagre` layouts that have a connection where one endpoint is a container is much improved. [#1011](https://github.com/terrastruct/d2/pull/1011)
+- `sketch` draws connections with less roughness, which especially improves look of corner bends in ELK. [#1014](https://github.com/terrastruct/d2/pull/1014)
#### Bugfixes ⛑️
diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index a0815aa62..a41446c90 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -316,7 +316,7 @@ func Paths(r *Runner, shape d2target.Shape, paths []string) (string, error) {
}
func Connection(r *Runner, connection d2target.Connection, path, attrs string) (string, error) {
- roughness := 1.0
+ roughness := 0.5
js := fmt.Sprintf(`node = rc.path("%s", {roughness: %f, seed: 1});`, path, roughness)
paths, err := computeRoughPathData(r, js)
if err != nil {
diff --git a/d2renderers/d2sketch/sketch_test.go b/d2renderers/d2sketch/sketch_test.go
index ae7c94049..3425d904e 100644
--- a/d2renderers/d2sketch/sketch_test.go
+++ b/d2renderers/d2sketch/sketch_test.go
@@ -18,6 +18,7 @@ import (
"oss.terrastruct.com/util-go/go2"
"oss.terrastruct.com/d2/d2layouts/d2dagrelayout"
+ "oss.terrastruct.com/d2/d2layouts/d2elklayout"
"oss.terrastruct.com/d2/d2lib"
"oss.terrastruct.com/d2/d2renderers/d2fonts"
"oss.terrastruct.com/d2/d2renderers/d2svg"
@@ -39,6 +40,15 @@ func TestSketch(t *testing.T) {
script: `winter.snow -> summer.sun
`,
},
+ {
+ name: "elk corners",
+ engine: "elk",
+ script: `a -> b
+b -> c
+a -> c
+c -> a
+ `,
+ },
{
name: "animated",
script: `winter.snow -> summer.sun -> trees -> winter.snow: { style.animated: true }
@@ -1015,7 +1025,7 @@ something
json: jsonb {constraint: unique}
last_updated: timestamp with time zone
-
+
style: {
fill: red
border-radius: 0
@@ -1027,7 +1037,7 @@ something
field: "[]string"
method(a uint64): (x, y int)
-
+
style: {
border-radius: 0
}
@@ -1057,6 +1067,7 @@ type testCase struct {
themeID int64
script string
skip bool
+ engine string
}
func runa(t *testing.T, tcs []testCase) {
@@ -1083,9 +1094,13 @@ func run(t *testing.T, tc testCase) {
return
}
+ layout := d2dagrelayout.DefaultLayout
+ if strings.EqualFold(tc.engine, "elk") {
+ layout = d2elklayout.DefaultLayout
+ }
diagram, _, err := d2lib.Compile(ctx, tc.script, &d2lib.CompileOptions{
Ruler: ruler,
- Layout: d2dagrelayout.DefaultLayout,
+ Layout: layout,
FontFamily: go2.Pointer(d2fonts.HandDrawn),
})
if !tassert.Nil(t, err) {
diff --git a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
index b33141985..e436ed8f0 100644
--- a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
@@ -25,7 +25,7 @@
-rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/all_shapes_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/all_shapes_dark/sketch.exp.svg
index aa7d6a726..de98cae5e 100644
--- a/d2renderers/d2sketch/testdata/all_shapes_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/all_shapes_dark/sketch.exp.svg
@@ -23,7 +23,7 @@
-rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/animated/sketch.exp.svg b/d2renderers/d2sketch/testdata/animated/sketch.exp.svg
index 1e4298089..f8fce6982 100644
--- a/d2renderers/d2sketch/testdata/animated/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/animated/sketch.exp.svg
@@ -38,7 +38,7 @@
-wintersummertreessnowsun
+wintersummertreessnowsun
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/animated_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/animated_dark/sketch.exp.svg
index 231c60851..5c0d1360a 100644
--- a/d2renderers/d2sketch/testdata/animated_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/animated_dark/sketch.exp.svg
@@ -36,7 +36,7 @@
-wintersummertreessnowsun
+wintersummertreessnowsun
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg b/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg
index ece88cad8..3140a29a0 100644
--- a/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg
@@ -32,7 +32,7 @@
-112233445566778899nonearrowtrianglediamonddiamond filledcf-manycf-many-requiredcf-onecf-one-required
+112233445566778899nonearrowtrianglediamonddiamond filledcf-manycf-many-requiredcf-onecf-one-required
diff --git a/d2renderers/d2sketch/testdata/arrowheads_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/arrowheads_dark/sketch.exp.svg
index c2e70afa1..8b864ab39 100644
--- a/d2renderers/d2sketch/testdata/arrowheads_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/arrowheads_dark/sketch.exp.svg
@@ -30,7 +30,7 @@
-112233445566778899nonearrowtrianglediamonddiamond filledcf-manycf-many-requiredcf-onecf-one-required
+112233445566778899nonearrowtrianglediamonddiamond filledcf-manycf-many-requiredcf-onecf-one-required
diff --git a/d2renderers/d2sketch/testdata/basic/sketch.exp.svg b/d2renderers/d2sketch/testdata/basic/sketch.exp.svg
index 441f3ad56..9028ca108 100644
--- a/d2renderers/d2sketch/testdata/basic/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/basic/sketch.exp.svg
@@ -25,7 +25,7 @@
-ab
+ab
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/basic_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/basic_dark/sketch.exp.svg
index 2dfc1381e..ed69bcaa3 100644
--- a/d2renderers/d2sketch/testdata/basic_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/basic_dark/sketch.exp.svg
@@ -23,7 +23,7 @@
-ab
+ab
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg b/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg
index 3e16067ee..3d95861d1 100644
--- a/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg
@@ -32,7 +32,7 @@
-wintersummersnowsun
+wintersummersnowsun
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/child_to_child_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/child_to_child_dark/sketch.exp.svg
index e4e821882..178536a4d 100644
--- a/d2renderers/d2sketch/testdata/child_to_child_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/child_to_child_dark/sketch.exp.svg
@@ -30,7 +30,7 @@
-wintersummersnowsun
+wintersummersnowsun
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg b/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg
index 9453489db..47a7091ff 100644
--- a/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg
@@ -32,7 +32,7 @@
-abhello
+abhello
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/connection_label_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/connection_label_dark/sketch.exp.svg
index 67ef19283..685509514 100644
--- a/d2renderers/d2sketch/testdata/connection_label_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/connection_label_dark/sketch.exp.svg
@@ -30,7 +30,7 @@
-abhello
+abhello
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/crows_feet/sketch.exp.svg b/d2renderers/d2sketch/testdata/crows_feet/sketch.exp.svg
index 119f6efb7..6f26e5909 100644
--- a/d2renderers/d2sketch/testdata/crows_feet/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/crows_feet/sketch.exp.svg
@@ -25,7 +25,7 @@
-a1b1a2b2a3b3c1d1c2d2c3d3e1f1e2f2e3f3g1h1g2h2g3h3cdf
+a1b1a2b2a3b3c1d1c2d2c3d3e1f1e2f2e3f3g1h1g2h2g3h3cdf
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/crows_feet_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/crows_feet_dark/sketch.exp.svg
index 9503be7a3..6e1cd996a 100644
--- a/d2renderers/d2sketch/testdata/crows_feet_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/crows_feet_dark/sketch.exp.svg
@@ -23,7 +23,7 @@
-a1b1a2b2a3b3c1d1c2d2c3d3e1f1e2f2e3f3g1h1g2h2g3h3cdf
+a1b1a2b2a3b3c1d1c2d2c3d3e1f1e2f2e3f3g1h1g2h2g3h3cdf
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/elk_corners/sketch.exp.svg b/d2renderers/d2sketch/testdata/elk_corners/sketch.exp.svg
new file mode 100644
index 000000000..4a32081cf
--- /dev/null
+++ b/d2renderers/d2sketch/testdata/elk_corners/sketch.exp.svg
@@ -0,0 +1,31 @@
+
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/opacity/sketch.exp.svg b/d2renderers/d2sketch/testdata/opacity/sketch.exp.svg
index 66b8b62d7..b257c1503 100644
--- a/d2renderers/d2sketch/testdata/opacity/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/opacity/sketch.exp.svg
@@ -782,7 +782,7 @@
x
linux: because a PC is a terrible thing to waste
-
auserslast_logindatetimeYou don't have to know how the computer works,just how to work the computer.
+auserslast_logindatetimeYou don't have to know how the computer works,just how to work the computer.
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/opacity_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/opacity_dark/sketch.exp.svg
index c8c185a10..c2cf899fa 100644
--- a/d2renderers/d2sketch/testdata/opacity_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/opacity_dark/sketch.exp.svg
@@ -780,7 +780,7 @@
x
linux: because a PC is a terrible thing to waste
-
auserslast_logindatetimeYou don't have to know how the computer works,just how to work the computer.
+auserslast_logindatetimeYou don't have to know how the computer works,just how to work the computer.
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/root-fill/sketch.exp.svg b/d2renderers/d2sketch/testdata/root-fill/sketch.exp.svg
index 95684cf96..8ff5d6945 100644
--- a/d2renderers/d2sketch/testdata/root-fill/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/root-fill/sketch.exp.svg
@@ -781,7 +781,7 @@
Staging
Dispatch to Site
-
+
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg
index c1b503e2c..f4bdc07d7 100644
--- a/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg
@@ -25,7 +25,7 @@
-usersidintnamestringemailstringpasswordstringlast_logindatetimeproductsidintpricedecimalskustringnamestringordersidintuser_idintproduct_idintshipmentsidintorder_idinttracking_numberstringPKstatusstring
+usersidintnamestringemailstringpasswordstringlast_logindatetimeproductsidintpricedecimalskustringnamestringordersidintuser_idintproduct_idintshipmentsidintorder_idinttracking_numberstringPKstatusstring
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/sql_tables_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/sql_tables_dark/sketch.exp.svg
index d8f6b4d1a..0fc4b3355 100644
--- a/d2renderers/d2sketch/testdata/sql_tables_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/sql_tables_dark/sketch.exp.svg
@@ -23,7 +23,7 @@
-usersidintnamestringemailstringpasswordstringlast_logindatetimeproductsidintpricedecimalskustringnamestringordersidintuser_idintproduct_idintshipmentsidintorder_idinttracking_numberstringPKstatusstring
+usersidintnamestringemailstringpasswordstringlast_logindatetimeproductsidintpricedecimalskustringnamestringordersidintuser_idintproduct_idintshipmentsidintorder_idinttracking_numberstringPKstatusstring
\ No newline at end of file
diff --git a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
index 7f09c305b..e388b67df 100644
--- a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
@@ -798,7 +798,7 @@