00001
00002 #include "pi2d14/pi2d14_numberrenderer.h"
00003
00004
00005 MENU::NumberRenderer::NumberRenderer(unsigned int numberTextureId)
00006 {
00007 idTexNumber = numberTextureId;
00008 }
00009
00010 MENU::NumberRenderer::~NumberRenderer()
00011 {
00012 }
00013
00014 void MENU::NumberRenderer::render(unsigned int number, int x, int y, int sizex, int sizey)
00015 {
00016 int i=1;
00017 int finali;
00018
00019 glEnable(GL_TEXTURE_2D);
00020 glBindTexture(GL_TEXTURE_2D, idTexNumber);
00021 glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
00022
00023
00024 glEnable(GL_ALPHA_TEST);
00025 glAlphaFunc(GL_GREATER, 0.8);
00026
00027 if(number<10)
00028 {
00029 finali=10;
00030 }
00031 else if(number<100)
00032 {
00033 finali=100;
00034 }
00035 else if(number<1000)
00036 {
00037 finali=1000;
00038 }
00039 else if(number<10000)
00040 {
00041 finali=10000;
00042 }
00043
00044 for(i=finali/10;i>=1;i=i/10)
00045 {
00046 unsigned int curn = number/i;
00047
00048
00049 glBegin(GL_QUADS);
00050 glTexCoord2f( curn * NUMBER_TEX_OFFSET, 0);
00051 glVertex2f( x, y);
00052 glTexCoord2f( (curn+1) * NUMBER_TEX_OFFSET, 0);
00053 glVertex2f( x + sizex, y);
00054 glTexCoord2f( (curn+1) * NUMBER_TEX_OFFSET, 1);
00055 glVertex2f( x + sizex, y + sizey);
00056 glTexCoord2f( curn * NUMBER_TEX_OFFSET, 1);
00057 glVertex2f( x, y + sizey);
00058 glEnd();
00059
00060 x+=sizex;
00061 }
00062
00063 glDisable(GL_TEXTURE_2D);
00064 glDisable(GL_ALPHA_TEST);
00065 }
00066