+ if(exposeAll)
+ GraphExpose(currBoard, 0, 0, BOARD_WIDTH*(squareSize + lineGap) + lineGap, BOARD_HEIGHT*(squareSize + lineGap) + lineGap);
+ else {
+ for (i = 0; i < BOARD_HEIGHT; i++)
+ for (j = 0; j < BOARD_WIDTH; j++)
+ if(damage[nr][i][j]) {
+ int x, y;
+ if (flipView) {
+ x = lineGap + ((BOARD_WIDTH-1)-j) *
+ (squareSize + lineGap);
+ y = lineGap + i * (squareSize + lineGap);
+ } else {
+ x = lineGap + j * (squareSize + lineGap);
+ y = lineGap + ((BOARD_HEIGHT-1)-i) *
+ (squareSize + lineGap);
+ }
+ if(damage[nr][i][j] & 2) // damage by old or new arrow
+ GraphExpose(currBoard, x - lineGap, y - lineGap, squareSize + 2*lineGap, squareSize + 2*lineGap);
+ else
+ GraphExpose(currBoard, x, y, squareSize, squareSize);
+ damage[nr][i][j] &= 2; // remember damage by newly drawn error in '2' bit, to schedule it for erasure next draw
+ }
+ }
+