mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-10-05 19:41:40 +00:00
52 lines
1.0 KiB
C++
52 lines
1.0 KiB
C++
#include <cmath>
|
|
|
|
#include "Color.h"
|
|
|
|
#include "util/misc.h"
|
|
|
|
namespace pdf2htmlEX {
|
|
|
|
using std::ostream;
|
|
|
|
Color::Color()
|
|
{
|
|
memset(this, 0, sizeof(Color));
|
|
}
|
|
|
|
Color::Color(double r, double g, double b, bool transparent)
|
|
:transparent(transparent)
|
|
{
|
|
rgb.r = (GfxColorComp)(r * gfxColorComp1);
|
|
rgb.g = (GfxColorComp)(g * gfxColorComp1);
|
|
rgb.b = (GfxColorComp)(b * gfxColorComp1);
|
|
}
|
|
|
|
Color::Color(const GfxRGB& rgb)
|
|
:transparent(false), rgb(rgb) { }
|
|
|
|
ostream & operator << (ostream & out, const Color & color)
|
|
{
|
|
if(color.transparent)
|
|
out << "transparent";
|
|
else
|
|
out << color.rgb;
|
|
return out;
|
|
}
|
|
|
|
void Color::get_gfx_color(GfxColor & gc) const
|
|
{
|
|
gc.c[0] = rgb.r;
|
|
gc.c[1] = rgb.g;
|
|
gc.c[2] = rgb.b;
|
|
}
|
|
|
|
double Color::distance(const Color & other) const
|
|
{
|
|
double dr = (double)rgb.r - other.rgb.r,
|
|
dg = (double)rgb.g - other.rgb.g,
|
|
db = (double)rgb.b - other.rgb.b;
|
|
return sqrt((dr * dr + dg * dg + db * db) / (3.0 * gfxColorComp1 * gfxColorComp1));
|
|
}
|
|
|
|
} // namespace pdf2htmlEX
|