Skip to content
Snippets Groups Projects
Commit 8d7e8ce2 authored by Marco Biasini's avatar Marco Biasini
Browse files

remove tabs; reindent and add missing DLLEXPORT

parent c3f55f2b
No related branches found
No related tags found
No related merge requests found
......@@ -26,97 +26,97 @@
namespace ost { namespace gfx {
namespace {
// maps hsv to rgb (0-1)
geom::Vec3 HSVtoRGB(const geom::Vec3& hsv)
{
geom::Vec3 rgb;
if (hsv[1]<1e-9){
rgb[0]=hsv[2];
rgb[1]=hsv[2];
rgb[2]=hsv[2];
} else {
double var_h=hsv[0]*6.0<6.0?hsv[0]*6.0:0.0;
int var_i =static_cast<int>(var_h);
double var_1 = hsv[2]*(1-hsv[1]);
double var_2 = hsv[2]*(1-hsv[1]*( var_h -var_i));
double var_3 = hsv[2]*(1-hsv[1]*(1-(var_h-var_i)));
switch(var_i){
case 0:
rgb[0]=hsv[2];
rgb[1]=var_3;
rgb[2]=var_1;
break;
case 1:
rgb[0] = var_2;
rgb[1] = hsv[2];
rgb[2] = var_1;
break;
case 2:
rgb[0] = var_1;
rgb[1] = hsv[2];
rgb[2] = var_3;
break;
case 3:
rgb[0] = var_1 ;
rgb[1] = var_2 ;
rgb[2] = hsv[2];
break;
case 4:
rgb[0] = var_3 ;
rgb[1] = var_1 ;
rgb[2] = hsv[2];
break;
case 5:
rgb[0] = hsv[2] ;
rgb[1] = var_1 ;
rgb[2] = var_2;
break;
}
}
return rgb;
namespace {
// maps hsv to rgb (0-1)
geom::Vec3 HSVtoRGB(const geom::Vec3& hsv)
{
geom::Vec3 rgb;
if (hsv[1]<1e-9){
rgb[0]=hsv[2];
rgb[1]=hsv[2];
rgb[2]=hsv[2];
} else {
double var_h=hsv[0]*6.0<6.0?hsv[0]*6.0:0.0;
int var_i =static_cast<int>(var_h);
double var_1 = hsv[2]*(1-hsv[1]);
double var_2 = hsv[2]*(1-hsv[1]*( var_h -var_i));
double var_3 = hsv[2]*(1-hsv[1]*(1-(var_h-var_i)));
switch(var_i){
case 0:
rgb[0]=hsv[2];
rgb[1]=var_3;
rgb[2]=var_1;
break;
case 1:
rgb[0] = var_2;
rgb[1] = hsv[2];
rgb[2] = var_1;
break;
case 2:
rgb[0] = var_1;
rgb[1] = hsv[2];
rgb[2] = var_3;
break;
case 3:
rgb[0] = var_1 ;
rgb[1] = var_2 ;
rgb[2] = hsv[2];
break;
case 4:
rgb[0] = var_3 ;
rgb[1] = var_1 ;
rgb[2] = hsv[2];
break;
case 5:
rgb[0] = hsv[2];
rgb[1] = var_1 ;
rgb[2] = var_2;
break;
}
}
return rgb;
}
// maps rgb (0-1) to hsv
geom::Vec3 RGBtoHSV(const geom::Vec3& rgb)
{
geom::Vec3 hsv;
double var_R = ( rgb[0] / 255.0 );
double var_G = ( rgb[1] / 255.0 );
double var_B = ( rgb[2] / 255.0 );
double var_Min = std::min(std::min( var_R, var_G), var_B );
double var_Max = std::max(std::max( var_R, var_G), var_B );
double del_Max = var_Max - var_Min;
hsv[2] = var_Max;
if ( del_Max < 1.0e-9 ){
hsv[0] = 0.0;
hsv[1] = 0.0;
} else {
hsv[1] = del_Max / var_Max;
double del_R = ( ( ( var_Max - var_R ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
double del_G = ( ( ( var_Max - var_G ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
double del_B = ( ( ( var_Max - var_B ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
if ( var_R == var_Max ){
hsv[0] = del_B - del_G;
} else if ( var_G == var_Max ){
hsv[0] = ( 1.0 / 3.0 ) + del_R - del_B;
} else if ( var_B == var_Max ){
hsv[0] = ( 2.0 / 3.0 ) + del_G - del_R;
}
if ( hsv[0] < 0 ){
hsv[0] += 1;
}
if ( hsv[0] > 1 ){
hsv[0] -= 1;
}
}
return hsv;
// maps rgb (0-1) to hsv
geom::Vec3 RGBtoHSV(const geom::Vec3& rgb)
{
geom::Vec3 hsv;
double var_R = ( rgb[0] / 255.0 );
double var_G = ( rgb[1] / 255.0 );
double var_B = ( rgb[2] / 255.0 );
double var_Min = std::min(std::min( var_R, var_G), var_B );
double var_Max = std::max(std::max( var_R, var_G), var_B );
double del_Max = var_Max - var_Min;
hsv[2] = var_Max;
if ( del_Max < 1.0e-9 ){
hsv[0] = 0.0;
hsv[1] = 0.0;
} else {
hsv[1] = del_Max / var_Max;
double del_R = ( ( ( var_Max - var_R ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
double del_G = ( ( ( var_Max - var_G ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
double del_B = ( ( ( var_Max - var_B ) / 6.0 ) + ( del_Max / 2.0 ) ) / del_Max;
if ( var_R == var_Max ){
hsv[0] = del_B - del_G;
} else if ( var_G == var_Max ){
hsv[0] = ( 1.0 / 3.0 ) + del_R - del_B;
} else if ( var_B == var_Max ){
hsv[0] = ( 2.0 / 3.0 ) + del_G - del_R;
}
} // anon ns
if ( hsv[0] < 0 ){
hsv[0] += 1;
}
if ( hsv[0] > 1 ){
hsv[0] -= 1;
}
}
return hsv;
}
} // anon ns
geom::Vec3 Color::ToHSV()
{
......
......@@ -65,7 +65,7 @@ public:
unsigned char b, unsigned char a = 0xff) {
static float f=1.0/255.0;
return Color(f*static_cast<float>(r),f*static_cast<float>(g),
f*static_cast<float>(b),f*static_cast<float>(a));
f*static_cast<float>(b),f*static_cast<float>(a));
}
geom::Vec3 ToHSV();
......@@ -85,7 +85,7 @@ private:
float rgba[4];
};
Color HSV(double h, double s, double v);
Color DLLEXPORT_OST_GFX HSV(double h, double s, double v);
DLLEXPORT_OST_GFX std::ostream& operator<<(std::ostream&, const Color& c);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment