| 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 |