1 /*
2 * Copyright (c) 2007, 2013, 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
117 static jfieldID IL_imageAtOnce_fID;
118
119 JavaVM *javaVM;
120
121 void errorHandler(cmsContext ContextID, cmsUInt32Number errorCode,
122 const char *errorText) {
123 JNIEnv *env;
124 char errMsg[ERR_MSG_SIZE];
125
126 int count = snprintf(errMsg, ERR_MSG_SIZE,
127 "LCMS error %d: %s", errorCode, errorText);
128 if (count < 0 || count >= ERR_MSG_SIZE) {
129 count = ERR_MSG_SIZE - 1;
130 }
131 errMsg[count] = 0;
132
133 (*javaVM)->AttachCurrentThread(javaVM, (void**)&env, NULL);
134 JNU_ThrowByName(env, "java/awt/color/CMMException", errMsg);
135 }
136
137 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
138 javaVM = jvm;
139
140 cmsSetLogErrorHandler(errorHandler);
141 return JNI_VERSION_1_6;
142 }
143
144 void LCMS_freeProfile(JNIEnv *env, jlong ptr) {
145 lcmsProfile_p p = (lcmsProfile_p)jlong_to_ptr(ptr);
146
147 if (p != NULL) {
148 if (p->pf != NULL) {
149 cmsCloseProfile(p->pf);
150 }
151 free(p);
152 }
153 }
154
155 void LCMS_freeTransform(JNIEnv *env, jlong ID)
156 {
157 cmsHTRANSFORM sTrans = jlong_to_ptr(ID);
|
1 /*
2 * Copyright (c) 2007, 2015, 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
117 static jfieldID IL_imageAtOnce_fID;
118
119 JavaVM *javaVM;
120
121 void errorHandler(cmsContext ContextID, cmsUInt32Number errorCode,
122 const char *errorText) {
123 JNIEnv *env;
124 char errMsg[ERR_MSG_SIZE];
125
126 int count = snprintf(errMsg, ERR_MSG_SIZE,
127 "LCMS error %d: %s", errorCode, errorText);
128 if (count < 0 || count >= ERR_MSG_SIZE) {
129 count = ERR_MSG_SIZE - 1;
130 }
131 errMsg[count] = 0;
132
133 (*javaVM)->AttachCurrentThread(javaVM, (void**)&env, NULL);
134 JNU_ThrowByName(env, "java/awt/color/CMMException", errMsg);
135 }
136
137 JNIEXPORT jint JNICALL DEF_JNI_OnLoad(JavaVM *jvm, void *reserved) {
138 javaVM = jvm;
139
140 cmsSetLogErrorHandler(errorHandler);
141 return JNI_VERSION_1_6;
142 }
143
144 void LCMS_freeProfile(JNIEnv *env, jlong ptr) {
145 lcmsProfile_p p = (lcmsProfile_p)jlong_to_ptr(ptr);
146
147 if (p != NULL) {
148 if (p->pf != NULL) {
149 cmsCloseProfile(p->pf);
150 }
151 free(p);
152 }
153 }
154
155 void LCMS_freeTransform(JNIEnv *env, jlong ID)
156 {
157 cmsHTRANSFORM sTrans = jlong_to_ptr(ID);
|