From 8f903d72e1ebcefdf2263877b982f055d09ed646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Fo=C5=A1n=C3=A1r?= Date: Sat, 7 Jan 2023 10:46:37 +0100 Subject: [PATCH] add --sketch_bg option --- d2renderers/d2svg/d2svg.go | 19 +++++++++---------- main.go | 16 +++++++++++----- watch.go | 3 ++- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index cc0073184..f2b364e0a 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -62,9 +62,10 @@ var sketchStyleCSS string var mdCSS string type RenderOpts struct { - Pad int - Sketch bool - ThemeID int64 + Pad int + Sketch bool + SketchBg bool + ThemeID int64 } func setViewbox(writer io.Writer, diagram *d2target.Diagram, pad int, bgColor string) (width int, height int) { @@ -1106,8 +1107,10 @@ var fitToScreenScript string func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { var sketchRunner *d2sketch.Runner pad := DEFAULT_PADDING + sketchBg := true if opts != nil { pad = opts.Pad + sketchBg = opts.SketchBg if opts.Sketch { var err error sketchRunner, err = d2sketch.InitSketchVM() @@ -1128,11 +1131,7 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { if sketchRunner != nil { styleCSS2 = "\n" + sketchStyleCSS } - buf.WriteString(fmt.Sprintf(``, styleCSS, styleCSS2)) + buf.WriteString(fmt.Sprintf(``, styleCSS, styleCSS2)) // this script won't run in --watch mode because script tags are ignored when added via el.innerHTML = element // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML @@ -1148,8 +1147,8 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { if hasMarkdown { fmt.Fprintf(buf, ``, mdCSS) } - if sketchRunner != nil { - fmt.Fprintf(buf, d2sketch.DefineFillPattern()) + if sketchRunner != nil && sketchBg { + fmt.Fprint(buf, d2sketch.DefineFillPattern()) } // only define shadow filter if a shape uses it diff --git a/main.go b/main.go index eacb717ff..659260cec 100644 --- a/main.go +++ b/main.go @@ -75,6 +75,11 @@ func run(ctx context.Context, ms *xmain.State) (err error) { return err } + sketchBgFlag, err := ms.Opts.Bool("D2_SKT_BG", "sketch_bg", "", true, "make the background look like it was sketched too") + if err != nil { + return err + } + ps, err := d2plugin.ListPlugins(ctx) if err != nil { return err @@ -209,7 +214,7 @@ func run(ctx context.Context, ms *xmain.State) (err error) { ctx, cancel := context.WithTimeout(ctx, time.Minute*2) defer cancel() - _, written, err := compile(ctx, ms, plugin, *sketchFlag, *padFlag, *themeFlag, inputPath, outputPath, *bundleFlag, pw.Page) + _, written, err := compile(ctx, ms, plugin, *sketchFlag, *sketchBgFlag, *padFlag, *themeFlag, inputPath, outputPath, *bundleFlag, pw.Page) if err != nil { if written { return fmt.Errorf("failed to fully compile (partial render written): %w", err) @@ -220,7 +225,7 @@ func run(ctx context.Context, ms *xmain.State) (err error) { return nil } -func compile(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin, sketch bool, pad, themeID int64, inputPath, outputPath string, bundle bool, page playwright.Page) (_ []byte, written bool, _ error) { +func compile(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin, sketch bool, sketchBg bool, pad, themeID int64, inputPath, outputPath string, bundle bool, page playwright.Page) (_ []byte, written bool, _ error) { input, err := ms.ReadPath(inputPath) if err != nil { return nil, false, err @@ -246,9 +251,10 @@ func compile(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin, sketc } svg, err := d2svg.Render(diagram, &d2svg.RenderOpts{ - Pad: int(pad), - Sketch: sketch, - ThemeID: themeID, + Pad: int(pad), + Sketch: sketch, + SketchBg: sketchBg, + ThemeID: themeID, }) if err != nil { return nil, false, err diff --git a/watch.go b/watch.go index 9263ccfba..530ad7d70 100644 --- a/watch.go +++ b/watch.go @@ -43,6 +43,7 @@ type watcherOpts struct { themeID int64 pad int64 sketch bool + sketchBg bool host string port string inputPath string @@ -356,7 +357,7 @@ func (w *watcher) compileLoop(ctx context.Context) error { w.pw = newPW } - svg, _, err := compile(ctx, w.ms, w.layoutPlugin, w.sketch, w.pad, w.themeID, w.inputPath, w.outputPath, w.bundle, w.pw.Page) + svg, _, err := compile(ctx, w.ms, w.layoutPlugin, w.sketch, w.sketchBg, w.pad, w.themeID, w.inputPath, w.outputPath, w.bundle, w.pw.Page) errs := "" if err != nil { if len(svg) > 0 {