aboutsummaryrefslogtreecommitdiff
path: root/src/library_sdl.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-03-23 18:42:42 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-03-23 18:42:42 -0700
commit339ae3f79475fd15f2a479a2d65094777b982f03 (patch)
tree9d1c34e53f61bb0333c68ab4fa4da0bc2f38864f /src/library_sdl.js
parent3ca9645e0b214fce990f2cf63b9c3294fa6b0179 (diff)
optimize SDL_FillRect
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r--src/library_sdl.js21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 21c1292e..f2faa028 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -154,6 +154,10 @@ mergeInto(LibraryManager.library, {
return 'rgb(' + (rgba&255) + ',' + ((rgba >> 8)&255) + ',' + ((rgba >> 16)&255) + ')';
},
+ translateColorToCSS: function(rgba) {
+ return 'rgb(' + ((rgba >> 24)&255) + ',' + ((rgba >> 16)&255) + ',' + ((rgba >> 8)&255) + ')';
+ },
+
makeSurface: function(width, height, flags, usePageCanvas, source) {
flags = flags || 0;
var surf = _malloc(14*Runtime.QUANTUM_SIZE); // SDL_Surface has 14 fields of quantum size
@@ -503,21 +507,10 @@ mergeInto(LibraryManager.library, {
SDL_FillRect: function(surf, rect, color) {
console.log('WARNING: SDL_FillRect not optimized yet');
var surfData = SDL.surfaces[surf];
- var c1 = color & 0xff;
- var c2 = (color >> 8) & 0xff;
- var c3 = (color >> 16) & 0xff;
+ assert(!surfData.locked); // but we could unlock and re-lock if we must..
var r = SDL.loadRect(rect);
- var data = surfData.image.data;
- var width = surfData.width;
- for (var y = r.y; y < r.y + r.h; y++) {
- var base = y*width*4;
- for (var x = r.x; x < r.x + r.w; x++) {
- var start = x*4 + base;
- data[start] = c1;
- data[start+1] = c2;
- data[start+2] = c3;
- }
- }
+ surfData.ctx.fillStyle = SDL.translateColorToCSS(color);
+ surfData.ctx.fillRect(r.x, r.y, r.w, r.h);
},
SDL_BlitSurface__deps: ['SDL_UpperBlit'],