eobish
annotate src/main.cc @ 0:465ca72c9657
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 17 Jan 2015 18:37:28 +0200 |
parents | |
children | cdbcae5b3b98 |
rev | line source |
---|---|
nuclear@0 | 1 #include <stdio.h> |
nuclear@0 | 2 #include <SDL/SDL.h> |
nuclear@0 | 3 |
nuclear@0 | 4 static void display(); |
nuclear@0 | 5 static bool proc_event(SDL_Event *ev); |
nuclear@0 | 6 static void set_pal_entry(int idx, int r, int g, int b); |
nuclear@0 | 7 |
nuclear@0 | 8 static SDL_Surface *fbsurf; |
nuclear@0 | 9 |
nuclear@0 | 10 int main(int argc, char **argv) |
nuclear@0 | 11 { |
nuclear@0 | 12 SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER); |
nuclear@0 | 13 |
nuclear@0 | 14 if(!(fbsurf = SDL_SetVideoMode(320, 240, 8, SDL_SWSURFACE))) { |
nuclear@0 | 15 fprintf(stderr, "failed to set video mode\n"); |
nuclear@0 | 16 return 1; |
nuclear@0 | 17 } |
nuclear@0 | 18 set_pal_entry(1, 255, 0, 0); |
nuclear@0 | 19 |
nuclear@0 | 20 for(;;) { |
nuclear@0 | 21 SDL_Event ev; |
nuclear@0 | 22 while(SDL_PollEvent(&ev)) { |
nuclear@0 | 23 if(!proc_event(&ev)) { |
nuclear@0 | 24 goto done; |
nuclear@0 | 25 } |
nuclear@0 | 26 } |
nuclear@0 | 27 |
nuclear@0 | 28 display(); |
nuclear@0 | 29 } |
nuclear@0 | 30 |
nuclear@0 | 31 done: |
nuclear@0 | 32 SDL_Quit(); |
nuclear@0 | 33 return 0; |
nuclear@0 | 34 } |
nuclear@0 | 35 |
nuclear@0 | 36 void display() |
nuclear@0 | 37 { |
nuclear@0 | 38 if(SDL_MUSTLOCK(fbsurf)) { |
nuclear@0 | 39 SDL_LockSurface(fbsurf); |
nuclear@0 | 40 } |
nuclear@0 | 41 |
nuclear@0 | 42 unsigned char *pixels = (unsigned char*)fbsurf->pixels; |
nuclear@0 | 43 for(int i=0; i<fbsurf->w * fbsurf->h; i++) { |
nuclear@0 | 44 *pixels++ = 1; |
nuclear@0 | 45 } |
nuclear@0 | 46 |
nuclear@0 | 47 if(SDL_MUSTLOCK(fbsurf)) { |
nuclear@0 | 48 SDL_UnlockSurface(fbsurf); |
nuclear@0 | 49 } |
nuclear@0 | 50 |
nuclear@0 | 51 SDL_Flip(fbsurf); |
nuclear@0 | 52 } |
nuclear@0 | 53 |
nuclear@0 | 54 static bool proc_event(SDL_Event *ev) |
nuclear@0 | 55 { |
nuclear@0 | 56 switch(ev->type) { |
nuclear@0 | 57 case SDL_KEYDOWN: |
nuclear@0 | 58 if(ev->key.keysym.sym == SDLK_ESCAPE) { |
nuclear@0 | 59 return false; |
nuclear@0 | 60 } |
nuclear@0 | 61 break; |
nuclear@0 | 62 |
nuclear@0 | 63 default: |
nuclear@0 | 64 break; |
nuclear@0 | 65 } |
nuclear@0 | 66 return true; |
nuclear@0 | 67 } |
nuclear@0 | 68 |
nuclear@0 | 69 static void set_pal_entry(int idx, int r, int g, int b) |
nuclear@0 | 70 { |
nuclear@0 | 71 SDL_Color col; |
nuclear@0 | 72 col.r = r; |
nuclear@0 | 73 col.g = g; |
nuclear@0 | 74 col.b = b; |
nuclear@0 | 75 |
nuclear@0 | 76 SDL_SetPalette(fbsurf, SDL_LOGPAL | SDL_PHYSPAL, &col, idx, 1); |
nuclear@0 | 77 |
nuclear@0 | 78 /*palette[idx].r = r; |
nuclear@0 | 79 palette[idx].g = g; |
nuclear@0 | 80 palette[idx].b = b;*/ |
nuclear@0 | 81 } |