printf for SDL

A sample to make like printf in SDL.

See version :

Dépendances (dans l'archive) :
font.bmp

Download :

#include <stdarg.h>
#include <sdl/sdl.h>

#pragma comment(lib,"sdl.lib")
#pragma comment(lib,"sdlmain.lib")

int WaitKey()
{
    SDL_Event e;
    do
    {
        SDL_WaitEvent(&e);
    } while(e.type!=SDL_KEYDOWN);
    return 0;
}

void PrintSDL(SDL_Surface* font,SDL_Surface* dest,int x,int y,char* text,...)
{ // l'image doit faire 16 * 14 caractères.
    char buf[500];
    int i,len;
    SDL_Rect Rsrc,Rdst;
    va_list args;
    va_start(args,text);
    vsprintf(buf,text,args);
    va_end(args);
    Rsrc.w = font->w/16;
    Rsrc.h = font->h/14;
    len = (int)strlen(buf);
    for(i=0;i<len;i++)
    {
        Rsrc.x = Rsrc.w*((unsigned char)(buf[i])%16);
        Rsrc.y = Rsrc.h*((unsigned char)(buf[i])/16-2);  // on saute les 31 premiers codes ASCII
        Rdst.x = x;
        Rdst.y = y;
        SDL_BlitSurface(font,&Rsrc,dest,&Rdst);
        x+=Rsrc.w;
    }
}

int main(int argc,char** argv)
{
    SDL_Surface *screen,*font;
    SDL_Init(SDL_INIT_VIDEO);
    screen=SDL_SetVideoMode(800,600,32,SDL_SWSURFACE|SDL_DOUBLEBUF);  
    font=SDL_LoadBMP("font.bmp");
    if (!font)
        return -1;
    PrintSDL(font,screen,50,50,"Plouf !");
    PrintSDL(font,screen,20,90,"Vous avez %d ans",30);
    SDL_Flip(screen);
    WaitKey();
    SDL_FreeSurface(font);
    SDL_Quit();
    return 0;
}



Explanations

	No explanations yet.