diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2009-04-09 11:32:27 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2009-04-09 11:32:27 +0000 |
commit | e136ab597105dcbe211ce0a1f49113b4cb14b1ca (patch) | |
tree | 244488da59cdc02ce9fab5da3c9e2d21ed19e49e /src/frontend_sdl.c | |
parent | dbcc0a5dd35fc8f1f743bf51e929254a993549f9 (diff) | |
download | libnsfb-e136ab597105dcbe211ce0a1f49113b4cb14b1ca.tar.gz libnsfb-e136ab597105dcbe211ce0a1f49113b4cb14b1ca.tar.bz2 |
make 8bpp plotters work
svn path=/trunk/libnsfb/; revision=7071
Diffstat (limited to 'src/frontend_sdl.c')
-rw-r--r-- | src/frontend_sdl.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/frontend_sdl.c b/src/frontend_sdl.c index a9da09e..e082e56 100644 --- a/src/frontend_sdl.c +++ b/src/frontend_sdl.c @@ -9,17 +9,27 @@ static void set_palette(nsfb_t *nsfb) { SDL_Surface *sdl_screen = nsfb->frontend_priv; - SDL_Color colors[256]; - int loop; - for(loop=0; loop < 256; loop++){ - colors[loop].r = loop; - colors[loop].g = loop; - colors[loop].b = loop; - nsfb->palette[loop] = loop << 16 | loop << 8 | loop; + SDL_Color palette[256]; + int rloop, gloop, bloop; + int loop = 0; + + /* build a linear R:3 G:3 B:2 colour cube palette. */ + for (rloop = 0; rloop < 8; rloop++) { + for (gloop = 0; gloop < 8; gloop++) { + for (bloop = 0; bloop < 4; bloop++) { + palette[loop].r = (rloop << 5) | (rloop << 2) | (rloop >> 1); + palette[loop].g = (gloop << 5) | (gloop << 2) | (gloop >> 1); + palette[loop].b = (bloop << 6) | (bloop << 4) | (bloop << 2) | (bloop); + nsfb->palette[loop] = palette[loop].r | + palette[loop].g << 8 | + palette[loop].b << 16; + loop++; + } } + } - /* Set palette */ - SDL_SetColors(sdl_screen, colors, 0, 256); + /* Set palette */ + SDL_SetColors(sdl_screen, palette, 0, 256); } |