aboutsummaryrefslogtreecommitdiff
path: root/loopy.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2023-05-07 21:41:50 +0100
committerSimon Tatham <anakin@pobox.com>2023-05-07 21:41:50 +0100
commit8237b02be4e6f92a9e1aebbed23d7b5de0e3543c (patch)
treeffed3cd000abc76439b5fe726c6a5f2e16b285c5 /loopy.c
parentd0f97926e80482d9cbb3679165a09ca6e695f83f (diff)
downloadpuzzles-8237b02be4e6f92a9e1aebbed23d7b5de0e3543c.zip
puzzles-8237b02be4e6f92a9e1aebbed23d7b5de0e3543c.tar.gz
puzzles-8237b02be4e6f92a9e1aebbed23d7b5de0e3543c.tar.bz2
puzzles-8237b02be4e6f92a9e1aebbed23d7b5de0e3543c.tar.xz
Loopy: fix redraw issue due to enlarged dots.
dot_bbox() wasn't taking into account the new size of the dots, so sometimes a rectangle of the grid would be redrawn without a partial dot it should have contained, because nothing had noticed that that dot overlapped that rectangle. Actually I'm not sure why this bug wasn't happening _before_ I enlarged the dots, because the previous code seemed to think dots had a fixed size in pixels regardless of tile size, which wasn't even true _before_ my recent commit 4de9836bc8c36cd. Perhaps it did occur, just never while I was watching.
Diffstat (limited to 'loopy.c')
-rw-r--r--loopy.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/loopy.c b/loopy.c
index d138709..9c822f2 100644
--- a/loopy.c
+++ b/loopy.c
@@ -3317,13 +3317,19 @@ static void dot_bbox(game_drawstate *ds, grid *g, grid_dot *d,
int *x, int *y, int *w, int *h)
{
int x1, y1;
+ int xmin, xmax, ymin, ymax;
grid_to_screen(ds, g, d->x, d->y, &x1, &y1);
- *x = x1 - 2;
- *y = y1 - 2;
- *w = 5;
- *h = 5;
+ xmin = x1 - (ds->tilesize * 5 + 63) / 64;
+ xmax = x1 + (ds->tilesize * 5 + 63) / 64;
+ ymin = y1 - (ds->tilesize * 5 + 63) / 64;
+ ymax = y1 + (ds->tilesize * 5 + 63) / 64;
+
+ *x = xmin;
+ *y = ymin;
+ *w = xmax - xmin + 1;
+ *h = ymax - ymin + 1;
}
static const int loopy_line_redraw_phases[] = {