From a6a221971e4670ff43b4284f056c78d2bf7a9303 Mon Sep 17 00:00:00 2001 From: Dj <43033058+DjDeveloperr@users.noreply.github.com> Date: Sat, 7 Oct 2023 09:59:39 +0530 Subject: [PATCH] feat(Canvas): add support for displaying output in Jupyter Notebook (#60) --- src/canvas.ts | 6 ++++++ src/svgcanvas.ts | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/src/canvas.ts b/src/canvas.ts index 4202cd0..9e50b3e 100644 --- a/src/canvas.ts +++ b/src/canvas.ts @@ -209,6 +209,12 @@ export class Canvas { flush() { if (this[_gpu]) sk_canvas_flush(this[_ptr]); } + + [Symbol.for("Jupyter.display")]() { + return { + "image/png": encodeBase64(this.encode("png")), + }; + } } /** diff --git a/src/svgcanvas.ts b/src/svgcanvas.ts index d9211f5..cd286e0 100644 --- a/src/svgcanvas.ts +++ b/src/svgcanvas.ts @@ -114,6 +114,13 @@ export class SvgCanvas { ); const text = new TextDecoder().decode(buffer); sk_data_free(skdata); + Object.defineProperty(text, Symbol.for("Jupyter.display"), { + value: function (this: string) { + return { + "image/svg+xml": this, + }; + }, + }); return text; }