aboutsummaryrefslogtreecommitdiff
path: root/video/codecs
diff options
context:
space:
mode:
authorMatthew Hoops2012-06-12 09:33:21 -0400
committerMatthew Hoops2012-06-12 09:34:24 -0400
commit2a1193a6b1d19664b876fb98568fa677463781a6 (patch)
tree944f26de414817a95c3dfd53f4f8393ab37490d0 /video/codecs
parente16ad39e533608d5bfac9bfba167e7e2dfb606cb (diff)
downloadscummvm-rg350-2a1193a6b1d19664b876fb98568fa677463781a6.tar.gz
scummvm-rg350-2a1193a6b1d19664b876fb98568fa677463781a6.tar.bz2
scummvm-rg350-2a1193a6b1d19664b876fb98568fa677463781a6.zip
VIDEO: Make rpza decode to its own pixel format
Diffstat (limited to 'video/codecs')
-rw-r--r--video/codecs/rpza.cpp22
-rw-r--r--video/codecs/rpza.h3
2 files changed, 6 insertions, 19 deletions
diff --git a/video/codecs/rpza.cpp b/video/codecs/rpza.cpp
index df5738202e..acc1b7f358 100644
--- a/video/codecs/rpza.cpp
+++ b/video/codecs/rpza.cpp
@@ -28,22 +28,17 @@
#include "common/system.h"
#include "common/stream.h"
#include "common/textconsole.h"
-#include "graphics/colormasks.h"
namespace Video {
RPZADecoder::RPZADecoder(uint16 width, uint16 height) : Codec() {
- _pixelFormat = g_system->getScreenFormat();
-
// We need to increase the surface size to a multiple of 4
uint16 wMod = width % 4;
- if(wMod != 0)
+ if (wMod != 0)
width += 4 - wMod;
- debug(2, "RPZA corrected width: %d", width);
-
_surface = new Graphics::Surface();
- _surface->create(width, height, _pixelFormat);
+ _surface->create(width, height, getPixelFormat());
}
RPZADecoder::~RPZADecoder() {
@@ -59,18 +54,11 @@ RPZADecoder::~RPZADecoder() {
} \
totalBlocks--; \
if (totalBlocks < 0) \
- error("block counter just went negative (this should not happen)") \
+ error("rpza block counter just went negative (this should not happen)") \
-// Convert from RGB555 to the format specified by the screen
#define PUT_PIXEL(color) \
- if ((int32)blockPtr < _surface->w * _surface->h) { \
- byte r = 0, g = 0, b = 0; \
- Graphics::colorToRGB<Graphics::ColorMasks<555> >(color, r, g, b); \
- if (_pixelFormat.bytesPerPixel == 2) \
- *((uint16 *)_surface->pixels + blockPtr) = _pixelFormat.RGBToColor(r, g, b); \
- else \
- *((uint32 *)_surface->pixels + blockPtr) = _pixelFormat.RGBToColor(r, g, b); \
- } \
+ if ((int32)blockPtr < _surface->w * _surface->h) \
+ WRITE_UINT16((uint16 *)_surface->pixels + blockPtr, color); \
blockPtr++
const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *stream) {
diff --git a/video/codecs/rpza.h b/video/codecs/rpza.h
index 809a69f444..f082d25549 100644
--- a/video/codecs/rpza.h
+++ b/video/codecs/rpza.h
@@ -34,11 +34,10 @@ public:
~RPZADecoder();
const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
- Graphics::PixelFormat getPixelFormat() const { return _pixelFormat; }
+ Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0); }
private:
Graphics::Surface *_surface;
- Graphics::PixelFormat _pixelFormat;
};
} // End of namespace Video