From 8d7b0c9c0564514d7edd36e8cc260a267c7d4213 Mon Sep 17 00:00:00 2001 From: Freeimage Date: Wed, 1 Feb 2006 21:25:11 +0000 Subject: [PATCH] changed function definitions of INT and FIX modules to 'inline' --- DllOpenJPEG.dsp | 16 ++++----- LibOpenJPEG.dsp | 8 ----- Makefile | 2 +- Makefile.osx | 2 +- libopenjpeg/CMakeLists.txt | 2 -- libopenjpeg/fix.c | 45 ------------------------ libopenjpeg/fix.h | 14 ++++++-- libopenjpeg/int.c | 72 -------------------------------------- libopenjpeg/int.h | 43 +++++++++++++++++------ libopenjpeg/opj_includes.h | 17 +++++++++ 10 files changed, 70 insertions(+), 151 deletions(-) delete mode 100644 libopenjpeg/fix.c delete mode 100644 libopenjpeg/int.c diff --git a/DllOpenJPEG.dsp b/DllOpenJPEG.dsp index eb6d6df0..8dea6c8e 100644 --- a/DllOpenJPEG.dsp +++ b/DllOpenJPEG.dsp @@ -73,8 +73,8 @@ PostBuild_Cmds=if not exist dist mkdir dist copy libopenjpeg\openjpeg.h dist cop # 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 +# 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 @@ -118,18 +118,10 @@ 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 @@ -272,6 +264,10 @@ SOURCE=.\libopenjpeg\tgt.h # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\OpenJPEG.rc +# End Source File # End Group # End Target # End Project diff --git a/LibOpenJPEG.dsp b/LibOpenJPEG.dsp index ad01c60f..07c1cc8c 100644 --- a/LibOpenJPEG.dsp +++ b/LibOpenJPEG.dsp @@ -111,18 +111,10 @@ 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 diff --git a/Makefile b/Makefile index ed5a0866..d8d9e4bc 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ VER_MAJOR = 1 VER_MINOR = 0.0 -SRCS = ./libopenjpeg/bio.c ./libopenjpeg/cio.c ./libopenjpeg/dwt.c ./libopenjpeg/event.c ./libopenjpeg/fix.c ./libopenjpeg/image.c ./libopenjpeg/int.c ./libopenjpeg/j2k.c ./libopenjpeg/j2k_lib.c ./libopenjpeg/jp2.c ./libopenjpeg/jpt.c ./libopenjpeg/mct.c ./libopenjpeg/mqc.c ./libopenjpeg/openjpeg.c ./libopenjpeg/pi.c ./libopenjpeg/raw.c ./libopenjpeg/t1.c ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c +SRCS = ./libopenjpeg/bio.c ./libopenjpeg/cio.c ./libopenjpeg/dwt.c ./libopenjpeg/event.c ./libopenjpeg/image.c ./libopenjpeg/j2k.c ./libopenjpeg/j2k_lib.c ./libopenjpeg/jp2.c ./libopenjpeg/jpt.c ./libopenjpeg/mct.c ./libopenjpeg/mqc.c ./libopenjpeg/openjpeg.c ./libopenjpeg/pi.c ./libopenjpeg/raw.c ./libopenjpeg/t1.c ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c INCLS = ./libopenjpeg/bio.h ./libopenjpeg/cio.h ./libopenjpeg/dwt.h ./libopenjpeg/event.h ./libopenjpeg/fix.h ./libopenjpeg/image.h ./libopenjpeg/int.h ./libopenjpeg/j2k.h ./libopenjpeg/j2k_lib.h ./libopenjpeg/jp2.h ./libopenjpeg/jpt.h ./libopenjpeg/mct.h ./libopenjpeg/mqc.h ./libopenjpeg/openjpeg.h ./libopenjpeg/pi.h ./libopenjpeg/raw.h ./libopenjpeg/t1.h ./libopenjpeg/t2.h ./libopenjpeg/tcd.h ./libopenjpeg/tgt.h ./libopenjpeg/opj_includes.h INCLUDE = -Ilibopenjpeg diff --git a/Makefile.osx b/Makefile.osx index ba2239b9..2f44ff5a 100644 --- a/Makefile.osx +++ b/Makefile.osx @@ -3,7 +3,7 @@ VER_MAJOR = 1 VER_MINOR = 0.0 -SRCS = ./libopenjpeg/bio.c ./libopenjpeg/cio.c ./libopenjpeg/dwt.c ./libopenjpeg/event.c ./libopenjpeg/fix.c ./libopenjpeg/image.c ./libopenjpeg/int.c ./libopenjpeg/j2k.c ./libopenjpeg/j2k_lib.c ./libopenjpeg/jp2.c ./libopenjpeg/jpt.c ./libopenjpeg/mct.c ./libopenjpeg/mqc.c ./libopenjpeg/openjpeg.c ./libopenjpeg/pi.c ./libopenjpeg/raw.c ./libopenjpeg/t1.c ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c +SRCS = ./libopenjpeg/bio.c ./libopenjpeg/cio.c ./libopenjpeg/dwt.c ./libopenjpeg/event.c ./libopenjpeg/image.c ./libopenjpeg/j2k.c ./libopenjpeg/j2k_lib.c ./libopenjpeg/jp2.c ./libopenjpeg/jpt.c ./libopenjpeg/mct.c ./libopenjpeg/mqc.c ./libopenjpeg/openjpeg.c ./libopenjpeg/pi.c ./libopenjpeg/raw.c ./libopenjpeg/t1.c ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c INCLS = ./libopenjpeg/bio.h ./libopenjpeg/cio.h ./libopenjpeg/dwt.h ./libopenjpeg/event.h ./libopenjpeg/fix.h ./libopenjpeg/image.h ./libopenjpeg/int.h ./libopenjpeg/j2k.h ./libopenjpeg/j2k_lib.h ./libopenjpeg/jp2.h ./libopenjpeg/jpt.h ./libopenjpeg/mct.h ./libopenjpeg/mqc.h ./libopenjpeg/openjpeg.h ./libopenjpeg/pi.h ./libopenjpeg/raw.h ./libopenjpeg/t1.h ./libopenjpeg/t2.h ./libopenjpeg/tcd.h ./libopenjpeg/tgt.h ./libopenjpeg/opj_includes.h INCLUDE = -Ilibopenjpeg diff --git a/libopenjpeg/CMakeLists.txt b/libopenjpeg/CMakeLists.txt index 9200772e..1355b4ae 100644 --- a/libopenjpeg/CMakeLists.txt +++ b/libopenjpeg/CMakeLists.txt @@ -5,9 +5,7 @@ SET(OpenJPEG_SRCS cio.c dwt.c event.c - fix.c image.c - int.c j2k.c j2k_lib.c jp2.c diff --git a/libopenjpeg/fix.c b/libopenjpeg/fix.c deleted file mode 100644 index e9ba82be..00000000 --- a/libopenjpeg/fix.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2001-2003, David Janssens - * Copyright (c) 2002-2003, Yannick Verschueren - * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe - * Copyright (c) 2005, Hervé Drolon, FreeImage Team - * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * 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 "fix.h" - -#if defined(_MSC_VER) || defined(__BORLANDC__) -#define int64 __int64 -#else -#define int64 long long -#endif - -int fix_mul(int a, int b) { - int64 temp = (int64) a * (int64) b >> 12; - return (int) ((temp >> 1) + (temp & 1)) ; -} - - - diff --git a/libopenjpeg/fix.h b/libopenjpeg/fix.h index b5b62e67..9dd5839a 100644 --- a/libopenjpeg/fix.h +++ b/libopenjpeg/fix.h @@ -29,11 +29,18 @@ */ #ifndef __FIX_H #define __FIX_H + +#if defined(_MSC_VER) || defined(__BORLANDC__) +#define int64 __int64 +#else +#define int64 long long +#endif + /** @file fix.h @brief Implementation of operations of specific multiplication (FIX) -The functions in FIX.C have for goal to realize specific multiplication. +The functions in FIX.H have for goal to realize specific multiplication. */ /** @defgroup FIX FIX - Implementation of operations of specific multiplication */ @@ -45,7 +52,10 @@ Multiply two fixed-precision rational numbers. @param b @return Returns a * b */ -int fix_mul(int a, int b); +INLINE int fix_mul(int a, int b) { + int64 temp = (int64) a * (int64) b >> 12; + return (int) ((temp >> 1) + (temp & 1)) ; +} /*@}*/ diff --git a/libopenjpeg/int.c b/libopenjpeg/int.c deleted file mode 100644 index a2e297eb..00000000 --- a/libopenjpeg/int.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2001-2003, David Janssens - * Copyright (c) 2002-2003, Yannick Verschueren - * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe - * Copyright (c) 2005, Hervé Drolon, FreeImage Team - * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * 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 "opj_includes.h" - -int int_min(int a, int b) { - return a < b ? a : b; -} - -int int_max(int a, int b) { - return (a > b) ? a : b; -} - -int int_clamp(int a, int min, int max) { - if (a < min) - return min; - if (a > max) - return max; - return a; -} - -int int_abs(int a) { - return a < 0 ? -a : a; -} - -int int_ceildiv(int a, int b) { - return (a + b - 1) / b; -} - -int int_ceildivpow2(int a, int b) { - return (a + (1 << b) - 1) >> b; -} - -int int_floordivpow2(int a, int b) { - return a >> b; -} - -int int_floorlog2(int a) { - int l; - for (l = 0; a > 1; l++) { - a >>= 1; - } - return l; -} - diff --git a/libopenjpeg/int.h b/libopenjpeg/int.h index aff0905f..9d738685 100644 --- a/libopenjpeg/int.h +++ b/libopenjpeg/int.h @@ -33,7 +33,7 @@ @file int.h @brief Implementation of operations on integers (INT) -The functions in INT.C have for goal to realize operations on integers. +The functions in INT.H have for goal to realize operations on integers. */ /** @defgroup INT INT - Implementation of operations on integers */ @@ -46,12 +46,16 @@ The functions in INT.C have for goal to realize operations on integers. Get the minimum of two integers @return Returns a if a < b else b */ -int int_min(int a, int b); +INLINE int int_min(int a, int b) { + return a < b ? a : b; +} /** Get the maximum of two integers @return Returns a if a > b else b */ -int int_max(int a, int b); +INLINE int int_max(int a, int b) { + return (a > b) ? a : b; +} /** Clamp an integer inside an interval @return @@ -61,32 +65,51 @@ Clamp an integer inside an interval
  • Returns min if (a < min) */ -int int_clamp(int a, int min, int max); +INLINE int int_clamp(int a, int min, int max) { + if (a < min) + return min; + if (a > max) + return max; + return a; +} /** @return Get absolute value of integer */ -int int_abs(int a); +INLINE int int_abs(int a) { + return a < 0 ? -a : a; +} /** Divide an integer and round upwards @return Returns a divided by b */ -int int_ceildiv(int a, int b); +INLINE int int_ceildiv(int a, int b) { + return (a + b - 1) / b; +} /** Divide an integer by a power of 2 and round upwards @return Returns a divided by 2^b */ -int int_ceildivpow2(int a, int b); +INLINE int int_ceildivpow2(int a, int b) { + return (a + (1 << b) - 1) >> b; +} /** Divide an integer by a power of 2 and round downwards @return Returns a divided by 2^b */ -int int_floordivpow2(int a, int b); +INLINE int int_floordivpow2(int a, int b) { + return a >> b; +} /** Get logarithm of an integer and round downwards @return Returns log2(a) */ -int int_floorlog2(int a); - +INLINE int int_floorlog2(int a) { + int l; + for (l = 0; a > 1; l++) { + a >>= 1; + } + return l; +} /* ----------------------------------------------------------------------- */ /*@}*/ diff --git a/libopenjpeg/opj_includes.h b/libopenjpeg/opj_includes.h index 565131ee..5cf64ba7 100644 --- a/libopenjpeg/opj_includes.h +++ b/libopenjpeg/opj_includes.h @@ -54,6 +54,23 @@ ========================================================== */ +/* +The inline keyword is supported by C99 but not by C90. +Most compilers implement their own version of this keyword ... +*/ +#ifndef INLINE + #if defined(_MSC_VER) + #define INLINE __inline + #elif defined(__GNUC__) + #define INLINE __inline__ + #elif defined(__MWERKS__) + #define INLINE inline + #else + /* add other compilers here ... */ + #define INLINE + #endif /* defined() */ +#endif /* INLINE */ + #include "j2k_lib.h" #include "event.h" #include "cio.h"