aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2022-10-29 21:45:11 +0100
committerBen Harris <bjh21@bjh21.me.uk>2022-12-10 18:33:00 +0000
commit33b5c484295657678ea22db3d57fd19cda96a45e (patch)
treedce3896f56cbc60d6b3cd30a17028e2639c76f1b
parent14eb35da4aa8a66a05012af9860a7088dbf21c6d (diff)
downloadpuzzles-33b5c484295657678ea22db3d57fd19cda96a45e.zip
puzzles-33b5c484295657678ea22db3d57fd19cda96a45e.tar.gz
puzzles-33b5c484295657678ea22db3d57fd19cda96a45e.tar.bz2
puzzles-33b5c484295657678ea22db3d57fd19cda96a45e.tar.xz
js: Add a new function whereby C can ask JS for a preferred board size
Currently JS has no opinion.
-rw-r--r--emcc.c5
-rw-r--r--emcclib.js14
2 files changed, 18 insertions, 1 deletions
diff --git a/emcc.c b/emcc.c
index 75ca396..d970251 100644
--- a/emcc.c
+++ b/emcc.c
@@ -83,6 +83,7 @@ extern void js_canvas_copy_to_blitter(int id, int x, int y, int w, int h);
extern void js_canvas_copy_from_blitter(int id, int x, int y, int w, int h);
extern void js_canvas_remove_statusbar(void);
extern void js_canvas_set_statusbar(const char *text);
+extern bool js_canvas_get_preferred_size(int *wp, int *hp);
extern void js_canvas_set_size(int w, int h);
extern double js_get_device_pixel_ratio();
@@ -192,8 +193,10 @@ static int canvas_w, canvas_h;
static void resize()
{
int w, h;
+ bool user;
w = h = INT_MAX;
- midend_size(me, &w, &h, false, js_get_device_pixel_ratio());
+ user = js_canvas_get_preferred_size(&w, &h);
+ midend_size(me, &w, &h, user, js_get_device_pixel_ratio());
js_canvas_set_size(w, h);
canvas_w = w;
canvas_h = h;
diff --git a/emcclib.js b/emcclib.js
index b63c6b2..60dbbf9 100644
--- a/emcclib.js
+++ b/emcclib.js
@@ -564,6 +564,20 @@ mergeInto(LibraryManager.library, {
},
/*
+ * bool js_canvas_get_preferred_size(int *wp, int *hp);
+ *
+ * This is called before calling midend_size() to set a puzzle to
+ * the default size. If the JavaScript layer has an opinion about
+ * how big the puzzle should be, it can overwrite *wp and *hp with
+ * its preferred size, and return true if the "user" parameter to
+ * midend_size() should be true. Otherwise it should leave them
+ * alone and return false.
+ */
+ js_canvas_get_preferred_size: function(wp, hp) {
+ return false;
+ },
+
+ /*
* void js_canvas_set_size(int w, int h);
*
* Set the size of the puzzle canvas. Called whenever the size of