From a7bc08992e2acd361c485179d2142bc9121cda65 Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Fri, 13 Apr 2018 20:19:47 +0100 Subject: IMAGE: INDEO: Use the system pixel format for non-8bpp screen modes --- image/codecs/indeo/indeo.cpp | 36 ++++++++++++++++++++---------------- image/codecs/indeo3.cpp | 36 ++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 32 deletions(-) (limited to 'image/codecs') diff --git a/image/codecs/indeo/indeo.cpp b/image/codecs/indeo/indeo.cpp index 4826137358..80b424fb90 100644 --- a/image/codecs/indeo/indeo.cpp +++ b/image/codecs/indeo/indeo.cpp @@ -465,22 +465,26 @@ IVI45DecContext::IVI45DecContext() : _gb(nullptr), _frameNum(0), _frameType(0), /*------------------------------------------------------------------------*/ IndeoDecoderBase::IndeoDecoderBase(uint16 width, uint16 height, uint bitsPerPixel) : Codec() { - switch (bitsPerPixel) { - case 15: - _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0); - break; - case 16: - _pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); - break; - case 24: - _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 0, 16, 8, 0, 0); - break; - case 32: - _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0); - break; - default: - error("Invalid color depth"); - break; + _pixelFormat = g_system->getScreenFormat(); + + if (_pixelFormat.bytesPerPixel == 1) { + switch (bitsPerPixel) { + case 15: + _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0); + break; + case 16: + _pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); + break; + case 24: + _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 0, 16, 8, 0, 0); + break; + case 32: + _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0); + break; + default: + error("Invalid color depth"); + break; + } } _surface.create(width, height, _pixelFormat); diff --git a/image/codecs/indeo3.cpp b/image/codecs/indeo3.cpp index 1aa1ef73b6..2b681c98ce 100644 --- a/image/codecs/indeo3.cpp +++ b/image/codecs/indeo3.cpp @@ -44,22 +44,26 @@ Indeo3Decoder::Indeo3Decoder(uint16 width, uint16 height, uint bitsPerPixel) : _ _iv_frame[0].the_buf = 0; _iv_frame[1].the_buf = 0; - switch (bitsPerPixel) { - case 15: - _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0); - break; - case 16: - _pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); - break; - case 24: - _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 0, 16, 8, 0, 0); - break; - case 32: - _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0); - break; - default: - error("Invalid color depth"); - break; + _pixelFormat = g_system->getScreenFormat(); + + if (_pixelFormat.bytesPerPixel == 1) { + switch (bitsPerPixel) { + case 15: + _pixelFormat = Graphics::PixelFormat(2, 5, 5, 5, 0, 0, 5, 10, 0); + break; + case 16: + _pixelFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); + break; + case 24: + _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 0, 16, 8, 0, 0); + break; + case 32: + _pixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0); + break; + default: + error("Invalid color depth"); + break; + } } _surface = new Graphics::Surface; -- cgit v1.2.3