diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a8328c8..a079194e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -186,7 +186,9 @@ OPTION(BUILD_CODEC "Build the CODEC executables" ON) 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) diff --git a/applications/CMakeLists.txt b/applications/CMakeLists.txt index 9c0bbb20..5070e53a 100644 --- a/applications/CMakeLists.txt +++ b/applications/CMakeLists.txt @@ -15,3 +15,7 @@ ENDIF(BUILD_JPIP) IF(BUILD_VIEWER) ADD_SUBDIRECTORY(OPJViewer) ENDIF(BUILD_VIEWER) + +IF(BUILD_JAVA) + ADD_SUBDIRECTORY(JavaOpenJPEG) +ENDIF(BUILD_JAVA) diff --git a/applications/JavaOpenJPEG/CMakeLists.txt b/applications/JavaOpenJPEG/CMakeLists.txt index ecc8340d..2f4a481b 100644 --- a/applications/JavaOpenJPEG/CMakeLists.txt +++ b/applications/JavaOpenJPEG/CMakeLists.txt @@ -1,33 +1,47 @@ #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" +) diff --git a/applications/JavaOpenJPEG/JavaOpenJPEG.c b/applications/JavaOpenJPEG/JavaOpenJPEG.c index eea41c25..3f8e2ee7 100644 --- a/applications/JavaOpenJPEG/JavaOpenJPEG.c +++ b/applications/JavaOpenJPEG/JavaOpenJPEG.c @@ -380,7 +380,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres){ } void cinema_parameters(opj_cparameters_t *parameters){ - parameters->tile_size_on = false; + parameters->tile_size_on = OPJ_FALSE; parameters->cp_tdx=1; parameters->cp_tdy=1; @@ -663,7 +663,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 't': /* tiles */ { sscanf(opj_optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy); - parameters->tile_size_on = true; + parameters->tile_size_on = OPJ_TRUE; } break; @@ -1628,7 +1628,7 @@ opj_image_t* loadImage(opj_cparameters_t *parameters, JNIEnv *env, jobject obj, jbyte *jbBody; jshort *jsBody; jint *jiBody; - boolean isCopy; + jboolean isCopy; // Image width, height and depth fid = (*env)->GetFieldID(env, cls,"width", "I"); @@ -1776,7 +1776,7 @@ opj_image_t* loadImage(opj_cparameters_t *parameters, JNIEnv *env, jobject obj, JNIEXPORT jlong JNICALL Java_org_openJpeg_OpenJPEGJavaEncoder_internalEncodeImageToJ2K(JNIEnv *env, jobject obj, jobjectArray javaParameters) { int argc; /* To simulate the command line parameters (taken from the javaParameters variable) and be able to re-use the */ char **argv; /* 'parse_cmdline_decoder' method taken from the j2k_to_image project */ - bool bSuccess; + opj_bool bSuccess; opj_cparameters_t parameters; /* compression parameters */ img_fol_t img_fol; opj_event_mgr_t event_mgr; /* event manager */ diff --git a/applications/JavaOpenJPEG/Makefile b/applications/JavaOpenJPEG/Makefile deleted file mode 100644 index 74d94056..00000000 --- a/applications/JavaOpenJPEG/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# 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