diff options
| author | Simon Tatham <anakin@pobox.com> | 2013-04-07 10:24:35 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2013-04-07 10:24:35 +0000 |
| commit | c55e95485483f8a5b66ab4af3a372495d88389ee (patch) | |
| tree | f10b87ec70d99130039b0e241598f565322b6796 | |
| parent | ea25b606cbadaf573b71b132c0d2d5081c8516ab (diff) | |
| download | puzzles-c55e95485483f8a5b66ab4af3a372495d88389ee.zip puzzles-c55e95485483f8a5b66ab4af3a372495d88389ee.tar.gz puzzles-c55e95485483f8a5b66ab4af3a372495d88389ee.tar.bz2 puzzles-c55e95485483f8a5b66ab4af3a372495d88389ee.tar.xz | |
Add a new midend function to reset the tile size to the puzzle's
default (but still counting the <puzzle>_TILESIZE user preference
environment variables, where available).
[originally from svn r9820]
| -rw-r--r-- | devel.but | 16 | ||||
| -rw-r--r-- | midend.c | 43 | ||||
| -rw-r--r-- | puzzles.h | 1 |
3 files changed, 41 insertions, 19 deletions
@@ -2812,6 +2812,22 @@ that \e{and} set the \c{user_size} flag, though! The midend relies on the frontend calling \cw{midend_new_game()} (\k{midend-new-game}) before calling \cw{midend_size()}. +\H{midend-reset-tilesize} \cw{midend_reset_tilesize()} + +\c void midend_reset_tilesize(midend *me); + +This function resets the midend's preferred tile size to that of the +standard puzzle. + +As discussed in \k{midend-size}, puzzle resizes are typically +'sticky', in that once the user has dragged the puzzle to a different +window size, the resulting tile size will be remembered and used when +the puzzle configuration changes. If you \e{don't} want that, e.g. if +you want to provide a command to explicitly reset the puzzle size back +to its default, then you can call this just before calling +\cw{midend_size()} (which, in turn, you would probably call with +\c{user_size} set to \cw{FALSE}). + \H{midend-new-game} \cw{midend_new_game()} \c void midend_new_game(midend *me); @@ -94,6 +94,29 @@ struct midend { } \ } while (0) +void midend_reset_tilesize(midend *me) +{ + me->preferred_tilesize = me->ourgame->preferred_tilesize; + { + /* + * Allow an environment-based override for the default tile + * size by defining a variable along the lines of + * `NET_TILESIZE=15'. + */ + + char buf[80], *e; + int j, k, ts; + + sprintf(buf, "%s_TILESIZE", me->ourgame->name); + for (j = k = 0; buf[j]; j++) + if (!isspace((unsigned char)buf[j])) + buf[k++] = toupper((unsigned char)buf[j]); + buf[k] = '\0'; + if ((e = getenv(buf)) != NULL && sscanf(e, "%d", &ts) == 1 && ts > 0) + me->preferred_tilesize = ts; + } +} + midend *midend_new(frontend *fe, const game *ourgame, const drawing_api *drapi, void *drhandle) { @@ -153,25 +176,7 @@ midend *midend_new(frontend *fe, const game *ourgame, else me->drawing = NULL; - me->preferred_tilesize = ourgame->preferred_tilesize; - { - /* - * Allow an environment-based override for the default tile - * size by defining a variable along the lines of - * `NET_TILESIZE=15'. - */ - - char buf[80], *e; - int j, k, ts; - - sprintf(buf, "%s_TILESIZE", me->ourgame->name); - for (j = k = 0; buf[j]; j++) - if (!isspace((unsigned char)buf[j])) - buf[k++] = toupper((unsigned char)buf[j]); - buf[k] = '\0'; - if ((e = getenv(buf)) != NULL && sscanf(e, "%d", &ts) == 1 && ts > 0) - me->preferred_tilesize = ts; - } + midend_reset_tilesize(me); sfree(randseed); @@ -232,6 +232,7 @@ const game *midend_which_game(midend *me); void midend_set_params(midend *me, game_params *params); game_params *midend_get_params(midend *me); void midend_size(midend *me, int *x, int *y, int user_size); +void midend_reset_tilesize(midend *me); void midend_new_game(midend *me); void midend_restart_game(midend *me); void midend_stop_anim(midend *me); |