SCI32: Assign a define for the non-remapped number of colors

This commit is contained in:
Filippos Karapetis 2016-03-11 13:13:26 +02:00
parent b11e0e0826
commit 7cf8ce33cb
2 changed files with 20 additions and 19 deletions

View File

@ -178,8 +178,8 @@ void GfxRemap32::initColorArrays(byte index) {
Palette *curPalette = &_palette->_sysPalette;
RemapParams *curRemap = &_remaps[index];
memcpy(curRemap->curColor, curPalette->colors, 236 * sizeof(Color));
memcpy(curRemap->targetColor, curPalette->colors, 236 * sizeof(Color));
memcpy(curRemap->curColor, curPalette->colors, NON_REMAPPED_COLOR_COUNT * sizeof(Color));
memcpy(curRemap->targetColor, curPalette->colors, NON_REMAPPED_COLOR_COUNT * sizeof(Color));
}
bool GfxRemap32::updateRemap(byte index, bool palChanged) {
@ -192,13 +192,13 @@ bool GfxRemap32::updateRemap(byte index, bool palChanged) {
if (!_update && !palChanged)
return false;
memset(_targetChanged, false, 236);
memset(_targetChanged, false, NON_REMAPPED_COLOR_COUNT);
switch (curRemap->type) {
case kRemappingNone:
return false;
case kRemappingByRange:
for (int i = 0; i < 236; i++) {
for (int i = 0; i < NON_REMAPPED_COLOR_COUNT; i++) {
if (curRemap->from <= i && i <= curRemap->to)
result = i + curRemap->base;
else
@ -213,7 +213,7 @@ bool GfxRemap32::updateRemap(byte index, bool palChanged) {
}
return changed;
case kRemappingByPercent:
for (int i = 1; i < 236; i++) {
for (int i = 1; i < NON_REMAPPED_COLOR_COUNT; i++) {
// NOTE: This method uses nextPalette instead of curPalette
Color color = nextPalette->colors[i];
@ -237,11 +237,11 @@ bool GfxRemap32::updateRemap(byte index, bool palChanged) {
}
changed = applyRemap(index);
memset(curRemap->colorChanged, false, 236);
memset(curRemap->colorChanged, false, NON_REMAPPED_COLOR_COUNT);
curRemap->oldPercent = curRemap->percent;
return changed;
case kRemappingToGray:
for (int i = 1; i < 236; i++) {
for (int i = 1; i < NON_REMAPPED_COLOR_COUNT; i++) {
Color color = curPalette->colors[i];
if (curRemap->curColor[i] != color) {
@ -265,11 +265,11 @@ bool GfxRemap32::updateRemap(byte index, bool palChanged) {
}
changed = applyRemap(index);
memset(curRemap->colorChanged, false, 236);
memset(curRemap->colorChanged, false, NON_REMAPPED_COLOR_COUNT);
curRemap->oldGray = curRemap->gray;
return changed;
case kRemappingToPercentGray:
for (int i = 1; i < 236; i++) {
for (int i = 1; i < NON_REMAPPED_COLOR_COUNT; i++) {
Color color = curPalette->colors[i];
if (curRemap->curColor[i] != color) {
@ -294,7 +294,7 @@ bool GfxRemap32::updateRemap(byte index, bool palChanged) {
}
changed = applyRemap(index);
memset(curRemap->colorChanged, false, 236);
memset(curRemap->colorChanged, false, NON_REMAPPED_COLOR_COUNT);
curRemap->oldPercent = curRemap->percent;
curRemap->oldGray = curRemap->gray;
return changed;
@ -313,26 +313,26 @@ static int colorDistance(Color a, Color b) {
bool GfxRemap32::applyRemap(byte index) {
RemapParams *curRemap = &_remaps[index];
const bool *cycleMap = _palette->getCyclemap();
bool unmappedColors[236];
Color newColors[236];
bool unmappedColors[NON_REMAPPED_COLOR_COUNT];
Color newColors[NON_REMAPPED_COLOR_COUNT];
bool changed = false;
memset(unmappedColors, 236, false);
memset(unmappedColors, NON_REMAPPED_COLOR_COUNT, false);
if (_noMapCount)
memset(unmappedColors + _noMapStart, true, _noMapCount);
for (int i = 0; i < 236; i++) {
for (int i = 0; i < NON_REMAPPED_COLOR_COUNT; i++) {
if (cycleMap[i])
unmappedColors[i] = true;
}
int curColor = 0;
for (int i = 1; i < 236; i++) {
for (int i = 1; i < NON_REMAPPED_COLOR_COUNT; i++) {
if (curRemap->colorChanged[i] && !unmappedColors[i])
newColors[curColor++] = curRemap->curColor[i];
}
for (int i = 1; i < 236; i++) {
for (int i = 1; i < NON_REMAPPED_COLOR_COUNT; i++) {
Color targetColor = curRemap->targetColor[i];
bool colorChanged = curRemap->colorChanged[curRemap->remap[i]];

View File

@ -39,6 +39,7 @@ enum ColorRemappingType {
};
#define REMAP_COLOR_COUNT 9
#define NON_REMAPPED_COLOR_COUNT 236
/**
* Remap class, handles color remapping
@ -93,7 +94,7 @@ struct RemapParams {
memset(curColor, 0, 256 * sizeof(Color));
memset(targetColor, 0, 256 * sizeof(Color));
memset(distance, 0, 256);
for (int i = 0; i < 236; i++)
for (int i = 0; i < NON_REMAPPED_COLOR_COUNT; i++)
remap[i] = i;
memset(colorChanged, true, 256);
}
@ -110,7 +111,7 @@ struct RemapParams {
memset(curColor, 0, 256 * sizeof(Color));
memset(targetColor, 0, 256 * sizeof(Color));
memset(distance, 0, 256);
for (int i = 0; i < 236; i++)
for (int i = 0; i < NON_REMAPPED_COLOR_COUNT; i++)
remap[i] = i;
memset(colorChanged, true, 256);
}
@ -135,7 +136,7 @@ private:
RemapParams _remaps[REMAP_COLOR_COUNT];
bool _update;
byte _noMapStart, _noMapCount;
bool _targetChanged[236];
bool _targetChanged[NON_REMAPPED_COLOR_COUNT];
byte _remapEndColor;
int _remapCount;