From 48215bafde3d6955d9cd60e074f6d6832ea9752f Mon Sep 17 00:00:00 2001 From: malaterre Date: Wed, 25 Jan 2006 16:18:47 +0000 Subject: [PATCH] ENH: Backport from openjpeg CVS --- src/gdcmopenjpeg/codec/CMakeLists.txt | 97 +-------------------- src/gdcmopenjpeg/codec/convert.c | 60 ++----------- src/gdcmopenjpeg/libopenjpeg/CMakeLists.txt | 3 +- src/gdcmopenjpeg/libopenjpeg/event.c | 2 +- src/gdcmopenjpeg/libopenjpeg/fix.c | 2 +- src/gdcmopenjpeg/libopenjpeg/openjpeg.h | 46 ++++++---- 6 files changed, 44 insertions(+), 166 deletions(-) diff --git a/src/gdcmopenjpeg/codec/CMakeLists.txt b/src/gdcmopenjpeg/codec/CMakeLists.txt index 8d8ad34e..ee496e33 100644 --- a/src/gdcmopenjpeg/codec/CMakeLists.txt +++ b/src/gdcmopenjpeg/codec/CMakeLists.txt @@ -33,103 +33,10 @@ INCLUDE_DIRECTORIES( # Loop over all executables: FOREACH(exe j2k_to_image image_to_j2k) ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS}) - TARGET_LINK_LIBRARIES(${exe} gdcmopenjpeg) + TARGET_LINK_LIBRARIES(${exe} ${OPJ_PREFIX}openjpeg) IF(UNIX) TARGET_LINK_LIBRARIES(${exe} -lm) ENDIF(UNIX) ENDFOREACH(exe) -## $Id: CMakeLists.txt,v 1.2 2005/10/24 18:40:55 malaterre Exp $ -## -## makefile for OpenJPEG codec -# -#OPENJPEG_DIR = ../libopenjpeg -# -#ifndef DEBUG -# LDFLAGS = -s -lm -#else -# LDFLAGS = -lm -#endif -# -#CFLAGS = -Wall -O3 -fno-strength-reduce -fomit-frame-pointer -I$(OPENJPEG_DIR) -# -#OBJ_DIR_W32 = obj.w32 -#BIN_DIR_W32 = bin.w32 -#LIB_DIR_W32 = $(OPENJPEG_DIR)/lib.w32 -# -#ifdef MINGW32 -# CC = i386-mingw32-gcc -# CFLAGS += -DDONT_HAVE_GETOPT -# OBJ_DIR = $(OBJ_DIR_W32) -# BIN_DIR = $(BIN_DIR_W32) -# LIB_DIR = lib.w32 -# all: $(BIN_DIR) $(OBJ_DIR) $(LIB_DIR) \ -# $(addprefix $(BIN_DIR)/,j2k_to_image.exe image_to_j2k.exe) -#else -# CC = gcc -# OBJ_DIR = obj -# BIN_DIR = bin -# LIB_DIR = lib -# all: $(BIN_DIR) $(OBJ_DIR) $(LIB_DIR) \ -# $(addprefix $(BIN_DIR)/,j2k_to_image image_to_j2k) -#endif -# -#ifdef DYNAMIC -# ifdef MINGW32 -# LIB_OPENJPEG = $(LIB_DIR)/libopenjpeg.dll -# LDFLAGS += -L$(LIB_DIR) -lopenjpeg -# else -# LIB_OPENJPEG = $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.so -# LDFLAGS += -L$(OPENJPEG_DIR)/$(LIB_DIR) -lopenjpeg -# endif -#else -# LIB_OPENJPEG = $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.a -# LDFLAGS += $(LIB_OPENJPEG) -#endif -# -#$(BIN_DIR): -# mkdir $(BIN_DIR) -# -#$(OBJ_DIR): -# mkdir $(OBJ_DIR) -# -#$(LIB_DIR): -# mkdir $(LIB_DIR) -# -#$(LIB_DIR)/libopenjpeg.dll: $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.dll -# ln -sf ../$< $@ -#$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.dll: -# cd $(OPENJPEG_DIR) && \ -# $(MAKE) $(OBJ_DIR) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.dll -#$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.a: -# cd $(OPENJPEG_DIR) && \ -# $(MAKE) $(OBJ_DIR) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.a -#$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.so: -# cd $(OPENJPEG_DIR) && \ -# $(MAKE) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.so -# -#$(OBJ_DIR)/%.o: -# $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< -# -#$(OBJ_DIR)/getopt.o: compat/getopt.c -#$(OBJ_DIR)/convert.o: convert.c -#$(OBJ_DIR)/j2k_to_image.o: j2k_to_image.c -#$(OBJ_DIR)/image_to_j2k.o: image_to_j2k.c convert.h -# -#J2I_OBJS = $(addprefix $(OBJ_DIR)/,j2k_to_image.o) -#I2J_OBJS = $(addprefix $(OBJ_DIR)/,image_to_j2k.o convert.o) -# -#$(BIN_DIR)/j2k_to_image: $(J2I_OBJS) $(LIB_OPENJPEG) -# ${CC} -o $@ $(J2I_OBJS) ${LDFLAGS} -# -#$(BIN_DIR)/image_to_j2k: $(I2J_OBJS) $(LIB_OPENJPEG) -# ${CC} -o $@ $(I2J_OBJS) ${LDFLAGS} -# -#$(BIN_DIR)/j2k_to_image.exe: $(J2I_OBJS) $(LIB_OPENJPEG) -# ${CC} -o $@ $(J2I_OBJS) ${LDFLAGS} -# -#$(BIN_DIR)/image_to_j2k.exe: $(I2J_OBJS) $(LIB_OPENJPEG) $(OBJ_DIR)/getopt.o -# ${CC} -o $@ $(I2J_OBJS) ${LDFLAGS} $(OBJ_DIR)/getopt.o -# -#clean: -# rm -f $(BIN_DIR_W32)/* $(BIN_DIR)/* $(OBJ_DIR_W32)/* $(OBJ_DIR)/* + diff --git a/src/gdcmopenjpeg/codec/convert.c b/src/gdcmopenjpeg/codec/convert.c index b65dd064..6e2ef095 100644 --- a/src/gdcmopenjpeg/codec/convert.c +++ b/src/gdcmopenjpeg/codec/convert.c @@ -844,7 +844,6 @@ opj_image_t* pnmtoimage(char *filename, opj_cparameters_t *parameters) { opj_image_cmptparm_t cmptparm[3]; /* maximum of 3 components */ opj_image_t * image = NULL; char value; - char comment[256]; f = fopen(filename, "rb"); if (!f) { @@ -859,64 +858,14 @@ opj_image_t* pnmtoimage(char *filename, opj_cparameters_t *parameters) { switch(value) { case '2': /* greyscale image type */ case '5': - { numcomps = 1; color_space = CLRSPC_GRAY; - - fgetc(f); - - if (fgetc(f) == '#') { - /* skip comments */ - fseek(f, 0, SEEK_SET); - if (value == '2') { - fscanf(f, "P2\n"); - } else if (value == '5') { - fscanf(f, "P5\n"); - } - fgets(comment, 256, f); - fscanf(f, "%d %d\n255", &w, &h); - } else { - fseek(f, 0, SEEK_SET); - if (value == '2') { - fscanf(f, "P2\n%d %d\n255", &w, &h); - } else if (value == '5') { - fscanf(f, "P5\n%d %d\n255", &w, &h); - } - } - - fgetc(f); /* */ - } break; case '3': /* RGB image type */ case '6': - { numcomps = 3; color_space = CLRSPC_SRGB; - - fgetc(f); - - if (fgetc(f) == '#') { - /* skip comments */ - fseek(f, 0, SEEK_SET); - if (value == '3') { - fscanf(f, "P3\n"); - } else if (value == '6') { - fscanf(f, "P6\n"); - } - fgets(comment, 256, f); - fscanf(f, "%d %d\n255", &w, &h); - } else { - fseek(f, 0, SEEK_SET); - if (value == '3') { - fscanf(f, "P3\n%d %d\n255", &w, &h); - } else if (value == '6') { - fscanf(f, "P6\n%d %d\n255", &w, &h); - } - } - - fgetc(f); /* */ - } break; default: @@ -924,6 +873,15 @@ opj_image_t* pnmtoimage(char *filename, opj_cparameters_t *parameters) { return NULL; } + fgetc(f); + + /* skip comments */ + while(fgetc(f) == '#') while(fgetc(f) != '\n'); + + fseek(f, -1, SEEK_CUR); + fscanf(f, "%d %d\n255", &w, &h); + fgetc(f); /* */ + /* initialize image components */ memset(&cmptparm[0], 0, 3 * sizeof(opj_image_cmptparm_t)); for(i = 0; i < numcomps; i++) { diff --git a/src/gdcmopenjpeg/libopenjpeg/CMakeLists.txt b/src/gdcmopenjpeg/libopenjpeg/CMakeLists.txt index 6b0baebe..08a072ed 100644 --- a/src/gdcmopenjpeg/libopenjpeg/CMakeLists.txt +++ b/src/gdcmopenjpeg/libopenjpeg/CMakeLists.txt @@ -31,6 +31,5 @@ IF (WIN32) ENDIF (BUILD_SHARED_LIBS) ENDIF (WIN32) -ADD_LIBRARY(${PARENT_PREFIX}openjpeg ${openjpeg_SRCS}) - +ADD_LIBRARY(${OPJ_PREFIX}openjpeg ${openjpeg_SRCS}) diff --git a/src/gdcmopenjpeg/libopenjpeg/event.c b/src/gdcmopenjpeg/libopenjpeg/event.c index 179d32f2..7e7c52f2 100644 --- a/src/gdcmopenjpeg/libopenjpeg/event.c +++ b/src/gdcmopenjpeg/libopenjpeg/event.c @@ -30,7 +30,7 @@ Utility functions ==========================================================*/ -#ifndef _MSC_VER +#if !defined(_MSC_VER) && !defined(__MINGW32__) static char* i2a(unsigned i, char *a, unsigned r) { if (i/r > 0) a = i2a(i/r,a,r); diff --git a/src/gdcmopenjpeg/libopenjpeg/fix.c b/src/gdcmopenjpeg/libopenjpeg/fix.c index 21d44008..e9ba82be 100644 --- a/src/gdcmopenjpeg/libopenjpeg/fix.c +++ b/src/gdcmopenjpeg/libopenjpeg/fix.c @@ -30,7 +30,7 @@ #include "fix.h" -#ifdef WIN32 +#if defined(_MSC_VER) || defined(__BORLANDC__) #define int64 __int64 #else #define int64 long long diff --git a/src/gdcmopenjpeg/libopenjpeg/openjpeg.h b/src/gdcmopenjpeg/libopenjpeg/openjpeg.h index 058198d0..d7f74132 100644 --- a/src/gdcmopenjpeg/libopenjpeg/openjpeg.h +++ b/src/gdcmopenjpeg/libopenjpeg/openjpeg.h @@ -32,6 +32,20 @@ #define OPENJPEG_VERSION "1.0.0" +#if defined(_WIN32) && !defined (OPJ_STATIC) +#ifdef OPJ_SHARED +#define OPJ_EXPORT __declspec(dllexport) +#else +#define OPJ_EXPORT __declspec(dllimport) +#endif +#else +#ifdef OPJ_STATIC +#define OPJ_EXPORT extern +#else +#define OPJ_EXPORT +#endif +#endif + /* ========================================================== Compiler directives @@ -461,13 +475,13 @@ Create an image @param clrspc image color space @return returns a new image structure if successful, returns NULL otherwise */ -opj_image_t *opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc); +OPJ_EXPORT opj_image_t *opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc); /** Deallocate any resources associated with an image @param image image to be destroyed */ -void opj_image_destroy(opj_image_t *image); +OPJ_EXPORT void opj_image_destroy(opj_image_t *image); /* ========================================================== @@ -486,20 +500,20 @@ to contain encoded data. @param length Reading: buffer length. Writing: 0 @return Returns a CIO handle if successful, returns NULL otherwise */ -opj_cio_t* opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length); +OPJ_EXPORT opj_cio_t* opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length); /** Close and free a CIO handle @param cio CIO handle to free */ -void opj_cio_close(opj_cio_t *cio); +OPJ_EXPORT void opj_cio_close(opj_cio_t *cio); /** Get position in byte stream @param cio CIO handle @return Returns the position in bytes */ -int cio_tell(opj_cio_t *cio); +OPJ_EXPORT int cio_tell(opj_cio_t *cio); /** Set position in byte stream @param cio CIO handle @@ -513,7 +527,7 @@ void cio_seek(opj_cio_t *cio, int pos); ========================================================== */ -opj_event_mgr_t* opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context); +OPJ_EXPORT opj_event_mgr_t* opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context); /* ========================================================== @@ -525,42 +539,42 @@ Creates a J2K/JPT/JP2 decompression structure @param format Decoder to select @return Returns a handle to a decompressor if successful, returns NULL otherwise */ -opj_dinfo_t* opj_create_decompress(OPJ_CODEC_FORMAT format); +OPJ_EXPORT opj_dinfo_t* opj_create_decompress(OPJ_CODEC_FORMAT format); /** Destroy a decompressor handle @param dinfo decompressor handle to destroy */ -void opj_destroy_decompress(opj_dinfo_t *dinfo); +OPJ_EXPORT void opj_destroy_decompress(opj_dinfo_t *dinfo); /** Set decoding parameters to default values @param parameters Decompression parameters */ -void opj_set_default_decoder_parameters(opj_dparameters_t *parameters); +OPJ_EXPORT void opj_set_default_decoder_parameters(opj_dparameters_t *parameters); /** Setup the decoder decoding parameters using user parameters. Decoding parameters are returned in j2k->cp. @param dinfo decompressor handle @param parameters decompression parameters */ -void opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters); +OPJ_EXPORT void opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters); /** Decode an image from a JPEG-2000 codestream @param dinfo decompressor handle @param cio Input buffer stream @return Returns a decoded image if successful, returns NULL otherwise */ -opj_image_t* opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio); +OPJ_EXPORT opj_image_t* opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio); /** Creates a J2K/JP2 compression structure @param format Coder to select @return Returns a handle to a compressor if successful, returns NULL otherwise */ -opj_cinfo_t* opj_create_compress(OPJ_CODEC_FORMAT format); +OPJ_EXPORT opj_cinfo_t* opj_create_compress(OPJ_CODEC_FORMAT format); /** Destroy a compressor handle @param cinfo compressor handle to destroy */ -void opj_destroy_compress(opj_cinfo_t *cinfo); +OPJ_EXPORT void opj_destroy_compress(opj_cinfo_t *cinfo); /** Set encoding parameters to default values, that means :
    @@ -582,14 +596,14 @@ Set encoding parameters to default values, that means :
@param parameters Compression parameters */ -void opj_set_default_encoder_parameters(opj_cparameters_t *parameters); +OPJ_EXPORT void opj_set_default_encoder_parameters(opj_cparameters_t *parameters); /** Setup the encoder parameters using the current image and using user parameters. @param cinfo compressor handle @param parameters compression parameters @param image input filled image */ -void opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image); +OPJ_EXPORT void opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image); /** Encode an image into a JPEG-2000 codestream @param cinfo compressor handle @@ -598,7 +612,7 @@ Encode an image into a JPEG-2000 codestream @param index Name of the index file if required, NULL otherwise @return Returns true if successful, returns false otherwise */ -bool opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index); +OPJ_EXPORT bool opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index); #ifdef __cplusplus } -- 2.48.1