1 /*
2 Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al.
3 All Rights Reserved.
4
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are
7 met:
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 * Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 * Neither the name of Sony Pictures Imageworks nor the names of its
14 contributors may be used to endorse or promote products derived from
15 this software without specific prior written permission.
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include <string>
30 #include <sstream>
31 #include <vector>
32
33 #include "OpenColorIO/OpenColorIO.h"
34 #include "OpenColorIOJNI.h"
35 #include "JNIUtil.h"
36 OCIO_NAMESPACE_USING
37
38 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_dispose(JNIEnv * env,jobject self)39 Java_org_OpenColorIO_ColorSpace_dispose(JNIEnv * env, jobject self)
40 {
41 OCIO_JNITRY_ENTER()
42 DisposeJOCIO<ColorSpaceJNI>(env, self);
43 OCIO_JNITRY_EXIT()
44 }
45
46 JNIEXPORT jobject JNICALL
Java_org_OpenColorIO_ColorSpace_Create(JNIEnv * env,jobject self)47 Java_org_OpenColorIO_ColorSpace_Create(JNIEnv * env, jobject self)
48 {
49 OCIO_JNITRY_ENTER()
50 return BuildJObject<ColorSpaceRcPtr, ColorSpaceJNI>(env, self,
51 env->FindClass("org/OpenColorIO/ColorSpace"), ColorSpace::Create());
52 OCIO_JNITRY_EXIT(NULL)
53 }
54
55 JNIEXPORT jobject JNICALL
Java_org_OpenColorIO_ColorSpace_createEditableCopy(JNIEnv * env,jobject self)56 Java_org_OpenColorIO_ColorSpace_createEditableCopy(JNIEnv * env, jobject self)
57 {
58 OCIO_JNITRY_ENTER()
59 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
60 return BuildJObject<ColorSpaceRcPtr, ColorSpaceJNI>(env, self,
61 env->FindClass("org/OpenColorIO/ColorSpace"), col->createEditableCopy());
62 OCIO_JNITRY_EXIT(NULL)
63 }
64
65 JNIEXPORT jstring JNICALL
Java_org_OpenColorIO_ColorSpace_getName(JNIEnv * env,jobject self)66 Java_org_OpenColorIO_ColorSpace_getName(JNIEnv * env, jobject self)
67 {
68 OCIO_JNITRY_ENTER()
69 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
70 return env->NewStringUTF(col->getName());
71 OCIO_JNITRY_EXIT(NULL)
72 }
73
74 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setName(JNIEnv * env,jobject self,jstring name)75 Java_org_OpenColorIO_ColorSpace_setName(JNIEnv * env, jobject self, jstring name)
76 {
77 OCIO_JNITRY_ENTER()
78 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
79 col->setName(GetJStringValue(env, name)());
80 OCIO_JNITRY_EXIT()
81 }
82
83 JNIEXPORT jstring JNICALL
Java_org_OpenColorIO_ColorSpace_getFamily(JNIEnv * env,jobject self)84 Java_org_OpenColorIO_ColorSpace_getFamily(JNIEnv * env, jobject self)
85 {
86 OCIO_JNITRY_ENTER()
87 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
88 return env->NewStringUTF(col->getFamily());
89 OCIO_JNITRY_EXIT(NULL)
90 }
91
92 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setFamily(JNIEnv * env,jobject self,jstring family)93 Java_org_OpenColorIO_ColorSpace_setFamily(JNIEnv * env, jobject self, jstring family)
94 {
95 OCIO_JNITRY_ENTER()
96 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
97 col->setFamily(GetJStringValue(env, family)());
98 OCIO_JNITRY_EXIT()
99 }
100
101 JNIEXPORT jstring JNICALL
Java_org_OpenColorIO_ColorSpace_getEqualityGroup(JNIEnv * env,jobject self)102 Java_org_OpenColorIO_ColorSpace_getEqualityGroup(JNIEnv * env, jobject self)
103 {
104 OCIO_JNITRY_ENTER()
105 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
106 return env->NewStringUTF(col->getEqualityGroup());
107 OCIO_JNITRY_EXIT(NULL)
108 }
109
110 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setEqualityGroup(JNIEnv * env,jobject self,jstring equalityGroup)111 Java_org_OpenColorIO_ColorSpace_setEqualityGroup(JNIEnv * env, jobject self, jstring equalityGroup)
112 {
113 OCIO_JNITRY_ENTER()
114 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
115 col->setEqualityGroup(GetJStringValue(env, equalityGroup)());
116 OCIO_JNITRY_EXIT()
117 }
118
119 JNIEXPORT jstring JNICALL
Java_org_OpenColorIO_ColorSpace_getDescription(JNIEnv * env,jobject self)120 Java_org_OpenColorIO_ColorSpace_getDescription(JNIEnv * env, jobject self)
121 {
122 OCIO_JNITRY_ENTER()
123 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
124 return env->NewStringUTF(col->getDescription());
125 OCIO_JNITRY_EXIT(NULL)
126 }
127
128 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setDescription(JNIEnv * env,jobject self,jstring description)129 Java_org_OpenColorIO_ColorSpace_setDescription(JNIEnv * env, jobject self, jstring description)
130 {
131 OCIO_JNITRY_ENTER()
132 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
133 col->setDescription(GetJStringValue(env, description)());
134 OCIO_JNITRY_EXIT()
135 }
136
137 JNIEXPORT jobject JNICALL
Java_org_OpenColorIO_ColorSpace_getBitDepth(JNIEnv * env,jobject self)138 Java_org_OpenColorIO_ColorSpace_getBitDepth(JNIEnv * env, jobject self)
139 {
140 OCIO_JNITRY_ENTER()
141 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
142 return BuildJEnum(env, "org/OpenColorIO/BitDepth", col->getBitDepth());
143 OCIO_JNITRY_EXIT(NULL)
144 }
145
146 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setBitDepth(JNIEnv * env,jobject self,jobject bitDepth)147 Java_org_OpenColorIO_ColorSpace_setBitDepth(JNIEnv * env, jobject self, jobject bitDepth)
148 {
149 OCIO_JNITRY_ENTER()
150 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
151 col->setBitDepth(GetJEnum<BitDepth>(env, bitDepth));
152 OCIO_JNITRY_EXIT()
153 }
154
155 JNIEXPORT jboolean JNICALL
Java_org_OpenColorIO_ColorSpace_isData(JNIEnv * env,jobject self)156 Java_org_OpenColorIO_ColorSpace_isData(JNIEnv * env, jobject self)
157 {
158 OCIO_JNITRY_ENTER()
159 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
160 return (jboolean)col->isData();
161 OCIO_JNITRY_EXIT(false)
162 }
163
164 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setIsData(JNIEnv * env,jobject self,jboolean isData)165 Java_org_OpenColorIO_ColorSpace_setIsData(JNIEnv * env, jobject self, jboolean isData)
166 {
167 OCIO_JNITRY_ENTER()
168 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
169 col->setIsData((bool)isData);
170 OCIO_JNITRY_EXIT()
171 }
172
173 JNIEXPORT jobject JNICALL
Java_org_OpenColorIO_ColorSpace_getAllocation(JNIEnv * env,jobject self)174 Java_org_OpenColorIO_ColorSpace_getAllocation(JNIEnv * env, jobject self)
175 {
176 OCIO_JNITRY_ENTER()
177 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
178 return BuildJEnum(env, "org/OpenColorIO/Allocation", col->getAllocation());
179 OCIO_JNITRY_EXIT(NULL)
180 }
181
182 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setAllocation(JNIEnv * env,jobject self,jobject allocation)183 Java_org_OpenColorIO_ColorSpace_setAllocation(JNIEnv * env, jobject self, jobject allocation)
184 {
185 OCIO_JNITRY_ENTER()
186 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
187 col->setAllocation(GetJEnum<Allocation>(env, allocation));
188 OCIO_JNITRY_EXIT()
189 }
190
191 JNIEXPORT jint JNICALL
Java_org_OpenColorIO_ColorSpace_getAllocationNumVars(JNIEnv * env,jobject self)192 Java_org_OpenColorIO_ColorSpace_getAllocationNumVars(JNIEnv * env, jobject self)
193 {
194 OCIO_JNITRY_ENTER()
195 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
196 return (jint)col->getAllocationNumVars();
197 OCIO_JNITRY_EXIT(0)
198 }
199
200 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_getAllocationVars(JNIEnv * env,jobject self,jfloatArray vars)201 Java_org_OpenColorIO_ColorSpace_getAllocationVars(JNIEnv * env, jobject self, jfloatArray vars)
202 {
203 OCIO_JNITRY_ENTER()
204 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
205 col->getAllocationVars(SetJFloatArrayValue(env, vars, "vars", col->getAllocationNumVars())());
206 OCIO_JNITRY_EXIT()
207 }
208
209 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setAllocationVars(JNIEnv * env,jobject self,jint numvars,jfloatArray vars)210 Java_org_OpenColorIO_ColorSpace_setAllocationVars(JNIEnv * env, jobject self, jint numvars, jfloatArray vars)
211 {
212 OCIO_JNITRY_ENTER()
213 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
214 col->setAllocationVars((int)numvars, GetJFloatArrayValue(env, vars, "vars", numvars)());
215 OCIO_JNITRY_EXIT()
216 }
217
218 JNIEXPORT jobject JNICALL
Java_org_OpenColorIO_ColorSpace_getTransform(JNIEnv * env,jobject self,jobject dir)219 Java_org_OpenColorIO_ColorSpace_getTransform(JNIEnv * env, jobject self, jobject dir)
220 {
221 OCIO_JNITRY_ENTER()
222 ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self);
223 ColorSpaceDirection cd = GetJEnum<ColorSpaceDirection>(env, dir);
224 ConstTransformRcPtr tr = col->getTransform(cd);
225 return BuildJConstObject<ConstTransformRcPtr, TransformJNI>(env, self,
226 env->FindClass(GetOCIOTClass(tr)), tr);
227 OCIO_JNITRY_EXIT(NULL)
228 }
229
230 JNIEXPORT void JNICALL
Java_org_OpenColorIO_ColorSpace_setTransform(JNIEnv * env,jobject self,jobject transform,jobject dir)231 Java_org_OpenColorIO_ColorSpace_setTransform(JNIEnv * env, jobject self, jobject transform, jobject dir)
232 {
233 OCIO_JNITRY_ENTER()
234 ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self);
235 ColorSpaceDirection cd = GetJEnum<ColorSpaceDirection>(env, dir);
236 ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform);
237 col->setTransform(tran, cd);
238 OCIO_JNITRY_EXIT()
239 }
240