#include "StdAfx.h" #include "GrpColor.h" CGraphicColor::CGraphicColor() { Clear(); } CGraphicColor::CGraphicColor(const CGraphicColor& c_rSrcColor) { Set(c_rSrcColor); } CGraphicColor::CGraphicColor(float r, float g, float b, float a) { Set(r, g, b, a); } CGraphicColor::CGraphicColor(DWORD color) { Set(color); } CGraphicColor::~CGraphicColor() { } void CGraphicColor::Clear() { Set(1.0f, 1.0f, 1.0f, 1.0f); } void CGraphicColor::Set(float r, float g, float b, float a) { m_r=r; m_g=g; m_b=b; m_a=a; } void CGraphicColor::Set(const CGraphicColor& c_rSrcColor) { m_r=c_rSrcColor.m_r; m_g=c_rSrcColor.m_g; m_b=c_rSrcColor.m_b; m_a=c_rSrcColor.m_a; } void CGraphicColor::Blend(float p, const CGraphicColor& c_rSrcColor, const CGraphicColor& c_rDstColor) { float q=1.0f-p; m_r=c_rSrcColor.m_r*q+c_rDstColor.m_r*p; m_g=c_rSrcColor.m_g*q+c_rDstColor.m_g*p; m_b=c_rSrcColor.m_b*q+c_rDstColor.m_b*p; m_a=c_rSrcColor.m_a*q+c_rDstColor.m_a*p; } void CGraphicColor::Set(DWORD pack) { m_b = (pack & 0xff) / 255.0f; pack >>= 8; m_g = (pack & 0xff) / 255.0f; pack >>= 8; m_r = (pack & 0xff) / 255.0f; pack >>= 8; m_a = (pack) / 255.0f; } DWORD CGraphicColor::GetPackValue() const { DWORD packValue=0; packValue = int(255.0f * m_a);packValue <<= 8; packValue |= int(255.0f * m_r);packValue <<= 8; packValue |= int(255.0f * m_g);packValue <<= 8; packValue |= int(255.0f * m_b); return packValue; }