Stop calling face_text_pos() for faces that don't need to have text in
[sgt/puzzles] / loopy.c
diff --git a/loopy.c b/loopy.c
index e6bd94c..05d66ab 100644 (file)
--- a/loopy.c
+++ b/loopy.c
@@ -839,8 +839,14 @@ static float *game_colours(frontend *fe, int *ncolours)
     ret[COL_FOREGROUND * 3 + 1] = 0.0F;
     ret[COL_FOREGROUND * 3 + 2] = 0.0F;
 
-    ret[COL_LINEUNKNOWN * 3 + 0] = 0.8F;
-    ret[COL_LINEUNKNOWN * 3 + 1] = 0.8F;
+    /*
+     * We want COL_LINEUNKNOWN to be a yellow which is a bit darker
+     * than the background. (I previously set it to 0.8,0.8,0, but
+     * found that this went badly with the 0.8,0.8,0.8 favoured as a
+     * background by the Java frontend.)
+     */
+    ret[COL_LINEUNKNOWN * 3 + 0] = ret[COL_BACKGROUND * 3 + 0] * 0.9F;
+    ret[COL_LINEUNKNOWN * 3 + 1] = ret[COL_BACKGROUND * 3 + 1] * 0.9F;
     ret[COL_LINEUNKNOWN * 3 + 2] = 0.0F;
 
     ret[COL_HIGHLIGHT * 3 + 0] = 1.0F;
@@ -3729,9 +3735,11 @@ static void game_redraw_in_rect(drawing *dr, game_drawstate *ds,
     draw_rect(dr, x, y, w, h, COL_BACKGROUND);
 
     for (i = 0; i < g->num_faces; i++) {
-        face_text_bbox(ds, g, &g->faces[i], &bx, &by, &bw, &bh);
-        if (boxes_intersect(x, y, w, h, bx, by, bw, bh))
-            game_redraw_clue(dr, ds, state, i);
+        if (state->clues[i] >= 0) {
+            face_text_bbox(ds, g, &g->faces[i], &bx, &by, &bw, &bh);
+            if (boxes_intersect(x, y, w, h, bx, by, bw, bh))
+                game_redraw_clue(dr, ds, state, i);
+        }
     }
     for (phase = 0; phase < NPHASES; phase++) {
         for (i = 0; i < g->num_edges; i++) {