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 @@ -112233445566778899none arrow triangle diamond diamond filled cf-many cf-many-required cf-one cf-one-required +112233445566778899none arrow triangle diamond diamond filled cf-many cf-many-required cf-one cf-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 @@ -112233445566778899none arrow triangle diamond diamond filled cf-many cf-many-required cf-one cf-one-required +112233445566778899none arrow triangle diamond diamond filled cf-many cf-many-required cf-one cf-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 @@ -ab hello +ab hello \ 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 @@ -ab hello +ab hello \ 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 @@ + + + + + + + + +abc + + + \ 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_logindatetime You don't have to know how the computer works,just how to work the computer. +auserslast_logindatetime You 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_logindatetime You don't have to know how the computer works,just how to work the computer. +auserslast_logindatetime You 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 @@
  • Served data logging
  • GraphQLFederated Strato Column

    Tweet/user content hydration, visibility filtering

    -
    TLS-API (being deprecated)CrMixerEarlyBirdUtagSpaceCommunities iPhone web HTTP Android Thrift RPC Candidate Fetch Feature Hydration Candidate sources +TLS-API (being deprecated)CrMixerEarlyBirdUtagSpaceCommunities iPhone web HTTP Android Thrift RPC Candidate Fetch Feature Hydration Candidate sources diff --git a/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg index 10cc45d72..2708b4e07 100644 --- a/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg @@ -798,7 +798,7 @@
  • Served data logging
  • GraphQLFederated Strato Column

    Tweet/user content hydration, visibility filtering

    -
    TLS-API (being deprecated)CrMixerEarlyBirdUtagSpaceCommunities iPhone web HTTP Android Thrift RPC Candidate Fetch Feature Hydration Candidate sources +TLS-API (being deprecated)CrMixerEarlyBirdUtagSpaceCommunities iPhone web HTTP Android Thrift RPC Candidate Fetch Feature Hydration Candidate sources diff --git a/e2etests-cli/testdata/TestCLI_E2E/hello_world_png_sketch.exp.png b/e2etests-cli/testdata/TestCLI_E2E/hello_world_png_sketch.exp.png index 242579ed1..e421fbb38 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/hello_world_png_sketch.exp.png and b/e2etests-cli/testdata/TestCLI_E2E/hello_world_png_sketch.exp.png differ diff --git a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf index 113e4dbf4..45cc6e5d6 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf and b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf differ