board_t *newboard = initboard (xsize, ysize);
- for (i = 0; (i + xoffset < board->xsize) && (i < xsize); i++) {
- for (j = 0; (j + yoffset < board->ysize) && (j < ysize); j++) {
- *getcell (newboard, i, j) = *getcell (board, i + xoffset, j + yoffset);
+ for (i = 0; (i + max (0, xoffset) < board->xsize) && (i - min (0, xoffset) < xsize); i++) {
+ for (j = 0; (j + max (0, yoffset) < board->ysize) && (j - min (0, yoffset) < ysize); j++) {
+ *getcell (newboard, i - min(0, xoffset), j - min (0, yoffset)) =
+ *getcell (board, i + max (0, xoffset), j + max (0, yoffset));
}
}
}
}
- return resizeboard (board, imax - imin + 1, jmax - jmin + 1, imin, jmin);
+ board_t *newboard = initboard (0, 0);
+ copyboard (newboard, board);
+ return resizeboard (newboard, imax - imin + 1, jmax - jmin + 1, imin, jmin);
}
void freeboard (board_t *board)
} \
} while (0)
+#define max(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
+
+#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; })
+
int strmaxlen (char *str, char ch);
board_t *initboard (int xsize, int ysize);
#include "function.h"
#include "type.h"
-#define max(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
-
/* static variables */
char *progname = NULL;
char *version = "0.1";
}
board_t *board = NULL;
if (playground) {
- board = resizeboard (playground, xsize, ysize, 0, 0);
+ board = resizeboard (playground, xsize, ysize, (playground->xsize - xsize) / 2, (playground->ysize - ysize) / 2);
} else {
board = initboard (xsize, ysize);
}
savename = savewindow (savelen, xsave, ysave);
if (savename != NULL) {
board_t *miniboard = shrinkboard (board);
- board_t *temp = resizeboard (miniboard, miniboard->xsize + 2, miniboard->ysize + 2, 1, 1);
+ resizeboard (miniboard, miniboard->xsize + 2, miniboard->ysize + 2, -1, -1);
+ ptr = saveboard (miniboard, "Board");
freeboard (miniboard);
- ptr = saveboard (temp, "Board");
- freeboard (temp);
if (writedata (savename, ptr)) {
VERBOSE (WARNING, printf ("issue writing Board\n"));
}