Pas de dépendances
#include <sdl/sdl.h> #ifdef WIN32 #pragma comment(lib,"sdl.lib") #pragma comment(lib,"sdlmain.lib") #endif void UpdateEvents(Sint32* mousex,Sint32* mousey,char boutons[8],char key[SDLK_LAST]) { SDL_Event event; while(SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: key[event.key.keysym.sym]=1; break; case SDL_KEYUP: key[event.key.keysym.sym]=0; break; case SDL_MOUSEMOTION: *mousex=event.motion.x; *mousey=event.motion.y; break; case SDL_MOUSEBUTTONDOWN: boutons[event.button.button]=1; break; case SDL_MOUSEBUTTONUP: boutons[event.button.button]=0; break; } } } void SDL_PutPixel32(SDL_Surface *surface, int x, int y, Uint32 pixel) { Uint8 *p = (Uint8*)surface->pixels + y * surface->pitch + x * 4; *(Uint32*)p = pixel; } Uint32 SDL_GetPixel32(SDL_Surface *surface, int x, int y) { Uint8 *p = (Uint8*)surface->pixels + y * surface->pitch + x * 4; return *(Uint32*)p; } int main(int argc,char** argv) { Sint32 mousex = 0; Sint32 mousey = 0; char boutons[8] = {0}; char key[SDLK_LAST] = {0}; SDL_Surface* screen; SDL_Init(SDL_INIT_VIDEO); screen=SDL_SetVideoMode(800,600,32,SDL_SWSURFACE|SDL_DOUBLEBUF); SDL_ShowCursor(1); while(!key[SDLK_ESCAPE]) { UpdateEvents(&mousex,&mousey,boutons,key); if (SDL_MUSTLOCK(screen)) SDL_LockSurface(screen); if (boutons[SDL_BUTTON_LEFT]) { SDL_PutPixel32(screen,mousex,mousey,0xFFFFFF); } if (boutons[SDL_BUTTON_RIGHT]) { SDL_SaveBMP(screen,"out.bmp"); } if (SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); SDL_Flip(screen); } return 0; }
No explanations yet.