lab.cpp/SDL#3/sdltl.h

70 lines
1.4 KiB
C++

#ifndef DEF_SDLTL_H
#define DEF_SDLTL_H
/* [LIBS] Internes
=========================================================*/
#include "SDL.h"
#include "SDL_image.h"
#include <vector>
#include <mutex>
/* [LIBS] Externes
=========================================================*/
/* [NS] Namespaces
=========================================================*/
using namespace std;
class sdltl{
public:
sdltl(const char *t, int w, int h);
~sdltl();
SDL_Window *window();
SDL_Renderer *renderer();
bool status();
bool setBackground(Uint8 r=0xff, Uint8 g=0xff, Uint8 b=0xff, Uint8 a=0xff);
bool setImage(const char *url);
void waitEvent(SDL_EventType t, void(*handler)(SDL_Event*) );
void push(SDL_Texture *t, SDL_Rect *origin, SDL_Rect *dest);
void pull(SDL_Texture *t);
void update();
void manageFps(const int fps=0);
private:
// gestion FPS
Uint32 _lasttick;
Uint32 _fpstime;
// status de l'initialisation
bool _status;
// Elements utiles
SDL_Window *_window;
SDL_Renderer *_renderer;
SDL_Texture *_texture;
// Gestion des textures
vector<SDL_Texture*> _sprites;
vector<SDL_Rect*> _src;
vector<SDL_Rect*> _dst;
// Protection thread-safe
mutex _mutex;
};
/* [BODY] Inclusion du corps
=========================================================*/
#include "sdltl.cpp"
#endif