]> Creatis software - gdcm.git/blob - src/gdcmopenjpeg/libopenjpeg/int.c
ENH: Huge update to openjpeg 1.0 (actually more CVS)...
[gdcm.git] / src / gdcmopenjpeg / libopenjpeg / int.c
1 /*\r
2  * Copyright (c) 2001-2003, David Janssens\r
3  * Copyright (c) 2002-2003, Yannick Verschueren\r
4  * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe\r
5  * Copyright (c) 2005, HervĂ© Drolon, FreeImage Team\r
6  * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium\r
7  * All rights reserved.\r
8  *\r
9  * Redistribution and use in source and binary forms, with or without\r
10  * modification, are permitted provided that the following conditions\r
11  * are met:\r
12  * 1. Redistributions of source code must retain the above copyright\r
13  *    notice, this list of conditions and the following disclaimer.\r
14  * 2. Redistributions in binary form must reproduce the above copyright\r
15  *    notice, this list of conditions and the following disclaimer in the\r
16  *    documentation and/or other materials provided with the distribution.\r
17  *\r
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
28  * POSSIBILITY OF SUCH DAMAGE.\r
29  */\r
30 \r
31 #include "opj_includes.h"\r
32 \r
33 int int_min(int a, int b) {\r
34   return a < b ? a : b;\r
35 }\r
36 \r
37 int int_max(int a, int b) {\r
38   return (a > b) ? a : b;\r
39 }\r
40 \r
41 int int_clamp(int a, int min, int max) {\r
42   if (a < min)\r
43     return min;\r
44   if (a > max)\r
45     return max;\r
46   return a;\r
47 }\r
48 \r
49 int int_abs(int a) {\r
50   return a < 0 ? -a : a;\r
51 }\r
52 \r
53 int int_ceildiv(int a, int b) {\r
54   return (a + b - 1) / b;\r
55 }\r
56 \r
57 int int_ceildivpow2(int a, int b) {\r
58   return (a + (1 << b) - 1) >> b;\r
59 }\r
60 \r
61 int int_floordivpow2(int a, int b) {\r
62   return a >> b;\r
63 }\r
64 \r
65 int int_floorlog2(int a) {\r
66   int l;\r
67   for (l = 0; a > 1; l++) {\r
68     a >>= 1;\r
69   }\r
70   return l;\r
71 }\r
72 \r