[trunk] add ability in opj_compress to input subsampled images through
[openjpeg.git] / src / bin / jp2 / convert.h
1 /*
2  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3  * Copyright (c) 2002-2007, Professor Benoit Macq
4  * Copyright (c) 2001-2003, David Janssens
5  * Copyright (c) 2002-2003, Yannick Verschueren
6  * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 #ifndef __J2K_CONVERT_H
32 #define __J2K_CONVERT_H
33
34 /**@name RAW component encoding parameters */
35 /*@{*/
36 typedef struct raw_comp_cparameters {
37     /** subsampling in X direction */
38     int dx;
39     /** subsampling in Y direction */
40     int dy;
41     /*@}*/
42 } raw_comp_cparameters_t;
43
44 /**@name RAW image encoding parameters */
45 /*@{*/
46 typedef struct raw_cparameters {
47         /** width of the raw image */
48         int rawWidth;
49         /** height of the raw image */
50         int rawHeight;
51     /** number of components of the raw image */
52         int rawComp;
53     /** bit depth of the raw image */
54     int rawBitDepth;
55     /** signed/unsigned raw image */
56     OPJ_BOOL rawSigned;
57     /** raw components parameters */
58     raw_comp_cparameters_t *rawComps;
59         /*@}*/
60 } raw_cparameters_t;
61
62 /* TGA conversion */
63 opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters);
64 int imagetotga(opj_image_t * image, const char *outfile);
65
66 /* BMP conversion */
67 opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters);
68 int imagetobmp(opj_image_t *image, const char *outfile);
69
70 /* TIFF conversion*/
71 opj_image_t* tiftoimage(const char *filename, opj_cparameters_t *parameters);
72 int imagetotif(opj_image_t *image, const char *outfile);
73 /**
74 Load a single image component encoded in PGX file format
75 @param filename Name of the PGX file to load
76 @param parameters *List ?*
77 @return Returns a greyscale image if successful, returns NULL otherwise
78 */
79 opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters);
80 int imagetopgx(opj_image_t *image, const char *outfile);
81
82 opj_image_t* pnmtoimage(const char *filename, opj_cparameters_t *parameters);
83 int imagetopnm(opj_image_t *image, const char *outfile);
84
85 /* RAW conversion */
86 int imagetoraw(opj_image_t * image, const char *outfile);
87 int imagetorawl(opj_image_t * image, const char *outfile);
88 opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw_cparameters_t *raw_cp);
89 opj_image_t* rawltoimage(const char *filename, opj_cparameters_t *parameters, raw_cparameters_t *raw_cp);
90
91 /* PNG conversion*/
92 extern int imagetopng(opj_image_t *image, const char *write_idf);
93 extern opj_image_t* pngtoimage(const char *filename, opj_cparameters_t *parameters);
94
95 #endif /* __J2K_CONVERT_H */
96