COLOR CalculateConstFactor(uint32 colorOp, uint32 alphaOp, uint32 curCol) { N64CombinerType m; IColor color(curCol); IColor alpha(curCol); // For color channel *(uint32*)&m = colorOp; if (m.c != MUX_0 && m.a != m.b) { if (m.a != MUX_0) color = GetIColor(m.a, curCol); if (m.b != MUX_0) color -= GetIColor(m.b, curCol); if (m.c != MUX_1) color *= GetIColor(m.c, curCol); } if (m.d != MUX_0) color += GetIColor(m.d, curCol); // For alpha channel *(uint32*)&m = alphaOp; if (m.c != MUX_0 && m.a != m.b) { if (m.a != MUX_0) alpha = GetIColor(m.a, curCol); if (m.b != MUX_0) alpha -= GetIColor(m.b, curCol); if (m.c != MUX_1) alpha *= GetIColor(m.c, curCol); } if (m.d != MUX_0) alpha += GetIColor(m.d, curCol); return (COLOR)(((uint32)color&0x00FFFFFF)|((uint32)alpha&0xFF000000)); }
int Window_Selectable::GetItemColor(BYTE itemType) const{ switch(itemType){ case WND_SELECTABLE_COLOR_SELECTED: return GetTextColor(); break; case WND_SELECTABLE_COLOR_ACTIVE: return GetIColor(); break; case WND_SELECTABLE_COLOR_INACTIVE: return GetNColor(); break; } return 0; }