OLD | NEW |
1 /* | 1 /* |
2 * cdjpeg.h | 2 * cdjpeg.h |
3 * | 3 * |
| 4 * This file was part of the Independent JPEG Group's software: |
4 * Copyright (C) 1994-1997, Thomas G. Lane. | 5 * Copyright (C) 1994-1997, Thomas G. Lane. |
5 * This file is part of the Independent JPEG Group's software. | 6 * It was modified by The libjpeg-turbo Project to include only code relevant |
6 * For conditions of distribution and use, see the accompanying README file. | 7 * to libjpeg-turbo. |
| 8 * For conditions of distribution and use, see the accompanying README.ijg |
| 9 * file. |
7 * | 10 * |
8 * This file contains common declarations for the sample applications | 11 * This file contains common declarations for the sample applications |
9 * cjpeg and djpeg. It is NOT used by the core JPEG library. | 12 * cjpeg and djpeg. It is NOT used by the core JPEG library. |
10 */ | 13 */ |
11 | 14 |
12 #define JPEG_CJPEG_DJPEG» /* define proper options in jconfig.h */ | 15 #define JPEG_CJPEG_DJPEG /* define proper options in jconfig.h */ |
13 #define JPEG_INTERNAL_OPTIONS» /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */ | 16 #define JPEG_INTERNAL_OPTIONS /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */ |
14 #include "jinclude.h" | 17 #include "jinclude.h" |
15 #include "jpeglib.h" | 18 #include "jpeglib.h" |
16 #include "jerror.h"» » /* get library error codes too */ | 19 #include "jerror.h" /* get library error codes too */ |
17 #include "cderror.h"» » /* get application-specific error codes */ | 20 #include "cderror.h" /* get application-specific error codes */ |
18 | 21 |
19 | 22 |
20 /* | 23 /* |
21 * Object interface for cjpeg's source file decoding modules | 24 * Object interface for cjpeg's source file decoding modules |
22 */ | 25 */ |
23 | 26 |
24 typedef struct cjpeg_source_struct * cjpeg_source_ptr; | 27 typedef struct cjpeg_source_struct *cjpeg_source_ptr; |
25 | 28 |
26 struct cjpeg_source_struct { | 29 struct cjpeg_source_struct { |
27 JMETHOD(void, start_input, (j_compress_ptr cinfo, | 30 void (*start_input) (j_compress_ptr cinfo, cjpeg_source_ptr sinfo); |
28 » » » cjpeg_source_ptr sinfo)); | 31 JDIMENSION (*get_pixel_rows) (j_compress_ptr cinfo, cjpeg_source_ptr sinfo); |
29 JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo, | 32 void (*finish_input) (j_compress_ptr cinfo, cjpeg_source_ptr sinfo); |
30 » » » » cjpeg_source_ptr sinfo)); | |
31 JMETHOD(void, finish_input, (j_compress_ptr cinfo, | |
32 » » » cjpeg_source_ptr sinfo)); | |
33 | 33 |
34 FILE *input_file; | 34 FILE *input_file; |
35 | 35 |
36 JSAMPARRAY buffer; | 36 JSAMPARRAY buffer; |
37 JDIMENSION buffer_height; | 37 JDIMENSION buffer_height; |
38 }; | 38 }; |
39 | 39 |
40 | 40 |
41 /* | 41 /* |
42 * Object interface for djpeg's output file encoding modules | 42 * Object interface for djpeg's output file encoding modules |
43 */ | 43 */ |
44 | 44 |
45 typedef struct djpeg_dest_struct * djpeg_dest_ptr; | 45 typedef struct djpeg_dest_struct *djpeg_dest_ptr; |
46 | 46 |
47 struct djpeg_dest_struct { | 47 struct djpeg_dest_struct { |
48 /* start_output is called after jpeg_start_decompress finishes. | 48 /* start_output is called after jpeg_start_decompress finishes. |
49 * The color map will be ready at this time, if one is needed. | 49 * The color map will be ready at this time, if one is needed. |
50 */ | 50 */ |
51 JMETHOD(void, start_output, (j_decompress_ptr cinfo, | 51 void (*start_output) (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo); |
52 » » » djpeg_dest_ptr dinfo)); | |
53 /* Emit the specified number of pixel rows from the buffer. */ | 52 /* Emit the specified number of pixel rows from the buffer. */ |
54 JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo, | 53 void (*put_pixel_rows) (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo, |
55 » » » » djpeg_dest_ptr dinfo, | 54 JDIMENSION rows_supplied); |
56 » » » » JDIMENSION rows_supplied)); | |
57 /* Finish up at the end of the image. */ | 55 /* Finish up at the end of the image. */ |
58 JMETHOD(void, finish_output, (j_decompress_ptr cinfo, | 56 void (*finish_output) (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo); |
59 » » » » djpeg_dest_ptr dinfo)); | |
60 | 57 |
61 /* Target file spec; filled in by djpeg.c after object is created. */ | 58 /* Target file spec; filled in by djpeg.c after object is created. */ |
62 FILE * output_file; | 59 FILE *output_file; |
63 | 60 |
64 /* Output pixel-row buffer. Created by module init or start_output. | 61 /* Output pixel-row buffer. Created by module init or start_output. |
65 * Width is cinfo->output_width * cinfo->output_components; | 62 * Width is cinfo->output_width * cinfo->output_components; |
66 * height is buffer_height. | 63 * height is buffer_height. |
67 */ | 64 */ |
68 JSAMPARRAY buffer; | 65 JSAMPARRAY buffer; |
69 JDIMENSION buffer_height; | 66 JDIMENSION buffer_height; |
70 }; | 67 }; |
71 | 68 |
72 | 69 |
73 /* | 70 /* |
74 * cjpeg/djpeg may need to perform extra passes to convert to or from | 71 * cjpeg/djpeg may need to perform extra passes to convert to or from |
75 * the source/destination file format. The JPEG library does not know | 72 * the source/destination file format. The JPEG library does not know |
76 * about these passes, but we'd like them to be counted by the progress | 73 * about these passes, but we'd like them to be counted by the progress |
77 * monitor. We use an expanded progress monitor object to hold the | 74 * monitor. We use an expanded progress monitor object to hold the |
78 * additional pass count. | 75 * additional pass count. |
79 */ | 76 */ |
80 | 77 |
81 struct cdjpeg_progress_mgr { | 78 struct cdjpeg_progress_mgr { |
82 struct jpeg_progress_mgr pub;»/* fields known to JPEG library */ | 79 struct jpeg_progress_mgr pub; /* fields known to JPEG library */ |
83 int completed_extra_passes;» /* extra passes completed */ | 80 int completed_extra_passes; /* extra passes completed */ |
84 int total_extra_passes;» /* total extra */ | 81 int total_extra_passes; /* total extra */ |
85 /* last printed percentage stored here to avoid multiple printouts */ | 82 /* last printed percentage stored here to avoid multiple printouts */ |
86 int percent_done; | 83 int percent_done; |
87 }; | 84 }; |
88 | 85 |
89 typedef struct cdjpeg_progress_mgr * cd_progress_ptr; | 86 typedef struct cdjpeg_progress_mgr *cd_progress_ptr; |
90 | 87 |
91 | 88 |
92 /* Short forms of external names for systems with brain-damaged linkers. */ | |
93 | |
94 #ifdef NEED_SHORT_EXTERNAL_NAMES | |
95 #define jinit_read_bmp jIRdBMP | |
96 #define jinit_write_bmp jIWrBMP | |
97 #define jinit_read_gif jIRdGIF | |
98 #define jinit_write_gif jIWrGIF | |
99 #define jinit_read_ppm jIRdPPM | |
100 #define jinit_write_ppm jIWrPPM | |
101 #define jinit_read_rle jIRdRLE | |
102 #define jinit_write_rle jIWrRLE | |
103 #define jinit_read_targa jIRdTarga | |
104 #define jinit_write_targa jIWrTarga | |
105 #define read_quant_tables RdQTables | |
106 #define read_scan_script RdScnScript | |
107 #define set_quality_ratings SetQRates | |
108 #define set_quant_slots SetQSlots | |
109 #define set_sample_factors SetSFacts | |
110 #define read_color_map RdCMap | |
111 #define enable_signal_catcher EnSigCatcher | |
112 #define start_progress_monitor StProgMon | |
113 #define end_progress_monitor EnProgMon | |
114 #define read_stdin RdStdin | |
115 #define write_stdout WrStdout | |
116 #endif /* NEED_SHORT_EXTERNAL_NAMES */ | |
117 | |
118 /* Module selection routines for I/O modules. */ | 89 /* Module selection routines for I/O modules. */ |
119 | 90 |
120 EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo)); | 91 EXTERN(cjpeg_source_ptr) jinit_read_bmp (j_compress_ptr cinfo); |
121 EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo, | 92 EXTERN(djpeg_dest_ptr) jinit_write_bmp (j_decompress_ptr cinfo, |
122 » » » » » boolean is_os2)); | 93 boolean is_os2); |
123 EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo)); | 94 EXTERN(cjpeg_source_ptr) jinit_read_gif (j_compress_ptr cinfo); |
124 EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo)); | 95 EXTERN(djpeg_dest_ptr) jinit_write_gif (j_decompress_ptr cinfo); |
125 EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo)); | 96 EXTERN(cjpeg_source_ptr) jinit_read_ppm (j_compress_ptr cinfo); |
126 EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo)); | 97 EXTERN(djpeg_dest_ptr) jinit_write_ppm (j_decompress_ptr cinfo); |
127 EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo)); | 98 EXTERN(cjpeg_source_ptr) jinit_read_rle (j_compress_ptr cinfo); |
128 EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo)); | 99 EXTERN(djpeg_dest_ptr) jinit_write_rle (j_decompress_ptr cinfo); |
129 EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo)); | 100 EXTERN(cjpeg_source_ptr) jinit_read_targa (j_compress_ptr cinfo); |
130 EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo)); | 101 EXTERN(djpeg_dest_ptr) jinit_write_targa (j_decompress_ptr cinfo); |
131 | 102 |
132 /* cjpeg support routines (in rdswitch.c) */ | 103 /* cjpeg support routines (in rdswitch.c) */ |
133 | 104 |
134 EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename, | 105 EXTERN(boolean) read_quant_tables (j_compress_ptr cinfo, char *filename, |
135 » » » » boolean force_baseline)); | 106 boolean force_baseline); |
136 EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename)); | 107 EXTERN(boolean) read_scan_script (j_compress_ptr cinfo, char *filename); |
137 EXTERN(boolean) set_quality_ratings JPP((j_compress_ptr cinfo, char *arg, | 108 EXTERN(boolean) set_quality_ratings (j_compress_ptr cinfo, char *arg, |
138 » » » » » boolean force_baseline)); | 109 boolean force_baseline); |
139 EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg)); | 110 EXTERN(boolean) set_quant_slots (j_compress_ptr cinfo, char *arg); |
140 EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg)); | 111 EXTERN(boolean) set_sample_factors (j_compress_ptr cinfo, char *arg); |
141 | 112 |
142 /* djpeg support routines (in rdcolmap.c) */ | 113 /* djpeg support routines (in rdcolmap.c) */ |
143 | 114 |
144 EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FILE * infile)); | 115 EXTERN(void) read_color_map (j_decompress_ptr cinfo, FILE *infile); |
145 | 116 |
146 /* common support routines (in cdjpeg.c) */ | 117 /* common support routines (in cdjpeg.c) */ |
147 | 118 |
148 EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo)); | 119 EXTERN(void) enable_signal_catcher (j_common_ptr cinfo); |
149 EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo, | 120 EXTERN(void) start_progress_monitor (j_common_ptr cinfo, |
150 » » » » » cd_progress_ptr progress)); | 121 cd_progress_ptr progress); |
151 EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo)); | 122 EXTERN(void) end_progress_monitor (j_common_ptr cinfo); |
152 EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars)); | 123 EXTERN(boolean) keymatch (char *arg, const char *keyword, int minchars); |
153 EXTERN(FILE *) read_stdin JPP((void)); | 124 EXTERN(FILE *) read_stdin (void); |
154 EXTERN(FILE *) write_stdout JPP((void)); | 125 EXTERN(FILE *) write_stdout (void); |
155 | 126 |
156 /* miscellaneous useful macros */ | 127 /* miscellaneous useful macros */ |
157 | 128 |
158 #ifdef DONT_USE_B_MODE» » /* define mode parameters for fopen() */ | 129 #ifdef DONT_USE_B_MODE /* define mode parameters for fopen() */ |
159 #define READ_BINARY» "r" | 130 #define READ_BINARY "r" |
160 #define WRITE_BINARY» "w" | 131 #define WRITE_BINARY "w" |
161 #else | 132 #else |
162 #ifdef VMS» » » /* VMS is very nonstandard */ | 133 #define READ_BINARY "rb" |
163 #define READ_BINARY» "rb", "ctx=stm" | 134 #define WRITE_BINARY "wb" |
164 #define WRITE_BINARY» "wb", "ctx=stm" | |
165 #else» » » » /* standard ANSI-compliant case */ | |
166 #define READ_BINARY» "rb" | |
167 #define WRITE_BINARY» "wb" | |
168 #endif | |
169 #endif | 135 #endif |
170 | 136 |
171 #ifndef EXIT_FAILURE» » /* define exit() codes if not provided */ | 137 #ifndef EXIT_FAILURE /* define exit() codes if not provided */ |
172 #define EXIT_FAILURE 1 | 138 #define EXIT_FAILURE 1 |
173 #endif | 139 #endif |
174 #ifndef EXIT_SUCCESS | 140 #ifndef EXIT_SUCCESS |
175 #ifdef VMS | |
176 #define EXIT_SUCCESS 1 /* VMS is very nonstandard */ | |
177 #else | |
178 #define EXIT_SUCCESS 0 | 141 #define EXIT_SUCCESS 0 |
179 #endif | 142 #endif |
180 #endif | |
181 #ifndef EXIT_WARNING | 143 #ifndef EXIT_WARNING |
182 #ifdef VMS | |
183 #define EXIT_WARNING 1 /* VMS is very nonstandard */ | |
184 #else | |
185 #define EXIT_WARNING 2 | 144 #define EXIT_WARNING 2 |
186 #endif | 145 #endif |
187 #endif | |
OLD | NEW |