shithub: puzzles

Download patch

ref: ca96ca1ac9784e09193c3e9cdc8b9f5af017ce5a
parent: bc64fc84812903a887b6134b69b317c8b385c323
author: Simon Tatham <[email protected]>
date: Sun Feb 25 10:57:35 EST 2007

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]

--- a/filling.c
+++ b/filling.c
@@ -1122,18 +1122,32 @@
     assert(ds);
 
     /*
+     * Clip to the grid square.
+     */
+    clip(dr, BORDER + x*TILE_SIZE, BORDER + y*TILE_SIZE,
+	 TILE_SIZE, TILE_SIZE);
+
+    /*
      * Clear the square.
      */
     draw_rect(dr,
-              BORDER + x*TILE_SIZE + 1,
-              BORDER + y*TILE_SIZE + 1,
-              TILE_SIZE - 1,
-              TILE_SIZE - 1,
+              BORDER + x*TILE_SIZE,
+              BORDER + y*TILE_SIZE,
+              TILE_SIZE,
+              TILE_SIZE,
               (flags & CURSOR_BG ? COL_HIGHLIGHT :
                flags & ERROR_BG ? COL_ERROR :
                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.
      */
     if (n) {
@@ -1209,12 +1223,14 @@
                   BORDER_WIDTH,
                   BORDER_WIDTH,
                   COL_GRID);
-    
+
+    unclip(dr);
+
     draw_update(dr,
-		BORDER + x*TILE_SIZE - 1,
-		BORDER + y*TILE_SIZE - 1,
-		TILE_SIZE + 3,
-		TILE_SIZE + 3);
+		BORDER + x*TILE_SIZE,
+		BORDER + y*TILE_SIZE,
+		TILE_SIZE,
+		TILE_SIZE);
 }
 
 static void draw_grid(drawing *dr, game_drawstate *ds, game_state *state,
@@ -1463,6 +1479,7 @@
     /*
      * Draw grid.
      */
+    print_line_width(dr, TILE_SIZE / 64);
     draw_grid(dr, ds, state, NULL, FALSE, borders, FALSE);
 
     /*