#include "SDL/SDL.h" #include SDL_Color musta = { 0x00, 0x00, 0x00, 0 }; SDL_Color valkoinen = { 0xff, 0xff, 0xff, 0 }; SDL_Color punainen = { 0xff, 0x00, 0x00, 0 }; SDL_Color vihrea = { 0x00, 0xff, 0x00, 0 }; SDL_Color sininen = { 0x00, 0x00, 0xff, 0 }; SDL_Surface *ruutu; SDL_Rect piirtoalue; void varitalaatikko(SDL_Color laatikko) { Uint32 vari=SDL_MapRGB(ruutu->format, laatikko.r, laatikko.g, laatikko.b); piirtoalue.w=ruutu->w/2; piirtoalue.h=ruutu->h/2; piirtoalue.x=ruutu->w/2-piirtoalue.w/2; piirtoalue.y=ruutu->h/2-piirtoalue.h/2; SDL_FillRect(ruutu, &piirtoalue, vari); } int main() { int kierros=0; int vaihto=0; int vanhavaihto=0; SDL_Event tapaus; SDL_Init(SDL_INIT_VIDEO); SDL_Color vari[] = { musta, musta, valkoinen, punainen, vihrea, sininen }; atexit(SDL_Quit); SDL_WM_SetCaption("PF", "PF"); ruutu = SDL_SetVideoMode(128, 128, 16, SDL_SWSURFACE|SDL_RESIZABLE); while(tapaus.type!=SDL_QUIT) { varitalaatikko(vari[kierros % (sizeof(vari)/sizeof(SDL_Color))]); SDL_UpdateRect(ruutu, piirtoalue.x, piirtoalue.y, piirtoalue.w, piirtoalue.h); SDL_Delay(32); //16 while(SDL_PollEvent(&tapaus)) { if(tapaus.type==SDL_KEYDOWN && tapaus.key.keysym.sym==SDLK_t) vaihto++; if(tapaus.type==SDL_VIDEORESIZE) ruutu = SDL_SetVideoMode(tapaus.resize.w, tapaus.resize.h, 16, SDL_SWSURFACE|SDL_RESIZABLE); } if(vaihto!=vanhavaihto) { if(vaihto % 2) ruutu = SDL_SetVideoMode(ruutu->w, ruutu->h, 16, SDL_SWSURFACE|SDL_RESIZABLE|SDL_NOFRAME); else ruutu = SDL_SetVideoMode(ruutu->w, ruutu->h, 16, SDL_SWSURFACE|SDL_RESIZABLE); vanhavaihto=vaihto; } kierros++; } return 0; }