/*
* disptext.c	print BIG using 3 lines for each character.
*
*		Gary Hoggard	16 May 1992
*/


#include "r4.h"
#include <curses.h>

char *c[26][3] =
	{
	" /~\\ ",
	"|---|",
	"|   |",
	"|~~\\",
	"|--(",
	"|__/",
	" /~~\\",
	"|    ",
	" \\__/",
	"|~~\\ ",
	"|   |",
	"|__/ ",
	"|~~~",
	"|-- ",
	"|___",
	"|~~~",
	"|-- ",
	"|   ",
	" /~~\\",
	"|  __",
	" \\__|",
	"|   |",
	"|---|",
	"|   |",
	"~|~",
	" | ",
	"_|_",
	"   |",
	"   |",
	"\\_/ ",
	"|  /",
	"|-< ",
	"|  \\",
	"|   ",
	"|   ",
	"|___",
	"|\\  /|",
	"| \\/ |",
	"|    |",
	"|\\  |",
	"| \\ |",
	"|  \\|",
	" /~\\ ",
	"|   |",
	" \\_/ ",
	"|~~\\",
	"|__/",
	"|   ",
	" /~\\ ",
	"|   |",
	" \\_X ",
	"|~~\\",
	"|__/",
	"|  \\",
	"/~~~\\",
	"`---.",
	"\\___/",
	"~~|~~",
	"  |  ",
	"  |  ",
	"|    |",
	"|    |",
	" \\__/ ",
	"|    |",
	" \\  / ",
	"  \\/  ",
	"|     |",
	"|  |  |",
	" \\/ \\/ ",
	"\\ /",
	" X ",
	"/ \\",
	"\\   /",
	" \\ / ",
	"  |  ",
	"~~~~/",
	"  /  ",
	"/____"
	};

char *n[10][3] =
	{
	" /~~\\ ",
	"|    |",
	" \\__/ ",
	"/| ",
	" | ",
	"_|_",
	"/~~~|",
	"  /' ",
	"/____",
	"/~~~\\",
	"  --(",
	"\\___/",
	"  /| ",
	"/__|_",
	"   | ",
	"|~~~~",
	"`---.",
	".___/",
	" /~~\\",
	"|---.",
	" \\__/",
	"~~~~/",
	"  /' ",
	"/'   ",
	"/~~~\\",
	")---(",
	"\\___/",
	"/~~~\\",
	"`---|",
	".__/ "
	};

char *x[22][3] =
	{
	"    ",
	"----",
	"    ",
	"  |  ",
	"--|--",
	"  |  ",
	"_____",
	"_____",
	"     ",
	" ",
	" ",
	"o",
	" ",
	" ",
	"/",
	" ",
	"*",
	"*",
	" ",
	"*",
	"/",
	"|",
	"|",
	"o",
	"  /",
	" / ",
	"/  ",
	" \\|/ ",
	"-=X=-",
	" /|\\ ",
	"    ",
	"    ",
	"____",
	" /",
	"| ",
	" \\",
	"\\ ",
	" |",
	"/ ",
	"O /",
	" / ",
	"/ O",
	"/~|~\\",
	"`-|-.",
	"\\_|_/",
	" /",
	"< ",
	" \\",
	"\\ ",
	" >",
	"/ ",
	"/~~\\",
	"  ,'",
	"  o ",
	"_|_|_",
	"_|_|_",
	" | | ",
	" | ",
	" | ",
	" | ",
	"/~\\_/",
	"     ",
	"     ",
	"/",
	" ",
	" ",
	};

WINDOW *textwin;

inittext()
	{
	textwin = newwin(25, 80, 0, 0);
	wclear(textwin);
	}

disptext(char *string)
	{
	char s[64];
	char *p;
	int i;

	if (debug)
		{
		fprintf(dlog, "disptext(): got '%s'\n", string);
		fflush(dlog);
		}
	wclear(textwin);
	wmove(textwin, 0, 0);
	clearok(textwin, YES);
	for (p = string, i = 0; *p; ++p)
		{
		if (*p == '\n')
			{
			s[i] = '\0';
			big(s);
			i = 0;
			}
		else
			s[i++] = *p;
		}
	s[i] = '\0';
	big(s);
	}

big(char *str)
	{
	int ch, i;
	char *s = str;

	if (debug)
		{
		fprintf(dlog, "big(): got '%s'\n", str);
		fflush(dlog);
		}
	for (i = 0; i < 3; i++)
		{
		while (*s)
			if (*s >= 'A' && *s <= 'Z')
				{
				ch = *s++ - 'A';
				wprintw(textwin, "%s ", c[ch][i]);
				}
			else if (*s >= 'a' && *s <= 'z')
				{
				ch = *s++ - 'a';
				wprintw(textwin, "%s ", c[ch][i]);
				}
			else if (*s >= '0' && *s <= '9')
				{
				ch = *s++ - '0';
				wprintw(textwin, "%s ", n[ch][i]);
				}
			else switch(*s++)
				{
				case '-': wprintw(textwin, "%s ", x[0][i]); break;
				case '+': wprintw(textwin, "%s ", x[1][i]); break;
				case '=': wprintw(textwin, "%s ", x[2][i]); break;
				case '.': wprintw(textwin, "%s ", x[3][i]); break;
				case ',': wprintw(textwin, "%s ", x[4][i]); break;
				case ':': wprintw(textwin, "%s ", x[5][i]); break;
				case ';': wprintw(textwin, "%s ", x[6][i]); break;
				case '!': wprintw(textwin, "%s ", x[7][i]); break;
				case '/': wprintw(textwin, "%s ", x[8][i]); break;
				case '*': wprintw(textwin, "%s ", x[9][i]); break;
				case '_': wprintw(textwin, "%s ", x[10][i]); break;
				case '(': wprintw(textwin, "%s ", x[11][i]); break;
				case ')': wprintw(textwin, "%s ", x[12][i]); break;
				case '%': wprintw(textwin, "%s ", x[13][i]); break;
				case '$': wprintw(textwin, "%s ", x[14][i]); break;
				case '<': wprintw(textwin, "%s ", x[15][i]); break;
				case '>': wprintw(textwin, "%s ", x[16][i]); break;
				case '?': wprintw(textwin, "%s ", x[17][i]); break;
				case '#': wprintw(textwin, "%s ", x[18][i]); break;
				case '|': wprintw(textwin, "%s ", x[19][i]); break;
				case '~': wprintw(textwin, "%s ", x[20][i]); break;
				case '\'': wprintw(textwin, "%s ", x[21][i]); break;
				default:  wprintw(textwin, "    ");
				}
		waddch(textwin, '\n');
		s = str;
		}
	waddch(textwin, '\n');
	wrefresh(textwin);
	}

