mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-03 03:25:28 -04:00
Clean up + notes for ICC profile sanitizing.
This commit is contained in:
parent
07df550c0c
commit
6d062cc49b
@ -5,7 +5,7 @@ import com.twelvemonkeys.lang.SystemUtil;
|
||||
import java.awt.color.ICC_Profile;
|
||||
|
||||
/**
|
||||
* ProfileCleaner.
|
||||
* ICCProfileSanitizer.
|
||||
*
|
||||
* @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a>
|
||||
* @author last modified by $Author: harald.kuhr$
|
||||
@ -23,13 +23,41 @@ interface ICCProfileSanitizer {
|
||||
// TODO: Allow user-specific strategy selection, should heuristics not work..?
|
||||
// -Dcom.twelvemonkeys.imageio.color.ICCProfileSanitizer=com.foo.bar.FooCMSSanitizer
|
||||
|
||||
// TODO: Support for explicit Java 7 settings: sun.java2d.cmm.kcms.CMM
|
||||
// (the CMSManager was changed from using direct class to ServiceProvider in Java 8,
|
||||
// so the class names/interfaces are different).
|
||||
|
||||
// Here's the evolution of Java Color Management:
|
||||
|
||||
// Java 6:
|
||||
// sun.awt.color.CMM (as the one and only)
|
||||
|
||||
// Java 7:
|
||||
// sun.java2d.cmm.CMSManager (using default sun.java2d.cmm=sun.java2d.cmm.kcms.CMM)
|
||||
// sun.java2d.cmm.PCMM
|
||||
// sun.java2d.cmm.kcms.CMM implements PCMM (similar to Java 6 CMM)
|
||||
// sun.javard.cmm.lcms.LCMS implements PCMM
|
||||
|
||||
// Java 8:
|
||||
// sun.java2d.cmm.CMSManager (using default sun.java2d.cmm=sun.java2d.cmm.lcms.LcmsServiceProvider)
|
||||
// sun.java2d.cmm.CMMServiceProvider (getModule() method, that returns PCMM)
|
||||
// sun.java2d.cmm.PCMM
|
||||
// sun.java2d.cmm.kcms.KcmsServiceProvider
|
||||
// sun.java2d.cmm.kcms.CMM implements PCMM (similar to Java 6 CMM)
|
||||
// sun.java2d.cmm.lcms.LcmsServiceProvider
|
||||
// sun.java2d.cmm.lcms.LCMS implements PCMM
|
||||
|
||||
// TODO: Consider a different option, invoking CMSManager.getModule() through reflection to get actual used instance
|
||||
// Default to using a NullSanitizerStrategy on non-Sun/Oracle systems?
|
||||
|
||||
ICCProfileSanitizer instance;
|
||||
|
||||
// Explicit System properties
|
||||
if ("sun.java2d.cmm.kcms.KcmsServiceProvider".equals(System.getProperty("sun.java2d.cmm")) && SystemUtil.isClassAvailable("sun.java2d.cmm.kcms.CMM")) {
|
||||
String cmmProperty = System.getProperty("sun.java2d.cmm");
|
||||
if ("sun.java2d.cmm.kcms.KcmsServiceProvider".equals(cmmProperty) && SystemUtil.isClassAvailable("sun.java2d.cmm.kcms.CMM")) {
|
||||
instance = new KCMSSanitizerStrategy();
|
||||
}
|
||||
else if ("sun.java2d.cmm.lcms.LcmsServiceProvider".equals(System.getProperty("sun.java2d.cmm")) && SystemUtil.isClassAvailable("sun.java2d.cmm.lcms.LCMS")) {
|
||||
else if ("sun.java2d.cmm.lcms.LcmsServiceProvider".equals(cmmProperty) && SystemUtil.isClassAvailable("sun.java2d.cmm.lcms.LCMS")) {
|
||||
instance = new LCMSSanitizerStrategy();
|
||||
}
|
||||
// Default for Java 1.8+ or OpenJDK 1.7+ (no KCMS available)
|
||||
|
Loading…
x
Reference in New Issue
Block a user