103 lines
2.4 KiB
C++
103 lines
2.4 KiB
C++
/* [CONSTRUCTOR] Constructeur de la classe
|
|
=========================================================*/
|
|
sdltl::sdltl(const char *t, int w, int h){
|
|
SDL_Init( SDL_INIT_EVERYTHING );
|
|
|
|
_window = NULL;
|
|
_screen = NULL;
|
|
|
|
// Creation de la fenetre
|
|
_window = SDL_CreateWindow(
|
|
t,
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
w,
|
|
h,
|
|
SDL_WINDOW_SHOWN
|
|
);
|
|
|
|
// Gestion erreur
|
|
if( _window == NULL )
|
|
_status = false;
|
|
|
|
// On recupere la surface
|
|
_screen = SDL_GetWindowSurface( _window );
|
|
|
|
// On retourne que tout s'est bien passe
|
|
_status = true;
|
|
}
|
|
|
|
/* [DESTROYER] Destructeur de la classe
|
|
=========================================================*/
|
|
sdltl::~sdltl(){
|
|
SDL_DestroyWindow( _window );
|
|
SDL_Quit();
|
|
}
|
|
|
|
/* [STATUS] Retourne le status
|
|
=========================================================*/
|
|
bool sdltl::status(){ return _status; }
|
|
|
|
|
|
/* [WINDOW] Retourne la fenetre
|
|
=========================================================*/
|
|
SDL_Window* sdltl::window(){ return _window; }
|
|
|
|
|
|
/* [SCREEN] Retourne la fenetre
|
|
=========================================================*/
|
|
SDL_Surface* sdltl::screen(){ return _screen; }
|
|
|
|
|
|
/* [SETBACKGROUND] Modifie la couleur de fond
|
|
=========================================================*/
|
|
void sdltl::setBackground(int r, int g, int b){
|
|
Uint32 color = SDL_MapRGB( _screen->format, r, g, b );
|
|
|
|
SDL_FillRect( _screen, NULL, color );
|
|
}
|
|
|
|
/* [SETIMAGE] Met une image en fond
|
|
=========================================================*/
|
|
bool sdltl::setImage(const char *url){
|
|
SDL_Surface *image = NULL;
|
|
image = SDL_LoadBMP( url );
|
|
|
|
// Si erreur de chargement image
|
|
if( image == NULL )
|
|
return false;
|
|
|
|
SDL_Rect dimensions;
|
|
dimensions.x = 0;
|
|
dimensions.y = 0;
|
|
SDL_GetWindowSize(_window, &dimensions.w, &dimensions.h);
|
|
|
|
SDL_BlitSurface( image, NULL, _screen, &dimensions);
|
|
|
|
// On libere la surface pour l'image
|
|
SDL_FreeSurface(image);
|
|
image = NULL;
|
|
|
|
return true;
|
|
}
|
|
|
|
/* [UPDATE] Mise a jour du rendu
|
|
=========================================================*/
|
|
void sdltl::update(){
|
|
SDL_UpdateWindowSurface( _window );
|
|
}
|
|
|
|
/* [WAITEVENT] Attends un evenement pour executer
|
|
=========================================================*/
|
|
void sdltl::waitEvent(SDL_EventType t, void(*handler)(SDL_Event*)){
|
|
SDL_Event event;
|
|
|
|
// On attends un evenement
|
|
while( SDL_PollEvent(&event) ){
|
|
|
|
// quand evenement, si type = t
|
|
if( event.type == t )
|
|
(*handler)(&event);
|
|
|
|
}
|
|
} |