From: Simon Tatham Date: Wed, 9 Jan 2013 08:04:24 +0000 (+0000) Subject: Pattern's display was broken for non-square puzzles, because X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=d1ffb55d264fe082d01cf1520fa84f3415565492;hp=261a784d1ebbbaff5123c6cfc4b64c3dbe6a2046;p=sgt-puzzles.git Pattern's display was broken for non-square puzzles, because draw_numbers() was considerably confused between the width of the clue border at the left and the height of the clue border at the top. Unconfuse it (I think). [originally from svn r9737] --- diff --git a/pattern.c b/pattern.c index ab5be76..25cdd85 100644 --- a/pattern.c +++ b/pattern.c @@ -1310,11 +1310,11 @@ static void draw_numbers(drawing *dr, game_drawstate *ds, game_state *state, if (erase) { if (i < state->w) { draw_rect(dr, TOCOORD(state->w, i), 0, - TILE_SIZE, BORDER + TLBORDER(state->w) * TILE_SIZE, + TILE_SIZE, BORDER + TLBORDER(state->h) * TILE_SIZE, COL_BACKGROUND); } else { draw_rect(dr, 0, TOCOORD(state->h, i - state->w), - BORDER + TLBORDER(state->h) * TILE_SIZE, TILE_SIZE, + BORDER + TLBORDER(state->w) * TILE_SIZE, TILE_SIZE, COL_BACKGROUND); } } @@ -1324,7 +1324,11 @@ static void draw_numbers(drawing *dr, game_drawstate *ds, game_state *state, * tile size. However, if there are more numbers than available * spaces, I have to squash them up a bit. */ - nfit = max(rowlen, TLBORDER(state->h))-1; + if (i < state->w) + nfit = TLBORDER(state->h); + else + nfit = TLBORDER(state->w); + nfit = max(rowlen, nfit) - 1; assert(nfit > 0); for (j = 0; j < rowlen; j++) { @@ -1338,7 +1342,7 @@ static void draw_numbers(drawing *dr, game_drawstate *ds, game_state *state, } else { y = TOCOORD(state->h, i - state->w); x = BORDER + TILE_SIZE * (TLBORDER(state->w)-1); - x -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->h)-1) / nfit; + x -= ((rowlen-j-1)*TILE_SIZE) * (TLBORDER(state->w)-1) / nfit; } sprintf(str, "%d", rowdata[j]); @@ -1348,10 +1352,10 @@ static void draw_numbers(drawing *dr, game_drawstate *ds, game_state *state, if (i < state->w) { draw_update(dr, TOCOORD(state->w, i), 0, - TILE_SIZE, BORDER + TLBORDER(state->w) * TILE_SIZE); + TILE_SIZE, BORDER + TLBORDER(state->h) * TILE_SIZE); } else { draw_update(dr, 0, TOCOORD(state->h, i - state->w), - BORDER + TLBORDER(state->h) * TILE_SIZE, TILE_SIZE); + BORDER + TLBORDER(state->w) * TILE_SIZE, TILE_SIZE); } }