Revision 8798 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultColorManager.java
DefaultColorManager.java | ||
---|---|---|
443 | 443 |
|
444 | 444 |
public double[] RGBtoCMYK(int red, int green, int blue, double kScale) { |
445 | 445 |
double[] cmyk = new double[4]; |
446 |
double c = 1D - (red / 255D);
|
|
447 |
double m = 1D - (green / 255D);
|
|
448 |
double y = 1D - (blue / 255D);
|
|
449 |
cmyk[3] = 1D; |
|
446 |
double r = red / 255D;
|
|
447 |
double g = green / 255D;
|
|
448 |
double b = blue / 255D;
|
|
449 |
cmyk[3] = 1D - Math.max(r, Math.max(g, b));
|
|
450 | 450 |
|
451 |
if(c < cmyk[3]) |
|
452 |
cmyk[3] = c; |
|
453 |
if(m < cmyk[3]) |
|
454 |
cmyk[3] = m; |
|
455 |
if(y < cmyk[3]) |
|
456 |
cmyk[3] = y; |
|
457 |
|
|
458 |
cmyk[3] *= kScale; |
|
459 |
|
|
460 |
if(cmyk[3] < 1.0) { |
|
461 |
cmyk[0] = ((double)(c - cmyk[3]) / (double)(1D - cmyk[3])); |
|
462 |
cmyk[1] = ((double)(m - cmyk[3]) / (double)(1D - cmyk[3])); |
|
463 |
cmyk[2] = ((double)(y - cmyk[3]) / (double)(1D - cmyk[3])); |
|
451 |
cmyk[0] = 0; |
|
452 |
cmyk[1] = 0; |
|
453 |
cmyk[2] = 0; |
|
454 |
if(cmyk[3]!=1){ |
|
455 |
cmyk[0] = ((double) (1 - r - cmyk[3]) / (double) (1D - cmyk[3])) * kScale; |
|
456 |
cmyk[1] = ((double) (1 - g - cmyk[3]) / (double) (1D - cmyk[3])) * kScale; |
|
457 |
cmyk[2] = ((double) (1 - b - cmyk[3]) / (double) (1D - cmyk[3])) * kScale; |
|
464 | 458 |
} |
459 |
cmyk[3] *= kScale; |
|
465 | 460 |
return cmyk; |
466 | 461 |
} |
467 | 462 |
|
468 | 463 |
public double[] CMYKtoRGB(double cyan, double magenta, double yellow, double key) { |
469 | 464 |
double[] rgb = new double[3]; |
470 |
double c = 1, m = 1, y = 1; |
|
471 | 465 |
|
472 |
if (key < 1D) { |
|
473 |
c = cyan * (1D - key) + key; |
|
474 |
m = magenta * (1D - key) + key; |
|
475 |
y = yellow * (1D - key) + key; |
|
476 |
} |
|
466 |
rgb[0] = (1D - cyan)*(1-key); |
|
467 |
rgb[1] = (1D - magenta)*(1-key); |
|
468 |
rgb[2] = (1D - yellow)*(1-key); |
|
477 | 469 |
|
478 |
rgb[0] = 1D - c; |
|
479 |
rgb[1] = 1D - m; |
|
480 |
rgb[2] = 1D - y; |
|
481 | 470 |
return rgb; |
482 | 471 |
} |
483 | 472 |
|
Also available in: Unified diff