From 4413ef0febdc131ec0ea3661fcd3466063b31494 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 23 Sep 2005 12:50:51 +0000 Subject: [PATCH] Use game_set_size() to set up the temporary drawstate in game_print(), wherever feasible. This fixes a specific bug in Loopy (James H's new field ds->linewidth wasn't being set up, leading to corrupted print output), but I've made the change in all affected files because it also seems like a generally good idea to encourage it for future games, to prevent other problems of this type. There is one slight snag, which is that Map _can't_ do this because its game_set_size() also initialises a blitter. I could fix this by abstracting the common parts of Map's game_set_size() out into a subfunction called by game_set_size() and also called directly by game_print(); alternatively, I could introduce a means of determining whether a `drawing *' was for screen or printing use. Not sure which yet. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@6340 cda61777-01e9-0310-a592-d414129be87e --- dominosa.c | 2 +- lightup.c | 3 +-- loopy.c | 3 ++- map.c | 1 + net.c | 2 +- pattern.c | 2 +- rect.c | 2 +- slant.c | 2 +- solo.c | 2 +- 9 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dominosa.c b/dominosa.c index 6d4e462..f9d55d6 100644 --- a/dominosa.c +++ b/dominosa.c @@ -1711,7 +1711,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); c = print_mono_colour(dr, 1); assert(c == COL_BACKGROUND); c = print_mono_colour(dr, 0); assert(c == COL_TEXT); diff --git a/lightup.c b/lightup.c index b2c9b28..0d22131 100644 --- a/lightup.c +++ b/lightup.c @@ -2175,8 +2175,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; - ds->crad = 3*(tilesize-1)/8; + game_set_size(dr, ds, NULL, tilesize); /* * Border. diff --git a/loopy.c b/loopy.c index 3423465..6006c87 100644 --- a/loopy.c +++ b/loopy.c @@ -2668,7 +2668,8 @@ static void game_print(drawing *dr, game_state *state, int tilesize) int ink = print_mono_colour(dr, 0); int x, y; game_drawstate ads, *ds = &ads; - ds->tilesize = tilesize; + + game_set_size(dr, ds, NULL, tilesize); /* * Dots. I'll deliberately make the dots a bit wider than the diff --git a/map.c b/map.c index b06e664..6302ef7 100644 --- a/map.c +++ b/map.c @@ -2956,6 +2956,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ struct { int tilesize; } ads, *ds = &ads; + /* We can't call game_set_size() here because we don't want a blitter */ ads.tilesize = tilesize; ink = print_mono_colour(dr, 0); diff --git a/net.c b/net.c index 7ad8c56..29a3a27 100644 --- a/net.c +++ b/net.c @@ -2773,7 +2773,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border. diff --git a/pattern.c b/pattern.c index 808b0a8..dd664f5 100644 --- a/pattern.c +++ b/pattern.c @@ -1199,7 +1199,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border. diff --git a/rect.c b/rect.c index b8b1fe6..9b78089 100644 --- a/rect.c +++ b/rect.c @@ -2791,7 +2791,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border. diff --git a/slant.c b/slant.c index 6276c41..c7aa169 100644 --- a/slant.c +++ b/slant.c @@ -2001,7 +2001,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border. diff --git a/solo.c b/solo.c index 05774a4..cb9ac7f 100644 --- a/solo.c +++ b/solo.c @@ -3009,7 +3009,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border. -- 2.11.0