

#include "FPS.h"


FPS::FPS()
{
}

FPS::~FPS()
{
}

void FPS::drawChar( GLfloat x, GLfloat y, GLint number )
{
	static bool numbers[13][7] = {
		true,true,true,true,true,true,false, 		/* 0 */
		false,true,true,false,false,false,false,	/* 1 */
		true,true,false,true,true,false,true,		/* 2 */
		true,true,true,true,false,false,true,		/* 3 */
		false,true,true,false,false,true,true,		/* 4 */
		true,false,true,true,false,true,true,		/* 5 */
		true,false,true,true,true,true,true,		/* 6 */
		true,true,true,false,false,false,false,		/* 7 */
		true,true,true,true,true,true,true,			/* 8 */
		true,true,true,false,false,true,true,		/* 9 */

		true,false,false,false,true,true,true,		/* F */
		true,true,false,false,true,true,true,		/* P */
		true,false,true,true,false,true,true,		/* S */
		
		};

	static GLfloat gap = 0.03;
	static GLfloat size = 1.0;

	static GLfloat x0 = -size / 4;
	static GLfloat x1 = -size / 4 + gap;
	static GLfloat x2 = -x1;
	static GLfloat x3 = -x0;

	static GLfloat y0 = size / 2;
	static GLfloat y1 = size / 2 - gap;
	static GLfloat y2 = 0 + gap;
	static GLfloat y3 = 0;
	static GLfloat y4 = -y2;
	static GLfloat y5 = -y1;
	static GLfloat y6 = -y0;

	glBegin( GL_LINES );
	if( numbers[number][0] )
	{
		glVertex2f( x1 + x, y0 + y );
		glVertex2f( x2 + x, y0 + y );
	}
	if( numbers[number][1] )
	{
		glVertex2f( x3 + x, y1 + y );
		glVertex2f( x3 + x, y2 + y );
	}
	if( numbers[number][2] )
	{
		glVertex2f( x3 + x, y4 + y );
		glVertex2f( x3 + x, y5 + y );
	}
	if( numbers[number][3] )
	{
		glVertex2f( x1 + x, y6 + y );
		glVertex2f( x2 + x, y6 + y );
	}
	if( numbers[number][4] )
	{
		glVertex2f( x0 + x, y5 + y );
		glVertex2f( x0 + x, y4 + y );
	}
	if( numbers[number][5] )
	{
		glVertex2f( x0 + x, y2 + y );
		glVertex2f( x0 + x, y1 + y );
	}
	if( numbers[number][6] )
	{
		glVertex2f( x1 + x, y3 + y );
		glVertex2f( x2 + x, y3 + y );
	}
	glEnd();

}

void FPS::drawCounter( GLfloat frameRate )
{
	GLfloat pos = 0;
	int ifps = int(frameRate * 10 +0.5);
	int c1000,c100,c10,c1,c_1;

	c1000 = ifps / 10000;
	c100 = (ifps / 1000) % 10;
	c10 = (ifps / 100) % 10;
	c1 = (ifps / 10) % 10;
	c_1 = ifps % 10;
	
	if( c1000 )
	{	
		drawChar( pos, 0, c1000 );
		pos += 1;
	}
	if( c1000 || c100 )
	{	
		drawChar( pos, 0, c100 );
		pos += 1;
	}
	if( c1000 || c100 || c10 )
	{	
		drawChar( pos, 0, c10 );
		pos += 1;
	}
	drawChar( pos, 0, c1 );
	pos += 0.5;

	glBegin( GL_POINTS );
	glVertex2f( pos, -0.5 );
	glEnd();
	pos += 0.5;

	drawChar( pos, 0, c_1 );
	pos += 1.5;


	drawChar( pos, 0, 10 );
	pos += 1;
	drawChar( pos, 0, 11 );
	pos += 1;
	drawChar( pos, 0, 12 );
	pos += 1;

}

