Hardwiring the grid line width to 1 is really bad for printing. Use
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 25 Feb 2007 15:57:35 +0000 (15:57 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 25 Feb 2007 15:57:35 +0000 (15:57 +0000)
a slightly more conventional method of drawing the grid lines, and
thereby fix printing.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@7335 cda61777-01e9-0310-a592-d414129be87e

filling.c

index 82efcca..fba86e5 100644 (file)
--- a/filling.c
+++ b/filling.c
@@ -1122,18 +1122,32 @@ static void draw_square(drawing *dr, game_drawstate *ds, int x, int y,
     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 @@ static void draw_square(drawing *dr, game_drawstate *ds, int x, int y,
                   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 @@ static void game_print(drawing *dr, game_state *state, int tilesize)
     /*
      * Draw grid.
      */
+    print_line_width(dr, TILE_SIZE / 64);
     draw_grid(dr, ds, state, NULL, FALSE, borders, FALSE);
 
     /*