Hardwiring the grid line width to 1 is really bad for printing. Use
[sgt/puzzles] / filling.c
index ac5b6d9..fba86e5 100644 (file)
--- a/filling.c
+++ b/filling.c
@@ -962,9 +962,13 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
     {
         const int i = w*ui->y + ui->x;
         char buf[64];
-        sprintf(buf, "%d_%d", i, button);
         ui->x = ui->y = -1;
-        return dupstr(buf);
+       if (state->board[i] == button) {
+           return "";                 /* no change - just update ui */
+       } else {
+           sprintf(buf, "%d_%d", i, button);
+           return dupstr(buf);
+       }
     }
 }
 
@@ -1118,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) {
@@ -1205,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,
@@ -1459,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);
 
     /*