src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java

Print this page




 144             if (ID != 0L) {
 145                 // Disposer will destroy forgotten transform
 146                 disposerReferent = new Object();
 147             }
 148             inFormatter = in.pixelType;
 149             isInIntPacked = in.isIntPacked;
 150 
 151             outFormatter = out.pixelType;
 152             isOutIntPacked = out.isIntPacked;
 153 
 154             ID = LCMS.createNativeTransform(profileIDs, renderType,
 155                                             inFormatter, isInIntPacked,
 156                                             outFormatter, isOutIntPacked,
 157                                             disposerReferent);
 158         }
 159 
 160         LCMS.colorConvert(this, in, out);
 161     }
 162 
 163     public void colorConvert(BufferedImage src, BufferedImage dst) {
 164         if (LCMSImageLayout.isSupported(src) &&
 165             LCMSImageLayout.isSupported(dst))
 166         {
 167             doTransform(new LCMSImageLayout(src), new LCMSImageLayout(dst));




 168             return;
 169         }
 170         LCMSImageLayout srcIL, dstIL;

 171         Raster srcRas = src.getRaster();
 172         WritableRaster dstRas = dst.getRaster();
 173         ColorModel srcCM = src.getColorModel();
 174         ColorModel dstCM = dst.getColorModel();
 175         int w = src.getWidth();
 176         int h = src.getHeight();
 177         int srcNumComp = srcCM.getNumColorComponents();
 178         int dstNumComp = dstCM.getNumColorComponents();
 179         int precision = 8;
 180         float maxNum = 255.0f;
 181         for (int i = 0; i < srcNumComp; i++) {
 182             if (srcCM.getComponentSize(i) > 8) {
 183                  precision = 16;
 184                  maxNum = 65535.0f;
 185              }
 186         }
 187         for (int i = 0; i < dstNumComp; i++) {
 188             if (dstCM.getComponentSize(i) > 8) {
 189                  precision = 16;
 190                  maxNum = 65535.0f;


 422 
 423             // color convert srcLine to dstLine
 424             doTransform(srcIL, dstIL);
 425 
 426             // store dst scanline
 427             xd = dst.getMinX();
 428             idx = 0;
 429             for (int x = 0; x < w; x++, xd++) {
 430                 for (int i = 0; i < dstNumBands; i++) {
 431                     sample = ((dstLine[idx++] & 0xffff) * dstScaleFactor[i]) +
 432                              dstUseMinVal[i];
 433                     dst.setSample(xd, yd, i, sample);
 434                 }
 435             }
 436         }
 437     }
 438 
 439     public void colorConvert(Raster src, WritableRaster dst) {
 440 
 441         LCMSImageLayout srcIL, dstIL;








 442         // Can't pass src and dst directly to CMM, so process per scanline
 443         SampleModel srcSM = src.getSampleModel();
 444         SampleModel dstSM = dst.getSampleModel();
 445         int srcTransferType = src.getTransferType();
 446         int dstTransferType = dst.getTransferType();
 447         int w = src.getWidth();
 448         int h = src.getHeight();
 449         int srcNumBands = src.getNumBands();
 450         int dstNumBands = dst.getNumBands();
 451         int precision = 8;
 452         float maxNum = 255.0f;
 453         for (int i = 0; i < srcNumBands; i++) {
 454             if (srcSM.getSampleSize(i) > 8) {
 455                  precision = 16;
 456                  maxNum = 65535.0f;
 457              }
 458         }
 459         for (int i = 0; i < dstNumBands; i++) {
 460             if (dstSM.getSampleSize(i) > 8) {
 461                  precision = 16;




 144             if (ID != 0L) {
 145                 // Disposer will destroy forgotten transform
 146                 disposerReferent = new Object();
 147             }
 148             inFormatter = in.pixelType;
 149             isInIntPacked = in.isIntPacked;
 150 
 151             outFormatter = out.pixelType;
 152             isOutIntPacked = out.isIntPacked;
 153 
 154             ID = LCMS.createNativeTransform(profileIDs, renderType,
 155                                             inFormatter, isInIntPacked,
 156                                             outFormatter, isOutIntPacked,
 157                                             disposerReferent);
 158         }
 159 
 160         LCMS.colorConvert(this, in, out);
 161     }
 162 
 163     public void colorConvert(BufferedImage src, BufferedImage dst) {
 164         LCMSImageLayout srcIL, dstIL;
 165 
 166         dstIL = LCMSImageLayout.createImageLayout(dst);
 167 
 168         if (dstIL != null) {
 169             srcIL = LCMSImageLayout.createImageLayout(src);
 170             if (srcIL != null) {
 171                 doTransform(srcIL, dstIL);
 172                 return;
 173             }
 174         }
 175 
 176         Raster srcRas = src.getRaster();
 177         WritableRaster dstRas = dst.getRaster();
 178         ColorModel srcCM = src.getColorModel();
 179         ColorModel dstCM = dst.getColorModel();
 180         int w = src.getWidth();
 181         int h = src.getHeight();
 182         int srcNumComp = srcCM.getNumColorComponents();
 183         int dstNumComp = dstCM.getNumColorComponents();
 184         int precision = 8;
 185         float maxNum = 255.0f;
 186         for (int i = 0; i < srcNumComp; i++) {
 187             if (srcCM.getComponentSize(i) > 8) {
 188                  precision = 16;
 189                  maxNum = 65535.0f;
 190              }
 191         }
 192         for (int i = 0; i < dstNumComp; i++) {
 193             if (dstCM.getComponentSize(i) > 8) {
 194                  precision = 16;
 195                  maxNum = 65535.0f;


 427 
 428             // color convert srcLine to dstLine
 429             doTransform(srcIL, dstIL);
 430 
 431             // store dst scanline
 432             xd = dst.getMinX();
 433             idx = 0;
 434             for (int x = 0; x < w; x++, xd++) {
 435                 for (int i = 0; i < dstNumBands; i++) {
 436                     sample = ((dstLine[idx++] & 0xffff) * dstScaleFactor[i]) +
 437                              dstUseMinVal[i];
 438                     dst.setSample(xd, yd, i, sample);
 439                 }
 440             }
 441         }
 442     }
 443 
 444     public void colorConvert(Raster src, WritableRaster dst) {
 445 
 446         LCMSImageLayout srcIL, dstIL;
 447         dstIL = LCMSImageLayout.createImageLayout(dst);
 448         if (dstIL != null) {
 449             srcIL = LCMSImageLayout.createImageLayout(src);
 450             if (srcIL != null) {
 451                 doTransform(srcIL, dstIL);
 452                 return;
 453             }
 454         }
 455         // Can't pass src and dst directly to CMM, so process per scanline
 456         SampleModel srcSM = src.getSampleModel();
 457         SampleModel dstSM = dst.getSampleModel();
 458         int srcTransferType = src.getTransferType();
 459         int dstTransferType = dst.getTransferType();
 460         int w = src.getWidth();
 461         int h = src.getHeight();
 462         int srcNumBands = src.getNumBands();
 463         int dstNumBands = dst.getNumBands();
 464         int precision = 8;
 465         float maxNum = 255.0f;
 466         for (int i = 0; i < srcNumBands; i++) {
 467             if (srcSM.getSampleSize(i) > 8) {
 468                  precision = 16;
 469                  maxNum = 65535.0f;
 470              }
 471         }
 472         for (int i = 0; i < dstNumBands; i++) {
 473             if (dstSM.getSampleSize(i) > 8) {
 474                  precision = 16;