
#include "stdafx.h"
#include "C2DBitFont.h"

const int const_mezera = 8;

//////////////////////////////////////////////////////////////////////////
// 
//////////////////////////////////////////////////////////////////////////
C_2D_BIT_FONT_0::C_2D_BIT_FONT_0() : velX(15), velY(7), widthF(30.0f), heightF(30.0f), _align(TEXT_2DB_LEFT)
{

}

//////////////////////////////////////////////////////////////////////////
// 
//////////////////////////////////////////////////////////////////////////
C_2D_BIT_FONT_0::~C_2D_BIT_FONT_0()
{

}

//////////////////////////////////////////////////////////////////////////
// 
//////////////////////////////////////////////////////////////////////////	
void C_2D_BIT_FONT_0::DrawFont(char *pisText,int x,int y)
{
	int plus = 0;
	if(pisText == NULL) return;
	// URCOVANI PISMENE
	for(int k=0;k < strlen(pisText);k++)
	{
		int akt_pismeno = k;

		TCHAR pismeno[1];
		pismeno[0] = pisText[akt_pismeno];
		for(int i=0;i < strlen(znaky);i++)
		{
			if(pismeno[0] == znaky[i])
			{
				akt_pismeno = i;
				break;
			}
		}

		// DRAW 2D FONT
		int numFont = akt_pismeno;
		int num_fontX = numFont % velX;
		int num_fontY = numFont / velX;

		glMatrixMode(GL_PROJECTION);						
		glPushMatrix();										
		glLoadIdentity();
		GLint v[4];
		glGetIntegerv(GL_VIEWPORT, v);
		glOrtho(v[0],v[2],v[3],v[1],-1,1);	
		//glOrtho(0,SCRWidth,SCRHeight,0,-1,1);						
		glMatrixMode(GL_MODELVIEW);							
		glPushMatrix();										
		glLoadIdentity();
		glTranslated(x,y + plus*40,0);
		glEnable(GL_ALPHA_TEST);
		glEnable(GL_TEXTURE_2D);
	
		glBindTexture(GL_TEXTURE_2D,texture_id);
		float vel_typeX = 1.0f/velX; 
		float vel_typeY = 1.0f/velY; 
		if(_align == TEXT_2DB_LEFT) glTranslated(k*(widthF-const_mezera),0,0);
		if(_align == TEXT_2DB_RIGHT) glTranslated(k*(widthF-const_mezera) - strlen(pisText)*(widthF-const_mezera),0,0);
		if(_align == TEXT_2DB_CENTER) glTranslated(k*(widthF-const_mezera) - (strlen(pisText)*(widthF-const_mezera))/2,0,0);
		
		glColor3ub(255,255,255);
		glBegin(GL_QUADS);
			glTexCoord2f(vel_typeX*num_fontX, -vel_typeY*num_fontY);										glVertex3f(0,0,0);
			glTexCoord2f(vel_typeX*num_fontX+vel_typeX , -vel_typeY*num_fontY);						glVertex3f(0+widthF,0,0);
			glTexCoord2f(vel_typeX*num_fontX+vel_typeX , -vel_typeY*num_fontY - vel_typeY);		glVertex3f(0+widthF,0+heightF,0);
			glTexCoord2f(vel_typeX*num_fontX, -vel_typeY*num_fontY-vel_typeY);						glVertex3f(0,0+heightF,0);
		glEnd();	

		glDisable(GL_ALPHA_TEST);
		glDisable(GL_TEXTURE_2D);
		glMatrixMode(GL_PROJECTION);						
		glPopMatrix();										
		glMatrixMode(GL_MODELVIEW);							
		glPopMatrix();		
	}
}
