| 261 | |
| 262 | |
| 263 | static private double[] rgbToXyz(Color color) { |
| 264 | double var_R = color.getRed() / 255.0; |
| 265 | double var_G = color.getGreen() / 255.0; |
| 266 | double var_B = color.getBlue() / 255.0; |
| 267 | |
| 268 | var_R = 100 * ((var_R > 0.04045) ? |
| 269 | Math.pow((var_R + 0.055) / 1.055, 2.4) : var_R / 12.92); |
| 270 | var_G = 100 * ((var_G > 0.04045) ? |
| 271 | Math.pow((var_G + 0.055) / 1.055, 2.4) : var_G / 12.92); |
| 272 | var_B = 100 * ((var_B > 0.04045) ? |
| 273 | Math.pow((var_B + 0.055) / 1.055, 2.4) : var_B / 12.92); |
| 274 | |
| 275 | // Observer = 2°, Illuminant = D65 |
| 276 | return new double[] { |
| 277 | var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805, |
| 278 | var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722, |
| 279 | var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505 |
| 280 | }; |
| 281 | } |
| 282 | |
| 283 | |
| 284 | static private double[] xyzToLab(double[] xyz) { |