X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/c8c23a7f1ce8fe9328a075e5933639cf8d604fda..f867188fe2dd8cc3fdb20931cf60ab99eb6a4601:/keen.c diff --git a/keen.c b/keen.c index 8133183..fe41496 100644 --- a/keen.c +++ b/keen.c @@ -281,8 +281,8 @@ static int solver_common(struct latin_solver *solver, void *vctx, int diff) for (box = 0; box < ctx->nboxes; box++) { int *sq = ctx->boxlist + ctx->boxes[box]; int n = ctx->boxes[box+1] - ctx->boxes[box]; - int value = ctx->clues[box] & ~CMASK; - int op = ctx->clues[box] & CMASK; + long value = ctx->clues[box] & ~CMASK; + long op = ctx->clues[box] & CMASK; if (diff == DIFF_HARD) { for (i = 0; i < n; i++) @@ -1748,8 +1748,8 @@ static void game_free_drawstate(drawing *dr, game_drawstate *ds) sfree(ds); } -void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, - int x, int y, long tile) +static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, + int x, int y, long tile) { int w = clues->w /* , a = w*w */; int tx, ty, tw, th; @@ -1844,7 +1844,7 @@ void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, /* Count the pencil marks required. */ for (i = 1, npencil = 0; i <= w; i++) - if (tile & (1 << (i + DF_PENCIL_SHIFT))) + if (tile & (1L << (i + DF_PENCIL_SHIFT))) npencil++; if (npencil) { @@ -1859,6 +1859,13 @@ void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, pr = pl + TILESIZE - GRIDEXTRA; pt = ty + GRIDEXTRA; pb = pt + TILESIZE - GRIDEXTRA; + if (dsf_canonify(clues->dsf, y*w+x) == y*w+x) { + /* + * Make space for the clue text. + */ + pt += TILESIZE/4; + /* minph--; */ + } /* * We arrange our pencil marks in a grid layout, with @@ -1914,7 +1921,7 @@ void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, * Now actually draw the pencil marks. */ for (i = 1, j = 0; i <= w; i++) - if (tile & (1 << (i + DF_PENCIL_SHIFT))) { + if (tile & (1L << (i + DF_PENCIL_SHIFT))) { int dx = j % pw, dy = j / pw; str[1] = '\0'; @@ -2240,6 +2247,10 @@ static void game_print(drawing *dr, game_state *state, int tilesize) FONT_VARIABLE, TILESIZE/2, ALIGN_VCENTRE | ALIGN_HCENTRE, ink, str); } + + sfree(minus_sign); + sfree(times_sign); + sfree(divide_sign); } #ifdef COMBINED