IMAGE: Remove palette start from image decoder.

The palette start value was always zero, adding complexity without benefit.
This commit is contained in:
Matthew Jimenez 2024-03-20 22:14:09 -05:00 committed by Filippos Karapetis
parent 79c406003c
commit ee5ebec7ca
15 changed files with 24 additions and 28 deletions

View file

@ -191,8 +191,7 @@ bool CryOmni3DEngine::displayHLZ(const Common::Path &filepath, uint32 timeout) {
}
if (imageDecoder->hasPalette()) {
const byte *palette = imageDecoder->getPalette();
setPalette(palette, imageDecoder->getPaletteStartIndex(), imageDecoder->getPaletteColorCount());
setPalette(imageDecoder->getPalette(), 0, imageDecoder->getPaletteColorCount());
}
const Graphics::Surface *frame = imageDecoder->getSurface();

View file

@ -107,7 +107,7 @@ void ZonFixedImage::load(const Common::Path &image, const char *zone) {
}
void ZonFixedImage::display() const {
_engine.setupPalette(_imageDecoder->getPalette(), _imageDecoder->getPaletteStartIndex(),
_engine.setupPalette(_imageDecoder->getPalette(), 0,
_imageDecoder->getPaletteColorCount());
g_system->copyRectToScreen(_imageSurface->getPixels(), _imageSurface->pitch, 0, 0,

View file

@ -326,7 +326,7 @@ Common::String Versailles_Documentation::docAreaHandleSummary() {
// No box for 6
boxes.setupBox(7, 0, 480 - _sprites->getCursor(225).getHeight(), 640, 480);
_engine->setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
_engine->setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
_engine->setCursor(181);
@ -445,7 +445,7 @@ Common::String Versailles_Documentation::docAreaHandleTimeline() {
_fontManager->setCharSpacing(1);
_fontManager->setSurface(&docSurface);
_engine->setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
_engine->setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
_fontManager->displayStr(78, 10, (*_messages)[73]);
@ -957,7 +957,7 @@ Common::String Versailles_Documentation::docAreaHandleGeneralMap() {
_fontManager->setSurface(&mapSurface);
_engine->setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
_engine->setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
_engine->setCursor(181);
@ -1179,7 +1179,7 @@ Common::String Versailles_Documentation::docAreaHandleCastleMap() {
_fontManager->setSurface(&mapSurface);
_engine->setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
_engine->setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
_engine->setCursor(181);
@ -1473,7 +1473,7 @@ void Versailles_Documentation::drawRecordData(Graphics::ManagedSurface &surface,
Image::ImageDecoder *imageDecoder = _engine->loadHLZ(backgroundPath);
const Graphics::Surface *bgFrame = imageDecoder->getSurface();
_engine->setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
_engine->setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
surface.create(bgFrame->w, bgFrame->h, bgFrame->format);

View file

@ -643,9 +643,8 @@ void CryOmni3DEngine_Versailles::loadCursorsPalette() {
error("Failed to load BMP file");
}
_cursorPalette = new byte[3 * (bmpDecoder.getPaletteColorCount() +
bmpDecoder.getPaletteStartIndex())]();
memcpy(_cursorPalette + 3 * bmpDecoder.getPaletteStartIndex(), bmpDecoder.getPalette(),
_cursorPalette = new byte[3 * bmpDecoder.getPaletteColorCount()]();
memcpy(_cursorPalette, bmpDecoder.getPalette(),
3 * bmpDecoder.getPaletteColorCount());
}
@ -1209,7 +1208,7 @@ void CryOmni3DEngine_Versailles::doPlaceChange() {
_currentPlace->setupWarpConstraints(_omni3dMan);
_omni3dMan.setSourceSurface(_currentWarpImage->getSurface());
setupPalette(_currentWarpImage->getPalette(), _currentWarpImage->getPaletteStartIndex(),
setupPalette(_currentWarpImage->getPalette(), 0,
_currentWarpImage->getPaletteColorCount(), !_fadedPalette);
setMousePos(Common::Point(320, 240)); // Center of screen
@ -1648,7 +1647,7 @@ void CryOmni3DEngine_Versailles::animateWarpTransition(const Transition *transit
}
void CryOmni3DEngine_Versailles::redrawWarp() {
setupPalette(_currentWarpImage->getPalette(), _currentWarpImage->getPaletteStartIndex(),
setupPalette(_currentWarpImage->getPalette(), 0,
_currentWarpImage->getPaletteColorCount(), true);
if (_forceRedrawWarp) {
const Graphics::Surface *result = _omni3dMan.getSurface();
@ -1721,7 +1720,7 @@ void CryOmni3DEngine_Versailles::displayObject(const Common::String &imgName,
if (imageDecoder->hasPalette()) {
// We don't need to calculate transparency but it's simpler to call this function
setupPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
setupPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
}

View file

@ -143,7 +143,7 @@ uint CryOmni3DEngine_Versailles::displayOptions() {
while (!shouldAbort() && !end) {
if (resetScreen) {
setPalette(imageDecoder->getPalette(), imageDecoder->getPaletteStartIndex(),
setPalette(imageDecoder->getPalette(), 0,
imageDecoder->getPaletteColorCount());
// _cursorPalette has only 248 colors as 8 last colors are for translucency
setPalette(_cursorPalette + 240 * 3, 240, 8);
@ -1011,7 +1011,7 @@ void CryOmni3DEngine_Versailles::displayCredits() {
byte palette[256 * 3];
memset(palette, 0, 256 * 3);
// getPalette returns the first color not index 0
memcpy(palette + 3 * imageDecoder->getPaletteStartIndex(), imageDecoder->getPalette(),
memcpy(palette, imageDecoder->getPalette(),
3 * imageDecoder->getPaletteColorCount());
copySubPalette(palette, _cursorPalette, 240, 8);

View file

@ -1043,7 +1043,7 @@ Graphics::ManagedSurface *FreescapeEngine::loadAndConvertNeoImage(Common::Seekab
Graphics::ManagedSurface *surface = new Graphics::ManagedSurface();
surface->copyFrom(*decoder.getSurface());
surface->convertToInPlace(_gfx->_currentPixelFormat, decoder.getPalette(),
decoder.getPaletteStartIndex(), decoder.getPaletteColorCount());
0, decoder.getPaletteColorCount());
return surface;
}

View file

@ -104,7 +104,7 @@ void Debugger::saveRawPicture(const RawDecoder &rd, Common::WriteStream &ws) {
const Graphics::Surface *surface = rd.getSurface();
const byte *palette = rd.getPalette();
int paletteCount = rd.getPaletteColorCount();
int palStart = rd.getPaletteStartIndex();
int palStart = 0;
bool hasTransColor = rd.hasTransparentColor();
uint32 transColor = rd.getTransparentColor();

View file

@ -455,7 +455,7 @@ bool PrintModifierImageSupplier::loadImageSlot(uint slot, const Graphics::Surfac
outHasPalette = _decoder->hasPalette();
if (_decoder->hasPalette())
outPalette.set(_decoder->getPalette(), _decoder->getPaletteStartIndex(), _decoder->getPaletteColorCount());
outPalette.set(_decoder->getPalette(), 0, _decoder->getPaletteColorCount());
outMetadata = GUI::ImageAlbumImageMetadata();
outMetadata._orientation = GUI::kImageAlbumImageOrientationLandscape;

View file

@ -77,7 +77,7 @@ bool ResourceManager::loadImage(const Common::Path &name, Graphics::ManagedSurfa
Image::BitmapDecoder bmpDec;
bmpDec.loadStream(*stream);
surf.copyFrom(*bmpDec.getSurface());
surf.setPalette(bmpDec.getPalette(), bmpDec.getPaletteStartIndex(), MIN<uint>(256, bmpDec.getPaletteColorCount())); // LOGO.BMP reports 257 colors
surf.setPalette(bmpDec.getPalette(), 0, MIN<uint>(256, bmpDec.getPaletteColorCount())); // LOGO.BMP reports 257 colors
}
}

View file

@ -246,7 +246,7 @@ bool ImageAlbumImageSupplier::loadImageSlot(uint slot, const Graphics::Surface *
outSurface = fi._decoder->getSurface();
outHasPalette = fi._decoder->hasPalette();
if (fi._decoder->hasPalette())
outPalette.set(fi._decoder->getPalette(), fi._decoder->getPaletteStartIndex(), fi._decoder->getPaletteColorCount());
outPalette.set(fi._decoder->getPalette(), 0, fi._decoder->getPaletteColorCount());
outMetadata = GUI::ImageAlbumImageMetadata();
return true;

View file

@ -144,7 +144,7 @@ static bool loadImageDelayViaDecoder(TwinEEngine *engine, const Common::Path &fi
source->free();
delete source;
} else {
engine->setPalette(decoder.getPaletteStartIndex(), decoder.getPaletteColorCount(), decoder.getPalette());
engine->setPalette(0, decoder.getPaletteColorCount(), decoder.getPalette());
target.transBlitFrom(*src, rect, target.getBounds(), 0, false, 0, 0xff, nullptr, true);
}
if (engine->delaySkip(1000 * seconds)) {

View file

@ -61,7 +61,7 @@ CruCreditsGump::CruCreditsGump(Common::SeekableReadStream *txtrs,
// This does an extra copy via the ManagedSurface, but it's a once-off.
const Graphics::Surface *bmpsurf = decoder.getSurface();
Graphics::ManagedSurface ms(bmpsurf);
ms.setPalette(decoder.getPalette(), decoder.getPaletteStartIndex(), decoder.getPaletteColorCount());
ms.setPalette(decoder.getPalette(), 0, decoder.getPaletteColorCount());
Common::Rect srcRect(640, 480);
_background->Blit(ms, srcRect, 0, 0);
} else {

View file

@ -52,7 +52,7 @@ CruDemoGump::CruDemoGump(Common::SeekableReadStream *bmprs, uint32 flags, int32
// This does an extra copy via the ManagedSurface, but it's a once-off.
const Graphics::Surface *bmpsurf = decoder.getSurface();
Graphics::ManagedSurface ms(bmpsurf);
ms.setPalette(decoder.getPalette(), decoder.getPaletteStartIndex(), decoder.getPaletteColorCount());
ms.setPalette(decoder.getPalette(), 0, decoder.getPaletteColorCount());
Common::Rect srcRect(640, 480);
_background->Blit(ms, srcRect, 0, 0);
} else {

View file

@ -228,14 +228,14 @@ void MacWindowBorder::loadBorder(Common::SeekableReadStream &file, uint32 flags,
Graphics::ManagedSurface *surface = new Graphics::ManagedSurface();
surface->copyFrom(*bmpDecoder.getSurface());
surface->setPalette(bmpDecoder.getPalette(), bmpDecoder.getPaletteStartIndex(),
surface->setPalette(bmpDecoder.getPalette(), 0,
bmpDecoder.getPaletteColorCount());
if (surface->format.isCLUT8()) {
const byte *palette = bmpDecoder.getPalette();
for (int i = 0; i < bmpDecoder.getPaletteColorCount(); i++) {
if (palette[0] == 255 && palette[1] == 0 && palette[2] == 255) {
surface->setTransparentColor(bmpDecoder.getPaletteStartIndex() + i);
surface->setTransparentColor(i);
break;
}
palette += 3;

View file

@ -106,8 +106,6 @@ public:
*/
virtual bool hasPalette() const { return getPaletteColorCount() != 0; }
/** Return the starting index of the palette. */
virtual byte getPaletteStartIndex() const { return 0; }
/** Return the number of colors in the palette. */
virtual uint16 getPaletteColorCount() const { return 0; }