chiark / gitweb /
Tents: mark squares as non-tents with {Shift,Control}-cursor keys.
[sgt-puzzles.git] / nestedvm.c
index 757b65fd8a726a3e1c5d64e73c11b07fab9136ea..c8595265395fb7ae02cb1ff134735d5e2e541b80 100644 (file)
@@ -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;
 }