jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java
changeset 14884 74d1acdb7ee4
parent 7668 d4a77089c587
child 16899 666a37b19844
child 15974 91b0e63e6e83
equal deleted inserted replaced
14883:524cf4063ab3 14884:74d1acdb7ee4
    53 import sun.java2d.cmm.lcms.*;
    53 import sun.java2d.cmm.lcms.*;
    54 
    54 
    55 
    55 
    56 public class LCMSTransform implements ColorTransform {
    56 public class LCMSTransform implements ColorTransform {
    57     long ID;
    57     long ID;
    58     private int inFormatter;
    58     private int inFormatter = 0;
    59     private int outFormatter;
    59     private boolean isInIntPacked = false;
       
    60     private int outFormatter = 0;
       
    61     private boolean isOutIntPacked = false;
    60 
    62 
    61     ICC_Profile[] profiles;
    63     ICC_Profile[] profiles;
    62     long [] profileIDs;
    64     long [] profileIDs;
    63     int renderType;
    65     int renderType;
    64     int transformType;
    66     int transformType;
   133 
   135 
   134     private synchronized void doTransform(LCMSImageLayout in,
   136     private synchronized void doTransform(LCMSImageLayout in,
   135                                           LCMSImageLayout out) {
   137                                           LCMSImageLayout out) {
   136         // update native transfrom if needed
   138         // update native transfrom if needed
   137         if (ID == 0L ||
   139         if (ID == 0L ||
   138             inFormatter != in.pixelType ||
   140             inFormatter != in.pixelType || isInIntPacked != in.isIntPacked ||
   139             outFormatter != out.pixelType) {
   141             outFormatter != out.pixelType || isOutIntPacked != out.isIntPacked)
       
   142         {
   140 
   143 
   141             if (ID != 0L) {
   144             if (ID != 0L) {
   142                 // Disposer will destroy forgotten transform
   145                 // Disposer will destroy forgotten transform
   143                 disposerReferent = new Object();
   146                 disposerReferent = new Object();
   144             }
   147             }
   145             inFormatter = in.pixelType;
   148             inFormatter = in.pixelType;
       
   149             isInIntPacked = in.isIntPacked;
       
   150 
   146             outFormatter = out.pixelType;
   151             outFormatter = out.pixelType;
       
   152             isOutIntPacked = out.isIntPacked;
   147 
   153 
   148             ID = LCMS.createNativeTransform(profileIDs, renderType,
   154             ID = LCMS.createNativeTransform(profileIDs, renderType,
   149                                             inFormatter, outFormatter,
   155                                             inFormatter, isInIntPacked,
       
   156                                             outFormatter, isOutIntPacked,
   150                                             disposerReferent);
   157                                             disposerReferent);
   151         }
   158         }
   152 
   159 
   153         LCMS.colorConvert(this, in, out);
   160         LCMS.colorConvert(this, in, out);
   154     }
   161     }