diff options
author | Matteo F. Vescovi <mfv.debian@gmail.com> | 2013-08-20 09:53:19 +0100 |
---|---|---|
committer | Matteo F. Vescovi <mfv.debian@gmail.com> | 2013-08-20 09:53:19 +0100 |
commit | 66e5d9e2915733247bca47d077414ec2594aedad (patch) | |
tree | f4070a31bf015e159dadd34378cda703d8f6edea /src/jniglue |
opencolorio (1.0.8~dfsg0-2) unstable; urgency=low
* debian/rules: get-orig-source stuff added
* debian/rules: useless dh addon removed
* debian/rules: License.txt duplicate removed
* debian/rules: SSE optimization disabled (Closes: #719174)
* debian/libopencolorio1.symbols: file removed (Closes: #719175)
# imported from the archive
Diffstat (limited to 'src/jniglue')
60 files changed, 6676 insertions, 0 deletions
diff --git a/src/jniglue/CMakeLists.txt b/src/jniglue/CMakeLists.txt new file mode 100644 index 0000000..aedb514 --- /dev/null +++ b/src/jniglue/CMakeLists.txt @@ -0,0 +1,92 @@ + +include_directories( + ${JNI_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/export/ + ${CMAKE_BINARY_DIR}/export/ +) + +set(JNIOCIO_CLASSES + # Core + org.OpenColorIO.ExceptionBase + org.OpenColorIO.ExceptionMissingFile + org.OpenColorIO.Globals + org.OpenColorIO.Config + org.OpenColorIO.ColorSpace + org.OpenColorIO.Processor + org.OpenColorIO.GpuShaderDesc + org.OpenColorIO.Context + org.OpenColorIO.Look + org.OpenColorIO.ImageDesc + org.OpenColorIO.Transform + org.OpenColorIO.PackedImageDesc + org.OpenColorIO.PlanarImageDesc + org.OpenColorIO.Baker + # Enums + org.OpenColorIO.LoggingLevel + org.OpenColorIO.ColorSpaceDirection + org.OpenColorIO.TransformDirection + org.OpenColorIO.Interpolation + org.OpenColorIO.BitDepth + org.OpenColorIO.Allocation + org.OpenColorIO.GpuLanguage + # Transforms + org.OpenColorIO.AllocationTransform + org.OpenColorIO.CDLTransform + org.OpenColorIO.ColorSpaceTransform + org.OpenColorIO.DisplayTransform + org.OpenColorIO.ExponentTransform + org.OpenColorIO.FileTransform + org.OpenColorIO.GroupTransform + org.OpenColorIO.LogTransform + org.OpenColorIO.LookTransform + org.OpenColorIO.MatrixTransform + org.OpenColorIO.TruelightTransform +) + +file(GLOB JNIOCIO_JAVAS "org/OpenColorIO/*.java") + +message(STATUS "Creating Jar Manifest.txt") +configure_file(${CMAKE_SOURCE_DIR}/src/jniglue/Manifest.txt.in + ${CMAKE_CURRENT_BINARY_DIR}/Manifest.txt @ONLY) + +message(STATUS "Creating LoadLibrary.java") +configure_file(${CMAKE_SOURCE_DIR}/src/jniglue/LoadLibrary.java.in + ${CMAKE_CURRENT_BINARY_DIR}/LoadLibrary.java @ONLY) +list(APPEND JNIOCIO_JAVAS ${CMAKE_CURRENT_BINARY_DIR}/LoadLibrary.java) + +set(JNIOCIO_HEADERS) +set(JNIOCIO_H_INCLUDE "/* DO NOT EDIT THIS FILE - it is machine generated */\n\n") +foreach(_CLASS ${JNIOCIO_CLASSES}) + string(REPLACE "." "_" _CLASS_H ${_CLASS}) + set(_CLASS_H "${_CLASS_H}.h") + set(JNIOCIO_HEADERS ${JNIOCIO_HEADERS} "${_CLASS_H}") + set(JNIOCIO_H_INCLUDE "${JNIOCIO_H_INCLUDE}#include \"${_CLASS_H}\"\n") +endforeach() +message(STATUS "Creating OpenColorIOJNI.h that includes all the ocio jni headers") +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OpenColorIOJNI.h" "${JNIOCIO_H_INCLUDE}") + +set(JNIOCIO_JAR "${CMAKE_CURRENT_BINARY_DIR}/OpenColorIO-${OCIO_VERSION}.jar") +add_custom_command(OUTPUT ${JNIOCIO_HEADERS} + COMMAND cmake -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/org/OpenColorIO + COMMAND ${Java_JAVAC_EXECUTABLE} -cp ${CMAKE_CURRENT_BINARY_DIR} -d ${CMAKE_CURRENT_BINARY_DIR} ${JNIOCIO_JAVAS} + COMMAND ${Java_JAVAH_EXECUTABLE} -jni -force ${JNIOCIO_CLASSES} + COMMAND ${Java_JAR_EXECUTABLE} vcfm ${JNIOCIO_JAR} Manifest.txt org + IMPLICIT_DEPENDS ${JNIOCIO_JAVAS} + COMMENT "Compiling .java files, packaged .jar and creating jni C headers") + +file(GLOB JNIOCIO_SRC "*.cpp") +add_library(OpenColorIO-JNI SHARED ${JNIOCIO_SRC} ${JNIOCIO_HEADERS}) +set_target_properties(OpenColorIO-JNI PROPERTIES + VERSION ${OCIO_VERSION} + SOVERSION ${SOVERSION}) +if(OCIO_STATIC_JNIGLUE) + target_link_libraries(OpenColorIO-JNI OpenColorIO_STATIC) +else() + target_link_libraries(OpenColorIO-JNI OpenColorIO) +endif() + +add_subdirectory(tests) + +install(TARGETS OpenColorIO-JNI DESTINATION ${CMAKE_INSTALL_EXEC_PREFIX}/lib${LIB_SUFFIX}) +install(FILES ${JNIOCIO_JAR} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ocio/) diff --git a/src/jniglue/JNIBaker.cpp b/src/jniglue/JNIBaker.cpp new file mode 100644 index 0000000..c838b70 --- /dev/null +++ b/src/jniglue/JNIBaker.cpp @@ -0,0 +1,264 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<BakerJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Baker_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<BakerRcPtr, BakerJNI>(env, self, + env->FindClass("org/OpenColorIO/Baker"), Baker::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Baker_createEditableCopy(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return BuildJObject<BakerRcPtr, BakerJNI>(env, self, + env->FindClass("org/OpenColorIO/Baker"), bake->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setConfig(JNIEnv * env, jobject self, jobject config) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, config); + bake->setConfig(cfg); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Baker_getConfig(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return BuildJConstObject<ConstConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), bake->getConfig()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setFormat(JNIEnv * env, jobject self, jstring formatName) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setFormat(GetJStringValue(env, formatName)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getFormat(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getFormat()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setType(JNIEnv * env, jobject self, jstring type) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setType(GetJStringValue(env, type)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getType(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getType()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setMetadata(JNIEnv * env, jobject self, jstring metadata) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setMetadata(GetJStringValue(env, metadata)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getMetadata(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getMetadata()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setInputSpace(JNIEnv * env, jobject self, jstring inputSpace) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setInputSpace(GetJStringValue(env, inputSpace)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getInputSpace(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getInputSpace()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setShaperSpace(JNIEnv * env, jobject self, jstring shaperSpace) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setShaperSpace(GetJStringValue(env, shaperSpace)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getShaperSpace(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getShaperSpace()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setTargetSpace(JNIEnv * env, jobject self, jstring targetSpace) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + bake->setTargetSpace(GetJStringValue(env, targetSpace)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getTargetSpace(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getTargetSpace()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setShaperSize(JNIEnv * env, jobject self, jint shapersize) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + return bake->setShaperSize((int)shapersize); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Baker_getShaperSize(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return (jint)bake->getShaperSize(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Baker_setCubeSize(JNIEnv * env, jobject self, jint cubesize) +{ + OCIO_JNITRY_ENTER() + BakerRcPtr bake = GetEditableJOCIO<BakerRcPtr, BakerJNI>(env, self); + return bake->setCubeSize((int)cubesize); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Baker_getCubeSize(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return (jint)bake->getCubeSize(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_bake(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + std::ostringstream os; + bake->bake(os); + return env->NewStringUTF(os.str().c_str()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Baker_getNumFormats(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return (jint)bake->getNumFormats(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getFormatNameByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getFormatNameByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Baker_getFormatExtensionByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstBakerRcPtr bake = GetConstJOCIO<ConstBakerRcPtr, BakerJNI>(env, self); + return env->NewStringUTF(bake->getFormatExtensionByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIColorSpace.cpp b/src/jniglue/JNIColorSpace.cpp new file mode 100644 index 0000000..e540ad2 --- /dev/null +++ b/src/jniglue/JNIColorSpace.cpp @@ -0,0 +1,239 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> +#include <vector> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<ColorSpaceJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpace_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<ColorSpaceRcPtr, ColorSpaceJNI>(env, self, + env->FindClass("org/OpenColorIO/ColorSpace"), ColorSpace::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpace_createEditableCopy(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return BuildJObject<ColorSpaceRcPtr, ColorSpaceJNI>(env, self, + env->FindClass("org/OpenColorIO/ColorSpace"), col->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpace_getName(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return env->NewStringUTF(col->getName()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setName(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setName(GetJStringValue(env, name)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpace_getFamily(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return env->NewStringUTF(col->getFamily()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setFamily(JNIEnv * env, jobject self, jstring family) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setFamily(GetJStringValue(env, family)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpace_getEqualityGroup(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return env->NewStringUTF(col->getEqualityGroup()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setEqualityGroup(JNIEnv * env, jobject self, jstring equalityGroup) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setEqualityGroup(GetJStringValue(env, equalityGroup)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpace_getDescription(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return env->NewStringUTF(col->getDescription()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setDescription(JNIEnv * env, jobject self, jstring description) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setDescription(GetJStringValue(env, description)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpace_getBitDepth(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/BitDepth", col->getBitDepth()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setBitDepth(JNIEnv * env, jobject self, jobject bitDepth) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setBitDepth(GetJEnum<BitDepth>(env, bitDepth)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_ColorSpace_isData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return (jboolean)col->isData(); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setIsData(JNIEnv * env, jobject self, jboolean isData) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setIsData((bool)isData); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpace_getAllocation(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/Allocation", col->getAllocation()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setAllocation(JNIEnv * env, jobject self, jobject allocation) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setAllocation(GetJEnum<Allocation>(env, allocation)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_ColorSpace_getAllocationNumVars(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + return (jint)col->getAllocationNumVars(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_getAllocationVars(JNIEnv * env, jobject self, jfloatArray vars) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->getAllocationVars(SetJFloatArrayValue(env, vars, "vars", col->getAllocationNumVars())()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setAllocationVars(JNIEnv * env, jobject self, jint numvars, jfloatArray vars) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + col->setAllocationVars((int)numvars, GetJFloatArrayValue(env, vars, "vars", numvars)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpace_getTransform(JNIEnv * env, jobject self, jobject dir) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceRcPtr col = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self); + ColorSpaceDirection cd = GetJEnum<ColorSpaceDirection>(env, dir); + ConstTransformRcPtr tr = col->getTransform(cd); + return BuildJConstObject<ConstTransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(tr)), tr); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpace_setTransform(JNIEnv * env, jobject self, jobject transform, jobject dir) +{ + OCIO_JNITRY_ENTER() + ColorSpaceRcPtr col = GetEditableJOCIO<ColorSpaceRcPtr, ColorSpaceJNI>(env, self); + ColorSpaceDirection cd = GetJEnum<ColorSpaceDirection>(env, dir); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + col->setTransform(tran, cd); + OCIO_JNITRY_EXIT() +} diff --git a/src/jniglue/JNIConfig.cpp b/src/jniglue/JNIConfig.cpp new file mode 100644 index 0000000..fa3873a --- /dev/null +++ b/src/jniglue/JNIConfig.cpp @@ -0,0 +1,607 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> +#include <vector> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<ConfigJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<ConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), Config::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_CreateFromEnv(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJConstObject<ConstConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), Config::CreateFromEnv()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_CreateFromFile(JNIEnv * env, jobject self, jstring filename) +{ + OCIO_JNITRY_ENTER() + return BuildJConstObject<ConstConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), + Config::CreateFromFile(GetJStringValue(env, filename)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_CreateFromStream(JNIEnv * env, jobject self, jstring istream) +{ + OCIO_JNITRY_ENTER() + std::istringstream is; + is.str(std::string(GetJStringValue(env, istream)())); + return BuildJConstObject<ConstConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), Config::CreateFromStream(is)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_createEditableCopy(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJObject<ConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), cfg->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_sanityCheck(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + cfg->sanityCheck(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDescription(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDescription()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setDescription(JNIEnv * env, jobject self, jstring description) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setDescription(GetJStringValue(env, description)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_serialize(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + std::ostringstream os; + cfg->serialize(os); + return env->NewStringUTF(os.str().c_str()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getCacheID__(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getCacheID()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getCacheID__Lorg_OpenColorIO_Context_2(JNIEnv * env, jobject self, jobject context) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, context); + return env->NewStringUTF(cfg->getCacheID(con)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getCurrentContext(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJConstObject<ConstContextRcPtr, ContextJNI>(env, self, + env->FindClass("org/OpenColorIO/Context"), cfg->getCurrentContext()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getSearchPath(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getSearchPath()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setSearchPath(JNIEnv * env, jobject self, jstring path) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setSearchPath(GetJStringValue(env, path)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getWorkingDir(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getWorkingDir()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setWorkingDir(JNIEnv * env, jobject self, jstring dirname) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setWorkingDir(GetJStringValue(env, dirname)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getNumColorSpaces(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getNumColorSpaces(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getColorSpaceNameByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getColorSpaceNameByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getColorSpace(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJConstObject<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, self, + env->FindClass("org/OpenColorIO/ColorSpace"), + cfg->getColorSpace(GetJStringValue(env, name)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getIndexForColorSpace(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getIndexForColorSpace(GetJStringValue(env, name)()); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_addColorSpace(JNIEnv * env, jobject self, jobject cs) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + ConstColorSpaceRcPtr space = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, cs); + cfg->addColorSpace(space); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_clearColorSpaces(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->clearColorSpaces(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_parseColorSpaceFromString(JNIEnv * env, jobject self, jstring str) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->parseColorSpaceFromString(GetJStringValue(env, str)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Config_isStrictParsingEnabled(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jboolean)cfg->isStrictParsingEnabled(); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setStrictParsingEnabled(JNIEnv * env, jobject self, jboolean enabled) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setStrictParsingEnabled((bool)enabled); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setRole(JNIEnv * env, jobject self, jstring role, jstring colorSpaceName) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setRole(GetJStringValue(env, role)(), GetJStringValue(env, colorSpaceName)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getNumRoles(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getNumRoles(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Config_hasRole(JNIEnv * env, jobject self, jstring role) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jboolean)cfg->hasRole(GetJStringValue(env, role)()); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getRoleName(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getRoleName((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDefaultDisplay(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDefaultDisplay()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getNumDisplays(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getNumDisplays(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDisplay(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDisplay((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDefaultView(JNIEnv * env, jobject self, jstring display) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDefaultView(GetJStringValue(env, display)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getNumViews(JNIEnv * env, jobject self, jstring display) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getNumViews(GetJStringValue(env, display)()); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getView(JNIEnv * env, jobject self, jstring display, jint index) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getView(GetJStringValue(env, display)(), (int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDisplayColorSpaceName(JNIEnv * env, jobject self, jstring display, jstring view) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDisplayColorSpaceName(GetJStringValue(env, display)(), + GetJStringValue(env, view)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getDisplayLooks(JNIEnv * env, jobject self, jstring display, jstring view) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getDisplayLooks(GetJStringValue(env, display)(), + GetJStringValue(env, view)())); + OCIO_JNITRY_EXIT(NULL) +} + +// TODO: seems that 4 string params causes a memory error in the JNI layer? +/* +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_addDisplay(JNIEnv * env, jobject self, jstring display, jstring view, jstring colorSpaceName, jstring looks) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->addDisplay(GetJStringValue(env, display)(), + GetJStringValue(env, view)(), + GetJStringValue(env, colorSpaceName)(), + GetJStringValue(env, looks)()); + + OCIO_JNITRY_EXIT() +} +*/ + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_clearDisplays(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->clearDisplays(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setActiveDisplays(JNIEnv * env, jobject self, jstring displays) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setActiveDisplays(GetJStringValue(env, displays)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getActiveDisplays(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getActiveDisplays()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setActiveViews(JNIEnv * env, jobject self, jstring views) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setActiveViews(GetJStringValue(env, views)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getActiveViews(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getActiveViews()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_getDefaultLumaCoefs(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + cfg->getDefaultLumaCoefs(SetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_setDefaultLumaCoefs(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->setDefaultLumaCoefs(GetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getLook(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJConstObject<ConstLookRcPtr, LookJNI>(env, self, + env->FindClass("org/OpenColorIO/Look"), cfg->getLook(GetJStringValue(env, name)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Config_getNumLooks(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return (jint)cfg->getNumLooks(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Config_getLookNameByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return env->NewStringUTF(cfg->getLookNameByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_addLook(JNIEnv * env, jobject self, jobject look) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + ConstLookRcPtr lok = GetConstJOCIO<ConstLookRcPtr, LookJNI>(env, look); + cfg->addLook(lok); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Config_clearLooks(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConfigRcPtr cfg = GetEditableJOCIO<ConfigRcPtr, ConfigJNI>(env, self); + cfg->clearLooks(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_Context_2Lorg_OpenColorIO_ColorSpace_2Lorg_OpenColorIO_ColorSpace_2 + (JNIEnv * env, jobject self, jobject context, jobject srcColorSpace, jobject dstColorSpace) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, context); + ConstColorSpaceRcPtr src = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, srcColorSpace); + ConstColorSpaceRcPtr dst = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, dstColorSpace); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(con, src, dst)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_ColorSpace_2Lorg_OpenColorIO_ColorSpace_2 + (JNIEnv * env, jobject self, jobject srcColorSpace, jobject dstColorSpace) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstColorSpaceRcPtr src = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, srcColorSpace); + ConstColorSpaceRcPtr dst = GetConstJOCIO<ConstColorSpaceRcPtr, ColorSpaceJNI>(env, dstColorSpace); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(src, dst)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Ljava_lang_String_2Ljava_lang_String_2 + (JNIEnv * env, jobject self, jstring srcName, jstring dstName) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor( + GetJStringValue(env, srcName)(), GetJStringValue(env, dstName)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_Context_2Ljava_lang_String_2Ljava_lang_String_2 + (JNIEnv * env, jobject self, jobject context, jstring srcName, jstring dstName) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, context); + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(con, + GetJStringValue(env, srcName)(), GetJStringValue(env, dstName)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_Transform_2 + (JNIEnv * env, jobject self, jobject transform) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(tran)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_Transform_2Lorg_OpenColorIO_TransformDirection_2 + (JNIEnv * env, jobject self, jobject transform, jobject direction) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + TransformDirection dir = GetJEnum<TransformDirection>(env, direction); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(tran, dir)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Config_getProcessor__Lorg_OpenColorIO_Context_2Lorg_OpenColorIO_Transform_2Lorg_OpenColorIO_TransformDirection_2 + (JNIEnv * env, jobject self, jobject context, jobject transform, jobject direction) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, self); + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, context); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + TransformDirection dir = GetJEnum<TransformDirection>(env, direction); + return BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), cfg->getProcessor(con, tran, dir)); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIContext.cpp b/src/jniglue/JNIContext.cpp new file mode 100644 index 0000000..e1fcffd --- /dev/null +++ b/src/jniglue/JNIContext.cpp @@ -0,0 +1,170 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Context_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<ContextJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Context_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<ContextRcPtr, ContextJNI>(env, self, + env->FindClass("org/OpenColorIO/Context"), Context::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Context_createEditableCopy(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return BuildJObject<ContextRcPtr, ContextJNI>(env, self, + env->FindClass("org/OpenColorIO/Context"), con->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_getCacheID(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->getCacheID()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Context_setSearchPath(JNIEnv * env, jobject self, jstring path) +{ + OCIO_JNITRY_ENTER() + ContextRcPtr con = GetEditableJOCIO<ContextRcPtr, ContextJNI>(env, self); + con->setSearchPath(GetJStringValue(env, path)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_getSearchPath(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->getSearchPath()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Context_setWorkingDir(JNIEnv * env, jobject self, jstring dirname) +{ + OCIO_JNITRY_ENTER() + ContextRcPtr con = GetEditableJOCIO<ContextRcPtr, ContextJNI>(env, self); + con->setWorkingDir(GetJStringValue(env, dirname)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_getWorkingDir(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->getWorkingDir()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Context_setStringVar(JNIEnv * env, jobject self, jstring name, jstring var) +{ + OCIO_JNITRY_ENTER() + ContextRcPtr con = GetEditableJOCIO<ContextRcPtr, ContextJNI>(env, self); + con->setStringVar(GetJStringValue(env, name)(), GetJStringValue(env, var)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_getStringVar(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->getStringVar(GetJStringValue(env, name)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Context_getNumStringVars(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return (jint)con->getNumStringVars(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_getStringVarNameByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->getStringVarNameByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Context_loadEnvironment(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ContextRcPtr con = GetEditableJOCIO<ContextRcPtr, ContextJNI>(env, self); + con->loadEnvironment(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_resolveStringVar(JNIEnv * env, jobject self, jstring val) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->resolveStringVar(GetJStringValue(env, val)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Context_resolveFileLocation(JNIEnv * env, jobject self, jstring filename) +{ + OCIO_JNITRY_ENTER() + ConstContextRcPtr con = GetConstJOCIO<ConstContextRcPtr, ContextJNI>(env, self); + return env->NewStringUTF(con->resolveFileLocation(GetJStringValue(env, filename)())); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIGlobals.cpp b/src/jniglue/JNIGlobals.cpp new file mode 100644 index 0000000..9d57c84 --- /dev/null +++ b/src/jniglue/JNIGlobals.cpp @@ -0,0 +1,417 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Globals_create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + jfieldID fid; + jclass wclass = env->GetObjectClass(self); + fid = env->GetFieldID(wclass, "ROLE_DEFAULT", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_DEFAULT)); + fid = env->GetFieldID(wclass, "ROLE_REFERENCE", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_REFERENCE)); + fid = env->GetFieldID(wclass, "ROLE_DATA", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_DATA)); + fid = env->GetFieldID(wclass, "ROLE_COLOR_PICKING", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_COLOR_PICKING)); + fid = env->GetFieldID(wclass, "ROLE_SCENE_LINEAR", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_SCENE_LINEAR)); + fid = env->GetFieldID(wclass, "ROLE_COMPOSITING_LOG", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_COMPOSITING_LOG)); + fid = env->GetFieldID(wclass, "ROLE_COLOR_TIMING", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_COLOR_TIMING)); + fid = env->GetFieldID(wclass, "ROLE_TEXTURE_PAINT", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_TEXTURE_PAINT)); + fid = env->GetFieldID(wclass, "ROLE_MATTE_PAINT", "Ljava/lang/String;"); + env->SetObjectField(self, fid, env->NewStringUTF(ROLE_MATTE_PAINT)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Globals_ClearAllCaches(JNIEnv * env, jobject) +{ + OCIO_JNITRY_ENTER() + ClearAllCaches(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_GetVersion(JNIEnv * env, jobject) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF(GetVersion()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Globals_GetVersionHex(JNIEnv * env, jobject) +{ + OCIO_JNITRY_ENTER() + return (jint)GetVersionHex(); + OCIO_JNITRY_EXIT(-1) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_GetLoggingLevel(JNIEnv * env, jobject) +{ + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/LoggingLevel", GetLoggingLevel()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Globals_SetLoggingLevel(JNIEnv * env, jobject, jobject level) +{ + OCIO_JNITRY_ENTER() + SetLoggingLevel(GetJEnum<LoggingLevel>(env, level)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_GetCurrentConfig(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + jobject obj = BuildJConstObject<ConstConfigRcPtr, ConfigJNI>(env, self, + env->FindClass("org/OpenColorIO/Config"), GetCurrentConfig()); + return obj; + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Globals_SetCurrentConfig(JNIEnv * env, jobject, jobject config) +{ + OCIO_JNITRY_ENTER() + ConstConfigRcPtr cfg = GetConstJOCIO<ConstConfigRcPtr, ConfigJNI>(env, config); + SetCurrentConfig(cfg); + OCIO_JNITRY_EXIT() +} + +// Bool + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_BoolToString(JNIEnv * env, jobject, jboolean val) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF(BoolToString((bool)val)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Globals_BoolFromString(JNIEnv * env, jobject, jstring s) +{ + OCIO_JNITRY_ENTER() + return (jboolean)BoolFromString(GetJStringValue(env, s)()); + OCIO_JNITRY_EXIT(false) +} + +// LoggingLevel + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_LoggingLevel_toString(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + LoggingLevelToString(GetJEnum<LoggingLevel>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_LoggingLevel_equals(JNIEnv * env, jobject self, jobject obj) +{ + OCIO_JNITRY_ENTER() + return GetJEnum<LoggingLevel>(env, self) + == GetJEnum<LoggingLevel>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_LoggingLevelToString(JNIEnv * env, jobject, jobject level) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + LoggingLevelToString(GetJEnum<LoggingLevel>(env, level))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_LoggingLevelFromString(JNIEnv * env, jobject, jstring s) +{ + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/LoggingLevel", + LoggingLevelFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +// TransformDirection + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TransformDirection_toString(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + TransformDirectionToString(GetJEnum<TransformDirection>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_TransformDirection_equals(JNIEnv * env, jobject self, jobject obj) +{ + OCIO_JNITRY_ENTER() + return GetJEnum<TransformDirection>(env, self) + == GetJEnum<TransformDirection>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_TransformDirectionToString(JNIEnv * env, jobject, + jobject dir) +{ + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + TransformDirectionToString(GetJEnum<TransformDirection>(env, dir))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_TransformDirectionFromString(JNIEnv * env, jobject, + jstring s) +{ + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/TransformDirection", + TransformDirectionFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_GetInverseTransformDirection(JNIEnv * env, jobject, + jobject dir) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/TransformDirection", + GetInverseTransformDirection(GetJEnum<TransformDirection>(env, dir))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_CombineTransformDirections(JNIEnv * env, jobject, + jobject d1, jobject d2) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/TransformDirection", + CombineTransformDirections(GetJEnum<TransformDirection>(env, d1), + GetJEnum<TransformDirection>(env, d2))); + OCIO_JNITRY_EXIT(NULL) +} + +// ColorSpaceDirection + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpaceDirection_toString(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + ColorSpaceDirectionToString(GetJEnum<ColorSpaceDirection>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_ColorSpaceDirection_equals(JNIEnv * env, jobject self, jobject obj) { + OCIO_JNITRY_ENTER() + return GetJEnum<ColorSpaceDirection>(env, self) + == GetJEnum<ColorSpaceDirection>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_ColorSpaceDirectionToString(JNIEnv * env, jobject, jobject dir) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + ColorSpaceDirectionToString(GetJEnum<ColorSpaceDirection>(env, dir))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_ColorSpaceDirectionFromString(JNIEnv * env, jobject, jstring s) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/ColorSpaceDirection", + ColorSpaceDirectionFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +// BitDepth + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_BitDepth_toString(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + BitDepthToString(GetJEnum<BitDepth>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_BitDepth_equals(JNIEnv * env, jobject self, jobject obj) { + OCIO_JNITRY_ENTER() + return GetJEnum<BitDepth>(env, self) + == GetJEnum<BitDepth>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_BitDepthToString(JNIEnv * env, jobject, jobject bitDepth) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + BitDepthToString(GetJEnum<BitDepth>(env, bitDepth))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_BitDepthFromString(JNIEnv * env, jobject, jstring s) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/BitDepth", + BitDepthFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Globals_BitDepthIsFloat(JNIEnv * env, jobject, jobject bitDepth) { + OCIO_JNITRY_ENTER() + return (jboolean)BitDepthIsFloat(GetJEnum<BitDepth>(env, bitDepth)); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_Globals_BitDepthToInt(JNIEnv * env, jobject, jobject bitDepth) { + OCIO_JNITRY_ENTER() + return (jint) BitDepthToInt(GetJEnum<BitDepth>(env, bitDepth)); + OCIO_JNITRY_EXIT(-1) +} + +// Allocation + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Allocation_toString(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + AllocationToString(GetJEnum<Allocation>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Allocation_equals(JNIEnv * env, jobject self, jobject obj) { + OCIO_JNITRY_ENTER() + return GetJEnum<Allocation>(env, self) + == GetJEnum<Allocation>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_AllocationToString(JNIEnv * env, jobject, jobject allocation) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + AllocationToString(GetJEnum<Allocation>(env, allocation))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_AllocationFromString(JNIEnv * env, jobject, jstring s) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/Allocation", + AllocationFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +// Interpolation + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Interpolation_toString(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + InterpolationToString(GetJEnum<Interpolation>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Interpolation_equals(JNIEnv * env, jobject self, jobject obj) { + OCIO_JNITRY_ENTER() + return GetJEnum<Interpolation>(env, self) + == GetJEnum<Interpolation>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_InterpolationToString(JNIEnv * env, jobject, jobject interp) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + InterpolationToString(GetJEnum<Interpolation>(env, interp))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_InterpolationFromString(JNIEnv * env, jobject, jstring s) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/Interpolation", + InterpolationFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} + +// GpuLanguage + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_GpuLanguage_toString(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + GpuLanguageToString(GetJEnum<GpuLanguage>(env, self))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_GpuLanguage_equals(JNIEnv * env, jobject self, jobject obj) { + OCIO_JNITRY_ENTER() + return GetJEnum<GpuLanguage>(env, self) + == GetJEnum<GpuLanguage>(env, obj); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Globals_GpuLanguageToString(JNIEnv * env, jobject, jobject language) { + OCIO_JNITRY_ENTER() + return env->NewStringUTF( + GpuLanguageToString(GetJEnum<GpuLanguage>(env, language))); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Globals_GpuLanguageFromString(JNIEnv * env, jobject, jstring s) { + OCIO_JNITRY_ENTER() + return BuildJEnum(env, "org/OpenColorIO/GpuLanguage", + GpuLanguageFromString(GetJStringValue(env, s)())); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIGpuShaderDesc.cpp b/src/jniglue/JNIGpuShaderDesc.cpp new file mode 100644 index 0000000..21a57ea --- /dev/null +++ b/src/jniglue/JNIGpuShaderDesc.cpp @@ -0,0 +1,125 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +namespace +{ + +void GpuShaderDesc_deleter(GpuShaderDesc* d) +{ + delete d; +} + +}; // end anon namespace + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GpuShaderDesc_create(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + GpuShaderDescJNI * jnistruct = new GpuShaderDescJNI(); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new ConstGpuShaderDescRcPtr(); + jnistruct->cppobj = new GpuShaderDescRcPtr(); + *jnistruct->cppobj = GpuShaderDescRcPtr(new GpuShaderDesc(), &GpuShaderDesc_deleter); + jnistruct->isconst = false; + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + env->SetLongField(self, fid, (jlong)jnistruct); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GpuShaderDesc_dispose(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + DisposeJOCIO<GpuShaderDescJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GpuShaderDesc_setLanguage(JNIEnv * env, jobject self, jobject lang) { + OCIO_JNITRY_ENTER() + GpuShaderDescRcPtr ptr = GetEditableJOCIO<GpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + ptr->setLanguage(GetJEnum<GpuLanguage>(env, lang)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_GpuShaderDesc_getLanguage(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstGpuShaderDescRcPtr ptr = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/GpuLanguage", ptr->getLanguage()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GpuShaderDesc_setFunctionName(JNIEnv * env, jobject self, jstring name) { + OCIO_JNITRY_ENTER() + const char *_name = env->GetStringUTFChars(name, 0); + GpuShaderDescRcPtr ptr = GetEditableJOCIO<GpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + ptr->setFunctionName(_name); + env->ReleaseStringUTFChars(name, _name); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_GpuShaderDesc_getFunctionName(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstGpuShaderDescRcPtr ptr = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + return env->NewStringUTF(ptr->getFunctionName()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GpuShaderDesc_setLut3DEdgeLen(JNIEnv * env, jobject self, jint len) { + OCIO_JNITRY_ENTER() + GpuShaderDescRcPtr ptr = GetEditableJOCIO<GpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + ptr->setLut3DEdgeLen((int)len); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_GpuShaderDesc_getLut3DEdgeLen(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstGpuShaderDescRcPtr ptr = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + return (jint)ptr->getLut3DEdgeLen(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_GpuShaderDesc_getCacheID(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstGpuShaderDescRcPtr ptr = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, self); + return env->NewStringUTF(ptr->getCacheID()); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIImageDesc.cpp b/src/jniglue/JNIImageDesc.cpp new file mode 100644 index 0000000..c307984 --- /dev/null +++ b/src/jniglue/JNIImageDesc.cpp @@ -0,0 +1,309 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +namespace +{ +void ImageDesc_deleter(ImageDesc* d) +{ + delete d; +} + +void ImageDesc_dispose(JNIEnv * env, jobject self) +{ + DisposeJOCIO<ImageDescJNI>(env, self); +} + +}; // end anon namespace + +// PackedImageDesc + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_PackedImageDesc_create__Ljava_nio_FloatBuffer_2JJJ(JNIEnv * env, + jobject self, jobject data, jlong width, jlong height, jlong numChannels) +{ + OCIO_JNITRY_ENTER() + float* _data = GetJFloatBuffer(env, data, width * height * numChannels); + if(!_data) throw Exception("Could not find direct buffer address for data"); + ImageDescJNI * jnistruct = new ImageDescJNI(); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new ConstImageDescRcPtr(); + jnistruct->cppobj = new ImageDescRcPtr(); + *jnistruct->cppobj = ImageDescRcPtr(new PackedImageDesc(_data, (long)width, + (long)height, (long)numChannels), &ImageDesc_deleter); + jnistruct->isconst = false; + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + env->SetLongField(self, fid, (jlong)jnistruct); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_PackedImageDesc_create__Ljava_nio_FloatBuffer_2JJJJJJ(JNIEnv * env, + jobject self, jobject data, jlong width, jlong height, jlong numChannels, + jlong chanStrideBytes, jlong xStrideBytes, jlong yStrideBytes) +{ + OCIO_JNITRY_ENTER() + float* _data = GetJFloatBuffer(env, data, width * height * numChannels); + if(!_data) throw Exception("Could not find direct buffer address for data"); + ImageDescJNI * jnistruct = new ImageDescJNI(); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new ConstImageDescRcPtr(); + jnistruct->cppobj = new ImageDescRcPtr(); + *jnistruct->cppobj = ImageDescRcPtr(new PackedImageDesc(_data, (long)width, + (long)height, (long)numChannels, (long)chanStrideBytes, (long) xStrideBytes, + (long)yStrideBytes), &ImageDesc_deleter); + jnistruct->isconst = false; + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + env->SetLongField(self, fid, (jlong)jnistruct); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_PackedImageDesc_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ImageDesc_dispose(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_PackedImageDesc_getData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + int size = ptr->getWidth() * ptr->getHeight() * ptr->getNumChannels(); + return NewJFloatBuffer(env, ptr->getData(), size); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getWidth(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getWidth(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getHeight(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getHeight(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getNumChannels(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getNumChannels(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getChanStrideBytes(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getChanStrideBytes(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getXStrideBytes(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getXStrideBytes(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PackedImageDesc_getYStrideBytes(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPackedImageDescRcPtr ptr = DynamicPtrCast<const PackedImageDesc>(img); + return (jlong)ptr->getYStrideBytes(); + OCIO_JNITRY_EXIT(0) +} + +// PlanarImageDesc + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_PlanarImageDesc_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ImageDesc_dispose(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_PlanarImageDesc_create__Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2JJ + (JNIEnv * env, jobject self, jobject rData, jobject gData, jobject bData, + jobject aData, jlong width, jlong height) +{ + OCIO_JNITRY_ENTER() + int32_t size = width * height; + float* _rdata = GetJFloatBuffer(env, rData, size); + if(!_rdata) throw Exception("Could not find direct buffer address for rData"); + float* _gdata = GetJFloatBuffer(env, gData, size); + if(!_gdata) throw Exception("Could not find direct buffer address for gData"); + float* _bdata = GetJFloatBuffer(env, bData, size); + if(!_bdata) throw Exception("Could not find direct buffer address for bData"); + float* _adata = GetJFloatBuffer(env, aData, size); + if(!_adata) throw Exception("Could not find direct buffer address for aData"); + ImageDescJNI * jnistruct = new ImageDescJNI(); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new ConstImageDescRcPtr(); + jnistruct->cppobj = new ImageDescRcPtr(); + *jnistruct->cppobj = ImageDescRcPtr(new PlanarImageDesc(_rdata, _gdata, + _bdata, _adata, (long)width, (long)height), &ImageDesc_deleter); + jnistruct->isconst = false; + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + env->SetLongField(self, fid, (jlong)jnistruct); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void +JNICALL Java_org_OpenColorIO_PlanarImageDesc_create__Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2JJJ + (JNIEnv * env, jobject self, jobject rData, jobject gData, jobject bData, + jobject aData, jlong width, jlong height, jlong yStrideBytes) +{ + OCIO_JNITRY_ENTER() + int32_t size = width * height; + float* _rdata = GetJFloatBuffer(env, rData, size); + if(!_rdata) throw Exception("Could not find direct buffer address for rData"); + float* _gdata = GetJFloatBuffer(env, gData, size); + if(!_gdata) throw Exception("Could not find direct buffer address for gData"); + float* _bdata = GetJFloatBuffer(env, bData, size); + if(!_bdata) throw Exception("Could not find direct buffer address for bData"); + float* _adata = GetJFloatBuffer(env, aData, size); + if(!_adata) throw Exception("Could not find direct buffer address for aData"); + ImageDescJNI * jnistruct = new ImageDescJNI(); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new ConstImageDescRcPtr(); + jnistruct->cppobj = new ImageDescRcPtr(); + *jnistruct->cppobj = ImageDescRcPtr(new PlanarImageDesc(_rdata, _gdata, _bdata, + _adata, (long)width, (long)height, (long)yStrideBytes), &ImageDesc_deleter); + jnistruct->isconst = false; + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + env->SetLongField(self, fid, (jlong)jnistruct); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getRData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + int size = ptr->getWidth() * ptr->getHeight(); + return NewJFloatBuffer(env, ptr->getRData(), size); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getGData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + int size = ptr->getWidth() * ptr->getHeight(); + return NewJFloatBuffer(env, ptr->getGData(), size); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getBData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + int size = ptr->getWidth() * ptr->getHeight(); + return NewJFloatBuffer(env, ptr->getBData(), size); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getAData(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + int size = ptr->getWidth() * ptr->getHeight(); + return NewJFloatBuffer(env, ptr->getAData(), size); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getWidth(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + return (jlong)ptr->getWidth(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getHeight(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + return (jlong)ptr->getHeight(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jlong JNICALL +Java_org_OpenColorIO_PlanarImageDesc_getYStrideBytes(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstImageDescRcPtr img = GetConstJOCIO<ConstImageDescRcPtr, ImageDescJNI>(env, self); + ConstPlanarImageDescRcPtr ptr = DynamicPtrCast<const PlanarImageDesc>(img); + return (jlong)ptr->getYStrideBytes(); + OCIO_JNITRY_EXIT(0) +} diff --git a/src/jniglue/JNILook.cpp b/src/jniglue/JNILook.cpp new file mode 100644 index 0000000..ebd7731 --- /dev/null +++ b/src/jniglue/JNILook.cpp @@ -0,0 +1,131 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> +#include <vector> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Look_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<LookJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Look_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<LookRcPtr, LookJNI>(env, self, + env->FindClass("org/OpenColorIO/Look"), Look::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Look_getName(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookRcPtr lok = GetConstJOCIO<ConstLookRcPtr, LookJNI>(env, self); + return env->NewStringUTF(lok->getName()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Look_setName(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + LookRcPtr lok = GetEditableJOCIO<LookRcPtr, LookJNI>(env, self); + lok->setName(GetJStringValue(env, name)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Look_getProcessSpace(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookRcPtr lok = GetConstJOCIO<ConstLookRcPtr, LookJNI>(env, self); + return env->NewStringUTF(lok->getProcessSpace()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Look_setProcessSpace(JNIEnv * env, jobject self, jstring processSpace) +{ + OCIO_JNITRY_ENTER() + LookRcPtr lok = GetEditableJOCIO<LookRcPtr, LookJNI>(env, self); + lok->setProcessSpace(GetJStringValue(env, processSpace)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Look_getTransform(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookRcPtr lok = GetConstJOCIO<ConstLookRcPtr, LookJNI>(env, self); + ConstTransformRcPtr tr = lok->getTransform(); + return BuildJConstObject<ConstTransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(tr)), tr); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Look_setTransform(JNIEnv * env, jobject self, jobject transform) +{ + OCIO_JNITRY_ENTER() + LookRcPtr lok = GetEditableJOCIO<LookRcPtr, LookJNI>(env, self); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + lok->setTransform(tran); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Look_getInverseTransform(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookRcPtr lok = GetConstJOCIO<ConstLookRcPtr, LookJNI>(env, self); + ConstTransformRcPtr tr = lok->getInverseTransform(); + return BuildJConstObject<ConstTransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(tr)), tr); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Look_setInverseTransform(JNIEnv * env, jobject self, jobject transform) +{ + OCIO_JNITRY_ENTER() + LookRcPtr lok = GetEditableJOCIO<LookRcPtr, LookJNI>(env, self); + ConstTransformRcPtr tran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + lok->setInverseTransform(tran); + OCIO_JNITRY_EXIT() +} diff --git a/src/jniglue/JNIProcessor.cpp b/src/jniglue/JNIProcessor.cpp new file mode 100644 index 0000000..ada897a --- /dev/null +++ b/src/jniglue/JNIProcessor.cpp @@ -0,0 +1,133 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <string> +#include <sstream> +#include <vector> + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Processor_Create(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + jobject obj = BuildJConstObject<ConstProcessorRcPtr, ProcessorJNI>(env, self, + env->FindClass("org/OpenColorIO/Processor"), Processor::Create()); + return obj; + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Processor_isNoOp(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + return (jboolean)ptr->isNoOp(); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_Processor_hasChannelCrosstalk(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + return (jboolean)ptr->hasChannelCrosstalk(); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Processor_apply(JNIEnv * env, jobject self, jobject img) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ImageDescRcPtr _img = GetEditableJOCIO<ImageDescRcPtr, ImageDescJNI>(env, img); + ptr->apply(*_img.get()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Processor_applyRGB(JNIEnv * env, jobject self, jfloatArray pixel) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ptr->applyRGB(GetJFloatArrayValue(env, pixel, "pixel", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Processor_applyRGBA(JNIEnv * env, jobject self, jfloatArray pixel) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ptr->applyRGBA(GetJFloatArrayValue(env, pixel, "pixel", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Processor_getCpuCacheID(JNIEnv * env, jobject self) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + return env->NewStringUTF(ptr->getCpuCacheID()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Processor_getGpuShaderText(JNIEnv * env, jobject self, jobject shaderDesc) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ConstGpuShaderDescRcPtr desc = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, shaderDesc); + return env->NewStringUTF(ptr->getGpuShaderText(*desc.get())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Processor_getGpuShaderTextCacheID(JNIEnv * env, jobject self, jobject shaderDesc) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ConstGpuShaderDescRcPtr desc = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, shaderDesc); + return env->NewStringUTF(ptr->getGpuShaderTextCacheID(*desc.get())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Processor_getGpuLut3D(JNIEnv * env, jobject self, jobject lut3d, jobject shaderDesc) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ConstGpuShaderDescRcPtr desc = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, shaderDesc); + int len = desc->getLut3DEdgeLen(); + int size = 3*len*len*len; + float* _lut3d = GetJFloatBuffer(env, lut3d, size); + ptr->getGpuLut3D(_lut3d, *desc.get()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_Processor_getGpuLut3DCacheID(JNIEnv * env, jobject self, jobject shaderDesc) { + OCIO_JNITRY_ENTER() + ConstProcessorRcPtr ptr = GetConstJOCIO<ConstProcessorRcPtr, ProcessorJNI>(env, self); + ConstGpuShaderDescRcPtr desc = GetConstJOCIO<ConstGpuShaderDescRcPtr, GpuShaderDescJNI>(env, shaderDesc); + return env->NewStringUTF(ptr->getGpuLut3DCacheID(*desc.get())); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNITransforms.cpp b/src/jniglue/JNITransforms.cpp new file mode 100644 index 0000000..6e2fe26 --- /dev/null +++ b/src/jniglue/JNITransforms.cpp @@ -0,0 +1,1151 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "OpenColorIO/OpenColorIO.h" +#include "OpenColorIOJNI.h" +#include "JNIUtil.h" +OCIO_NAMESPACE_USING + +// Transform + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Transform_dispose(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + DisposeJOCIO<TransformJNI>(env, self); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Transform_createEditableCopy(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTransformRcPtr ctran = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, self); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(ctran)), ctran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_Transform_getDirection(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/TransformDirection", ptr->getDirection()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_Transform_setDirection(JNIEnv * env, jobject self, jobject dir) +{ + OCIO_JNITRY_ENTER() + TransformRcPtr ptr = GetEditableJOCIO<TransformRcPtr, TransformJNI>(env, self); + ptr->setDirection(GetJEnum<TransformDirection>(env, dir)); + OCIO_JNITRY_EXIT() +} + +// AllocationTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_AllocationTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<AllocationTransformRcPtr, AllocationTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/AllocationTransform"), AllocationTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_AllocationTransform_getAllocation(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstAllocationTransformRcPtr alctran = GetConstJOCIO<ConstAllocationTransformRcPtr, AllocationTransformJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/Allocation", alctran->getAllocation()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_AllocationTransform_setAllocation(JNIEnv * env, jobject self, jobject allocation) +{ + OCIO_JNITRY_ENTER() + AllocationTransformRcPtr alctran = GetEditableJOCIO<AllocationTransformRcPtr, AllocationTransformJNI>(env, self); + alctran->setAllocation(GetJEnum<Allocation>(env, allocation)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_AllocationTransform_getNumVars(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstAllocationTransformRcPtr alctran = GetConstJOCIO<ConstAllocationTransformRcPtr, AllocationTransformJNI>(env, self); + return (jint)alctran->getNumVars(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_AllocationTransform_getVars(JNIEnv * env, jobject self, jfloatArray vars) +{ + OCIO_JNITRY_ENTER() + ConstAllocationTransformRcPtr alctran = GetConstJOCIO<ConstAllocationTransformRcPtr, AllocationTransformJNI>(env, self); + alctran->getVars(SetJFloatArrayValue(env, vars, "vars", alctran->getNumVars())()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_AllocationTransform_setVars(JNIEnv * env, jobject self, jint numvars, jfloatArray vars) +{ + OCIO_JNITRY_ENTER() + AllocationTransformRcPtr alctran = GetEditableJOCIO<AllocationTransformRcPtr, AllocationTransformJNI>(env, self); + alctran->setVars((int)numvars, GetJFloatArrayValue(env, vars, "vars", numvars)()); + OCIO_JNITRY_EXIT() +} + +// CDLTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_CDLTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<CDLTransformRcPtr, CDLTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/CDLTransform"), CDLTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_CDLTransform_CreateFromFile(JNIEnv * env, jobject self, jstring src, jstring cccid) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<CDLTransformRcPtr, CDLTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/CDLTransform"), + CDLTransform::CreateFromFile(GetJStringValue(env, src)(), GetJStringValue(env, cccid)())); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_CDLTransform_equals(JNIEnv * env, jobject self, jobject obj) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr left = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + ConstCDLTransformRcPtr right = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, obj); + return (jboolean)left->equals(right); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_CDLTransform_getXML(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + return env->NewStringUTF(cdltran->getXML()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setXML(JNIEnv * env, jobject self, jstring xml) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setXML(GetJStringValue(env, xml)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setSlope(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setSlope(GetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_getSlope(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->getSlope(SetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setOffset(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setOffset(GetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_getOffset(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->getOffset(SetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setPower(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setPower(GetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_getPower(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->getPower(SetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setSOP(JNIEnv * env, jobject self, jfloatArray vec9) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setSOP(GetJFloatArrayValue(env, vec9, "vec9", 9)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_getSOP(JNIEnv * env, jobject self, jfloatArray vec9) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->getSOP(SetJFloatArrayValue(env, vec9, "vec9", 9)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setSat(JNIEnv * env, jobject self, jfloat sat) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setSat((float)sat); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jfloat JNICALL +Java_org_OpenColorIO_CDLTransform_getSat(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + return (jfloat)cdltran->getSat(); + OCIO_JNITRY_EXIT(1.f) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_getSatLumaCoefs(JNIEnv * env, jobject self, jfloatArray rgb) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->getSatLumaCoefs(SetJFloatArrayValue(env, rgb, "rgb", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setID(JNIEnv * env, jobject self, jstring id) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setID(GetJStringValue(env, id)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_CDLTransform_getID(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + return env->NewStringUTF(cdltran->getID()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_CDLTransform_setDescription(JNIEnv * env, jobject self, jstring desc) +{ + OCIO_JNITRY_ENTER() + CDLTransformRcPtr cdltran = GetEditableJOCIO<CDLTransformRcPtr, CDLTransformJNI>(env, self); + cdltran->setDescription(GetJStringValue(env, desc)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_CDLTransform_getDescription(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstCDLTransformRcPtr cdltran = GetConstJOCIO<ConstCDLTransformRcPtr, CDLTransformJNI>(env, self); + return env->NewStringUTF(cdltran->getDescription()); + OCIO_JNITRY_EXIT(NULL) +} + +// ColorSpaceTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ColorSpaceTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<ColorSpaceTransformRcPtr, ColorSpaceTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/ColorSpaceTransform"), ColorSpaceTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpaceTransform_getSrc(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceTransformRcPtr coltran = GetConstJOCIO<ConstColorSpaceTransformRcPtr, ColorSpaceTransformJNI>(env, self); + return env->NewStringUTF(coltran->getSrc()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpaceTransform_setSrc(JNIEnv * env, jobject self, jstring src) +{ + OCIO_JNITRY_ENTER() + ColorSpaceTransformRcPtr coltran = GetEditableJOCIO<ColorSpaceTransformRcPtr, ColorSpaceTransformJNI>(env, self); + coltran->setSrc(GetJStringValue(env, src)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_ColorSpaceTransform_getDst(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstColorSpaceTransformRcPtr coltran = GetConstJOCIO<ConstColorSpaceTransformRcPtr, ColorSpaceTransformJNI>(env, self); + return env->NewStringUTF(coltran->getDst()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ColorSpaceTransform_setDst(JNIEnv * env, jobject self, jstring dst) +{ + OCIO_JNITRY_ENTER() + ColorSpaceTransformRcPtr coltran = GetEditableJOCIO<ColorSpaceTransformRcPtr, ColorSpaceTransformJNI>(env, self); + coltran->setDst(GetJStringValue(env, dst)()); + OCIO_JNITRY_EXIT() +} + +// DisplayTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_DisplayTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<DisplayTransformRcPtr, DisplayTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/DisplayTransform"), DisplayTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setInputColorSpaceName(JNIEnv * env, jobject self, jstring name) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + dtran->setInputColorSpaceName(GetJStringValue(env, name)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_DisplayTransform_getInputColorSpaceName(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + return env->NewStringUTF(dtran->getInputColorSpaceName()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setLinearCC(JNIEnv * env, jobject self, jobject cc) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, cc); + dtran->setLinearCC(ptr); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_DisplayTransform_getLinearCC(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr cctran = dtran->getLinearCC(); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(cctran)), cctran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setColorTimingCC(JNIEnv * env, jobject self, jobject cc) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, cc); + dtran->setColorTimingCC(ptr); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_DisplayTransform_getColorTimingCC(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr cctran = dtran->getColorTimingCC(); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(cctran)), cctran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setChannelView(JNIEnv * env, jobject self, jobject transform) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + dtran->setChannelView(ptr); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_DisplayTransform_getChannelView(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr cvtran = dtran->getChannelView(); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(cvtran)), cvtran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setDisplay(JNIEnv * env, jobject self, jstring display) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + dtran->setDisplay(GetJStringValue(env, display)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_DisplayTransform_getDisplay(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + return env->NewStringUTF(dtran->getDisplay()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setView(JNIEnv * env, jobject self, jstring view) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + dtran->setView(GetJStringValue(env, view)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_DisplayTransform_getView(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + return env->NewStringUTF(dtran->getView()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setDisplayCC(JNIEnv * env, jobject self, jobject cc) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, cc); + dtran->setDisplayCC(ptr); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_DisplayTransform_getDisplayCC(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + ConstTransformRcPtr cctran = dtran->getDisplayCC(); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(cctran)), cctran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setLooksOverride(JNIEnv * env, jobject self, jstring looks) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + dtran->setLooksOverride(GetJStringValue(env, looks)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_DisplayTransform_getLooksOverride(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + return env->NewStringUTF(dtran->getLooksOverride()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_DisplayTransform_setLooksOverrideEnabled(JNIEnv * env, jobject self, jboolean enabled) +{ + OCIO_JNITRY_ENTER() + DisplayTransformRcPtr dtran = GetEditableJOCIO<DisplayTransformRcPtr, DisplayTransformJNI>(env, self); + dtran->setLooksOverrideEnabled((bool)enabled); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_DisplayTransform_getLooksOverrideEnabled(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstDisplayTransformRcPtr dtran = GetConstJOCIO<ConstDisplayTransformRcPtr, DisplayTransformJNI>(env, self); + return (jboolean)dtran->getLooksOverrideEnabled(); + OCIO_JNITRY_EXIT(false) +} + +// ExponentTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_ExponentTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass("org/OpenColorIO/ExponentTransform"), ExponentTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ExponentTransform_setValue(JNIEnv * env, jobject self, jfloatArray vec4) +{ + OCIO_JNITRY_ENTER() + ExponentTransformRcPtr exptran = GetEditableJOCIO<ExponentTransformRcPtr, ExponentTransformJNI>(env, self); + exptran->setValue(GetJFloatArrayValue(env, vec4, "vec4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_ExponentTransform_getValue(JNIEnv * env, jobject self, jfloatArray vec4) +{ + OCIO_JNITRY_ENTER() + ConstExponentTransformRcPtr exptran = GetConstJOCIO<ConstExponentTransformRcPtr, ExponentTransformJNI>(env, self); + exptran->getValue(SetJFloatArrayValue(env, vec4, "vec4", 4)()); + OCIO_JNITRY_EXIT() +} + +// FileTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_FileTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<FileTransformRcPtr, FileTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/FileTransform"), FileTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_FileTransform_getSrc(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return env->NewStringUTF(filetran->getSrc()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_FileTransform_setSrc(JNIEnv * env, jobject self, jstring src) +{ + OCIO_JNITRY_ENTER() + FileTransformRcPtr filetran = GetEditableJOCIO<FileTransformRcPtr, FileTransformJNI>(env, self); + filetran->setSrc(GetJStringValue(env, src)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_FileTransform_getCCCId(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return env->NewStringUTF(filetran->getCCCId()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_FileTransform_setCCCId(JNIEnv * env, jobject self, jstring id) +{ + OCIO_JNITRY_ENTER() + FileTransformRcPtr filetran = GetEditableJOCIO<FileTransformRcPtr, FileTransformJNI>(env, self); + filetran->setCCCId(GetJStringValue(env, id)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_FileTransform_getInterpolation(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return BuildJEnum(env, "org/OpenColorIO/Interpolation", filetran->getInterpolation()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_FileTransform_setInterpolation(JNIEnv * env, jobject self, jobject interp) +{ + OCIO_JNITRY_ENTER() + FileTransformRcPtr filetran = GetEditableJOCIO<FileTransformRcPtr, FileTransformJNI>(env, self); + filetran->setInterpolation(GetJEnum<Interpolation>(env, interp)); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_FileTransform_getNumFormats(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return (jint)filetran->getNumFormats(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_FileTransform_getFormatNameByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return env->NewStringUTF(filetran->getFormatNameByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_FileTransform_getFormatExtensionByIndex(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstFileTransformRcPtr filetran = GetConstJOCIO<ConstFileTransformRcPtr, FileTransformJNI>(env, self); + return env->NewStringUTF(filetran->getFormatExtensionByIndex((int)index)); + OCIO_JNITRY_EXIT(NULL) +} + +// GroupTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_GroupTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<GroupTransformRcPtr, GroupTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/GroupTransform"), GroupTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_GroupTransform_getTransform(JNIEnv * env, jobject self, jint index) +{ + OCIO_JNITRY_ENTER() + ConstGroupTransformRcPtr gtran = GetConstJOCIO<ConstGroupTransformRcPtr, GroupTransformJNI>(env, self); + ConstTransformRcPtr ctran = gtran->getTransform((int)index); + return BuildJObject<TransformRcPtr, TransformJNI>(env, self, + env->FindClass(GetOCIOTClass(ctran)), ctran->createEditableCopy()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jint JNICALL +Java_org_OpenColorIO_GroupTransform_size(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstGroupTransformRcPtr gtran = GetConstJOCIO<ConstGroupTransformRcPtr, GroupTransformJNI>(env, self); + return (jint)gtran->size(); + OCIO_JNITRY_EXIT(0) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GroupTransform_push_1back(JNIEnv * env, jobject self, jobject transform) +{ + OCIO_JNITRY_ENTER() + GroupTransformRcPtr gtran = GetEditableJOCIO<GroupTransformRcPtr, GroupTransformJNI>(env, self); + ConstTransformRcPtr ptr = GetConstJOCIO<ConstTransformRcPtr, TransformJNI>(env, transform); + gtran->push_back(ptr); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_GroupTransform_clear(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + GroupTransformRcPtr gtran = GetEditableJOCIO<GroupTransformRcPtr, GroupTransformJNI>(env, self); + gtran->clear(); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_GroupTransform_empty(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstGroupTransformRcPtr gtran = GetConstJOCIO<ConstGroupTransformRcPtr, GroupTransformJNI>(env, self); + return (jboolean)gtran->empty(); + OCIO_JNITRY_EXIT(false) +} + +// LogTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_LogTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<LogTransformRcPtr, LogTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/LogTransform"), LogTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_LogTransform_setBase(JNIEnv * env, jobject self, jfloat val) +{ + OCIO_JNITRY_ENTER() + LogTransformRcPtr ltran = GetEditableJOCIO<LogTransformRcPtr, LogTransformJNI>(env, self); + ltran->setBase((float)val); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jfloat JNICALL +Java_org_OpenColorIO_LogTransform_getBase(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLogTransformRcPtr ltran = GetConstJOCIO<ConstLogTransformRcPtr, LogTransformJNI>(env, self); + return (jfloat)ltran->getBase(); + OCIO_JNITRY_EXIT(0.f) +} + +// LookTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_LookTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<LookTransformRcPtr, LookTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/LookTransform"), LookTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_LookTransform_getSrc(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookTransformRcPtr lktran = GetConstJOCIO<ConstLookTransformRcPtr, LookTransformJNI>(env, self); + return env->NewStringUTF(lktran->getSrc()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_LookTransform_setSrc(JNIEnv * env, jobject self, jstring src) +{ + OCIO_JNITRY_ENTER() + LookTransformRcPtr lktran = GetEditableJOCIO<LookTransformRcPtr, LookTransformJNI>(env, self); + lktran->setSrc(GetJStringValue(env, src)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_LookTransform_getDst(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookTransformRcPtr lktran = GetConstJOCIO<ConstLookTransformRcPtr, LookTransformJNI>(env, self); + return env->NewStringUTF(lktran->getDst()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_LookTransform_setDst(JNIEnv * env, jobject self, jstring dst) +{ + OCIO_JNITRY_ENTER() + LookTransformRcPtr lktran = GetEditableJOCIO<LookTransformRcPtr, LookTransformJNI>(env, self); + lktran->setDst(GetJStringValue(env, dst)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_LookTransform_setLooks(JNIEnv * env, jobject self, jstring looks) +{ + OCIO_JNITRY_ENTER() + LookTransformRcPtr lktran = GetEditableJOCIO<LookTransformRcPtr, LookTransformJNI>(env, self); + lktran->setLooks(GetJStringValue(env, looks)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_LookTransform_getLooks(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstLookTransformRcPtr lktran = GetConstJOCIO<ConstLookTransformRcPtr, LookTransformJNI>(env, self); + return env->NewStringUTF(lktran->getLooks()); + OCIO_JNITRY_EXIT(NULL) +} + +// MatrixTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_MatrixTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<MatrixTransformRcPtr, MatrixTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/MatrixTransform"), MatrixTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT jboolean JNICALL +Java_org_OpenColorIO_MatrixTransform_equals(JNIEnv * env, jobject self, jobject obj) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr left = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + ConstMatrixTransformRcPtr right = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, obj); + return (jboolean)left->equals(*right.get()); + OCIO_JNITRY_EXIT(false) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_setValue(JNIEnv * env, jobject self, jfloatArray m44, jfloatArray offset4) +{ + OCIO_JNITRY_ENTER() + MatrixTransformRcPtr mtran = GetEditableJOCIO<MatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->setValue(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_getValue(JNIEnv * env, jobject self, jfloatArray m44, jfloatArray offset4) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->getValue(SetJFloatArrayValue(env, m44, "m44", 16)(), + SetJFloatArrayValue(env, offset4, "offset4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_setMatrix(JNIEnv * env, jobject self, jfloatArray m44) +{ + OCIO_JNITRY_ENTER() + MatrixTransformRcPtr mtran = GetEditableJOCIO<MatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->setMatrix(GetJFloatArrayValue(env, m44, "m44", 16)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_getMatrix(JNIEnv * env, jobject self, jfloatArray m44) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->getMatrix(SetJFloatArrayValue(env, m44, "m44", 16)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_setOffset(JNIEnv * env, jobject self, jfloatArray offset4) +{ + OCIO_JNITRY_ENTER() + MatrixTransformRcPtr mtran = GetEditableJOCIO<MatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->setOffset(GetJFloatArrayValue(env, offset4, "offset4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_getOffset(JNIEnv * env, jobject self, jfloatArray offset4) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->getOffset(SetJFloatArrayValue(env, offset4, "offset4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_Fit(JNIEnv * env, jobject self, + jfloatArray m44, jfloatArray offset4, jfloatArray oldmin4, + jfloatArray oldmax4, jfloatArray newmin4, jfloatArray newmax4) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->Fit(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)(), + GetJFloatArrayValue(env, oldmin4, "oldmin4", 4)(), + GetJFloatArrayValue(env, oldmax4, "oldmax4", 4)(), + GetJFloatArrayValue(env, newmin4, "newmin4", 4)(), + GetJFloatArrayValue(env, newmax4, "newmax4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_Identity(JNIEnv * env, jobject self, + jfloatArray m44, jfloatArray offset4) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->Identity(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_Sat(JNIEnv * env, jobject self, + jfloatArray m44, jfloatArray offset4, jfloat sat, + jfloatArray lumaCoef3) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->Sat(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)(), + (float)sat, + GetJFloatArrayValue(env, lumaCoef3, "lumaCoef3", 3)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_Scale(JNIEnv * env, jobject self, + jfloatArray m44, jfloatArray offset4, jfloatArray scale4) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->Scale(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)(), + GetJFloatArrayValue(env, scale4, "scale4", 4)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_MatrixTransform_View(JNIEnv * env, jobject self, + jfloatArray m44, jfloatArray offset4, jintArray channelHot4, + jfloatArray lumaCoef3) +{ + OCIO_JNITRY_ENTER() + ConstMatrixTransformRcPtr mtran = GetConstJOCIO<ConstMatrixTransformRcPtr, MatrixTransformJNI>(env, self); + mtran->View(GetJFloatArrayValue(env, m44, "m44", 16)(), + GetJFloatArrayValue(env, offset4, "offset4", 4)(), + GetJIntArrayValue(env, channelHot4, "channelHot4", 4)(), + GetJFloatArrayValue(env, lumaCoef3, "lumaCoef3", 3)()); + OCIO_JNITRY_EXIT() +} + +// TruelightTransform + +JNIEXPORT jobject JNICALL +Java_org_OpenColorIO_TruelightTransform_Create(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + return BuildJObject<TruelightTransformRcPtr, TruelightTransformJNI>(env, self, + env->FindClass("org/OpenColorIO/TruelightTransform"), TruelightTransform::Create()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setConfigRoot(JNIEnv * env, jobject self, jstring configroot) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setConfigRoot(GetJStringValue(env, configroot)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getConfigRoot(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getConfigRoot()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setProfile(JNIEnv * env, jobject self, jstring profile) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setProfile(GetJStringValue(env, profile)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getProfile(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getProfile()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setCamera(JNIEnv * env, jobject self, jstring camera) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setCamera(GetJStringValue(env, camera)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getCamera(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getCamera()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setInputDisplay(JNIEnv * env, jobject self, jstring display) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setInputDisplay(GetJStringValue(env, display)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getInputDisplay(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getInputDisplay()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setRecorder(JNIEnv * env, jobject self, jstring recorder) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setRecorder(GetJStringValue(env, recorder)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getRecorder(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getRecorder()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setPrint(JNIEnv * env, jobject self, jstring print) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setPrint(GetJStringValue(env, print)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getPrint(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getPrint()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setLamp(JNIEnv * env, jobject self, jstring lamp) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setLamp(GetJStringValue(env, lamp)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getLamp(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getLamp()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setOutputCamera(JNIEnv * env, jobject self, jstring camera) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setOutputCamera(GetJStringValue(env, camera)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getOutputCamera(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getOutputCamera()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setDisplay(JNIEnv * env, jobject self, jstring display) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setDisplay(GetJStringValue(env, display)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getDisplay(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getDisplay()); + OCIO_JNITRY_EXIT(NULL) +} + +JNIEXPORT void JNICALL +Java_org_OpenColorIO_TruelightTransform_setCubeInput(JNIEnv * env, jobject self, jstring type) +{ + OCIO_JNITRY_ENTER() + TruelightTransformRcPtr ttran = GetEditableJOCIO<TruelightTransformRcPtr, TruelightTransformJNI>(env, self); + ttran->setCubeInput(GetJStringValue(env, type)()); + OCIO_JNITRY_EXIT() +} + +JNIEXPORT jstring JNICALL +Java_org_OpenColorIO_TruelightTransform_getCubeInput(JNIEnv * env, jobject self) +{ + OCIO_JNITRY_ENTER() + ConstTruelightTransformRcPtr ttran = GetConstJOCIO<ConstTruelightTransformRcPtr, TruelightTransformJNI>(env, self); + return env->NewStringUTF(ttran->getCubeInput()); + OCIO_JNITRY_EXIT(NULL) +} diff --git a/src/jniglue/JNIUtil.cpp b/src/jniglue/JNIUtil.cpp new file mode 100644 index 0000000..b893098 --- /dev/null +++ b/src/jniglue/JNIUtil.cpp @@ -0,0 +1,122 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <OpenColorIO/OpenColorIO.h> + +#include "JNIUtil.h" + +OCIO_NAMESPACE_ENTER +{ + +jobject NewJFloatBuffer(JNIEnv * env, float* ptr, int32_t len) { + jobject byte_buf = env->NewDirectByteBuffer(ptr, len * sizeof(float)); + jmethodID mid = env->GetMethodID(env->GetObjectClass(byte_buf), + "asFloatBuffer", "()Ljava/nio/FloatBuffer;"); + if (mid == 0) throw Exception("Could not find asFloatBuffer() method"); + return env->CallObjectMethod(byte_buf, mid); +} + +float* GetJFloatBuffer(JNIEnv * env, jobject buffer, int32_t len) { + jmethodID mid = env->GetMethodID(env->GetObjectClass(buffer), "isDirect", "()Z"); + if (mid == 0) throw Exception("Could not find isDirect() method"); + if(!env->CallBooleanMethod(buffer, mid)) { + std::ostringstream err; + err << "the FloatBuffer object is not 'direct' it needs to be created "; + err << "from a ByteBuffer.allocateDirect(..).asFloatBuffer() call."; + throw Exception(err.str().c_str()); + } + if(env->GetDirectBufferCapacity(buffer) != len) { + std::ostringstream err; + err << "the FloatBuffer object is not allocated correctly it needs to "; + err << "of size " << len << " but is "; + err << env->GetDirectBufferCapacity(buffer) << "."; + throw Exception(err.str().c_str()); + } + return (float*)env->GetDirectBufferAddress(buffer); +} + +const char* GetOCIOTClass(ConstTransformRcPtr tran) { + if(ConstAllocationTransformRcPtr at = DynamicPtrCast<const AllocationTransform>(tran)) + return "org/OpenColorIO/AllocationTransform"; + else if(ConstCDLTransformRcPtr ct = DynamicPtrCast<const CDLTransform>(tran)) + return "org/OpenColorIO/CDLTransform"; + else if(ConstColorSpaceTransformRcPtr cst = DynamicPtrCast<const ColorSpaceTransform>(tran)) + return "org/OpenColorIO/ColorSpaceTransform"; + else if(ConstDisplayTransformRcPtr dt = DynamicPtrCast<const DisplayTransform>(tran)) + return "org/OpenColorIO/DisplayTransform"; + else if(ConstExponentTransformRcPtr et = DynamicPtrCast<const ExponentTransform>(tran)) + return "org/OpenColorIO/ExponentTransform"; + else if(ConstFileTransformRcPtr ft = DynamicPtrCast<const FileTransform>(tran)) + return "org/OpenColorIO/FileTransform"; + else if(ConstGroupTransformRcPtr gt = DynamicPtrCast<const GroupTransform>(tran)) + return "org/OpenColorIO/GroupTransform"; + else if(ConstLogTransformRcPtr lt = DynamicPtrCast<const LogTransform>(tran)) + return "org/OpenColorIO/LogTransform"; + else if(ConstLookTransformRcPtr lkt = DynamicPtrCast<const LookTransform>(tran)) + return "org/OpenColorIO/LookTransform"; + else if(ConstMatrixTransformRcPtr mt = DynamicPtrCast<const MatrixTransform>(tran)) + return "org/OpenColorIO/MatrixTransform"; + else if(ConstTruelightTransformRcPtr tt = DynamicPtrCast<const TruelightTransform>(tran)) + return "org/OpenColorIO/TruelightTransform"; + else return "org/OpenColorIO/Transform"; +} + +void JNI_Handle_Exception(JNIEnv * env) +{ + try + { + throw; + } + catch (ExceptionMissingFile & e) + { + jclass je = env->FindClass("org/OpenColorIO/ExceptionMissingFile"); + env->ThrowNew(je, e.what()); + env->DeleteLocalRef(je); + } + catch (Exception & e) + { + jclass je = env->FindClass("org/OpenColorIO/ExceptionBase"); + env->ThrowNew(je, e.what()); + env->DeleteLocalRef(je); + } + catch (std::exception& e) + { + jclass je = env->FindClass("java/lang/Exception"); + env->ThrowNew(je, e.what()); + env->DeleteLocalRef(je); + } + catch (...) + { + jclass je = env->FindClass("java/lang/Exception"); + env->ThrowNew(je, "Unknown C++ exception caught."); + env->DeleteLocalRef(je); + } +} + +} +OCIO_NAMESPACE_EXIT diff --git a/src/jniglue/JNIUtil.h b/src/jniglue/JNIUtil.h new file mode 100644 index 0000000..cf9381c --- /dev/null +++ b/src/jniglue/JNIUtil.h @@ -0,0 +1,282 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef INCLUDED_OCIO_JNIUTIL_H +#define INCLUDED_OCIO_JNIUTIL_H + +#include <sstream> +#include <vector> +#include "OpenColorIOJNI.h" + +OCIO_NAMESPACE_ENTER +{ + +template<typename C, typename E> +struct JObject +{ + jobject back_ptr; + C * constcppobj; + E * cppobj; + bool isconst; +}; + +typedef OCIO_SHARED_PTR<const GpuShaderDesc> ConstGpuShaderDescRcPtr; +typedef OCIO_SHARED_PTR<GpuShaderDesc> GpuShaderDescRcPtr; +typedef OCIO_SHARED_PTR<const ImageDesc> ConstImageDescRcPtr; +typedef OCIO_SHARED_PTR<ImageDesc> ImageDescRcPtr; +typedef OCIO_SHARED_PTR<const PackedImageDesc> ConstPackedImageDescRcPtr; +typedef OCIO_SHARED_PTR<PackedImageDesc> PackedImageDescRcPtr; +typedef OCIO_SHARED_PTR<const PlanarImageDesc> ConstPlanarImageDescRcPtr; +typedef OCIO_SHARED_PTR<PlanarImageDesc> PlanarImageDescRcPtr; + +typedef JObject <ConstConfigRcPtr, ConfigRcPtr> ConfigJNI; +typedef JObject <ConstContextRcPtr, ContextRcPtr> ContextJNI; +typedef JObject <ConstProcessorRcPtr, ProcessorRcPtr> ProcessorJNI; +typedef JObject <ConstColorSpaceRcPtr, ColorSpaceRcPtr> ColorSpaceJNI; +typedef JObject <ConstLookRcPtr, LookRcPtr> LookJNI; +typedef JObject <ConstBakerRcPtr, BakerRcPtr> BakerJNI; +typedef JObject <ConstGpuShaderDescRcPtr, GpuShaderDescRcPtr> GpuShaderDescJNI; +typedef JObject <ConstImageDescRcPtr, ImageDescRcPtr> ImageDescJNI; +typedef JObject <ConstTransformRcPtr, TransformRcPtr> TransformJNI; +typedef JObject <ConstAllocationTransformRcPtr, AllocationTransformRcPtr> AllocationTransformJNI; +typedef JObject <ConstCDLTransformRcPtr, CDLTransformRcPtr> CDLTransformJNI; +typedef JObject <ConstColorSpaceTransformRcPtr, ColorSpaceTransformRcPtr> ColorSpaceTransformJNI; +typedef JObject <ConstDisplayTransformRcPtr, DisplayTransformRcPtr> DisplayTransformJNI; +typedef JObject <ConstExponentTransformRcPtr, ExponentTransformRcPtr> ExponentTransformJNI; +typedef JObject <ConstFileTransformRcPtr, FileTransformRcPtr> FileTransformJNI; +typedef JObject <ConstGroupTransformRcPtr, GroupTransformRcPtr> GroupTransformJNI; +typedef JObject <ConstLogTransformRcPtr, LogTransformRcPtr> LogTransformJNI; +typedef JObject <ConstLookTransformRcPtr, LookTransformRcPtr> LookTransformJNI; +typedef JObject <ConstMatrixTransformRcPtr, MatrixTransformRcPtr> MatrixTransformJNI; +typedef JObject <ConstTruelightTransformRcPtr, TruelightTransformRcPtr> TruelightTransformJNI; + +template<typename T, typename S> +inline jobject BuildJConstObject(JNIEnv * env, jobject self, jclass cls, T ptr) +{ + S * jnistruct = new S (); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->constcppobj = new T (); + *jnistruct->constcppobj = ptr; + jnistruct->isconst = true; + jmethodID mid = env->GetMethodID(cls, "<init>", "(J)V"); + return env->NewObject(cls, mid, (jlong)jnistruct); +} + +template<typename T, typename S> +inline jobject BuildJObject(JNIEnv * env, jobject self, jclass cls, T ptr) +{ + S * jnistruct = new S (); + jnistruct->back_ptr = env->NewGlobalRef(self); + jnistruct->cppobj = new T (); + *jnistruct->cppobj = ptr; + jnistruct->isconst = false; + jmethodID mid = env->GetMethodID(cls, "<init>", "(J)V"); + return env->NewObject(cls, mid, (jlong)jnistruct); +} + +template<typename S> +inline void DisposeJOCIO(JNIEnv * env, jobject self) +{ + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + jlong m_impl = env->GetLongField(self, fid); + if(m_impl == 0) return; // nothing to do + S * jni = reinterpret_cast<S *> (m_impl); + delete jni->constcppobj; + delete jni->cppobj; + env->DeleteGlobalRef(jni->back_ptr); + delete jni; + env->SetLongField(self, fid, 0); + return; +} + +template<typename T, typename S> +inline T GetConstJOCIO(JNIEnv * env, jobject self) +{ + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + jlong m_impl = env->GetLongField(self, fid); + if(m_impl == 0) { + throw Exception("Java object doesn't point to a OCIO object"); + } + S * jni = reinterpret_cast<S *> (m_impl); + if(jni->isconst && jni->constcppobj) { + return *jni->constcppobj; + } + if(!jni->isconst && jni->cppobj) { + return *jni->cppobj; + } + throw Exception("Could not get a const OCIO object"); +} + +template<typename T, typename S> +inline T GetEditableJOCIO(JNIEnv * env, jobject self) +{ + jclass wclass = env->GetObjectClass(self); + jfieldID fid = env->GetFieldID(wclass, "m_impl", "J"); + jlong m_impl = env->GetLongField(self, fid); + if(m_impl == 0) { + throw Exception("Java object doesn't point to a OCIO object"); + } + S * jni = reinterpret_cast<S *> (m_impl); + if(!jni->isconst && jni->cppobj) { + return *jni->cppobj; + } + throw Exception("Could not get an editable OCIO object"); +} + +template<typename T> +inline T GetJEnum(JNIEnv * env, jobject j_enum) +{ + jclass cls = env->GetObjectClass(j_enum); + jfieldID fid = env->GetFieldID(cls, "m_enum", "I"); + return (T)env->GetIntField(j_enum, fid); +} + +template<typename T> +inline jobject BuildJEnum(JNIEnv * env, const char* ociotype, T val) +{ + jclass cls = env->FindClass(ociotype); + jmethodID mid = env->GetMethodID(cls, "<init>", "(I)V"); + return env->NewObject(cls, mid, (int)val); +} + +template<typename T> +inline void CheckArrayLength(JNIEnv * env, const char* name, T ptr, int32_t length) { + if(ptr == NULL) return; + if(env->GetArrayLength(ptr) < length) { + std::ostringstream err; + err << name << " needs to have " << length; + err << " elements but found only " << env->GetArrayLength(ptr); + throw Exception(err.str().c_str()); + } +} + +class GetJFloatArrayValue +{ +public: + GetJFloatArrayValue(JNIEnv* env, jfloatArray val, const char* name, int32_t len) { + CheckArrayLength(env, name, val, len); + m_env = env; + m_val = val; + if(val != NULL) m_ptr = env->GetFloatArrayElements(val, JNI_FALSE); + } + ~GetJFloatArrayValue() { + if(m_val != NULL) m_env->ReleaseFloatArrayElements(m_val, m_ptr, JNI_FALSE); + m_val = NULL; + m_ptr = NULL; + } + jfloat* operator() () { + return m_ptr; + } +private: + JNIEnv* m_env; + jfloat* m_ptr; + jfloatArray m_val; +}; + +class SetJFloatArrayValue +{ +public: + SetJFloatArrayValue(JNIEnv* env, jfloatArray val, const char* name, int32_t len) { + CheckArrayLength(env, name, val, len); + m_env = env; + m_val = val; + if(val != NULL) m_tmp.resize(len); + } + ~SetJFloatArrayValue() { + if(m_val != NULL) m_env->SetFloatArrayRegion(m_val, 0, m_tmp.size(), &m_tmp[0]); + m_val = NULL; + m_tmp.clear(); + } + float* operator() () { + return &m_tmp[0]; + } +private: + JNIEnv* m_env; + std::vector<float> m_tmp; + jfloatArray m_val; +}; + +class GetJIntArrayValue +{ +public: + GetJIntArrayValue(JNIEnv* env, jintArray val, const char* name, int32_t len) { + CheckArrayLength(env, name, val, len); + m_env = env; + m_val = val; + if(val != NULL) m_ptr = env->GetIntArrayElements(val, JNI_FALSE); + } + ~GetJIntArrayValue() { + if(m_val != NULL) m_env->ReleaseIntArrayElements(m_val, m_ptr, JNI_FALSE); + m_val = NULL; + m_ptr = NULL; + } + jint* operator() () { + return m_ptr; + } +private: + JNIEnv* m_env; + jint* m_ptr; + jintArray m_val; +}; + +class GetJStringValue +{ +public: + GetJStringValue(JNIEnv* env, jstring val) { + m_env = env; + m_val = val; + if(val != NULL) m_tmp = env->GetStringUTFChars(m_val, 0); + } + ~GetJStringValue() { + if(m_val != NULL) m_env->ReleaseStringUTFChars(m_val, m_tmp); + m_val = NULL; + m_tmp = NULL; + } + const char* operator() () { + return m_tmp; + } +private: + JNIEnv* m_env; + const char* m_tmp; + jstring m_val; +}; + +jobject NewJFloatBuffer(JNIEnv * env, float* ptr, int32_t len); +float* GetJFloatBuffer(JNIEnv * env, jobject buffer, int32_t len); +const char* GetOCIOTClass(ConstTransformRcPtr tran); +void JNI_Handle_Exception(JNIEnv * env); + +#define OCIO_JNITRY_ENTER() try { +#define OCIO_JNITRY_EXIT(ret) } catch(...) { JNI_Handle_Exception(env); return ret; } + +} +OCIO_NAMESPACE_EXIT + +#endif // INCLUDED_OCIO_JNIUTIL_H diff --git a/src/jniglue/LoadLibrary.java.in b/src/jniglue/LoadLibrary.java.in new file mode 100644 index 0000000..41818d6 --- /dev/null +++ b/src/jniglue/LoadLibrary.java.in @@ -0,0 +1,40 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; + +public class LoadLibrary +{ + public LoadLibrary() { } + protected LoadLibrary(long impl) { m_impl = impl; } + public long m_impl = 0; + static + { + System.loadLibrary("OpenColorIO-JNI.@OCIO_VERSION@"); + } +} diff --git a/src/jniglue/Manifest.txt.in b/src/jniglue/Manifest.txt.in new file mode 100644 index 0000000..71a5142 --- /dev/null +++ b/src/jniglue/Manifest.txt.in @@ -0,0 +1,7 @@ +Name: org/OpenColorIO/ +Specification-Title: OpenColorIO - Open Source Color Management +Specification-Version: @OCIO_VERSION@ +Specification-Vendor: Sony Pictures Imageworks Inc., et al. +Implementation-Title: org.OpenColorIO +Implementation-Version: @OCIO_VERSION@ +Implementation-Vendor: Sony Pictures Imageworks Inc., et al.
\ No newline at end of file diff --git a/src/jniglue/org/OpenColorIO/Allocation.java b/src/jniglue/org/OpenColorIO/Allocation.java new file mode 100644 index 0000000..3d80251 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Allocation.java @@ -0,0 +1,44 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Allocation extends LoadLibrary +{ + private final int m_enum; + protected Allocation(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final Allocation + ALLOCATION_UNKNOWN = new Allocation(0); + public static final Allocation + ALLOCATION_UNIFORM = new Allocation(1); + public static final Allocation + ALLOCATION_LG2 = new Allocation(2); +} diff --git a/src/jniglue/org/OpenColorIO/AllocationTransform.java b/src/jniglue/org/OpenColorIO/AllocationTransform.java new file mode 100644 index 0000000..b116d18 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/AllocationTransform.java @@ -0,0 +1,42 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class AllocationTransform extends Transform +{ + public AllocationTransform() { super(); } + protected AllocationTransform(long impl) { super(impl); } + public native AllocationTransform Create(); + public native Allocation getAllocation(); + public native void setAllocation(Allocation allocation); + public native int getNumVars(); + public native void getVars(float[] vars); + public native void setVars(int numvars, float[] vars); +} diff --git a/src/jniglue/org/OpenColorIO/Baker.java b/src/jniglue/org/OpenColorIO/Baker.java new file mode 100644 index 0000000..0464753 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Baker.java @@ -0,0 +1,62 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Baker extends LoadLibrary +{ + public Baker() { super(); } + protected Baker(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Baker Create(); + public native Baker createEditableCopy(); + public native void setConfig(Config config); + public native Config getConfig(); + public native void setFormat(String formatName); + public native String getFormat(); + public native void setType(String type); + public native String getType(); + public native void setMetadata(String metadata); + public native String getMetadata(); + public native void setInputSpace(String inputSpace); + public native String getInputSpace(); + public native void setShaperSpace(String shaperSpace); + public native String getShaperSpace(); + public native void setTargetSpace(String targetSpace); + public native String getTargetSpace(); + public native void setShaperSize(int shapersize); + public native int getShaperSize(); + public native void setCubeSize(int cubesize); + public native int getCubeSize(); + public native String bake(); + public native int getNumFormats(); + public native String getFormatNameByIndex(int index); + public native String getFormatExtensionByIndex(int index); +} diff --git a/src/jniglue/org/OpenColorIO/BitDepth.java b/src/jniglue/org/OpenColorIO/BitDepth.java new file mode 100644 index 0000000..afa0543 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/BitDepth.java @@ -0,0 +1,56 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class BitDepth extends LoadLibrary +{ + private final int m_enum; + protected BitDepth(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final BitDepth + BIT_DEPTH_UNKNOWN = new BitDepth(0); + public static final BitDepth + BIT_DEPTH_UINT8 = new BitDepth(1); + public static final BitDepth + BIT_DEPTH_UINT10 = new BitDepth(2); + public static final BitDepth + BIT_DEPTH_UINT12 = new BitDepth(3); + public static final BitDepth + BIT_DEPTH_UINT14 = new BitDepth(4); + public static final BitDepth + BIT_DEPTH_UINT16 = new BitDepth(5); + public static final BitDepth + BIT_DEPTH_UINT32 = new BitDepth(6); + public static final BitDepth + BIT_DEPTH_F16 = new BitDepth(7); + public static final BitDepth + BIT_DEPTH_F32 = new BitDepth(8); +} diff --git a/src/jniglue/org/OpenColorIO/CDLTransform.java b/src/jniglue/org/OpenColorIO/CDLTransform.java new file mode 100644 index 0000000..ce0fd00 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/CDLTransform.java @@ -0,0 +1,56 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class CDLTransform extends Transform +{ + public CDLTransform() { super(); } + protected CDLTransform(long impl) { super(impl); } + public native CDLTransform Create(); + public native CDLTransform CreateFromFile(String src, String cccid); + public native boolean equals(CDLTransform obj); + public native String getXML(); + public native void setXML(String xml); + public native void setSlope(float[] rgb); + public native void getSlope(float[] rgb); + public native void setOffset(float[] rgb); + public native void getOffset(float[] rgb); + public native void setPower(float[] rgb); + public native void getPower(float[] rgb); + public native void setSOP(float[] vec9); + public native void getSOP(float[] vec9); + public native void setSat(float sat); + public native float getSat(); + public native void getSatLumaCoefs(float[] rgb); + public native void setID(String id); + public native String getID(); + public native void setDescription(String desc); + public native String getDescription(); +} diff --git a/src/jniglue/org/OpenColorIO/ColorSpace.java b/src/jniglue/org/OpenColorIO/ColorSpace.java new file mode 100644 index 0000000..11e7198 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ColorSpace.java @@ -0,0 +1,59 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ColorSpace extends LoadLibrary +{ + public ColorSpace() { super(); } + protected ColorSpace(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native ColorSpace Create(); + public native ColorSpace createEditableCopy(); + public native String getName(); + public native void setName(String name); + public native String getFamily(); + public native void setFamily(String family); + public native String getEqualityGroup(); + public native void setEqualityGroup(String equalityGroup); + public native String getDescription(); + public native void setDescription(String description); + public native BitDepth getBitDepth(); + public native void setBitDepth(BitDepth bitDepth); + public native boolean isData(); + public native void setIsData(boolean isData); + public native Allocation getAllocation(); + public native void setAllocation(Allocation allocation); + public native int getAllocationNumVars(); + public native void getAllocationVars(float[] vars); + public native void setAllocationVars(int numvars, float[] vars); + public native Transform getTransform(ColorSpaceDirection dir); + public native void setTransform(Transform transform, ColorSpaceDirection dir); +} diff --git a/src/jniglue/org/OpenColorIO/ColorSpaceDirection.java b/src/jniglue/org/OpenColorIO/ColorSpaceDirection.java new file mode 100644 index 0000000..a822f6e --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ColorSpaceDirection.java @@ -0,0 +1,44 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ColorSpaceDirection extends LoadLibrary +{ + private final int m_enum; + protected ColorSpaceDirection(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final ColorSpaceDirection + COLORSPACE_DIR_UNKNOWN = new ColorSpaceDirection(0); + public static final ColorSpaceDirection + COLORSPACE_DIR_TO_REFERENCE = new ColorSpaceDirection(1); + public static final ColorSpaceDirection + COLORSPACE_DIR_FROM_REFERENCE = new ColorSpaceDirection(2); +} diff --git a/src/jniglue/org/OpenColorIO/ColorSpaceTransform.java b/src/jniglue/org/OpenColorIO/ColorSpaceTransform.java new file mode 100644 index 0000000..ffc856b --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ColorSpaceTransform.java @@ -0,0 +1,41 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ColorSpaceTransform extends Transform +{ + public ColorSpaceTransform() { super(); } + protected ColorSpaceTransform(long impl) { super(impl); } + public native ColorSpaceTransform Create(); + public native String getSrc(); + public native void setSrc(String src); + public native String getDst(); + public native void setDst(String dst); +} diff --git a/src/jniglue/org/OpenColorIO/Config.java b/src/jniglue/org/OpenColorIO/Config.java new file mode 100644 index 0000000..f35ca65 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Config.java @@ -0,0 +1,96 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Config extends LoadLibrary +{ + public Config() { super(); } + protected Config(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Config Create(); + public native Config CreateFromEnv(); + public native Config CreateFromFile(String filename); + public native Config CreateFromStream(String istream); + public native Config createEditableCopy(); + public native void sanityCheck(); + public native String getDescription(); + public native void setDescription(String description); + public native String serialize(); + public native String getCacheID(); + public native String getCacheID(Context context); + public native Context getCurrentContext(); + public native String getSearchPath(); + public native void setSearchPath(String path); + public native String getWorkingDir(); + public native void setWorkingDir(String dirname); + public native int getNumColorSpaces(); + public native String getColorSpaceNameByIndex(int index); + public native ColorSpace getColorSpace(String name); + public native int getIndexForColorSpace(String name); + public native void addColorSpace(ColorSpace cs); + public native void clearColorSpaces(); + public native String parseColorSpaceFromString(String str); + public native boolean isStrictParsingEnabled(); + public native void setStrictParsingEnabled(boolean enabled); + public native void setRole(String role, String colorSpaceName); + public native int getNumRoles(); + public native boolean hasRole(String role); + public native String getRoleName(int index); + public native String getDefaultDisplay(); + public native int getNumDisplays(); + public native String getDisplay(int index); + public native String getDefaultView(String display); + public native int getNumViews(String display); + public native String getView(String display, int index); + public native String getDisplayColorSpaceName(String display, String view); + public native String getDisplayLooks(String display, String view); + // TODO: seems that 4 string params causes a memory error in the JNI layer? + // public native void addDisplay(String display, String view, String colorSpaceName, int looks); + public native void clearDisplays(); + public native void setActiveDisplays(String displays); + public native String getActiveDisplays(); + public native void setActiveViews(String views); + public native String getActiveViews(); + public native void getDefaultLumaCoefs(float[] rgb); + public native void setDefaultLumaCoefs(float[] rgb); + public native Look getLook(String name); + public native int getNumLooks(); + public native String getLookNameByIndex(int index); + public native void addLook(Look look); + public native void clearLooks(); + public native Processor getProcessor(Context context, ColorSpace srcColorSpace, ColorSpace dstColorSpace); + public native Processor getProcessor(ColorSpace srcColorSpace, ColorSpace dstColorSpace); + public native Processor getProcessor(String srcName, String dstName); + public native Processor getProcessor(Context context, String srcName, String dstName); + public native Processor getProcessor(Transform transform); + public native Processor getProcessor(Transform transform, TransformDirection direction); + public native Processor getProcessor(Context context, Transform transform, TransformDirection direction); +} diff --git a/src/jniglue/org/OpenColorIO/Context.java b/src/jniglue/org/OpenColorIO/Context.java new file mode 100644 index 0000000..eaec345 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Context.java @@ -0,0 +1,52 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Context extends LoadLibrary +{ + public Context() { super(); } + protected Context(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Context Create(); + public native Context createEditableCopy(); + public native String getCacheID(); + public native void setSearchPath(String path); + public native String getSearchPath(); + public native void setWorkingDir(String dirname); + public native String getWorkingDir(); + public native void setStringVar(String name, String value); + public native String getStringVar(String name); + public native int getNumStringVars(); + public native String getStringVarNameByIndex(int index); + public native void loadEnvironment(); + public native String resolveStringVar(String val); + public native String resolveFileLocation(String filename) throws ExceptionMissingFile; +} diff --git a/src/jniglue/org/OpenColorIO/DisplayTransform.java b/src/jniglue/org/OpenColorIO/DisplayTransform.java new file mode 100644 index 0000000..0867029 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/DisplayTransform.java @@ -0,0 +1,55 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class DisplayTransform extends Transform +{ + public DisplayTransform() { super(); } + protected DisplayTransform(long impl) { super(impl); } + public native DisplayTransform Create(); + public native void setInputColorSpaceName(String name); + public native String getInputColorSpaceName(); + public native void setLinearCC(Transform cc); + public native Transform getLinearCC(); + public native void setColorTimingCC(Transform cc); + public native Transform getColorTimingCC(); + public native void setChannelView(Transform transform); + public native Transform getChannelView(); + public native void setDisplay(String display); + public native String getDisplay(); + public native void setView(String view); + public native String getView(); + public native void setDisplayCC(Transform cc); + public native Transform getDisplayCC(); + public native void setLooksOverride(String looks); + public native String getLooksOverride(); + public native void setLooksOverrideEnabled(boolean enabled); + public native boolean getLooksOverrideEnabled(); +} diff --git a/src/jniglue/org/OpenColorIO/ExceptionBase.java b/src/jniglue/org/OpenColorIO/ExceptionBase.java new file mode 100644 index 0000000..ba8639f --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ExceptionBase.java @@ -0,0 +1,37 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ExceptionBase extends java.lang.Exception +{ + public ExceptionBase(String msg) { + super(msg); + } +} diff --git a/src/jniglue/org/OpenColorIO/ExceptionMissingFile.java b/src/jniglue/org/OpenColorIO/ExceptionMissingFile.java new file mode 100644 index 0000000..a0c79ef --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ExceptionMissingFile.java @@ -0,0 +1,37 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ExceptionMissingFile extends ExceptionBase +{ + public ExceptionMissingFile(String msg) { + super(msg); + } +} diff --git a/src/jniglue/org/OpenColorIO/ExponentTransform.java b/src/jniglue/org/OpenColorIO/ExponentTransform.java new file mode 100644 index 0000000..4f763a9 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ExponentTransform.java @@ -0,0 +1,39 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ExponentTransform extends Transform +{ + public ExponentTransform() { super(); } + protected ExponentTransform(long impl) { super(impl); } + public native ExponentTransform Create(); + public native void setValue(float[] vec4); + public native void getValue(float[] vec4); +} diff --git a/src/jniglue/org/OpenColorIO/FileTransform.java b/src/jniglue/org/OpenColorIO/FileTransform.java new file mode 100644 index 0000000..bfe55cc --- /dev/null +++ b/src/jniglue/org/OpenColorIO/FileTransform.java @@ -0,0 +1,46 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class FileTransform extends Transform +{ + public FileTransform() { super(); } + protected FileTransform(long impl) { super(impl); } + public native FileTransform Create(); + public native String getSrc(); + public native void setSrc(String src); + public native String getCCCId(); + public native void setCCCId(String id); + public native Interpolation getInterpolation(); + public native void setInterpolation(Interpolation interp); + public native int getNumFormats(); + public native String getFormatNameByIndex(int index); + public native String getFormatExtensionByIndex(int index); +} diff --git a/src/jniglue/org/OpenColorIO/Globals.java b/src/jniglue/org/OpenColorIO/Globals.java new file mode 100644 index 0000000..5273bd7 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Globals.java @@ -0,0 +1,78 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Globals extends LoadLibrary +{ + public native void ClearAllCaches(); + public native String GetVersion(); + public native int GetVersionHex(); + public native LoggingLevel GetLoggingLevel(); + public native void SetLoggingLevel(LoggingLevel level); + public native Config GetCurrentConfig(); + public native void SetCurrentConfig(Config config); + + // Types + public native String BoolToString(boolean val); + public native boolean BoolFromString(String s); + public native String LoggingLevelToString(LoggingLevel level); + public native LoggingLevel LoggingLevelFromString(String s); + public native String TransformDirectionToString(TransformDirection dir); + public native TransformDirection TransformDirectionFromString(String s); + public native TransformDirection GetInverseTransformDirection(TransformDirection dir); + public native TransformDirection CombineTransformDirections(TransformDirection d1, TransformDirection d2); + public native String ColorSpaceDirectionToString(ColorSpaceDirection dir); + public native ColorSpaceDirection ColorSpaceDirectionFromString(String s); + public native String BitDepthToString(BitDepth bitDepth); + public native BitDepth BitDepthFromString(String s); + public native boolean BitDepthIsFloat(BitDepth bitDepth); + public native int BitDepthToInt(BitDepth bitDepth); + public native String AllocationToString(Allocation allocation); + public native Allocation AllocationFromString(String s); + public native String InterpolationToString(Interpolation interp); + public native Interpolation InterpolationFromString(String s); + public native String GpuLanguageToString(GpuLanguage language); + public native GpuLanguage GpuLanguageFromString(String s); + + // Roles + public String ROLE_DEFAULT; + public String ROLE_REFERENCE; + public String ROLE_DATA; + public String ROLE_COLOR_PICKING; + public String ROLE_SCENE_LINEAR; + public String ROLE_COMPOSITING_LOG; + public String ROLE_COLOR_TIMING; + public String ROLE_TEXTURE_PAINT; + public String ROLE_MATTE_PAINT; + + // + public Globals() { super(); create(); } + private native void create(); +} diff --git a/src/jniglue/org/OpenColorIO/GpuLanguage.java b/src/jniglue/org/OpenColorIO/GpuLanguage.java new file mode 100644 index 0000000..3368a88 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/GpuLanguage.java @@ -0,0 +1,46 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class GpuLanguage extends LoadLibrary +{ + private final int m_enum; + protected GpuLanguage(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final GpuLanguage + GPU_LANGUAGE_UNKNOWN = new GpuLanguage(0); + public static final GpuLanguage + GPU_LANGUAGE_CG = new GpuLanguage(1); + public static final GpuLanguage + GPU_LANGUAGE_GLSL_1_0 = new GpuLanguage(2); + public static final GpuLanguage + GPU_LANGUAGE_GLSL_1_3 = new GpuLanguage(3); +} diff --git a/src/jniglue/org/OpenColorIO/GpuShaderDesc.java b/src/jniglue/org/OpenColorIO/GpuShaderDesc.java new file mode 100644 index 0000000..bdaf855 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/GpuShaderDesc.java @@ -0,0 +1,46 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class GpuShaderDesc extends LoadLibrary +{ + public GpuShaderDesc() { super(); create(); } + protected GpuShaderDesc(long impl) { super(impl); } + private native void create(); + public native void dispose(); + protected void finalize() { dispose(); } + public native void setLanguage(GpuLanguage lang); + public native GpuLanguage getLanguage(); + public native void setFunctionName(String name); + public native String getFunctionName(); + public native void setLut3DEdgeLen(int len); + public native int getLut3DEdgeLen(); + public native String getCacheID(); +}; diff --git a/src/jniglue/org/OpenColorIO/GroupTransform.java b/src/jniglue/org/OpenColorIO/GroupTransform.java new file mode 100644 index 0000000..b0a24e6 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/GroupTransform.java @@ -0,0 +1,42 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class GroupTransform extends Transform +{ + public GroupTransform() { super(); } + protected GroupTransform(long impl) { super(impl); } + public native GroupTransform Create(); + public native Transform getTransform(int index); + public native int size(); + public native void push_back(Transform transform); + public native void clear(); + public native boolean empty(); +} diff --git a/src/jniglue/org/OpenColorIO/ImageDesc.java b/src/jniglue/org/OpenColorIO/ImageDesc.java new file mode 100644 index 0000000..f442ca1 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/ImageDesc.java @@ -0,0 +1,36 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class ImageDesc extends LoadLibrary +{ + public ImageDesc() { super(); } + protected ImageDesc(long impl) { super(impl); } +}; diff --git a/src/jniglue/org/OpenColorIO/Interpolation.java b/src/jniglue/org/OpenColorIO/Interpolation.java new file mode 100644 index 0000000..f807d99 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Interpolation.java @@ -0,0 +1,48 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Interpolation extends LoadLibrary +{ + private final int m_enum; + protected Interpolation(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final Interpolation + INTERP_UNKNOWN = new Interpolation(0); + public static final Interpolation + INTERP_NEAREST = new Interpolation(1); + public static final Interpolation + INTERP_LINEAR = new Interpolation(2); + public static final Interpolation + INTERP_TETRAHEDRAL = new Interpolation(3); + public static final Interpolation + INTERP_BEST = new Interpolation(255); +} diff --git a/src/jniglue/org/OpenColorIO/LogTransform.java b/src/jniglue/org/OpenColorIO/LogTransform.java new file mode 100644 index 0000000..0f5b435 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/LogTransform.java @@ -0,0 +1,39 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class LogTransform extends Transform +{ + public LogTransform() { super(); } + protected LogTransform(long impl) { super(impl); } + public native LogTransform Create(); + public native void setBase(float val); + public native float getBase(); +} diff --git a/src/jniglue/org/OpenColorIO/LoggingLevel.java b/src/jniglue/org/OpenColorIO/LoggingLevel.java new file mode 100644 index 0000000..a8106e4 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/LoggingLevel.java @@ -0,0 +1,48 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class LoggingLevel extends LoadLibrary +{ + private final int m_enum; + protected LoggingLevel(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final LoggingLevel + LOGGING_LEVEL_NONE = new LoggingLevel(0); + public static final LoggingLevel + LOGGING_LEVEL_WARNING = new LoggingLevel(1); + public static final LoggingLevel + LOGGING_LEVEL_INFO = new LoggingLevel(2); + public static final LoggingLevel + LOGGING_LEVEL_DEBUG = new LoggingLevel(3); + public static final LoggingLevel + LOGGING_LEVEL_UNKNOWN = new LoggingLevel(255); +} diff --git a/src/jniglue/org/OpenColorIO/Look.java b/src/jniglue/org/OpenColorIO/Look.java new file mode 100644 index 0000000..c2fb0ef --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Look.java @@ -0,0 +1,48 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Look extends LoadLibrary +{ + public Look() { super(); } + protected Look(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Look Create(); + public native String getName(); + public native void setName(String name); + public native String getProcessSpace(); + public native void setProcessSpace(String processSpace); + public native Transform getTransform(); + public native void setTransform(Transform transform); + public native Transform getInverseTransform(); + public native void setInverseTransform(Transform transform); +}; + diff --git a/src/jniglue/org/OpenColorIO/LookTransform.java b/src/jniglue/org/OpenColorIO/LookTransform.java new file mode 100644 index 0000000..a6ca6b3 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/LookTransform.java @@ -0,0 +1,43 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class LookTransform extends Transform +{ + public LookTransform() { super(); } + protected LookTransform(long impl) { super(impl); } + public native LookTransform Create(); + public native String getSrc(); + public native void setSrc(String src); + public native String getDst(); + public native void setDst(String dst); + public native void setLooks(String looks); + public native String getLooks(); +} diff --git a/src/jniglue/org/OpenColorIO/MatrixTransform.java b/src/jniglue/org/OpenColorIO/MatrixTransform.java new file mode 100644 index 0000000..d4560f1 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/MatrixTransform.java @@ -0,0 +1,54 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class MatrixTransform extends Transform +{ + public MatrixTransform() { super(); } + protected MatrixTransform(long impl) { super(impl); } + public native MatrixTransform Create(); + public native boolean equals(MatrixTransform obj); + public native void setValue(float[] m44, float[] offset4); + public native void getValue(float[] m44, float[] offset4); + public native void setMatrix(float[] m44); + public native void getMatrix(float[] m44); + public native void setOffset(float[] offset4); + public native void getOffset(float[] offset4); + public native void Fit(float[] m44, float[] offset4, + float[] oldmin4, float[] oldmax4, + float[] newmin4, float[] newmax4); + public native void Identity(float[] m44, float[] offset4); + public native void Sat(float[] m44, float[] offset4, + float sat, float[] lumaCoef3); + public native void Scale(float[] m44, float[] offset4, + float[] scale4); + public native void View(float[] m44, float[] offset4, + int[] channelHot4, float[] lumaCoef3); +} diff --git a/src/jniglue/org/OpenColorIO/PackedImageDesc.java b/src/jniglue/org/OpenColorIO/PackedImageDesc.java new file mode 100644 index 0000000..8cc6932 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/PackedImageDesc.java @@ -0,0 +1,59 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; +import java.nio.FloatBuffer; + +public class PackedImageDesc extends ImageDesc +{ + public PackedImageDesc(FloatBuffer data, long width, long height, long numChannels) + { + super(); + create(data, width, height, numChannels); + } + public PackedImageDesc(FloatBuffer data, long width, long height, long numChannels, + long chanStrideBytes, long xStrideBytes, long yStrideBytes) + { + super(); + create(data, width, height, numChannels, chanStrideBytes, xStrideBytes, yStrideBytes); + } + protected PackedImageDesc(long impl) { super(impl); } + protected native void create(FloatBuffer data, long width, long height, long numChannels); + protected native void create(FloatBuffer data, long width, long height, long numChannels, + long chanStrideBytes, long xStrideBytes, long yStrideBytes); + public native void dispose(); + protected void finalize() { dispose(); } + public native FloatBuffer getData(); + public native long getWidth(); + public native long getHeight(); + public native long getNumChannels(); + public native long getChanStrideBytes(); + public native long getXStrideBytes(); + public native long getYStrideBytes(); +}; diff --git a/src/jniglue/org/OpenColorIO/PlanarImageDesc.java b/src/jniglue/org/OpenColorIO/PlanarImageDesc.java new file mode 100644 index 0000000..86fc5de --- /dev/null +++ b/src/jniglue/org/OpenColorIO/PlanarImageDesc.java @@ -0,0 +1,63 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; +import java.nio.FloatBuffer; + +public class PlanarImageDesc extends ImageDesc +{ + public PlanarImageDesc(FloatBuffer rData, FloatBuffer gData, FloatBuffer bData, + FloatBuffer aData, long width, long height) + { + super(); + create(rData, gData, bData, aData, width, height); + } + public PlanarImageDesc(FloatBuffer rData, FloatBuffer gData, FloatBuffer bData, + FloatBuffer aData, long width, long height, + long yStrideBytes) + { + super(); + create(rData, gData, bData, aData, width, height, yStrideBytes); + } + protected PlanarImageDesc(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + protected native void create(FloatBuffer rData, FloatBuffer gData, FloatBuffer bData, + FloatBuffer aData, long width, long height); + protected native void create(FloatBuffer rData, FloatBuffer gData, FloatBuffer bData, + FloatBuffer aData, long width, long height, + long yStrideBytes); + public native FloatBuffer getRData(); + public native FloatBuffer getGData(); + public native FloatBuffer getBData(); + public native FloatBuffer getAData(); + public native long getWidth(); + public native long getHeight(); + public native long getYStrideBytes(); +}; diff --git a/src/jniglue/org/OpenColorIO/Processor.java b/src/jniglue/org/OpenColorIO/Processor.java new file mode 100644 index 0000000..a999992 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Processor.java @@ -0,0 +1,51 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; +import java.nio.FloatBuffer; + +public class Processor extends LoadLibrary +{ + public Processor() { super(); } + protected Processor(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Processor Create(); + public native boolean isNoOp(); + public native boolean hasChannelCrosstalk(); + public native void apply(ImageDesc img); + public native void applyRGB(float[] pixel); + public native void applyRGBA(float[] pixel); + public native String getCpuCacheID(); + public native String getGpuShaderText(GpuShaderDesc shaderDesc); + public native String getGpuShaderTextCacheID(GpuShaderDesc shaderDesc); + public native void getGpuLut3D(FloatBuffer lut3d, GpuShaderDesc shaderDesc); + public native String getGpuLut3DCacheID(GpuShaderDesc shaderDesc); +}; + diff --git a/src/jniglue/org/OpenColorIO/Transform.java b/src/jniglue/org/OpenColorIO/Transform.java new file mode 100644 index 0000000..52c6fb5 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/Transform.java @@ -0,0 +1,41 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class Transform extends LoadLibrary +{ + public Transform() { super(); } + protected Transform(long impl) { super(impl); } + public native void dispose(); + protected void finalize() { dispose(); } + public native Transform createEditableCopy(); + public native TransformDirection getDirection(); + public native void setDirection(TransformDirection dir); +} diff --git a/src/jniglue/org/OpenColorIO/TransformDirection.java b/src/jniglue/org/OpenColorIO/TransformDirection.java new file mode 100644 index 0000000..b034b5a --- /dev/null +++ b/src/jniglue/org/OpenColorIO/TransformDirection.java @@ -0,0 +1,44 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class TransformDirection extends LoadLibrary +{ + private final int m_enum; + protected TransformDirection(int type) { super(); m_enum = type; } + public native String toString(); + public native boolean equals(Object obj); + public static final TransformDirection + TRANSFORM_DIR_UNKNOWN = new TransformDirection(0); + public static final TransformDirection + TRANSFORM_DIR_FORWARD = new TransformDirection(1); + public static final TransformDirection + TRANSFORM_DIR_INVERSE = new TransformDirection(2); +} diff --git a/src/jniglue/org/OpenColorIO/TruelightTransform.java b/src/jniglue/org/OpenColorIO/TruelightTransform.java new file mode 100644 index 0000000..1d966e9 --- /dev/null +++ b/src/jniglue/org/OpenColorIO/TruelightTransform.java @@ -0,0 +1,58 @@ +/* +Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.OpenColorIO; +import org.OpenColorIO.*; + +public class TruelightTransform extends Transform +{ + public TruelightTransform() { super(); } + protected TruelightTransform(long impl) { super(impl); } + public native TruelightTransform Create(); + public native void setConfigRoot(String configroot); + public native String getConfigRoot(); + public native void setProfile(String profile); + public native String getProfile(); + public native void setCamera(String camera); + public native String getCamera(); + public native void setInputDisplay(String display); + public native String getInputDisplay(); + public native void setRecorder(String recorder); + public native String getRecorder(); + public native void setPrint(String print); + public native String getPrint(); + public native void setLamp(String lamp); + public native String getLamp(); + public native void setOutputCamera(String camera); + public native String getOutputCamera(); + public native void setDisplay(String display); + public native String getDisplay(); + public native void setCubeInput(String type); + public native String getCubeInput(); +} + diff --git a/src/jniglue/tests/CMakeLists.txt b/src/jniglue/tests/CMakeLists.txt new file mode 100644 index 0000000..e201749 --- /dev/null +++ b/src/jniglue/tests/CMakeLists.txt @@ -0,0 +1,17 @@ +############################################################################### +### JNI JUNIT TESTS ### + + +file(GLOB _TESTS_FILES "org/OpenColorIO/*.java") +set(_JCLASS_PATH "${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/..:${CMAKE_SOURCE_DIR}/ext/junit-4.9b4.jar") +set(_JLIB_PATH "${CMAKE_CURRENT_BINARY_DIR}/..") + +add_custom_target(JNITests + COMMAND javac -cp ${_JCLASS_PATH} + -d ${CMAKE_CURRENT_BINARY_DIR} ${_TESTS_FILES} + COMMAND java -cp ${_JCLASS_PATH} + -Djava.library.path=${_JLIB_PATH} junit.textui.TestRunner + OpenColorIOTestSuite + DEPENDS OpenColorIO-JNI + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Setting Up and Running JNI OCIO JUNIT tests") diff --git a/src/jniglue/tests/org/OpenColorIO/BakerTest.java b/src/jniglue/tests/org/OpenColorIO/BakerTest.java new file mode 100644 index 0000000..63f540a --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/BakerTest.java @@ -0,0 +1,84 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class BakerTest extends TestCase { + + String SIMPLE_PROFILE = "" + + "ocio_profile_version: 1\n" + + "\n" + + "strictparsing: false\n" + + "\n" + + "colorspaces:\n" + + "\n" + + " - !<ColorSpace>\n" + + " name: lnh\n" + + " bitdepth: 16f\n" + + " isdata: false\n" + + " allocation: lg2\n" + + "\n" + + " - !<ColorSpace>\n" + + " name: test\n" + + " bitdepth: 8ui\n" + + " isdata: false\n" + + " allocation: uniform\n" + + " to_reference: !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1]}\n"; + + String EXPECTED_LUT = "" + + "CSPLUTV100\n" + + "3D\n" + + "BEGIN METADATA\n" + + "this is some metadata!\n" + + "END METADATA\n" + + "\n" + + "4\n" + + "0.000977 0.039373 1.587401 64.000000\n" + + "0.000000 0.333333 0.666667 1.000000\n" + + "4\n" + + "0.000977 0.039373 1.587401 64.000000\n" + + "0.000000 0.333333 0.666667 1.000000\n" + + "4\n" + + "0.000977 0.039373 1.587401 64.000000\n" + + "0.000000 0.333333 0.666667 1.000000\n" + + "\n" + + "2 2 2\n" + + "0.042823 0.042823 0.042823\n" + + "6.622026 0.042823 0.042823\n" + + "0.042823 6.622026 0.042823\n" + + "6.622026 6.622026 0.042823\n" + + "0.042823 0.042823 6.622026\n" + + "6.622026 0.042823 6.622026\n" + + "0.042823 6.622026 6.622026\n" + + "6.622026 6.622026 6.622026\n" + + "\n"; + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + Baker bake = new Baker().Create(); + Baker bakee = bake.createEditableCopy(); + Config cfg = new Config().CreateFromStream(SIMPLE_PROFILE); + bakee.setConfig(cfg); + bakee.setFormat("cinespace"); + assertEquals("cinespace", bakee.getFormat()); + bakee.setType("3D"); + assertEquals("3D", bakee.getType()); + bakee.setMetadata("this is some metadata!"); + assertEquals("this is some metadata!", bakee.getMetadata()); + bakee.setInputSpace("lnh"); + assertEquals("lnh", bakee.getInputSpace()); + bakee.setTargetSpace("test"); + assertEquals("test", bakee.getTargetSpace()); + bakee.setShaperSize(4); + assertEquals(4, bakee.getShaperSize()); + bakee.setCubeSize(2); + assertEquals(2, bakee.getCubeSize()); + String output = bakee.bake(); + assertEquals(EXPECTED_LUT, output); + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/ColorSpaceTest.java b/src/jniglue/tests/org/OpenColorIO/ColorSpaceTest.java new file mode 100644 index 0000000..f49e582 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/ColorSpaceTest.java @@ -0,0 +1,41 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class ColorSpaceTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + ColorSpace cs = new ColorSpace().Create(); + cs.setName("mynewcolspace"); + assertEquals("mynewcolspace", cs.getName()); + cs.setFamily("fam1"); + assertEquals("fam1", cs.getFamily()); + cs.setEqualityGroup("match1"); + assertEquals("match1", cs.getEqualityGroup()); + cs.setDescription("this is a test"); + assertEquals("this is a test", cs.getDescription()); + cs.setBitDepth(BitDepth.BIT_DEPTH_F16); + assertEquals(BitDepth.BIT_DEPTH_F16, cs.getBitDepth()); + cs.setIsData(false); + assertEquals(false, cs.isData()); + cs.setAllocation(Allocation.ALLOCATION_LG2); + assertEquals(Allocation.ALLOCATION_LG2, cs.getAllocation()); + float test[] = new float[]{0.1f, 0.2f, 0.3f}; + cs.setAllocationVars(3, test); + assertEquals(3, cs.getAllocationNumVars()); + float out[] = new float[3]; + cs.getAllocationVars(out); + LogTransform lt = new LogTransform().Create(); + lt.setBase(10.f); + cs.setTransform(lt, ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE); + LogTransform ott = (LogTransform)cs.getTransform(ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE); + assertEquals(10.f, ott.getBase()); + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/ConfigTest.java b/src/jniglue/tests/org/OpenColorIO/ConfigTest.java new file mode 100644 index 0000000..a676bae --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/ConfigTest.java @@ -0,0 +1,220 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; +import java.nio.*; + +public class ConfigTest extends TestCase { + + String SIMPLE_PROFILE = "" + + "ocio_profile_version: 1\n" + + "\n" + + "search_path: luts\n" + + "strictparsing: false\n" + + "luma: [0.2126, 0.7152, 0.0722]\n" + + "\n" + + "roles:\n" + + " default: raw\n" + + " scene_linear: lnh\n" + + "\n" + + "displays:\n" + + " sRGB:\n" + + " - !<View> {name: Film1D, colorspace: vd8}\n" + + " - !<View> {name: Raw, colorspace: raw}\n" + + "\n" + + "active_displays: []\n" + + "active_views: []\n" + + "\n" + + "colorspaces:\n" + + " - !<ColorSpace>\n" + + " name: raw\n" + + " family: raw\n" + + " bitdepth: 32f\n" + + " description: |\n" + + " A raw color space. Conversions to and from this space are no-ops.\n" + + " \n" + + " isdata: true\n" + + " allocation: uniform\n" + + "\n" + + " - !<ColorSpace>\n" + + " name: lnh\n" + + " family: ln\n" + + " bitdepth: 16f\n" + + " description: |\n" + + " The show reference space. This is a sensor referred linear\n" + + " representation of the scene with primaries that correspond to\n" + + " scanned film. 0.18 in this space corresponds to a properly\n" + + " exposed 18% grey card.\n" + + " \n" + + " isdata: false\n" + + " allocation: lg2\n" + + "\n" + + " - !<ColorSpace>\n" + + " name: vd8\n" + + " family: vd8\n" + + " bitdepth: 8ui\n" + + " description: |\n" + + " how many transforms can we use?\n" + + " \n" + + " isdata: false\n" + + " allocation: uniform\n" + + " to_reference: !<GroupTransform>\n" + + " children:\n" + + " - !<ExponentTransform> {value: [2.2, 2.2, 2.2, 1]}\n" + + " - !<MatrixTransform> {matrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], offset: [0, 0, 0, 0]}\n" + + " - !<CDLTransform> {slope: [1, 1, 1], offset: [0.1, 0.3, 0.4], power: [1.1, 1.1, 1.1], saturation: 0.9}\n"; + + String GLSLResult = "" + + "\n" + + "// Generated by OpenColorIO\n" + + "\n" + + "vec4 jnitestocio(in vec4 inPixel, \n" + + " const sampler3D lut3d) \n" + + "{\n" + + "vec4 out_pixel = inPixel; \n" + + "out_pixel = out_pixel * mat4(1.08749, -0.0794667, -0.00802222, 0, -0.0236222, 1.03164, -0.00802222, 0, -0.0236222, -0.0794667, 1.10309, 0, 0, 0, 0, 1);\n" + + "out_pixel = pow(max(out_pixel, vec4(0, 0, 0, 0)), vec4(0.909091, 0.909091, 0.909091, 1));\n" + + "out_pixel = vec4(-0.1, -0.3, -0.4, -0) + out_pixel;\n" + + "out_pixel = pow(max(out_pixel, vec4(0, 0, 0, 0)), vec4(0.454545, 0.454545, 0.454545, 1));\n" + + "// OSX segfault work-around: Force a no-op sampling of the 3d lut.\n" + + "texture3D(lut3d, -inf * out_pixel.rgb + inf).rgb;\n" + + "return out_pixel;\n" + + "}\n" + + "\n"; + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + + Config _cfg = new Config().CreateFromStream(SIMPLE_PROFILE); + Config _cfge = _cfg.createEditableCopy(); + assertEquals("luts", _cfge.getSearchPath()); + _cfge.setSearchPath("otherdir"); + assertEquals("otherdir", _cfge.getSearchPath()); + _cfge.sanityCheck(); + _cfge.setDescription("testdesc"); + assertEquals("testdesc", _cfge.getDescription()); + //assertEquals(SIMPLE_PROFILE, _cfg.serialize()); + //assertEquals("$07d1fb1509eeae1837825fd4242f8a69:$885ad1683add38a11f7bbe34e8bf9ac0", + // _cfg.getCacheID()); + Context con = _cfg.getCurrentContext(); + assertNotSame(0, con.getNumStringVars()); + //assertEquals("", _cfg.getCacheID(con)); // test env makes this fail + //assertEquals("", _cfge.getWorkingDir()); + _cfge.setWorkingDir("/foobar"); + assertEquals("/foobar", _cfge.getWorkingDir()); + assertEquals(3, _cfge.getNumColorSpaces()); + assertEquals("lnh", _cfge.getColorSpaceNameByIndex(1)); + //public native ColorSpace getColorSpace(String name); + assertEquals(0, _cfge.getIndexForColorSpace("foobar")); + //public native void addColorSpace(ColorSpace cs); + //public native void clearColorSpaces(); + //public native String parseColorSpaceFromString(String str); + if(_cfg.isStrictParsingEnabled()) fail("strict parsing should be off"); + _cfge.setStrictParsingEnabled(true); + if(!_cfge.isStrictParsingEnabled()) fail("strict parsing should be on"); + assertEquals(2, _cfge.getNumRoles()); + if(_cfg.hasRole("foo")) fail("shouldn't have role foo"); + _cfge.setRole("foo", "dfadfadf"); + assertEquals(3, _cfge.getNumRoles()); + if(!_cfge.hasRole("foo")) fail("should have role foo"); + assertEquals("foo", _cfge.getRoleName(1)); + assertEquals("sRGB", _cfge.getDefaultDisplay()); + assertEquals(1, _cfge.getNumDisplays()); + assertEquals("sRGB", _cfge.getDisplay(0)); + assertEquals("Film1D", _cfge.getDefaultView("sRGB")); + assertEquals(2, _cfge.getNumViews("sRGB")); + assertEquals("Raw", _cfge.getView("sRGB", 1)); + assertEquals("vd8", _cfge.getDisplayColorSpaceName("sRGB", "Film1D")); + assertEquals("", _cfg.getDisplayLooks("sRGB", "Film1D")); + + // TODO: seems that 4 string params causes a memory error in the JNI layer? + //_cfge.addDisplay("foo", "bar", "foo", 0); + + _cfge.clearDisplays(); + _cfge.setActiveDisplays("sRGB"); + assertEquals("sRGB", _cfge.getActiveDisplays()); + _cfge.setActiveViews("Film1D"); + assertEquals("Film1D", _cfge.getActiveViews()); + float luma[] = new float[3]; + _cfge.getDefaultLumaCoefs(luma); + assertEquals(0.2126, luma[0], 1e-8); + float[] newluma = new float[]{0.1f, 0.2f, 0.3f}; + _cfge.setDefaultLumaCoefs(newluma); + float tnewluma[] = new float[3]; + _cfge.getDefaultLumaCoefs(tnewluma); + assertEquals(0.1f, tnewluma[0], 1e-8); + assertEquals(0, _cfge.getNumLooks()); + Look lk = new Look().Create(); + lk.setName("coollook"); + lk.setProcessSpace("somespace"); + ExponentTransform et = new ExponentTransform().Create(); + et.setValue(new float[]{0.1f, 0.2f, 0.3f, 0.4f}); + lk.setTransform(et); + ExponentTransform iet = new ExponentTransform().Create(); + iet.setValue(new float[]{-0.1f, -0.2f, -0.3f, -0.4f}); + lk.setInverseTransform(iet); + _cfge.addLook(lk); + assertEquals(1, _cfge.getNumLooks()); + assertEquals("coollook", _cfge.getLookNameByIndex(0)); + Look glk = _cfge.getLook("coollook"); + assertEquals("somespace", glk.getProcessSpace()); + _cfge.clearLooks(); + assertEquals(0, _cfge.getNumLooks()); + + //public native Processor getProcessor(Context context, ColorSpace srcColorSpace, ColorSpace dstColorSpace); + + Processor _proc = _cfg.getProcessor("lnh", "vd8"); + assertEquals(false, _proc.isNoOp()); + assertEquals(true, _proc.hasChannelCrosstalk()); + float packedpix[] = new float[]{0.48f, 0.18f, 0.9f, 1.0f, + 0.48f, 0.18f, 0.18f, 1.0f, + 0.48f, 0.18f, 0.18f, 1.0f, + 0.48f, 0.18f, 0.18f, 1.0f }; + FloatBuffer buf = ByteBuffer.allocateDirect(2 * 2 * 4 * Float.SIZE / 8).asFloatBuffer(); + buf.put(packedpix); + PackedImageDesc foo = new PackedImageDesc(buf, 2, 2, 4); + _proc.apply(foo); + FloatBuffer wee = foo.getData(); + assertEquals(-2.4307251581696764E-35f, wee.get(2), 1e-8); + float rgbfoo[] = new float[]{0.48f, 0.18f, 0.18f}; + _proc.applyRGB(rgbfoo); + assertEquals(0.6875247f, rgbfoo[0], 1e-8); + float rgbafoo[] = new float[]{0.48f, 0.18f, 0.18f, 1.f}; + _proc.applyRGBA(rgbafoo); + assertEquals(1.f, rgbafoo[3], 1e-8); + //assertEquals("$a92ef63abd9edf61ad5a7855da064648", _proc.getCpuCacheID()); + GpuShaderDesc desc = new GpuShaderDesc(); + desc.setLanguage(GpuLanguage.GPU_LANGUAGE_GLSL_1_3); + desc.setFunctionName("jnitestocio"); + desc.setLut3DEdgeLen(32); + String glsl = _proc.getGpuShaderText(desc); + //assertEquals(GLSLResult, glsl); + //assertEquals("$1dead2bf42974cd1769164e45a0c9e40", _proc.getGpuShaderTextCacheID(desc)); + int len = desc.getLut3DEdgeLen(); + int size = 3 * len * len * len; + FloatBuffer lut3d = ByteBuffer.allocateDirect(size * Float.SIZE / 8).asFloatBuffer(); + _proc.getGpuLut3D(lut3d, desc); + assertEquals(0.0f, lut3d.get(size-1)); + assertEquals("<NULL>", _proc.getGpuLut3DCacheID(desc)); + + //public native Processor getProcessor(Context context, String srcName, String dstName); + //public native Processor getProcessor(Transform transform); + //public native Processor getProcessor(Transform transform, TransformDirection direction); + //public native Processor getProcessor(Context context, Transform transform, TransformDirection direction); + + _cfge.dispose(); + _cfg.dispose(); + + //System.out.println(_cfge.serialize()); + //_cfge.sanityCheck(); + //System.out.println(_cfge.getNumColorSpaces()); + //System.out.println(_cfg.getCacheID()); + //System.out.println(_cfge.serialize()); + + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/ContextTest.java b/src/jniglue/tests/org/OpenColorIO/ContextTest.java new file mode 100644 index 0000000..87579e3 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/ContextTest.java @@ -0,0 +1,38 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class ContextTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + Context cont = new Context().Create(); + cont.setSearchPath("testing123"); + cont.setWorkingDir("/dir/123"); + assertEquals("$af84c0ff921e48843d711a761e05b80f", cont.getCacheID()); + assertEquals("testing123", cont.getSearchPath()); + assertEquals("/dir/123", cont.getWorkingDir()); + cont.setStringVar("TeSt", "foobar"); + assertEquals("foobar", cont.getStringVar("TeSt")); + assertEquals(1, cont.getNumStringVars()); + assertEquals("TeSt", cont.getStringVarNameByIndex(0)); + cont.loadEnvironment(); + assertNotSame(0, cont.getNumStringVars()); + cont.setStringVar("TEST1", "foobar"); + assertEquals("/foo/foobar/bar", + cont.resolveStringVar("/foo/${TEST1}/bar")); + try { + cont.setSearchPath("testing123"); + String foo = cont.resolveFileLocation("test.lut"); + System.out.println(foo); + } catch (ExceptionMissingFile e) { + //System.out.println(e); + } + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/GlobalsTest.java b/src/jniglue/tests/org/OpenColorIO/GlobalsTest.java new file mode 100644 index 0000000..72f92f8 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/GlobalsTest.java @@ -0,0 +1,150 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class GlobalsTest extends TestCase { + + String FOO = "" + + "ocio_profile_version: 1\n" + + "\n" + + "search_path: \n" + + "strictparsing: false\n" + + "luma: [0.2126, 0.7152, 0.0722]\n" + + "\n" + + "roles:\n" + + " default: raw\n" + + "\n" + + "displays:\n" + + " sRGB:\n" + + " - !<View> {name: Raw, colorspace: raw}\n" + + "\n" + + "active_displays: []\n" + + "active_views: []\n" + + "\n" + + "colorspaces:\n" + + " - !<ColorSpace>\n" + + " name: raw\n" + + " family: raw\n" + + " equalitygroup: \n" + + " bitdepth: 32f\n" + + " description: |\n" + + " A raw color space. Conversions to and from this space are no-ops.\n" + + " isdata: true\n" + + " allocation: uniform\n"; + + protected void setUp() { + } + + public void test_interface() { + + Globals globals = new Globals(); + + // Globals + globals.ClearAllCaches(); + //assertEquals("1.0.1", globals.GetVersion()); + //assertEquals(16777472, globals.GetVersionHex()); + assertEquals(LoggingLevel.LOGGING_LEVEL_INFO, globals.GetLoggingLevel()); + globals.SetLoggingLevel(LoggingLevel.LOGGING_LEVEL_NONE); + assertEquals(LoggingLevel.LOGGING_LEVEL_NONE, globals.GetLoggingLevel()); + Config foo = globals.GetCurrentConfig(); + assertEquals(FOO, foo.serialize()); + globals.SetLoggingLevel(LoggingLevel.LOGGING_LEVEL_INFO); + Config bar = new Config().CreateFromStream(foo.serialize()); + globals.SetCurrentConfig(bar); + Config wee = globals.GetCurrentConfig(); + + // LoggingLevel + assertEquals(globals.LoggingLevelToString(LoggingLevel.LOGGING_LEVEL_NONE), "none"); + assertEquals(globals.LoggingLevelFromString("none"), LoggingLevel.LOGGING_LEVEL_NONE); + assertEquals(globals.LoggingLevelToString(LoggingLevel.LOGGING_LEVEL_WARNING), "warning"); + assertEquals(globals.LoggingLevelFromString("warning"), LoggingLevel.LOGGING_LEVEL_WARNING); + assertEquals(globals.LoggingLevelToString(LoggingLevel.LOGGING_LEVEL_INFO), "info"); + assertEquals(globals.LoggingLevelFromString("info"), LoggingLevel.LOGGING_LEVEL_INFO); + assertEquals(globals.LoggingLevelToString(LoggingLevel.LOGGING_LEVEL_DEBUG), "debug"); + assertEquals(globals.LoggingLevelFromString("debug"), LoggingLevel.LOGGING_LEVEL_DEBUG); + assertEquals(globals.LoggingLevelToString(LoggingLevel.LOGGING_LEVEL_UNKNOWN), "unknown"); + assertEquals(globals.LoggingLevelFromString("unknown"), LoggingLevel.LOGGING_LEVEL_UNKNOWN); + + // TransformDirection + assertEquals(globals.TransformDirectionToString(TransformDirection.TRANSFORM_DIR_UNKNOWN), "unknown"); + assertEquals(globals.TransformDirectionFromString("unknown"), TransformDirection.TRANSFORM_DIR_UNKNOWN); + assertEquals(globals.TransformDirectionToString(TransformDirection.TRANSFORM_DIR_FORWARD), "forward"); + assertEquals(globals.TransformDirectionFromString("forward"), TransformDirection.TRANSFORM_DIR_FORWARD); + assertEquals(globals.TransformDirectionToString(TransformDirection.TRANSFORM_DIR_INVERSE), "inverse"); + assertEquals(globals.TransformDirectionFromString("inverse"), TransformDirection.TRANSFORM_DIR_INVERSE); + assertEquals(globals.GetInverseTransformDirection(TransformDirection.TRANSFORM_DIR_UNKNOWN), TransformDirection.TRANSFORM_DIR_UNKNOWN); + assertEquals(globals.GetInverseTransformDirection(TransformDirection.TRANSFORM_DIR_FORWARD), TransformDirection.TRANSFORM_DIR_INVERSE); + assertEquals(globals.GetInverseTransformDirection(TransformDirection.TRANSFORM_DIR_INVERSE), TransformDirection.TRANSFORM_DIR_FORWARD); + + // ColorSpaceDirection + assertEquals(globals.ColorSpaceDirectionToString(ColorSpaceDirection.COLORSPACE_DIR_UNKNOWN), "unknown"); + assertEquals(globals.ColorSpaceDirectionFromString("unknown"), ColorSpaceDirection.COLORSPACE_DIR_UNKNOWN); + assertEquals(globals.ColorSpaceDirectionToString(ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE), "to_reference"); + assertEquals(globals.ColorSpaceDirectionFromString("to_reference"), ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE); + assertEquals(globals.ColorSpaceDirectionToString(ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE), "from_reference"); + assertEquals(globals.ColorSpaceDirectionFromString("from_reference"), ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE); + + // BitDepth + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UNKNOWN), "unknown"); + assertEquals(globals.BitDepthFromString("unknown"), BitDepth.BIT_DEPTH_UNKNOWN); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT8), "8ui"); + assertEquals(globals.BitDepthFromString("8ui"), BitDepth.BIT_DEPTH_UINT8); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT10), "10ui"); + assertEquals(globals.BitDepthFromString("10ui"), BitDepth.BIT_DEPTH_UINT10); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT12), "12ui"); + assertEquals(globals.BitDepthFromString("12ui"), BitDepth.BIT_DEPTH_UINT12); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT14), "14ui"); + assertEquals(globals.BitDepthFromString("14ui"), BitDepth.BIT_DEPTH_UINT14); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT16), "16ui"); + assertEquals(globals.BitDepthFromString("16ui"), BitDepth.BIT_DEPTH_UINT16); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_UINT32), "32ui"); + assertEquals(globals.BitDepthFromString("32ui"), BitDepth.BIT_DEPTH_UINT32); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_F16), "16f"); + assertEquals(globals.BitDepthFromString("16f"), BitDepth.BIT_DEPTH_F16); + assertEquals(globals.BitDepthToString(BitDepth.BIT_DEPTH_F32), "32f"); + assertEquals(globals.BitDepthFromString("32f"), BitDepth.BIT_DEPTH_F32); + + // Allocation + assertEquals(globals.AllocationToString(Allocation.ALLOCATION_UNKNOWN), "unknown"); + assertEquals(globals.AllocationFromString("unknown"), Allocation.ALLOCATION_UNKNOWN); + assertEquals(globals.AllocationToString(Allocation.ALLOCATION_UNIFORM), "uniform"); + assertEquals(globals.AllocationFromString("uniform"), Allocation.ALLOCATION_UNIFORM); + assertEquals(globals.AllocationToString(Allocation.ALLOCATION_LG2), "lg2"); + assertEquals(globals.AllocationFromString("lg2"), Allocation.ALLOCATION_LG2); + + // Interpolation + assertEquals(globals.InterpolationToString(Interpolation.INTERP_UNKNOWN), "unknown"); + assertEquals(globals.InterpolationFromString("unknown"), Interpolation.INTERP_UNKNOWN); + assertEquals(globals.InterpolationToString(Interpolation.INTERP_NEAREST), "nearest"); + assertEquals(globals.InterpolationFromString("nearest"), Interpolation.INTERP_NEAREST); + assertEquals(globals.InterpolationToString(Interpolation.INTERP_LINEAR), "linear"); + assertEquals(globals.InterpolationFromString("linear"), Interpolation.INTERP_LINEAR); + assertEquals(globals.InterpolationToString(Interpolation.INTERP_TETRAHEDRAL), "tetrahedral"); + assertEquals(globals.InterpolationFromString("tetrahedral"), Interpolation.INTERP_TETRAHEDRAL); + assertEquals(globals.InterpolationToString(Interpolation.INTERP_BEST), "best"); + assertEquals(globals.InterpolationFromString("best"), Interpolation.INTERP_BEST); + + // GpuLanguage + assertEquals(globals.GpuLanguageToString(GpuLanguage.GPU_LANGUAGE_UNKNOWN), "unknown"); + assertEquals(globals.GpuLanguageFromString("unknown"), GpuLanguage.GPU_LANGUAGE_UNKNOWN); + assertEquals(globals.GpuLanguageToString(GpuLanguage.GPU_LANGUAGE_CG), "cg"); + assertEquals(globals.GpuLanguageFromString("cg"), GpuLanguage.GPU_LANGUAGE_CG); + assertEquals(globals.GpuLanguageToString(GpuLanguage.GPU_LANGUAGE_GLSL_1_0), "glsl_1.0"); + assertEquals(globals.GpuLanguageFromString("glsl_1.0"), GpuLanguage.GPU_LANGUAGE_GLSL_1_0); + assertEquals(globals.GpuLanguageToString(GpuLanguage.GPU_LANGUAGE_GLSL_1_3), "glsl_1.3"); + assertEquals(globals.GpuLanguageFromString("glsl_1.3"), GpuLanguage.GPU_LANGUAGE_GLSL_1_3); + + // Roles + assertEquals(globals.ROLE_DEFAULT, "default"); + assertEquals(globals.ROLE_REFERENCE, "reference"); + assertEquals(globals.ROLE_DATA, "data"); + assertEquals(globals.ROLE_COLOR_PICKING, "color_picking"); + assertEquals(globals.ROLE_SCENE_LINEAR, "scene_linear"); + assertEquals(globals.ROLE_COMPOSITING_LOG, "compositing_log"); + assertEquals(globals.ROLE_COLOR_TIMING, "color_timing"); + assertEquals(globals.ROLE_TEXTURE_PAINT, "texture_paint"); + assertEquals(globals.ROLE_MATTE_PAINT, "matte_paint"); + + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/GpuShaderDescTest.java b/src/jniglue/tests/org/OpenColorIO/GpuShaderDescTest.java new file mode 100644 index 0000000..08b0a16 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/GpuShaderDescTest.java @@ -0,0 +1,24 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class GpuShaderDescTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + GpuShaderDesc desc = new GpuShaderDesc(); + desc.setLanguage(GpuLanguage.GPU_LANGUAGE_GLSL_1_3); + assertEquals(GpuLanguage.GPU_LANGUAGE_GLSL_1_3, desc.getLanguage()); + desc.setFunctionName("foo123"); + assertEquals("foo123", desc.getFunctionName()); + desc.setLut3DEdgeLen(32); + assertEquals(32, desc.getLut3DEdgeLen()); + assertEquals("glsl_1.3 foo123 32", desc.getCacheID()); + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/LookTest.java b/src/jniglue/tests/org/OpenColorIO/LookTest.java new file mode 100644 index 0000000..778c124 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/LookTest.java @@ -0,0 +1,35 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class LookTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + Look lk = new Look().Create(); + lk.setName("coollook"); + assertEquals("coollook", lk.getName()); + lk.setProcessSpace("somespace"); + assertEquals("somespace", lk.getProcessSpace()); + ExponentTransform et = new ExponentTransform().Create(); + et.setValue(new float[]{0.1f, 0.2f, 0.3f, 0.4f}); + lk.setTransform(et); + ExponentTransform oet = (ExponentTransform)lk.getTransform(); + float vals[] = new float[4]; + oet.getValue(vals); + assertEquals(0.2f, vals[1], 1e-8); + ExponentTransform iet = new ExponentTransform().Create(); + iet.setValue(new float[]{-0.1f, -0.2f, -0.3f, -0.4f}); + lk.setInverseTransform(iet); + ExponentTransform ioet = (ExponentTransform)lk.getInverseTransform(); + float vals2[] = new float[4]; + ioet.getValue(vals2); + assertEquals(-0.2f, vals2[1], 1e-8); + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/OpenColorIOTestSuite.java b/src/jniglue/tests/org/OpenColorIO/OpenColorIOTestSuite.java new file mode 100644 index 0000000..b847d96 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/OpenColorIOTestSuite.java @@ -0,0 +1,30 @@ + +import junit.framework.Test; +import junit.framework.TestSuite; + +public class OpenColorIOTestSuite { + + public static Test suite() { + + TestSuite suite = new TestSuite(); + + // Core + suite.addTestSuite(GlobalsTest.class); + suite.addTestSuite(ConfigTest.class); + suite.addTestSuite(ColorSpaceTest.class); + suite.addTestSuite(LookTest.class); + suite.addTestSuite(BakerTest.class); + suite.addTestSuite(PackedImageDescTest.class); + suite.addTestSuite(PlanarImageDescTest.class); + suite.addTestSuite(GpuShaderDescTest.class); + suite.addTestSuite(ContextTest.class); + suite.addTestSuite(TransformsTest.class); + + return suite; + } + + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/PackedImageDescTest.java b/src/jniglue/tests/org/OpenColorIO/PackedImageDescTest.java new file mode 100644 index 0000000..741a13d --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/PackedImageDescTest.java @@ -0,0 +1,39 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; +import java.nio.*; + +public class PackedImageDescTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + + int width = 2; + int height = 2; + int channels = 4; + float packedpix[] = new float[]{0.1f, 0.1f, 0.1f, 1.0f, + 0.2f, 0.2f, 0.2f, 1.0f, + 0.3f, 0.3f, 0.3f, 1.0f, + 0.4f, 0.4f, 0.4f, 1.0f }; + FloatBuffer buf = ByteBuffer.allocateDirect(width * height * channels + * Float.SIZE / 8).asFloatBuffer(); + buf.put(packedpix); + // + PackedImageDesc foo = new PackedImageDesc(buf, width, height, channels); + FloatBuffer wee = foo.getData(); + assertEquals(0.3f, wee.get(10)); + assertEquals(2, foo.getWidth()); + assertEquals(2, foo.getHeight()); + assertEquals(4, foo.getNumChannels()); + assertEquals(4, foo.getChanStrideBytes()); + assertEquals(16, foo.getXStrideBytes()); + assertEquals(32, foo.getYStrideBytes()); + + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/PlanarImageDescTest.java b/src/jniglue/tests/org/OpenColorIO/PlanarImageDescTest.java new file mode 100644 index 0000000..e0d4deb --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/PlanarImageDescTest.java @@ -0,0 +1,51 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; +import java.nio.*; + +public class PlanarImageDescTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + + int width = 2; + int height = 2; + int channels = 4; + // + float rpix[] = new float[]{0.1f, 0.2f, 0.3f, 0.4f}; + float gpix[] = new float[]{0.1f, 0.2f, 0.3f, 0.4f}; + float bpix[] = new float[]{0.1f, 0.2f, 0.3f, 0.4f}; + float apix[] = new float[]{1.0f, 1.0f, 1.0f, 1.0f}; + int alloc = width * height * Float.SIZE / 8; + // + FloatBuffer rbuf = ByteBuffer.allocateDirect(alloc).asFloatBuffer(); + rbuf.put(rpix); + FloatBuffer gbuf = ByteBuffer.allocateDirect(alloc).asFloatBuffer(); + gbuf.put(gpix); + FloatBuffer bbuf = ByteBuffer.allocateDirect(alloc).asFloatBuffer(); + bbuf.put(bpix); + FloatBuffer abuf = ByteBuffer.allocateDirect(alloc).asFloatBuffer(); + abuf.put(apix); + // + PlanarImageDesc foo = new PlanarImageDesc(rbuf, gbuf, bbuf, abuf, + width, height); + FloatBuffer trb = foo.getRData(); + FloatBuffer tgb = foo.getGData(); + FloatBuffer tbb = foo.getBData(); + FloatBuffer tab = foo.getAData(); + assertEquals(0.1f, trb.get(0)); + assertEquals(0.2f, tgb.get(1)); + assertEquals(0.3f, tbb.get(2)); + assertEquals(1.0f, tab.get(3)); + assertEquals(2, foo.getWidth()); + assertEquals(2, foo.getHeight()); + assertEquals(8, foo.getYStrideBytes()); + + } + +} diff --git a/src/jniglue/tests/org/OpenColorIO/TransformsTest.java b/src/jniglue/tests/org/OpenColorIO/TransformsTest.java new file mode 100644 index 0000000..6300079 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/TransformsTest.java @@ -0,0 +1,237 @@ + +import junit.framework.TestCase; +import org.OpenColorIO.*; + +public class TransformsTest extends TestCase { + + protected void setUp() { + } + + protected void tearDown() { + } + + public void test_interface() { + + //// AllocationTransform //// + AllocationTransform at = new AllocationTransform().Create(); + assertEquals(Allocation.ALLOCATION_UNIFORM, at.getAllocation()); + at.setAllocation(Allocation.ALLOCATION_LG2); + assertEquals(Allocation.ALLOCATION_LG2, at.getAllocation()); + assertEquals(0, at.getNumVars()); + float[] vars = new float[]{0.1f, 0.2f, 0.3f}; + at.setVars(3, vars); + assertEquals(3, at.getNumVars()); + float newvars[] = new float[3]; + at.getVars(newvars); + assertEquals(0.2f, newvars[1], 1e-8); + + // Base Transform method tests + assertEquals(TransformDirection.TRANSFORM_DIR_FORWARD, at.getDirection()); + at.setDirection(TransformDirection.TRANSFORM_DIR_UNKNOWN); + assertEquals(TransformDirection.TRANSFORM_DIR_UNKNOWN, at.getDirection()); + + //// CDLTransform //// + CDLTransform cdl = new CDLTransform().Create(); + String CC = "" + +"<ColorCorrection id=\"foo\">" + +"<SOPNode>" + +"<Description>this is a descipt</Description>" + +"<Slope>1.1 1.2 1.3</Slope>" + +"<Offset>2.1 2.2 2.3</Offset>" + +"<Power>3.1 3.2 3.3</Power>" + +"</SOPNode>" + +"<SatNode><Saturation>0.7</Saturation></SatNode>" + +"</ColorCorrection>"; + // Don't want to deal with getting the correct path so this runs + //CDLTransform cdlfile = new CDLTransform().CreateFromFile("../OpenColorIO/src/jniglue/tests/org/OpenColorIO/test.cc", "foo"); + //assertEquals(CC, cdlfile.getXML()); + cdl.setXML(CC); + assertEquals(CC, cdl.getXML()); + //CDLTransform match = new CDLTransform().Create(); + CDLTransform match = (CDLTransform)cdl.createEditableCopy(); + match.setOffset(new float[]{1.0f, 1.0f, 1.f}); + assertEquals(false, cdl.equals(match)); + cdl.setSlope(new float[]{0.1f, 0.2f, 0.3f}); + cdl.setOffset(new float[]{1.1f, 1.2f, 1.3f}); + cdl.setPower(new float[]{2.1f, 2.2f, 2.3f}); + cdl.setSat(0.5f); + String CC2 = "" + +"<ColorCorrection id=\"foo\">" + +"<SOPNode>" + +"<Description>this is a descipt</Description>" + +"<Slope>0.1 0.2 0.3</Slope>" + +"<Offset>1.1 1.2 1.3</Offset>" + +"<Power>2.1 2.2 2.3</Power>" + +"</SOPNode>" + +"<SatNode><Saturation>0.5</Saturation></SatNode>" + +"</ColorCorrection>"; + assertEquals(CC2, cdl.getXML()); + cdl.setSOP(new float[]{1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f}); + float newsop[] = new float[9]; + cdl.getSOP(newsop); + assertEquals(1.5f, newsop[4], 1e-8); + float slope[] = new float[3]; + cdl.getSlope(slope); + assertEquals(1.2f, slope[1], 1e-8); + float offset[] = new float[3]; + cdl.getOffset(offset); + assertEquals(1.6f, offset[2], 1e-8); + float power[] = new float[3]; + cdl.getPower(power); + assertEquals(1.7f, power[0], 1e-8); + assertEquals(0.5f, cdl.getSat(), 1e-8); + float luma[] = new float[3]; + cdl.getSatLumaCoefs(luma); + assertEquals(0.2126f, luma[0], 1e-8); + assertEquals(0.7152f, luma[1], 1e-8); + assertEquals(0.0722f, luma[2], 1e-8); + cdl.setID("foobar123"); + assertEquals("foobar123", cdl.getID()); + cdl.setDescription("bar"); + assertEquals("bar", cdl.getDescription()); + + //// ColorSpaceTransform //// + ColorSpaceTransform ct = new ColorSpaceTransform().Create(); + ct.setSrc("foo"); + assertEquals("foo", ct.getSrc()); + ct.setDst("bar"); + assertEquals("bar", ct.getDst()); + + //// DisplayTransform //// + DisplayTransform dt = new DisplayTransform().Create(); + dt.setInputColorSpaceName("lin18"); + assertEquals("lin18", dt.getInputColorSpaceName()); + //public native void setLinearCC(Transform cc); + //public native Transform getLinearCC(); + //public native void setColorTimingCC(Transform cc); + //public native Transform getColorTimingCC(); + //public native void setChannelView(Transform transform); + //public native Transform getChannelView(); + dt.setDisplay("sRGB"); + assertEquals("sRGB", dt.getDisplay()); + dt.setView("foobar"); + assertEquals("foobar", dt.getView()); + cdl.setXML(CC); + dt.setDisplayCC(cdl); + CDLTransform cdldt = (CDLTransform)dt.getDisplayCC(); + assertEquals(CC, cdldt.getXML()); + dt.setLooksOverride("darkgrade"); + assertEquals("darkgrade", dt.getLooksOverride()); + dt.setLooksOverrideEnabled(true); + assertEquals(true, dt.getLooksOverrideEnabled()); + + //// ExponentTransform //// + ExponentTransform et = new ExponentTransform().Create(); + et.setValue(new float[]{0.1f, 0.2f, 0.3f, 0.4f}); + float evals[] = new float[4]; + et.getValue(evals); + assertEquals(0.3f, evals[2], 1e-8); + + //// FileTransform //// + FileTransform ft = new FileTransform().Create(); + ft.setSrc("foo"); + assertEquals("foo", ft.getSrc()); + ft.setCCCId("foobar"); + assertEquals("foobar", ft.getCCCId()); + ft.setInterpolation(Interpolation.INTERP_NEAREST); + assertEquals(Interpolation.INTERP_NEAREST, ft.getInterpolation()); + assertEquals(15, ft.getNumFormats()); + assertEquals("flame", ft.getFormatNameByIndex(0)); + assertEquals("3dl", ft.getFormatExtensionByIndex(0)); + + //// GroupTransform //// + GroupTransform gt = new GroupTransform().Create(); + gt.push_back(et); + gt.push_back(ft); + assertEquals(2, gt.size()); + assertEquals(false, gt.empty()); + Transform foo = gt.getTransform(0); + assertEquals(TransformDirection.TRANSFORM_DIR_FORWARD, foo.getDirection()); + gt.clear(); + assertEquals(0, gt.size()); + + //// LogTransform //// + LogTransform lt = new LogTransform().Create(); + lt.setBase(10.f); + assertEquals(10.f, lt.getBase()); + + //// LookTransform //// + LookTransform lkt = new LookTransform().Create(); + lkt.setSrc("foo"); + assertEquals("foo", lkt.getSrc()); + lkt.setDst("bar"); + assertEquals("bar", lkt.getDst()); + lkt.setLooks("bar;foo"); + assertEquals("bar;foo", lkt.getLooks()); + + //// MatrixTransform //// + MatrixTransform mt = new MatrixTransform().Create(); + MatrixTransform mmt = (MatrixTransform)mt.createEditableCopy(); + mt.setValue(new float[]{0.1f, 0.2f, 0.3f, 0.4f, + 0.5f, 0.6f, 0.7f, 0.8f, + 0.9f, 1.0f, 1.1f, 1.2f, + 1.3f, 1.4f, 1.5f, 1.6f}, + new float[]{0.1f, 0.2f, 0.3f, 0.4f}); + assertEquals(false, mt.equals(mmt)); + float m44_1[] = new float[16]; + float offset_1[] = new float[4]; + mt.getValue(m44_1, offset_1); + assertEquals(0.3f, m44_1[2]); + assertEquals(0.2f, offset_1[1]); + mt.setMatrix(new float[]{1.1f, 1.2f, 1.3f, 1.4f, + 1.5f, 1.6f, 1.7f, 1.8f, + 1.9f, 2.0f, 2.1f, 2.2f, + 2.3f, 2.4f, 2.5f, 2.6f}); + float m44_2[] = new float[16]; + mt.getMatrix(m44_2); + assertEquals(1.3f, m44_2[2]); + mt.setOffset(new float[]{1.1f, 1.2f, 1.3f, 1.4f}); + float offset_2[] = new float[4]; + mt.getOffset(offset_2); + assertEquals(1.4f, offset_2[3]); + mt.Fit(m44_2, offset_2, + new float[]{0.1f, 0.1f, 0.1f, 0.1f}, + new float[]{0.9f, 0.9f, 0.9f, 0.9f}, + new float[]{0.0f, 0.0f, 0.0f, 0.0f}, + new float[]{1.1f, 1.1f, 1.1f, 1.1f}); + float m44_3[] = new float[16]; + mt.getMatrix(m44_3); + assertEquals(1.3f, m44_3[2]); + mt.Identity(m44_3, offset_2); + assertEquals(0.f, m44_3[1]); + mt.Sat(m44_2, offset_2, 0.5f, new float[]{0.2126f, 0.7152f, 0.0722f}); + assertEquals(0.3576f, m44_2[1]); + mt.Scale(m44_2, offset_2, new float[]{0.9f, 0.8f, 0.7f, 1.f}); + assertEquals(0.9f, m44_2[0]); + mt.View(m44_2, null, new int[]{1, 1, 1, 0}, new float[]{0.2126f, 0.7152f, 0.0722f}); + assertEquals(0.0722f, m44_2[2]); + + //// TruelightTransform //// + TruelightTransform tt = new TruelightTransform().Create(); + tt.setConfigRoot("/some/path"); + assertEquals("/some/path", tt.getConfigRoot()); + tt.setProfile("profileA"); + assertEquals("profileA", tt.getProfile()); + tt.setCamera("incam"); + assertEquals("incam", tt.getCamera()); + tt.setInputDisplay("dellmon"); + assertEquals("dellmon", tt.getInputDisplay()); + tt.setRecorder("blah"); + assertEquals("blah", tt.getRecorder()); + tt.setPrint("kodasomething"); + assertEquals("kodasomething", tt.getPrint()); + tt.setLamp("foobar"); + assertEquals("foobar", tt.getLamp()); + tt.setOutputCamera("somecam"); + assertEquals("somecam", tt.getOutputCamera()); + tt.setDisplay("sRGB"); + assertEquals("sRGB", tt.getDisplay()); + tt.setCubeInput("log"); + assertEquals("log", tt.getCubeInput()); + + try { + } catch (Exception e) { System.out.println(e); } + + } + +}
\ No newline at end of file diff --git a/src/jniglue/tests/org/OpenColorIO/test.cc b/src/jniglue/tests/org/OpenColorIO/test.cc new file mode 100644 index 0000000..121bf42 --- /dev/null +++ b/src/jniglue/tests/org/OpenColorIO/test.cc @@ -0,0 +1,11 @@ +<ColorCorrection id="foo"> + <SOPNode> + <Description>this is a descipt</Description> + <Slope>1.1 1.2 1.3</Slope> + <Offset>2.1 2.2 2.3</Offset> + <Power>3.1 3.2 3.3</Power> + </SOPNode> + <SatNode> + <Saturation>0.7</Saturation> + </SatNode> +</ColorCorrection>
\ No newline at end of file |