int PixelTranspType (short nTexture, short nOrient, short nFrame, fix u, fix v) { CBitmap *bmP; int bmx, bmy, w, h, offs; ubyte c; #if 0 tBitmapIndex *bmiP; bmiP = gameData.pig.tex.bmIndexP + (nTexture); LoadBitmap (*bmiP, gameStates.app.bD1Data); bmP = BmOverride (gameData.pig.tex.bitmapP + bmiP->index); #else bmP = LoadFaceBitmap (nTexture, nFrame); if (!bmP->Buffer ()) return 0; #endif if (bmP->Flags () & BM_FLAG_RLE) bmP = rle_expand_texture (bmP); w = bmP->Width (); h = ((bmP->Type () == BM_TYPE_ALT) && bmP->Frames ()) ? w : bmP->Height (); if (nOrient == 0) { bmx = ((unsigned) X2I (u * w)) % w; bmy = ((unsigned) X2I (v * h)) % h; } else if (nOrient == 1) { bmx = ((unsigned) X2I ((I2X (1) - v) * w)) % w; bmy = ((unsigned) X2I (u * h)) % h; } else if (nOrient == 2) { bmx = ((unsigned) X2I ((I2X (1) - u) * w)) % w; bmy = ((unsigned) X2I ((I2X (1) - v) * h)) % h; } else { bmx = ((unsigned) X2I (v * w)) % w; bmy = ((unsigned) X2I ((I2X (1) - u) * h)) % h; } offs = bmy * w + bmx; if (bmP->Flags () & BM_FLAG_TGA) { ubyte *p; if (bmP->BPP () == 3) //no alpha -> no transparency return 0; p = bmP->Buffer () + offs * bmP->BPP (); // check super transparency color #if 1 if ((p [0] == 120) && (p [1] == 88) && (p [2] == 128)) #else if ((gameOpts->ogl.bGlTexMerge) ? (p [3] == 1) : ((p [0] == 120) && (p [1] == 88) && (p [2] == 128))) #endif return -1; // check alpha if (!p [3]) return 1; } else { c = bmP->Buffer () [offs]; if (c == SUPER_TRANSP_COLOR) return -1; if (c == TRANSPARENCY_COLOR) return 1; } return 0; }