1 /* 2 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.java2d.cmm.lcms; 27 28 import java.awt.color.ColorSpace; 29 import java.awt.color.ICC_Profile; 30 import java.awt.color.CMMException; 31 import sun.java2d.cmm.ColorTransform; 32 import sun.java2d.cmm.PCMM; 33 import sun.java2d.cmm.lcms.LCMS; 34 import sun.java2d.cmm.lcms.LCMSTransform; 35 36 public class LCMS implements PCMM { 37 38 /* methods invoked from ICC_Profile */ 39 public native long loadProfile(byte[] data); 40 41 public native void freeProfile(long profileID); 42 43 public native synchronized int getProfileSize(long profileID); 44 45 public native synchronized void getProfileData(long profileID, byte[] data); 46 47 public native synchronized int getTagSize(long profileID, int tagSignature); 48 public native synchronized void getTagData(long profileID, int tagSignature, 49 byte[] data); 50 public native synchronized void setTagData(long profileID, int tagSignature, 51 byte[] data); 52 53 public static native long getProfileID(ICC_Profile profile); 54 55 public static native long createNativeTransform( 56 long[] profileIDs, int renderType, 57 int inFormatter, boolean isInIntPacked, 58 int outFormatter, boolean isOutIntPacked, 59 Object disposerRef); 60 61 /** 62 * Constructs ColorTransform object corresponding to an ICC_profile 63 */ 64 public ColorTransform createTransform(ICC_Profile profile, 65 int renderType, 66 int transformType) 67 { 68 return new LCMSTransform(profile, renderType, renderType); 69 } 70 71 /** 72 * Constructs an ColorTransform object from a list of ColorTransform 73 * objects 74 */ 75 public synchronized ColorTransform createTransform( 76 ColorTransform[] transforms) 77 { 78 return new LCMSTransform(transforms); 79 } 80 81 /* methods invoked from LCMSTransform */ 82 public static native void colorConvert(LCMSTransform trans, 83 LCMSImageLayout src, 84 LCMSImageLayout dest); 85 public static native void freeTransform(long ID); 86 87 public static native void initLCMS(Class Trans, Class IL, Class Pf); 88 89 /* the class initializer which loads the CMM */ 90 static { 91 java.security.AccessController.doPrivileged( 92 new java.security.PrivilegedAction() { 93 public Object run() { 94 /* We need to load awt here because of usage trace and 95 * disposer frameworks 96 */ 97 System.loadLibrary("awt"); 98 System.loadLibrary("lcms"); 99 return null; 100 } 101 } 102 ); 103 104 initLCMS(LCMSTransform.class, LCMSImageLayout.class, ICC_Profile.class); 105 } 106 } --- EOF ---