Removed handling of alpha component in EC::hexToRgb

This commit is contained in:
suhrke 2017-07-06 18:00:27 -07:00
parent 7747fd32fb
commit 34db7aa76b
2 changed files with 8 additions and 15 deletions

View File

@ -638,9 +638,8 @@ EntityConverter::convertPointLight(const std::vector<std::string> &lines) const
float red; float red;
float green; float green;
float blue; float blue;
// Convert 32bit hex value into RGB values // Convert 32bit hex RGBA value (ALPHA ALWAYS FULL) into RGB values
float backgroundColor = 0.5; //!! Just a guess hexToRGB(color, red, green, blue);
hexToRGB(color, backgroundColor, red, green, blue);
colorStream << "\"_color\" \"" << red << " " << green << " " << blue << "\"" << std::endl; colorStream << "\"_color\" \"" << red << " " << green << " " << blue << "\"" << std::endl;
convertedLines.push_back (colorStream.str() ); convertedLines.push_back (colorStream.str() );
} }
@ -741,7 +740,7 @@ EntityConverter::offset(const std::string &value, const float amount) const
void void
EntityConverter::hexToRGB(const std::string &hex, float background, float &r, float &g, float &b) const EntityConverter::hexToRGB(const std::string &hex, float &r, float &g, float &b) const
{ {
unsigned int value; unsigned int value;
std::stringstream ss; std::stringstream ss;
@ -749,16 +748,11 @@ EntityConverter::hexToRGB(const std::string &hex, float background, float &r, fl
ss >> value; ss >> value;
// BYTE ORDER IS ARGB // BYTE ORDER IS ARGB
// Alpha value is always full -> can be ignored safely
// Get each value and normalize // Get each value and normalize
float sourceAlpha = ((value >> 24) & 0xFF) / 255.0; r = ((value >> 16) & 0xFF) / 255.0;
float sourceRed = ((value >> 16) & 0xFF) / 255.0; g = ((value >> 8) & 0xFF) / 255.0;
float sourceGreen = ((value >> 8) & 0xFF) / 255.0; b = ((value) & 0xFF) / 255.0;
float sourceBlue = ((value) & 0xFF) / 255.0;
// Convert RGB value close to something close to the source RGBA value
r = ((1 - sourceAlpha) * background) + (sourceAlpha * sourceRed);
g = ((1 - sourceAlpha) * background) + (sourceAlpha * sourceGreen);
b = ((1 - sourceAlpha) * background) + (sourceAlpha * sourceBlue);
} }

View File

@ -200,13 +200,12 @@ class EntityConverter
* Method: EntityConverter :: hexToRGB * Method: EntityConverter :: hexToRGB
* Description: Convert 8 digit hex value into separate red, green, and blue values * Description: Convert 8 digit hex value into separate red, green, and blue values
* Parameter: string hex, inputted hex RGBA value (leftmost byte is alpha, then RGB) * Parameter: string hex, inputted hex RGBA value (leftmost byte is alpha, then RGB)
* Parameter: float background, background color
* Parameter: float r, RETURN BY REFERENCE: converted red value * Parameter: float r, RETURN BY REFERENCE: converted red value
* Parameter: float g, RETURN BY REFERENCE: converted green value * Parameter: float g, RETURN BY REFERENCE: converted green value
* Parameter: float b, RETURN BY REFERENCE: converted blue value * Parameter: float b, RETURN BY REFERENCE: converted blue value
*-------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------
*/ */
void hexToRGB(const std::string &hex, const float background, float &r, float &g, float &b) const; void hexToRGB(const std::string &hex, float &r, float &g, float &b) const;
/* /*
*-------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------
* Class: EntityConverter * Class: EntityConverter