1 /* Copyright (C) 2001-2006 Artifex Software, Inc.
2    All Rights Reserved.
3 
4    This software is provided AS-IS with no warranty, either express or
5    implied.
6 
7    This software is distributed under license and may not be copied, modified
8    or distributed except as expressly authorized under the terms of that
9    license.  Refer to licensing information at http://www.artifex.com/
10    or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
11    San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
12 */
13 
14 /* $Id: sjpeg.h 8022 2007-06-05 22:23:38Z giles $ */
15 /* IJG entry point wrappers */
16 /* Requires sdct.h, jpeg/jpeglib.h */
17 
18 #ifndef sjpeg_INCLUDED
19 #  define sjpeg_INCLUDED
20 
21 /*
22  * Each routine gs_jpeg_xxx is equivalent to the IJG entry point jpeg_xxx,
23  * except that
24  *   (a) it takes a pointer to stream_DCT_state instead of just the IJG
25  *       jpeg_(de)compress_data struct;
26  *   (b) it catches any error exit from the IJG code and converts it into
27  *       an error return value per Ghostscript custom.  A negative return
28  *       value is an error code, except for gs_jpeg_alloc_xxx which return
29  *       NULL (indicating e_VMerror).
30  */
31 
32 /* Common to encode/decode */
33 
34 void gs_jpeg_error_setup(stream_DCT_state * st);
35 int gs_jpeg_log_error(stream_DCT_state * st);
36 JQUANT_TBL *gs_jpeg_alloc_quant_table(stream_DCT_state * st);
37 JHUFF_TBL *gs_jpeg_alloc_huff_table(stream_DCT_state * st);
38 int gs_jpeg_destroy(stream_DCT_state * st);
39 
40 /* Encode */
41 
42 int gs_jpeg_create_compress(stream_DCT_state * st);
43 int gs_jpeg_set_defaults(stream_DCT_state * st);
44 int gs_jpeg_set_colorspace(stream_DCT_state * st,
45 			   J_COLOR_SPACE colorspace);
46 int gs_jpeg_set_linear_quality(stream_DCT_state * st,
47 			       int scale_factor, boolean force_baseline);
48 int gs_jpeg_set_quality(stream_DCT_state * st,
49 			int quality, boolean force_baseline);
50 int gs_jpeg_start_compress(stream_DCT_state * st,
51 			   boolean write_all_tables);
52 int gs_jpeg_write_scanlines(stream_DCT_state * st,
53 			    JSAMPARRAY scanlines, int num_lines);
54 int gs_jpeg_finish_compress(stream_DCT_state * st);
55 
56 /* Decode */
57 
58 int gs_jpeg_create_decompress(stream_DCT_state * st);
59 int gs_jpeg_read_header(stream_DCT_state * st,
60 			boolean require_image);
61 int gs_jpeg_start_decompress(stream_DCT_state * st);
62 int gs_jpeg_read_scanlines(stream_DCT_state * st,
63 			   JSAMPARRAY scanlines, int max_lines);
64 int gs_jpeg_finish_decompress(stream_DCT_state * st);
65 
66 #endif /* sjpeg_INCLUDED */
67