Pachi: fixed menu text not shown on G1
This commit is contained in:
@@ -1,3 +1,36 @@
|
||||
void print_text(SDL_Surface **font, SDL_Surface *surface, int font_w, int font_h, int text_x, int text_y, char *str, ...) //Rutina para imprimir texto estatico en la pantalla
|
||||
{
|
||||
SDL_Rect srctxt; // la posicion donde se encuentra el caracter en el bitmap
|
||||
SDL_Rect dsttxt; // la posicion donde se imprimira el texto
|
||||
|
||||
char texto [100];
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, str);
|
||||
vsprintf(texto, str, ap);
|
||||
va_end(ap);
|
||||
|
||||
srctxt.w = font_w;
|
||||
srctxt.h = font_h;
|
||||
srctxt.y = 0;
|
||||
int linecounter = 0 ; // este contador se utiliza para saber en que linea imprimimos el texto
|
||||
int charpos = 0;
|
||||
for(int charcounter = 0; charcounter <= (strlen(texto));charcounter++)
|
||||
{
|
||||
int curchar=texto[charcounter];
|
||||
if(curchar == 94)
|
||||
{
|
||||
linecounter++;
|
||||
charpos = -1;
|
||||
}
|
||||
srctxt.x = (curchar >= 64 ? curchar - 62 : curchar - 32) * font_w;
|
||||
dsttxt.x = (text_x + (charpos * font_w));
|
||||
dsttxt.y = (text_y + (linecounter * font_h));
|
||||
charpos++;
|
||||
SDL_BlitSurface (font[ (curchar >= 64 ? 1 : 0) ],&srctxt,surface,&dsttxt);
|
||||
}
|
||||
}
|
||||
|
||||
void print_text(SDL_Surface *font, SDL_Surface *surface, int font_w, int font_h, int text_x, int text_y, char *str, ...) //Rutina para imprimir texto estatico en la pantalla
|
||||
{
|
||||
SDL_Rect srctxt; // la posicion donde se encuentra el caracter en el bitmap
|
||||
@@ -30,3 +63,32 @@ void print_text(SDL_Surface *font, SDL_Surface *surface, int font_w, int font_h,
|
||||
SDL_BlitSurface (font,&srctxt,surface,&dsttxt);
|
||||
}
|
||||
}
|
||||
|
||||
void load_font(SDL_Surface **font, char * file)
|
||||
{
|
||||
SDL_Surface * temp = LoadT8(file, false);
|
||||
font[0] = SDL_CreateRGBSurface(SDL_HWSURFACE, temp->w/2, temp->h, screen->format->BitsPerPixel,
|
||||
screen->format->Rmask, screen->format->Gmask, screen->format->Bmask, screen->format->Amask);
|
||||
font[1] = SDL_CreateRGBSurface(SDL_HWSURFACE, temp->w/2, temp->h, screen->format->BitsPerPixel,
|
||||
screen->format->Rmask, screen->format->Gmask, screen->format->Bmask, screen->format->Amask);
|
||||
SDL_Rect r;
|
||||
r.w = temp->w/2;
|
||||
r.h = temp->h;
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
SDL_BlitSurface(temp, &r, font[0], NULL);
|
||||
SDL_SetColorKey(font[0], SDL_SRCCOLORKEY, SDL_MapRGB(font[0]->format,0,255,0));
|
||||
r.x = temp->w/2;
|
||||
SDL_BlitSurface(temp, &r, font[1], NULL);
|
||||
SDL_SetColorKey(font[1], SDL_SRCCOLORKEY, SDL_MapRGB(font[0]->format,0,255,0));
|
||||
};
|
||||
|
||||
void unload_font(SDL_Surface **font)
|
||||
{
|
||||
if( font[0] )
|
||||
SDL_FreeSurface(font[0]);
|
||||
font[0] = NULL;
|
||||
if( font[1] )
|
||||
SDL_FreeSurface(font[1]);
|
||||
font[1] = NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user