diff options
Diffstat (limited to 'content/handlers/javascript/duktape/HTMLCanvasElement.bnd')
-rw-r--r-- | content/handlers/javascript/duktape/HTMLCanvasElement.bnd | 33 |
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; +%} |