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));
}
Example #2
0
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;
}