mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
DIRECTOR: Condition arithmetic inks all at once
This commit is contained in:
parent
558156c54f
commit
fbc201ef90
@ -866,43 +866,38 @@ void inkDrawPixel(int x, int y, int color, void *data) {
|
||||
break;
|
||||
// Arithmetic ink types
|
||||
default: {
|
||||
byte rSrc, gSrc, bSrc;
|
||||
byte rDst, gDst, bDst;
|
||||
if (src != p->numColors - 1) {
|
||||
byte rSrc, gSrc, bSrc;
|
||||
byte rDst, gDst, bDst;
|
||||
|
||||
g_director->_wm->decomposeColor(src, rSrc, gSrc, bSrc);
|
||||
g_director->_wm->decomposeColor(*dst, rDst, gDst, bDst);
|
||||
g_director->_wm->decomposeColor(src, rSrc, gSrc, bSrc);
|
||||
g_director->_wm->decomposeColor(*dst, rDst, gDst, bDst);
|
||||
|
||||
switch (p->ink) {
|
||||
case kInkTypeBlend:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor((rSrc + rDst) / 2, (gSrc + gDst) / 2, (bSrc + bDst) / 2);
|
||||
break;
|
||||
case kInkTypeAddPin:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(MIN((rSrc + rDst), p->numColors - 1), MIN((gSrc + gDst), p->numColors - 1), MIN((bSrc + bDst), p->numColors - 1));
|
||||
break;
|
||||
case kInkTypeAdd:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(abs(rSrc + rDst) % p->numColors, abs(gSrc + gDst) % p->numColors, abs(bSrc + bDst) % p->numColors);
|
||||
break;
|
||||
case kInkTypeSubPin:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(MAX(rSrc - rDst, 0), MAX(gSrc - gDst, 0), MAX(bSrc - bDst, 0));
|
||||
break;
|
||||
case kInkTypeLight:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(MAX(rSrc, rDst), MAX(gSrc, gDst), MAX(bSrc, bDst));
|
||||
break;
|
||||
case kInkTypeSub:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(abs(rSrc - rDst) % p->numColors, abs(gSrc - gDst) % p->numColors, abs(bSrc - bDst) % p->numColors);
|
||||
break;
|
||||
case kInkTypeDark:
|
||||
if (src != p->numColors - 1)
|
||||
*dst = p->_wm->findBestColor(MIN(rSrc, rDst), MIN(gSrc, gDst), MIN(bSrc, bDst));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
switch (p->ink) {
|
||||
case kInkTypeBlend:
|
||||
*dst = p->_wm->findBestColor((rSrc + rDst) / 2, (gSrc + gDst) / 2, (bSrc + bDst) / 2);
|
||||
break;
|
||||
case kInkTypeAddPin:
|
||||
*dst = p->_wm->findBestColor(MIN((rSrc + rDst), p->numColors - 1), MIN((gSrc + gDst), p->numColors - 1), MIN((bSrc + bDst), p->numColors - 1));
|
||||
break;
|
||||
case kInkTypeAdd:
|
||||
*dst = p->_wm->findBestColor(abs(rSrc + rDst) % p->numColors, abs(gSrc + gDst) % p->numColors, abs(bSrc + bDst) % p->numColors);
|
||||
break;
|
||||
case kInkTypeSubPin:
|
||||
*dst = p->_wm->findBestColor(MAX(rSrc - rDst, 0), MAX(gSrc - gDst, 0), MAX(bSrc - bDst, 0));
|
||||
break;
|
||||
case kInkTypeLight:
|
||||
*dst = p->_wm->findBestColor(MAX(rSrc, rDst), MAX(gSrc, gDst), MAX(bSrc, bDst));
|
||||
break;
|
||||
case kInkTypeSub:
|
||||
*dst = p->_wm->findBestColor(abs(rSrc - rDst) % p->numColors, abs(gSrc - gDst) % p->numColors, abs(bSrc - bDst) % p->numColors);
|
||||
break;
|
||||
case kInkTypeDark:
|
||||
*dst = p->_wm->findBestColor(MIN(rSrc, rDst), MIN(gSrc, gDst), MIN(bSrc, bDst));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user