OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF)
+OPTION(BUILD_JAVA "Build the openjpeg jar (Java)" OFF)
MARK_AS_ADVANCED(BUILD_VIEWER)
+MARK_AS_ADVANCED(BUILD_JAVA)
IF(BUILD_JPIP)
FIND_PACKAGE(CURL)
IF(BUILD_VIEWER)
ADD_SUBDIRECTORY(OPJViewer)
ENDIF(BUILD_VIEWER)
+
+IF(BUILD_JAVA)
+ ADD_SUBDIRECTORY(JavaOpenJPEG)
+ENDIF(BUILD_JAVA)
#JavaOpenJPEG/CMakeLists.txt
# First thing define the common source:
-SET(common_SRCS
- ../codec/convert.c
- ../codec/index.c
- ../common/opj_getopt.c
+SET(openjpegjni_SRCS
+ JavaOpenJPEGDecoder.c
+ JavaOpenJPEG.c
)
+# JNI binding:
+find_package(JNI REQUIRED)
+include_directories(${JNI_INCLUDE_DIRS})
-# Headers file are located here:
-INCLUDE_DIRECTORIES(
+# required header file:
+include_directories(
${OPENJPEG_SOURCE_DIR}/libopenjpeg
- ${LCMS_INCLUDE_DIR}
- ${PNG_INCLUDE_DIR}
- ${ZLIB_INCLUDE_DIR}
- ${TIFF_INCLUDE_DIR}
+ ${OPENJPEG_SOURCE_DIR}/applications/common
+ ${OPENJPEG_SOURCE_DIR}/applications/codec
)
-# Loop over all executables:
-FOREACH(exe j2k_to_image image_to_j2k)
- ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS})
- TARGET_LINK_LIBRARIES(${exe} ${OPJ_PREFIX}openjpeg ${TIFF_LIBRARIES}
- ${PNG_LIBRARIES} ${ZLIB_LIBRARY} ${LCMS_LIB})
- # On unix you need to link to the math library:
- IF(UNIX)
- TARGET_LINK_LIBRARIES(${exe} -lm)
- ENDIF(UNIX)
- # Install exe
- INSTALL_TARGETS(/bin/ ${exe})
-ENDFOREACH(exe)
+add_library(openjpegjni MODULE
+ ${openjpegjni_SRCS}
+ )
+
+# build jar:
+FIND_PACKAGE(Java 1.5 REQUIRED) # javac, jar
+
+# build dep list:
+file(GLOB java_srcs "java-sources/org/openJpeg/*.java")
+# make sure target javac dir exists:
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes)
+# Build java
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${LIBRARY_OUTPUT_PATH}/openjpeg.jar
+ COMMAND ${Java_JAVAC_EXECUTABLE} -sourcepath "${CMAKE_CURRENT_SOURCE_DIR}/java-sources"
+ ${java_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes
+ COMMAND ${Java_JAR_EXECUTABLE} cvf ${LIBRARY_OUTPUT_PATH}/openjpeg.jar org
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes
+ DEPENDS ${java_srcs}
+ COMMENT "javac *.java; jar cvf -> openjpeg.jar"
+)
+# name the target
+ADD_CUSTOM_TARGET(OpenJPEGJavaJar ALL
+ DEPENDS ${LIBRARY_OUTPUT_PATH}/openjpeg.jar
+ COMMENT "building openjpeg.jar"
+)
}\r
\r
void cinema_parameters(opj_cparameters_t *parameters){\r
- parameters->tile_size_on = false;\r
+ parameters->tile_size_on = OPJ_FALSE;\r
parameters->cp_tdx=1;\r
parameters->cp_tdy=1;\r
\r
case 't': /* tiles */\r
{\r
sscanf(opj_optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy);\r
- parameters->tile_size_on = true;\r
+ parameters->tile_size_on = OPJ_TRUE;\r
}\r
break;\r
\r
jbyte *jbBody;\r
jshort *jsBody;\r
jint *jiBody;\r
- boolean isCopy;\r
+ jboolean isCopy;\r
\r
// Image width, height and depth\r
fid = (*env)->GetFieldID(env, cls,"width", "I");\r
JNIEXPORT jlong JNICALL Java_org_openJpeg_OpenJPEGJavaEncoder_internalEncodeImageToJ2K(JNIEnv *env, jobject obj, jobjectArray javaParameters) {\r
int argc; /* To simulate the command line parameters (taken from the javaParameters variable) and be able to re-use the */\r
char **argv; /* 'parse_cmdline_decoder' method taken from the j2k_to_image project */\r
- bool bSuccess;\r
+ opj_bool bSuccess;\r
opj_cparameters_t parameters; /* compression parameters */\r
img_fol_t img_fol;\r
opj_event_mgr_t event_mgr; /* event manager */\r
+++ /dev/null
-# Makefile for the main OpenJPEG codecs: j2k_to_image and image_to_j2k
-
-CFLAGS = -O3 -lstdc++ # -g -p -pg
-
-all: j2k_to_image image_to_j2k
-
-j2k_to_image: j2k_to_image.c ../libopenjpeg.a
- gcc $(CFLAGS) ../common/opj_getopt.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
-image_to_j2k: image_to_j2k.c ../libopenjpeg.a
- gcc $(CFLAGS) ../common/opj_getopt.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
-clean:
- rm -f j2k_to_image image_to_j2k