X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/2c9308077cfcf702a04a37b7d633e912f05e3aee..HEAD:/nestedvm.c diff --git a/nestedvm.c b/nestedvm.c index 0a23a30..c859526 100644 --- a/nestedvm.c +++ b/nestedvm.c @@ -35,7 +35,7 @@ struct frontend { struct timeval last_time; config_item *cfg; int cfg_which, cfgret; - int ox, oy; + int ox, oy, w, h; }; static frontend *_fe; @@ -61,6 +61,7 @@ void nestedvm_status_bar(void *handle, char *text) void nestedvm_start_draw(void *handle) { frontend *fe = (frontend *)handle; + _call_java(5, 0, fe->w, fe->h); _call_java(4, 1, fe->ox, fe->oy); } @@ -167,6 +168,16 @@ void nestedvm_end_draw(void *handle) _call_java(4,2,0,0); } +char *nestedvm_text_fallback(void *handle, const char *const *strings, + int nstrings) +{ + /* + * We assume Java can cope with any UTF-8 likely to be emitted + * by a puzzle. + */ + return dupstr(strings[0]); +} + const struct drawing_api nestedvm_drawing = { nestedvm_draw_text, nestedvm_draw_rect, @@ -184,7 +195,8 @@ const struct drawing_api nestedvm_drawing = { nestedvm_blitter_save, nestedvm_blitter_load, NULL, NULL, NULL, NULL, NULL, NULL, /* {begin,end}_{doc,page,puzzle} */ - NULL, /* line_width */ + NULL, NULL, /* line_width, line_dotted */ + nestedvm_text_fallback, }; int jcallback_key_event(int x, int y, int keyval) @@ -207,6 +219,8 @@ int jcallback_resize(int width, int height) midend_size(fe->me, &x, &y, TRUE); fe->ox = (width - x) / 2; fe->oy = (height - y) / 2; + fe->w = x; + fe->h = y; midend_force_redraw(fe->me); return 0; } @@ -376,6 +390,8 @@ int main(int argc, char **argv) _fe = snew(frontend); _fe->timer_active = FALSE; _fe->me = midend_new(_fe, &thegame, &nestedvm_drawing, _fe); + if (argc > 1) + midend_game_id(_fe->me, argv[1]); /* ignore failure */ midend_new_game(_fe->me); if ((n = midend_num_presets(_fe->me)) > 0) {