ULRE/src/Base/Color4f.cpp

71 lines
1.9 KiB
C++

#include<hgl/type/Color4f.h>
namespace hgl
{
void Color4f::Use(COLOR_ENUM ce,float ta)
{
r=prv_color[ce].r;
g=prv_color[ce].g;
b=prv_color[ce].b;
a=ta;
}
void Color4f::Clamp()
{
if(r<0)r=0;if(r>1)r=1;
if(g<0)g=0;if(g>1)g=1;
if(b<0)b=0;if(b>1)b=1;
if(a<0)a=0;if(a>1)a=1;
}
//--------------------------------------------------------------------------------------------------
/**
* 求当前颜色过渡到另一颜色时某一比例时的颜色
* @param nr,ng,nb 新的颜色
* @param pos 过渡比例,0时为当前的颜色,1时为nr,ng,nb
*/
void Color4f::To(float nr,float ng,float nb,float pos)
{
if(pos==0)return;
if(pos==1)
{
r=nr;
g=ng;
b=nb;
return;
}
r+=(nr-r)*pos;
g+=(ng-g)*pos;
b+=(nb-b)*pos;
}
//--------------------------------------------------------------------------------------------------
void Color4f::Grey()
{
float lum=r*0.299+g*0.587+b*0.114;
r=lum;
g=lum;
b=lum;
}
//--------------------------------------------------------------------------------------------------
bool Color4f::operator == (const Color4f &v)
{
if(r!=v.r)return(false);
if(g!=v.g)return(false);
if(b!=v.b)return(false);
if(a!=v.a)return(false);
return(true);
}
//--------------------------------------------------------------------------------------------------
bool Color4f::operator != (const Color4f &v)
{
if(r!=v.r)return(true);
if(g!=v.g)return(true);
if(b!=v.b)return(true);
if(a!=v.a)return(true);
return(false);
}
//--------------------------------------------------------------------------------------------------
}