summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeimage <freeimage@aliceadsl.fr>2006-01-31 21:26:11 +0000
committerFreeimage <freeimage@aliceadsl.fr>2006-01-31 21:26:11 +0000
commit355b88c15d2dcafe4074b725e2165511df02f2dd (patch)
treea02e55bae93e0403ab99c168dd1a2f34d8894e00
parent74c1b3637e922cac859dbda5cfefee4dc4f365e1 (diff)
fixed various minor warnings occuring under icc9 and bcc32, added MSVC project and compiler directives to build a 'standard' WIN32 DLL
-rw-r--r--ChangeLog2
-rw-r--r--DllOpenJPEG.dsp277
-rw-r--r--LibOpenJPEG.dsp10
-rw-r--r--LibOpenJPEG.dsw12
-rw-r--r--README.msvc40
-rw-r--r--clean.bat1
-rw-r--r--codec/convert.c1
-rw-r--r--codec/image_to_j2k.c5
-rw-r--r--codec/image_to_j2k.dsp4
-rw-r--r--codec/j2k_to_image.c8
-rw-r--r--codec/j2k_to_image.dsp4
-rw-r--r--libopenjpeg/cio.c8
-rw-r--r--libopenjpeg/event.c2
-rw-r--r--libopenjpeg/image.c4
-rw-r--r--libopenjpeg/openjpeg.c52
-rw-r--r--libopenjpeg/openjpeg.h57
-rw-r--r--libopenjpeg/t2.c4
-rw-r--r--libopenjpeg/tcd.c2
18 files changed, 432 insertions, 61 deletions
diff --git a/ChangeLog b/ChangeLog
index c38f4cfe..af6f19a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,8 +7,10 @@ What's New for OpenJPEG
January 31, 2006
* [Mathieu Malaterre] Fix compilation using default openjpeg.dsw
+* [Herve Drolon] fixed various minor warnings occuring under icc9 and bcc32
- [Mathieu Malaterre] Remove all references to OPJ_EXPORT, no declspec in header file anymore
+ [Mathieu Malaterre] Add a def.in file which is a template for Module Definition
++ [Herve Drolon] added MSVC project and compiler directives to build a 'standard' WIN32 DLL
January 27, 2006
* [Antonin Descampe] fixed a two initialization problems in t1.c and tcd.c
diff --git a/DllOpenJPEG.dsp b/DllOpenJPEG.dsp
new file mode 100644
index 00000000..eb6d6df0
--- /dev/null
+++ b/DllOpenJPEG.dsp
@@ -0,0 +1,277 @@
+# Microsoft Developer Studio Project File - Name="DllOpenJPEG" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=DllOpenJPEG - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "DllOpenJPEG.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "DllOpenJPEG.mak" CFG="DllOpenJPEG - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "DllOpenJPEG - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "DllOpenJPEG - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "DllOpenJPEG - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLLOPENJPEG_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPJ_EXPORTS" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x40c /d "NDEBUG"
+# ADD RSC /l 0x40c /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Release/OpenJPEG.dll"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=if not exist dist mkdir dist copy libopenjpeg\openjpeg.h dist copy Release\OpenJPEG.dll dist copy Release\OpenJPEG.lib dist
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "DllOpenJPEG - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLLOPENJPEG_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPJ_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x40c /d "_DEBUG"
+# ADD RSC /l 0x40c /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug/OpenJPEGd.dll" /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=if not exist dist mkdir dist copy libopenjpeg\openjpeg.h dist copy Debug\OpenJPEGd.dll dist copy Debug\OpenJPEGd.lib dist
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "DllOpenJPEG - Win32 Release"
+# Name "DllOpenJPEG - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\libopenjpeg\bio.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\cio.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\dwt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\event.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\fix.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\image.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\int.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\j2k.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\j2k_lib.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\jp2.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\jpt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\mct.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\mqc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\openjpeg.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\pi.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\raw.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\t1.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\t2.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\tcd.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\tgt.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\libopenjpeg\bio.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\cio.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\dwt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\event.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\fix.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\image.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\int.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\j2k.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\j2k_lib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\jp2.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\jpt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\mct.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\mqc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\openjpeg.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\opj_includes.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\pi.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\raw.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\t1.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\t2.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\tcd.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\libopenjpeg\tgt.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/LibOpenJPEG.dsp b/LibOpenJPEG.dsp
index b3c39ec6..ad01c60f 100644
--- a/LibOpenJPEG.dsp
+++ b/LibOpenJPEG.dsp
@@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
@@ -53,7 +53,7 @@ LIB32=link.exe -lib
# ADD LIB32 /nologo
# Begin Special Build Tool
SOURCE="$(InputPath)"
-PostBuild_Cmds=copy Release\LibOpenJPEG.lib dist copy libopenjpeg\openjpeg.h dist
+PostBuild_Cmds=if not exist dist mkdir dist copy Release\LibOpenJPEG.lib dist copy libopenjpeg\openjpeg.h dist
# End Special Build Tool
!ELSEIF "$(CFG)" == "LibOpenJPEG - Win32 Debug"
@@ -69,7 +69,7 @@ PostBuild_Cmds=copy Release\LibOpenJPEG.lib dist copy libopenjpeg\openjpeg.h dis
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
@@ -78,10 +78,10 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
+# ADD LIB32 /nologo /out:"Debug\LibOpenJPEGd.lib"
# Begin Special Build Tool
SOURCE="$(InputPath)"
-PostBuild_Cmds=copy Debug\LibOpenJPEG.lib dist copy libopenjpeg\openjpeg.h dist
+PostBuild_Cmds=if not exist dist mkdir dist copy Debug\LibOpenJPEGd.lib dist copy libopenjpeg\openjpeg.h dist
# End Special Build Tool
!ENDIF
diff --git a/LibOpenJPEG.dsw b/LibOpenJPEG.dsw
index dd9f4571..97b0b902 100644
--- a/LibOpenJPEG.dsw
+++ b/LibOpenJPEG.dsw
@@ -3,6 +3,18 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
+Project: "DllOpenJPEG"=.\DllOpenJPEG.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "LibOpenJPEG"=.\LibOpenJPEG.dsp - Package Owner=<4>
Package=<5>
diff --git a/README.msvc b/README.msvc
new file mode 100644
index 00000000..c92acd85
--- /dev/null
+++ b/README.msvc
@@ -0,0 +1,40 @@
+How to compile the library under MS VC++ 6.0
+--------------------------------------------
+
+The library comes in two versions :
+- a static library that can be linked against any C/C++ program
+- a Dynamic Link Library (Windows DLL) that can be used in any C/C++ program and in most interpreted languages (e.g. VB, C#, ...).
+
+In order to compile the library version *or* the DLL version, you will have to :
+
+1) Open the MSVC project named LibOpenJPEG.dsw
+2) Set the choosen target as the active project, that means :
+ a) Go to the Menu 'Build -> Set Active Configuration'
+ b) Choose one of the following configuration :
+ - DllOpenJPEG - Win32 Release => creates a DLL in release mode named OpenJPEG.dll
+ - DllOpenJPEG - Win32 Debug => creates a DLL in debug mode named OpenJPEGd.dll
+ - LibOpenJPEG - Win32 Release => creates a static library in release mode named LibOpenJPEG.lib
+ - LibOpenJPEG - Win32 Debug => creates a static library in debug mode named LibOpenJPEGd.lib
+3) Build the project : Menu -> Build -> Rebuild All
+
+The build process will create a directory named 'dist' that will contain all you need in order to use the library.
+
+Simple codec compilation
+------------------------
+
+Once you've built the library, you might want to test it with a basic codec. To do this, go to the codec directory and use one of the following projects to build an encoder and decoder respectively:
+- image_to_j2k.dsw
+- j2k_to_image.dsw
+
+IMPORTANT NOTE :
+----------------
+
+The encoder and decoder samples are configured to use the static version of the library. A link to the LibOpenJPEG static project is included in these projects so that you can build both a codec and the library in a single pass.
+
+However, you MUST NOTE that in order to use LibOpenJPEG as a static library in your program, you NEED to add the following compiler directive to your project : OPJ_STATIC
+Look at the menu 'Project -> Settings -> C/C++ tab -> preprocessor definition' to see how this is configured.
+When using OpenJPEG as a DLL, this compiler directive MUST NOT be used.
+
+
+
+
diff --git a/clean.bat b/clean.bat
index c92c7d78..2ce15cbe 100644
--- a/clean.bat
+++ b/clean.bat
@@ -2,6 +2,7 @@ rd Release /s /q
rd Debug /s /q
rd codec\Debug /s /q
rd codec\Release /s /q
+rd dist /s /q
del *.pch /s /q
del *.ncb /s /q
del *.opt /s /q
diff --git a/codec/convert.c b/codec/convert.c
index ae46390f..5e4d9bf1 100644
--- a/codec/convert.c
+++ b/codec/convert.c
@@ -417,7 +417,6 @@ opj_image_t* bmptoimage(char *filename, opj_cparameters_t *parameters) {
opj_image_destroy(image);
fclose(IN);
return NULL;
- break;
default:
for (i = 0; i < v; i++) {
v2 = getc(IN);
diff --git a/codec/image_to_j2k.c b/codec/image_to_j2k.c
index 80de1006..cbf0a461 100644
--- a/codec/image_to_j2k.c
+++ b/codec/image_to_j2k.c
@@ -239,7 +239,6 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
"!! Unrecognized format for infile : %s [accept only *.pnm, *.pgm, *.ppm, *.pgx or *.bmp] !!\n\n",
infile);
return 1;
- break;
}
strncpy(parameters->infile, infile, MAX_PATH);
}
@@ -258,7 +257,6 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
default:
fprintf(stderr, "Unknown output format image %s [only *.j2k, *.jp2]!! \n", outfile);
return 1;
- break;
}
strncpy(parameters->outfile, outfile, MAX_PATH);
}
@@ -451,11 +449,8 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
/* ----------------------------------------------------- */
case 'h': /* display an help description */
- {
encode_help_display();
return 1;
- }
- break;
/* ----------------------------------------------------- */
diff --git a/codec/image_to_j2k.dsp b/codec/image_to_j2k.dsp
index 8bca167a..4600a988 100644
--- a/codec/image_to_j2k.dsp
+++ b/codec/image_to_j2k.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
diff --git a/codec/j2k_to_image.c b/codec/j2k_to_image.c
index 13338f2c..4541badd 100644
--- a/codec/j2k_to_image.c
+++ b/codec/j2k_to_image.c
@@ -126,7 +126,6 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
"!! Unrecognized format for infile : %s [accept only *.j2k, *.jp2, *.jpc or *.jpt] !!\n\n",
infile);
return 1;
- break;
}
strncpy(parameters->infile, infile, MAX_PATH);
}
@@ -146,7 +145,6 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
default:
fprintf(stderr, "Unknown output format image %s [only *.pnm, *.pgm, *.ppm, *.pgx or *.bmp]!! \n", outfile);
return 1;
- break;
}
strncpy(parameters->outfile, outfile, MAX_PATH);
}
@@ -173,11 +171,8 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
/* ----------------------------------------------------- */
case 'h': /* display an help description */
- {
decode_help_display();
- return 1;
- }
- break;
+ return 1;
/* ----------------------------------------------------- */
@@ -360,7 +355,6 @@ int main(int argc, char **argv) {
default:
fprintf(stderr, "ERROR -> j2k_to_image : Unknown input image format\n");
return 1;
- break;
}
/* free the memory containing the code-stream */
diff --git a/codec/j2k_to_image.dsp b/codec/j2k_to_image.dsp
index e0e98d9d..4d9e2f92 100644
--- a/codec/j2k_to_image.dsp
+++ b/codec/j2k_to_image.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../libopenjpeg" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x40c /d "NDEBUG"
# ADD RSC /l 0x40c /d "NDEBUG"
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../libopenjpeg" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "OPJ_STATIC" /YX /FD /GZ /c
# ADD BASE RSC /l 0x40c /d "_DEBUG"
# ADD RSC /l 0x40c /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/libopenjpeg/cio.c b/libopenjpeg/cio.c
index c9c59bc2..d8e0105d 100644
--- a/libopenjpeg/cio.c
+++ b/libopenjpeg/cio.c
@@ -32,7 +32,7 @@
/* ----------------------------------------------------------------------- */
-opj_cio_t* opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length) {
+opj_cio_t* OPJ_CALLCONV opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length) {
opj_cp_t *cp = NULL;
opj_cio_t *cio = (opj_cio_t*)opj_malloc(sizeof(opj_cio_t));
if(!cio) return NULL;
@@ -77,7 +77,7 @@ opj_cio_t* opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length)
return cio;
}
-void opj_cio_close(opj_cio_t *cio) {
+void OPJ_CALLCONV opj_cio_close(opj_cio_t *cio) {
if(cio) {
if(cio->openmode == OPJ_STREAM_WRITE) {
/* destroy the allocated buffer */
@@ -94,7 +94,7 @@ void opj_cio_close(opj_cio_t *cio) {
/*
* Get position in byte stream.
*/
-int cio_tell(opj_cio_t *cio) {
+int OPJ_CALLCONV cio_tell(opj_cio_t *cio) {
return cio->bp - cio->start;
}
@@ -103,7 +103,7 @@ int cio_tell(opj_cio_t *cio) {
*
* pos : position, in number of bytes, from the beginning of the stream
*/
-void cio_seek(opj_cio_t *cio, int pos) {
+void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) {
cio->bp = cio->start + pos;
}
diff --git a/libopenjpeg/event.c b/libopenjpeg/event.c
index bdf326a0..183931d1 100644
--- a/libopenjpeg/event.c
+++ b/libopenjpeg/event.c
@@ -61,7 +61,7 @@ _itoa(int i, char *a, int r) {
/* ----------------------------------------------------------------------- */
-opj_event_mgr_t* opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context) {
+opj_event_mgr_t* OPJ_CALLCONV opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context) {
if(cinfo) {
opj_event_mgr_t *previous = cinfo->event_mgr;
cinfo->event_mgr = event_mgr;
diff --git a/libopenjpeg/image.c b/libopenjpeg/image.c
index 6159b639..84664e9a 100644
--- a/libopenjpeg/image.c
+++ b/libopenjpeg/image.c
@@ -31,7 +31,7 @@ opj_image_t* opj_image_create0() {
return image;
}
-opj_image_t *opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc) {
+opj_image_t* OPJ_CALLCONV opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc) {
int compno;
opj_image_t *image = NULL;
@@ -68,7 +68,7 @@ opj_image_t *opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ
return image;
}
-void opj_image_destroy(opj_image_t *image) {
+void OPJ_CALLCONV opj_image_destroy(opj_image_t *image) {
int i;
if(image) {
if(image->comps) {
diff --git a/libopenjpeg/openjpeg.c b/libopenjpeg/openjpeg.c
index b90eca6f..5c6cee7b 100644
--- a/libopenjpeg/openjpeg.c
+++ b/libopenjpeg/openjpeg.c
@@ -24,13 +24,40 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#ifdef WIN32
+#include <windows.h>
+#endif /* WIN32 */
+
#include "opj_includes.h"
-const char * opj_version() {
+/* ---------------------------------------------------------------------- */
+#ifdef WIN32
+#ifndef OPJ_STATIC
+BOOL APIENTRY
+DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
+ switch (ul_reason_for_call) {
+ case DLL_PROCESS_ATTACH :
+ break;
+ case DLL_PROCESS_DETACH :
+ break;
+ case DLL_THREAD_ATTACH :
+ case DLL_THREAD_DETACH :
+ break;
+ }
+
+ return TRUE;
+}
+#endif /* OPJ_STATIC */
+#endif /* WIN32 */
+
+/* ---------------------------------------------------------------------- */
+
+
+const char* OPJ_CALLCONV opj_version() {
return OPENJPEG_VERSION;
}
-opj_dinfo_t* opj_create_decompress(OPJ_CODEC_FORMAT format) {
+opj_dinfo_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format) {
opj_dinfo_t *dinfo = (opj_dinfo_t*)opj_malloc(sizeof(opj_dinfo_t));
if(!dinfo) return NULL;
dinfo->is_decompressor = true;
@@ -63,7 +90,7 @@ opj_dinfo_t* opj_create_decompress(OPJ_CODEC_FORMAT format) {
return dinfo;
}
-void opj_destroy_decompress(opj_dinfo_t *dinfo) {
+void OPJ_CALLCONV opj_destroy_decompress(opj_dinfo_t *dinfo) {
if(dinfo) {
/* destroy the codec */
switch(dinfo->codec_format) {
@@ -83,7 +110,7 @@ void opj_destroy_decompress(opj_dinfo_t *dinfo) {
}
}
-void opj_set_default_decoder_parameters(opj_dparameters_t *parameters) {
+void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters) {
if(parameters) {
memset(parameters, 0, sizeof(opj_dparameters_t));
/* default decoding parameters */
@@ -95,7 +122,7 @@ void opj_set_default_decoder_parameters(opj_dparameters_t *parameters) {
}
}
-void opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters) {
+void OPJ_CALLCONV opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters) {
if(dinfo && parameters) {
switch(dinfo->codec_format) {
case CODEC_J2K:
@@ -112,7 +139,7 @@ void opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters) {
}
}
-opj_image_t* opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio) {
+opj_image_t* OPJ_CALLCONV opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio) {
if(dinfo && cio) {
switch(dinfo->codec_format) {
case CODEC_J2K:
@@ -121,13 +148,16 @@ opj_image_t* opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio) {
return j2k_decode_jpt_stream((opj_j2k_t*)dinfo->j2k_handle, cio);
case CODEC_JP2:
return jp2_decode((opj_jp2_t*)dinfo->jp2_handle, cio);
+ case CODEC_UNKNOWN:
+ default:
+ break;
}
}
return NULL;
}
-opj_cinfo_t* opj_create_compress(OPJ_CODEC_FORMAT format) {
+opj_cinfo_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format) {
opj_cinfo_t *cinfo = (opj_cinfo_t*)opj_malloc(sizeof(opj_cinfo_t));
if(!cinfo) return NULL;
cinfo->is_decompressor = false;
@@ -160,7 +190,7 @@ opj_cinfo_t* opj_create_compress(OPJ_CODEC_FORMAT format) {
return cinfo;
}
-void opj_destroy_compress(opj_cinfo_t *cinfo) {
+void OPJ_CALLCONV opj_destroy_compress(opj_cinfo_t *cinfo) {
if(cinfo) {
/* destroy the codec */
switch(cinfo->codec_format) {
@@ -180,7 +210,7 @@ void opj_destroy_compress(opj_cinfo_t *cinfo) {
}
}
-void opj_set_default_encoder_parameters(opj_cparameters_t *parameters) {
+void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters) {
if(parameters) {
memset(parameters, 0, sizeof(opj_cparameters_t));
/* default coding parameters */
@@ -197,7 +227,7 @@ void opj_set_default_encoder_parameters(opj_cparameters_t *parameters) {
}
}
-void opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image) {
+void OPJ_CALLCONV opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image) {
if(cinfo && parameters && image) {
switch(cinfo->codec_format) {
case CODEC_J2K:
@@ -214,7 +244,7 @@ void opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_im
}
}
-bool opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index) {
+bool OPJ_CALLCONV opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index) {
if(cinfo && cio && image) {
switch(cinfo->codec_format) {
case CODEC_J2K:
diff --git a/libopenjpeg/openjpeg.h b/libopenjpeg/openjpeg.h
index ad2c4d6a..6c6ea4df 100644
--- a/libopenjpeg/openjpeg.h
+++ b/libopenjpeg/openjpeg.h
@@ -37,6 +37,27 @@
Compiler directives
==========================================================
*/
+
+#if defined(OPJ_STATIC) || !(defined(WIN32) || defined(__WIN32__))
+#define OPJ_API
+#define OPJ_CALLCONV
+#else
+#define OPJ_CALLCONV __stdcall
+/*
+The following ifdef block is the standard way of creating macros which make exporting
+from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
+symbol defined on the command line. this symbol should not be defined on any project
+that uses this DLL. This way any other project whose source files include this file see
+OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols
+defined with this macro as being exported.
+*/
+#ifdef OPJ_EXPORTS
+#define OPJ_API __declspec(dllexport)
+#else
+#define OPJ_API __declspec(dllimport)
+#endif /* OPJ_EXPORTS */
+#endif /* !OPJ_STATIC || !WIN32 */
+
#ifndef __cplusplus
#if defined(HAVE_STDBOOL_H)
/*
@@ -446,7 +467,7 @@ extern "C" {
==========================================================
*/
-const char * opj_version();
+OPJ_API const char * OPJ_CALLCONV opj_version();
/*
==========================================================
@@ -461,13 +482,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_API opj_image_t* OPJ_CALLCONV 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_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image);
/*
==========================================================
@@ -486,26 +507,26 @@ 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_API opj_cio_t* OPJ_CALLCONV 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_API void OPJ_CALLCONV 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_API int OPJ_CALLCONV cio_tell(opj_cio_t *cio);
/**
Set position in byte stream
@param cio CIO handle
@param pos Position, in number of bytes, from the beginning of the stream
*/
-void cio_seek(opj_cio_t *cio, int pos);
+OPJ_API void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos);
/*
==========================================================
@@ -513,7 +534,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_API opj_event_mgr_t* OPJ_CALLCONV opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context);
/*
==========================================================
@@ -525,42 +546,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_API opj_dinfo_t* OPJ_CALLCONV 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_API void OPJ_CALLCONV 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_API void OPJ_CALLCONV 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_API void OPJ_CALLCONV 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_API opj_image_t* OPJ_CALLCONV 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_API opj_cinfo_t* OPJ_CALLCONV 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_API void OPJ_CALLCONV opj_destroy_compress(opj_cinfo_t *cinfo);
/**
Set encoding parameters to default values, that means :
<ul>
@@ -582,14 +603,14 @@ Set encoding parameters to default values, that means :
</ul>
@param parameters Compression parameters
*/
-void opj_set_default_encoder_parameters(opj_cparameters_t *parameters);
+OPJ_API void OPJ_CALLCONV 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_API void OPJ_CALLCONV 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 +619,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_API bool OPJ_CALLCONV opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index);
#ifdef __cplusplus
}
diff --git a/libopenjpeg/t2.c b/libopenjpeg/t2.c
index dda0efca..43e1fe24 100644
--- a/libopenjpeg/t2.c
+++ b/libopenjpeg/t2.c
@@ -73,7 +73,7 @@ Decode a packet of a tile from a source buffer
@param pi Packet identity
@return
*/
-int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi);
+static int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi);
/*@}*/
@@ -308,7 +308,7 @@ static void t2_init_seg(opj_tcd_seg_t * seg, int cblksty, int first) {
}
}
-int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi) {
+static int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi) {
int bandno, cblkno;
unsigned char *c = src;
diff --git a/libopenjpeg/tcd.c b/libopenjpeg/tcd.c
index 77fca831..82340207 100644
--- a/libopenjpeg/tcd.c
+++ b/libopenjpeg/tcd.c
@@ -945,7 +945,7 @@ void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final) {
dd = pass->distortiondec - cblk->passes[n - 1].distortiondec;
}
if (!dr) {
- if (dd)
+ if (dd != 0)
n = passno + 1;
continue;
}