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 } |