forked from coolwanglu/pdf2htmlEX
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathColor.cc
51 lines (40 loc) · 1.04 KB
/
Color.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#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