diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-10-12 17:52:24 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-10-12 17:52:24 -0700 |
commit | 668267060800fd4e3021d544774653e1db2dd075 (patch) | |
tree | 80126df52d6d7e8e052bb6943f8eb6fa80f8ada9 /src/library_sdl.js | |
parent | 7cfb4392edc63fb8d5fa2fedd651f858f340059b (diff) |
some SDL stuff
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 57a98e64..af94301a 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -105,6 +105,9 @@ mergeInto(LibraryManager.library, { }, structs: { + Rect: Runtime.generateStructInfo([ + ['i16', 'x'], ['i16', 'y'], ['i16', 'w'], ['i16', 'h'], + ]), PixelFormat: Runtime.generateStructInfo([ ['void*', 'palette'], ['i8', 'BitsPerPixel'], ['i8', 'BytesPerPixel'], ['i8', 'Rloss'], ['i8', 'Gloss'], ['i8', 'Bloss'], ['i8', 'Aloss'], @@ -377,6 +380,28 @@ mergeInto(LibraryManager.library, { return 0; }, + SDL_FillRect: function(surf, rect, color) { + var surfData = SDL.surfaces[surf]; + var c1 = color & 0xff; + var c2 = (color >> 8) & 0xff; + var c3 = (color >> 16) & 0xff; + var rx = {{{ makeGetValue('rect + SDL.structs.Rect.x', '0', 'i16') }}}; + var ry = {{{ makeGetValue('rect + SDL.structs.Rect.y', '0', 'i16') }}}; + var rw = {{{ makeGetValue('rect + SDL.structs.Rect.w', '0', 'i16') }}}; + var rh = {{{ makeGetValue('rect + SDL.structs.Rect.h', '0', 'i16') }}}; + var data = surfData.image.data; + var width = surfData.width; + for (var y = ry; y < ry + rh; y++) { + var base = y*width*4; + for (var x = rx; x < rx + rw; x++) { + var start = x*4 + base; + data[start] = c1; + data[start+1] = c2; + data[start+2] = c3; + } + } + }, + SDL_BlitSurface__deps: ['SDL_UpperBlit'], SDL_BlitSurface: function(src, srcrect, dst, dstrect) { return _SDL_Blit(src, srcrect, dst, dstrect); @@ -415,6 +440,11 @@ mergeInto(LibraryManager.library, { return 1; }, + SDL_MapRGB: function(fmt, r, g, b) { + // Canvas screens are always RGBA + return r + (g << 8) + (b << 16); + }, + // SDL_Image IMG_Load: function(filename) { @@ -490,5 +520,18 @@ mergeInto(LibraryManager.library, { SDL_LockAudio: function() {}, SDL_UnlockAudio: function() {}, + + SDL_CreateMutex: function() { return 0 }, + SDL_LockMutex: function() {}, + SDL_UnlockMutex: function() {}, + SDL_DestroyMutex: function() {}, + + SDL_CreateCond: function() { return 0 }, + SDL_CondSignal: function() {}, + SDL_CondWait: function() {}, + SDL_DestroyCond: function() {}, + +//SDL_CreateYUVOverlay +//SDL_CreateThread, SDL_WaitThread etc }); |