From 7fe487f9cc4cb4b7ee6a121f33b9d284bfc15ed7 Mon Sep 17 00:00:00 2001 From: dhewg Date: Sat, 12 Mar 2011 09:17:58 +0100 Subject: ANDROID: Add more paletted texture types --- backends/platform/android/texture.cpp | 39 ++++++++++++++++++++++++++++++----- backends/platform/android/texture.h | 30 +++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index eb45de7468..603ef3aa6f 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -93,7 +93,8 @@ GLESTexture::GLESTexture(byte bytesPerPixel, GLenum glFormat, GLenum glType, _texture_height(0), _all_dirty(false), _dirty_rect(), - _pixelFormat(pixelFormat) + _pixelFormat(pixelFormat), + _palettePixelFormat() { GLCALL(glGenTextures(1, &_texture_name)); } @@ -300,12 +301,14 @@ GLES565Texture::~GLES565Texture() { } GLESPaletteTexture::GLESPaletteTexture(byte bytesPerPixel, GLenum glFormat, - GLenum glType, size_t paletteSize) : + GLenum glType, + Graphics::PixelFormat palettePixelFormat) : GLESTexture(bytesPerPixel, glFormat, glType, Graphics::PixelFormat::createFormatCLUT8()), - _paletteSize(paletteSize), _texture(0) { + _palettePixelFormat = palettePixelFormat; + _paletteSize = _palettePixelFormat.bytesPerPixel * 256; } GLESPaletteTexture::~GLESPaletteTexture() { @@ -368,18 +371,44 @@ void GLESPaletteTexture::drawTexture(GLshort x, GLshort y, GLshort w, } GLESPalette888Texture::GLESPalette888Texture() : - GLESPaletteTexture(1, GL_RGB, GL_PALETTE8_RGB8_OES, 256 * 3) { + GLESPaletteTexture(1, GL_RGB, GL_PALETTE8_RGB8_OES, + Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0)) { } GLESPalette888Texture::~GLESPalette888Texture() { } GLESPalette8888Texture::GLESPalette8888Texture() : - GLESPaletteTexture(1, GL_RGBA, GL_PALETTE8_RGBA8_OES, 256 * 4) { + GLESPaletteTexture(1, GL_RGBA, GL_PALETTE8_RGBA8_OES, + Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0)) { } GLESPalette8888Texture::~GLESPalette8888Texture() { } +GLESPalette565Texture::GLESPalette565Texture() : + GLESPaletteTexture(1, GL_RGB, GL_PALETTE8_R5_G6_B5_OES, + Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)) { +} + +GLESPalette565Texture::~GLESPalette565Texture() { +} + +GLESPalette4444Texture::GLESPalette4444Texture() : + GLESPaletteTexture(1, GL_RGBA, GL_PALETTE8_RGBA4_OES, + Graphics::PixelFormat(2, 4, 4, 4, 4, 12, 8, 4, 0)) { +} + +GLESPalette4444Texture::~GLESPalette4444Texture() { +} + +GLESPalette5551Texture::GLESPalette5551Texture() : + GLESPaletteTexture(1, GL_RGBA, GL_PALETTE8_RGB5_A1_OES, + Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0)) { +} + +GLESPalette5551Texture::~GLESPalette5551Texture() { +} + #endif diff --git a/backends/platform/android/texture.h b/backends/platform/android/texture.h index 91ec9ff857..f00a589875 100644 --- a/backends/platform/android/texture.h +++ b/backends/platform/android/texture.h @@ -93,7 +93,7 @@ public: }; inline bool hasPalette() const { - return palette_const() != 0; + return _palettePixelFormat.bytesPerPixel > 0; } inline bool dirty() const { @@ -104,6 +104,10 @@ public: return _pixelFormat; } + inline const Graphics::PixelFormat &getPalettePixelFormat() const { + return _palettePixelFormat; + } + protected: inline void setDirty() { _all_dirty = true; @@ -140,6 +144,7 @@ protected: Common::Rect _dirty_rect; Graphics::PixelFormat _pixelFormat; + Graphics::PixelFormat _palettePixelFormat; }; // RGBA4444 texture @@ -178,7 +183,7 @@ public: class GLESPaletteTexture : public GLESTexture { protected: GLESPaletteTexture(byte bytesPerPixel, GLenum glFormat, GLenum glType, - size_t paletteSize); + Graphics::PixelFormat palettePixelFormat); public: virtual ~GLESPaletteTexture(); @@ -222,6 +227,27 @@ public: virtual ~GLESPalette8888Texture(); }; +// RGB565 256-entry paletted texture +class GLESPalette565Texture : public GLESPaletteTexture { +public: + GLESPalette565Texture(); + virtual ~GLESPalette565Texture(); +}; + +// RGBA4444 256-entry paletted texture +class GLESPalette4444Texture : public GLESPaletteTexture { +public: + GLESPalette4444Texture(); + virtual ~GLESPalette4444Texture(); +}; + +// RGBA5551 256-entry paletted texture +class GLESPalette5551Texture : public GLESPaletteTexture { +public: + GLESPalette5551Texture(); + virtual ~GLESPalette5551Texture(); +}; + #endif #endif -- cgit v1.2.3