summaryrefslogtreecommitdiff
path: root/content/handlers/javascript/duktape/HTMLCanvasElement.bnd
diff options
context:
space:
mode:
Diffstat (limited to 'content/handlers/javascript/duktape/HTMLCanvasElement.bnd')
-rw-r--r--content/handlers/javascript/duktape/HTMLCanvasElement.bnd33
1 files changed, 31 insertions, 2 deletions
diff --git a/content/handlers/javascript/duktape/HTMLCanvasElement.bnd b/content/handlers/javascript/duktape/HTMLCanvasElement.bnd
index 189ddb0f4..9fa46ff0b 100644
--- a/content/handlers/javascript/duktape/HTMLCanvasElement.bnd
+++ b/content/handlers/javascript/duktape/HTMLCanvasElement.bnd
@@ -1,6 +1,7 @@
/* HTML canvas element binding using duktape and libdom
*
* Copyright 2020 Vincent Sanders <vince@netsurf-browser.org>
+ * Copyright 2020 Daniel Silverstone <dsilvers@netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -11,8 +12,36 @@
init HTMLCanvasElement(struct dom_html_element *html_canvas_element::html_element);
getter HTMLCanvasElement::width();
-setter HTMLCanvasElement::width();
+/* setter HTMLCanvasElement::width(); */
getter HTMLCanvasElement::height();
-setter HTMLCanvasElement::height();
+/* setter HTMLCanvasElement::height(); */
+
+method HTMLCanvasElement::getContext()
+%{
+ /* modetype[, {options}] */
+ const char *modetype = duk_to_string(ctx, 0);
+ if (strcmp(modetype, "2d") != 0) {
+ duk_push_null(ctx);
+ return 1;
+ }
+
+ duk_push_this(ctx);
+ duk_get_prop_string(ctx, -1, MAGIC(Context2D));
+ if (duk_is_undefined(ctx, -1)) {
+ duk_pop(ctx);
+
+ duk_push_pointer(ctx, ((node_private_t*)priv)->node);
+ if (dukky_create_object(ctx,
+ PROTO_NAME(CANVASRENDERINGCONTEXT2D),
+ 1) != DUK_EXEC_SUCCESS) {
+ return duk_error(ctx,
+ DUK_ERR_ERROR,
+ "Unable to create CanvasRenderingContext2D");
+ }
+ duk_dup(ctx, -1);
+ duk_put_prop_string(ctx, -3, MAGIC(Context2D));
+ }
+ return 1;
+%}