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

View differences:

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