Use game_set_size() to set up the temporary drawstate in
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 23 Sep 2005 12:50:51 +0000 (12:50 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 23 Sep 2005 12:50:51 +0000 (12:50 +0000)
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
lightup.c
loopy.c
map.c
net.c
pattern.c
rect.c
slant.c
solo.c

index 6d4e462..f9d55d6 100644 (file)
@@ -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);
index b2c9b28..0d22131 100644 (file)
--- 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 (file)
--- 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 (file)
--- 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 (file)
--- 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.
index 808b0a8..dd664f5 100644 (file)
--- 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 (file)
--- 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 (file)
--- 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 (file)
--- 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.