diff options
| author | Ben Harris <bjh21@bjh21.me.uk> | 2022-10-29 21:45:11 +0100 |
|---|---|---|
| committer | Ben Harris <bjh21@bjh21.me.uk> | 2022-12-10 18:33:00 +0000 |
| commit | 33b5c484295657678ea22db3d57fd19cda96a45e (patch) | |
| tree | dce3896f56cbc60d6b3cd30a17028e2639c76f1b | |
| parent | 14eb35da4aa8a66a05012af9860a7088dbf21c6d (diff) | |
| download | puzzles-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.c | 5 | ||||
| -rw-r--r-- | emcclib.js | 14 |
2 files changed, 18 insertions, 1 deletions
@@ -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; @@ -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 |