diff options
author | dhewg | 2011-03-05 21:22:45 +0100 |
---|---|---|
committer | dhewg | 2011-03-05 23:08:41 +0100 |
commit | 53ee7c551369cf00b5073f10c21b836759b8c302 (patch) | |
tree | 61e8d09ef6916a2a427368d64cb89610bc397c64 /backends | |
parent | a2c02367f7fe76a6a76fbd872908274f679e4b4d (diff) | |
download | scummvm-rg350-53ee7c551369cf00b5073f10c21b836759b8c302.tar.gz scummvm-rg350-53ee7c551369cf00b5073f10c21b836759b8c302.tar.bz2 scummvm-rg350-53ee7c551369cf00b5073f10c21b836759b8c302.zip |
ANDROID: Proper fillBuffer() for non CLUT8 colors
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/android/gfx.cpp | 2 | ||||
-rw-r--r-- | backends/platform/android/texture.cpp | 13 | ||||
-rw-r--r-- | backends/platform/android/texture.h | 4 |
3 files changed, 11 insertions, 8 deletions
diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp index 12262f851b..10ffa3a7f6 100644 --- a/backends/platform/android/gfx.cpp +++ b/backends/platform/android/gfx.cpp @@ -458,8 +458,6 @@ void OSystem_Android::fillScreen(uint32 col) { GLTHREADCHECK; - // TODO FIXME rgb colors - assert(col < 256); _game_texture->fillBuffer(col); } diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index e4c98e3ce0..7f3db0574b 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -212,13 +212,18 @@ void GLESTexture::updateBuffer(GLuint x, GLuint y, GLuint w, GLuint h, } } -void GLESTexture::fillBuffer(byte x) { +void GLESTexture::fillBuffer(uint32 color) { uint rowbytes = _surface.w * _bytesPerPixel; byte *tmp = new byte[rowbytes]; assert(tmp); - memset(tmp, x, rowbytes); + if (_bytesPerPixel == 1 || ((color & 0xff) == ((color >> 8) & 0xff))) { + memset(tmp, color & 0xff, rowbytes); + } else { + uint16 *p = (uint16 *)tmp; + Common::set_to(p, p + _surface.w, (uint16)color); + } GLCALL(glBindTexture(GL_TEXTURE_2D, _texture_name)); GLCALL(glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); @@ -346,9 +351,9 @@ void GLESPaletteTexture::allocBuffer(GLuint w, GLuint h) { _surface.pixels = _texture + _paletteSize; } -void GLESPaletteTexture::fillBuffer(byte x) { +void GLESPaletteTexture::fillBuffer(uint32 color) { assert(_surface.pixels); - memset(_surface.pixels, x, _surface.pitch * _surface.h); + memset(_surface.pixels, color & 0xff, _surface.pitch * _surface.h); setDirty(); } diff --git a/backends/platform/android/texture.h b/backends/platform/android/texture.h index 14eea44914..e3d4463716 100644 --- a/backends/platform/android/texture.h +++ b/backends/platform/android/texture.h @@ -55,7 +55,7 @@ public: virtual void updateBuffer(GLuint x, GLuint y, GLuint width, GLuint height, const void *buf, int pitch); - virtual void fillBuffer(byte x); + virtual void fillBuffer(uint32 color); virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); @@ -164,7 +164,7 @@ public: virtual void allocBuffer(GLuint width, GLuint height); virtual void updateBuffer(GLuint x, GLuint y, GLuint width, GLuint height, const void *buf, int pitch); - virtual void fillBuffer(byte x); + virtual void fillBuffer(uint32 color); virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); |