#include #include #include #include #include using namespace std; char bmp[77][77]; int xm, ym; void reset(int x, int y) { xm = x; ym = y; bmp[0][0] = bmp[x+1][0] = bmp[0][y+1] = bmp[x+1][y+1] = '+'; for (int i = 1; i <= x; ++i) bmp[i][0] = bmp[i][y + 1] = '-'; for (int i = 1; i <= y; ++i) bmp[0][i] = bmp[x + 1][i] = '|'; for (int i = 1; i <= x; ++i) for (int j = 1; j <= y; ++j) bmp[i][j] = ' '; } void blend(int x, int y, char ch) { char o = bmp[x][y]; char v; if (o == ' ') v = ch; else if (o == ch) v = ch; else if ((ch == '|' || ch == '-') && (o == '|' || o == '-' || o == '+')) v = '+'; else if ((ch == '\\' || ch == '/') && (o == '\\' || o == '/' || o == 'x')) v = 'x'; else v = '*'; bmp[x][y] = v; } void print() { for (int y = 0; y <= ym + 1; ++y) { for (int x = 0; x <= xm + 1; ++x) putchar(bmp[x][y]); printf("\n"); } printf("\n"); } void point(int x, int y) { blend(x, y, 'o'); } void text(int x, int y, char* txt) { while (x <= xm && *txt != '\0') { blend(x++, y, *(txt++)); } } void swap(int& a, int& b) { if (a > b) { int c = a; a = b; b = c; } } void clear(int x1, int y1, int x2, int y2) { swap(x1, x2); swap(y1, y2); for (int x = x1; x <= x2; ++x) for (int y = y1; y <= y2; ++y) bmp[x][y] = ' '; } void hline(int x1, int x2, int y) { swap (x1, x2); for (int x = x1; x <= x2; ++x) blend(x, y, '-'); } void vline(int y1, int y2, int x) { swap (y1, y2); for (int y = y1; y <= y2; ++y) blend(x, y, '|'); } int sign(int x) { if (x < 0) return -1; else return 1; } void line(int x1, int y1, int x2, int y2) { if (y1 == y2) hline(x1, x2, y1); else if (x1 == x2) vline(y1, y2, x1); else { int dx = sign(x2 - x1); int dy = sign(y2 - y1); char ch = (dx * dy == 1) ? '\\' : '/'; x2 += dx; int y = y1; for (int x = x1; x != x2; x += dx) { blend(x, y, ch); y += dy; } } } int main() { int x, y; while (true) { scanf("%d%d", &x, &y); if (!x && !y) break; reset(x, y); char cmd[20]; while (true) { scanf("%s", cmd); int x1, y1, x2, y2; if (strcmp(cmd, "PRINT") == 0) { break; } else if (strcmp(cmd, "POINT") == 0) { scanf("%d%d", &x1, &y1); point(x1, y1); } else if (strcmp(cmd, "TEXT") == 0) { scanf("%d%d", &x1, &y1); char txt[100000]; scanf("%s", txt); text(x1, y1, txt); } else if (strcmp(cmd, "LINE") == 0) { scanf("%d%d%d%d", &x1, &y1, &x2, &y2); line(x1, y1, x2, y2); } else if (strcmp(cmd, "CLEAR") == 0) { scanf("%d%d%d%d", &x1, &y1, &x2, &y2); clear(x1, y1, x2, y2); } } print(); } return 0; }