#include <stdio.h>
#include <iostream.h>

inline char Pixel(char c, int x)
{
	return  (c & 0x01<<x ? 1 : 0) + (c & 0x10<<x ? 2 : 0);
}

void DrawPixel(char c)
{
	char clut[]=".ox*";
	printf("%c%c",clut[c],clut[c]);
}

void DrawSquare(char *image,int i)
{
	for (int h=1;h>=0;h--)
		for (int p=3;p>=0;p--)
		{
			for (int r=7;r>=0;r--)
				DrawPixel(Pixel(image[i*16+r+h*8],p));
			printf("\n");
		}
}

void DrawBigRectangle(char *image,int i)
{
	for (int h=1;h>=0;h--)
		for (int p=3;p>=0;p--)
		{
			for (int s=1;s>=0;s--)
				for (int r=7;r>=0;r--)
					DrawPixel(Pixel(image[i*16+r+s*16+h*8],p));
			printf("\n");
		}
}

void DrawBigSquare(char *image,int i)
{
	DrawBigRectangle(image,i);
	DrawBigRectangle(image,i+2);
}

void main()
{
	cout << "Filename: \n";
	char filename[32];
	cin >> filename;
	while(getchar()!='\n') {}

	int width = 8;
	int height = 8;

	FILE *in = fopen(filename,"rb");
	if (!in)
	{
		printf("File \"%s\" failed to open. :(\n",filename);
		return;
	}

	char image[4096];
	int c;
	for (char *s=image;(c=fgetc(in)) != EOF;s++)
		*s=c;
		
	fclose(in);

	int big=0;
	for (int s=0;s<4096/16;s+=big?4:1)
	{
		char line[10];
		if (big)
			DrawBigSquare(image,s);
		else
			DrawSquare(image,s);
//		while(getchar()!='\n') {}
		gets(line);
		switch(line[0])
		{
		case 'b': big = 1; s-=4; break;
		case 's': big = 0; s--; break;
		case '-': s-=(big?4:1)*2; break;
		}
		
	}
	printf("\n\nThats all folks...\n");
}
