[trunk] Remove some warnings about missing prototypes (gcc)
[openjpeg.git] / src / lib / openjp3d / volume.c
1 /*\r
2  * Copyright (c) 2005, Herve Drolon, FreeImage Team\r
3  * All rights reserved.\r
4  *\r
5  * Redistribution and use in source and binary forms, with or without\r
6  * modification, are permitted provided that the following conditions\r
7  * are met:\r
8  * 1. Redistributions of source code must retain the above copyright\r
9  *    notice, this list of conditions and the following disclaimer.\r
10  * 2. Redistributions in binary form must reproduce the above copyright\r
11  *    notice, this list of conditions and the following disclaimer in the\r
12  *    documentation and/or other materials provided with the distribution.\r
13  *\r
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
18  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
24  * POSSIBILITY OF SUCH DAMAGE.\r
25  */\r
26 \r
27 #include "opj_includes.h"\r
28 #include "volume.h"\r
29 #include "openjp3d.h"\r
30 \r
31 opj_volume_t* OPJ_CALLCONV opj_volume_create(int numcmpts, opj_volume_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc) {\r
32         int compno;\r
33         opj_volume_t *volume = NULL;\r
34 \r
35         volume = (opj_volume_t*)opj_malloc(sizeof(opj_volume_t));\r
36         if(volume) {\r
37                 volume->color_space = clrspc;\r
38                 volume->numcomps = numcmpts;\r
39                 /* allocate memory for the per-component information */\r
40                 volume->comps = (opj_volume_comp_t*)opj_malloc(volume->numcomps * sizeof(opj_volume_comp_t));\r
41                 if(!volume->comps) {\r
42                         opj_volume_destroy(volume);\r
43                         return NULL;\r
44                 }\r
45                 /* create the individual volume components */\r
46                 for(compno = 0; compno < numcmpts; compno++) {\r
47                         opj_volume_comp_t *comp = &volume->comps[compno];\r
48                         comp->dx = cmptparms[compno].dx;\r
49                         comp->dy = cmptparms[compno].dy;\r
50                         comp->dz = cmptparms[compno].dz;\r
51                         comp->w = cmptparms[compno].w;\r
52                         comp->h = cmptparms[compno].h;\r
53                         comp->l = cmptparms[compno].l;\r
54                         comp->x0 = cmptparms[compno].x0;\r
55                         comp->y0 = cmptparms[compno].y0;\r
56                         comp->z0 = cmptparms[compno].z0;\r
57                         comp->prec = cmptparms[compno].prec;\r
58                         comp->bpp = cmptparms[compno].bpp;\r
59                         comp->sgnd = cmptparms[compno].sgnd;\r
60                         comp->bigendian = cmptparms[compno].bigendian;\r
61                         comp->dcoffset = cmptparms[compno].dcoffset;\r
62                         comp->data = (int*)opj_malloc(comp->w * comp->h * comp->l * sizeof(int));\r
63                         if(!comp->data) {\r
64                                 fprintf(stdout,"Unable to malloc comp->data (%d x %d x %d x bytes)",comp->w,comp->h,comp->l);\r
65                                 opj_volume_destroy(volume);\r
66                                 return NULL;\r
67                         }\r
68                         /*fprintf(stdout,"%d %d %d %d %d %d %d %d %d", comp->w,comp->h, comp->l, comp->dx, comp->dy, comp->dz, comp->prec, comp->bpp, comp->sgnd);*/\r
69                 }\r
70         }\r
71 \r
72         return volume;\r
73 }\r
74 \r
75 void OPJ_CALLCONV opj_volume_destroy(opj_volume_t *volume) {\r
76         int i;\r
77         if(volume) {\r
78                 if(volume->comps) {\r
79                         /* volume components */\r
80                         for(i = 0; i < volume->numcomps; i++) {\r
81                                 opj_volume_comp_t *volume_comp = &volume->comps[i];\r
82                                 if(volume_comp->data) {\r
83                                         opj_free(volume_comp->data);\r
84                                 }\r
85                         }\r
86                         opj_free(volume->comps);\r
87                 }\r
88                 opj_free(volume);\r
89         }\r
90 }\r
91 \r