Changed license to CC0
[imagesqueeze.git] / src / main / java / eu / svjatoslav / imagesqueeze / codec / Color.java
1 /*
2  * Image codec. Author: Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.imagesqueeze.codec;
6
7 /**
8  * Helper class to convert between RGB and YUV
9  */
10 class Color {
11
12     int r;
13     int g;
14     int b;
15
16     int y;
17     int u;
18     int v;
19
20     public void RGB2YUV() {
21
22         y = (int) ((r * 0.299000) + (g * 0.587000) + (b * 0.114000));
23         u = (int) ((r * -0.168736) + (g * -0.331264) + (b * 0.500000) + 128);
24         v = (int) ((r * 0.500000) + (g * -0.418688) + (b * -0.081312) + 128);
25
26         if (y < 0)
27             y = 0;
28         if (u < 0)
29             u = 0;
30         if (v < 0)
31             v = 0;
32
33         if (y > 255)
34             y = 255;
35         if (u > 255)
36             u = 255;
37         if (v > 255)
38             v = 255;
39
40     }
41
42     public void YUV2RGB() {
43
44         b = (int) (y + (1.4075 * (v - 128)));
45         g = (int) (y - (0.3455 * (u - 128)) - (0.7169 * (v - 128)));
46         r = (int) (y + (1.7790 * (u - 128)));
47
48         if (r < 0)
49             r = 0;
50         if (g < 0)
51             g = 0;
52         if (b < 0)
53             b = 0;
54
55         if (r > 255)
56             r = 255;
57         if (g > 255)
58             g = 255;
59         if (b > 255)
60             b = 255;
61
62     }
63
64 }