#75902 - racarate - Thu Mar 16, 2006 10:33 pm
Hi, I wrote a function to blend two colors
unsigned short blendColor( unsigned short colorA, unsigned short colorB, float colorRatio )
{
colorA = ( colorRatio * ( colorA & 0xF000 ) ) | ( colorA & 0x0FFF );
colorA = ( colorRatio * ( colorA & 0x0F00 ) ) | ( colorA & 0xF0FF );
colorA = ( colorRatio * ( colorA & 0x00F0 ) ) | ( colorA & 0xFF0F );
colorA = ( colorRatio * ( colorA & 0x000F ) ) | ( colorA & 0xFFF0 );
colorRatio = 1 - colorRatio;
colorB = ( colorRatio * ( colorA & 0xF000 ) ) | ( colorA & 0x0FFF );
colorB = ( colorRatio * ( colorA & 0x0F00 ) ) | ( colorA & 0xF0FF );
colorB = ( colorRatio * ( colorA & 0x00F0 ) ) | ( colorA & 0xFF0F );
colorB = ( colorRatio * ( colorA & 0x000F ) ) | ( colorA & 0xFFF0 );
return ( colorA + colorB );
}
And while I think my logic is sound, I am getting the following error:
error: invalid operands to binary |
What is the implicit cast that occurs when a short is multiplied by a float? If it resolves to a float, why can't I use a binary OR on it?
_________________
Neko: I love meow-tain climbing!
Need anything? I'll even save your game!
unsigned short blendColor( unsigned short colorA, unsigned short colorB, float colorRatio )
{
colorA = ( colorRatio * ( colorA & 0xF000 ) ) | ( colorA & 0x0FFF );
colorA = ( colorRatio * ( colorA & 0x0F00 ) ) | ( colorA & 0xF0FF );
colorA = ( colorRatio * ( colorA & 0x00F0 ) ) | ( colorA & 0xFF0F );
colorA = ( colorRatio * ( colorA & 0x000F ) ) | ( colorA & 0xFFF0 );
colorRatio = 1 - colorRatio;
colorB = ( colorRatio * ( colorA & 0xF000 ) ) | ( colorA & 0x0FFF );
colorB = ( colorRatio * ( colorA & 0x0F00 ) ) | ( colorA & 0xF0FF );
colorB = ( colorRatio * ( colorA & 0x00F0 ) ) | ( colorA & 0xFF0F );
colorB = ( colorRatio * ( colorA & 0x000F ) ) | ( colorA & 0xFFF0 );
return ( colorA + colorB );
}
And while I think my logic is sound, I am getting the following error:
error: invalid operands to binary |
What is the implicit cast that occurs when a short is multiplied by a float? If it resolves to a float, why can't I use a binary OR on it?
_________________
Neko: I love meow-tain climbing!
Need anything? I'll even save your game!