Hardwiring the grid line width to 1 is really bad for printing. Use

a slightly more conventional method of drawing the grid lines, and
thereby fix printing.

[originally from svn r7335]
This commit is contained in:
Simon Tatham
2007-02-25 15:57:35 +00:00
parent bc64fc8481
commit ca96ca1ac9

View File

@ -1121,18 +1121,32 @@ static void draw_square(drawing *dr, game_drawstate *ds, int x, int y,
assert(dr); assert(dr);
assert(ds); assert(ds);
/*
* Clip to the grid square.
*/
clip(dr, BORDER + x*TILE_SIZE, BORDER + y*TILE_SIZE,
TILE_SIZE, TILE_SIZE);
/* /*
* Clear the square. * Clear the square.
*/ */
draw_rect(dr, draw_rect(dr,
BORDER + x*TILE_SIZE + 1, BORDER + x*TILE_SIZE,
BORDER + y*TILE_SIZE + 1, BORDER + y*TILE_SIZE,
TILE_SIZE - 1, TILE_SIZE,
TILE_SIZE - 1, TILE_SIZE,
(flags & CURSOR_BG ? COL_HIGHLIGHT : (flags & CURSOR_BG ? COL_HIGHLIGHT :
flags & ERROR_BG ? COL_ERROR : flags & ERROR_BG ? COL_ERROR :
flags & CORRECT_BG ? COL_CORRECT : COL_BACKGROUND)); flags & CORRECT_BG ? COL_CORRECT : COL_BACKGROUND));
/*
* Draw the grid lines.
*/
draw_line(dr, BORDER + x*TILE_SIZE, BORDER + y*TILE_SIZE,
BORDER + (x+1)*TILE_SIZE, BORDER + y*TILE_SIZE, COL_GRID);
draw_line(dr, BORDER + x*TILE_SIZE, BORDER + y*TILE_SIZE,
BORDER + x*TILE_SIZE, BORDER + (y+1)*TILE_SIZE, COL_GRID);
/* /*
* Draw the number. * Draw the number.
*/ */
@ -1210,11 +1224,13 @@ static void draw_square(drawing *dr, game_drawstate *ds, int x, int y,
BORDER_WIDTH, BORDER_WIDTH,
COL_GRID); COL_GRID);
unclip(dr);
draw_update(dr, draw_update(dr,
BORDER + x*TILE_SIZE - 1, BORDER + x*TILE_SIZE,
BORDER + y*TILE_SIZE - 1, BORDER + y*TILE_SIZE,
TILE_SIZE + 3, TILE_SIZE,
TILE_SIZE + 3); TILE_SIZE);
} }
static void draw_grid(drawing *dr, game_drawstate *ds, game_state *state, static void draw_grid(drawing *dr, game_drawstate *ds, game_state *state,
@ -1463,6 +1479,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize)
/* /*
* Draw grid. * Draw grid.
*/ */
print_line_width(dr, TILE_SIZE / 64);
draw_grid(dr, ds, state, NULL, FALSE, borders, FALSE); draw_grid(dr, ds, state, NULL, FALSE, borders, FALSE);
/* /*