Fix a global buffer overflow in GCPDF_CIDFont::_CharCodeFromUnicode
[pdfium.git] / core / src / fxcodec / libjpeg / cdjpeg.h
index be12278..3d728ee 100644 (file)
-/*\r
- * cdjpeg.h\r
- *\r
- * Copyright (C) 1994-1997, Thomas G. Lane.\r
- * This file is part of the Independent JPEG Group's software.\r
- * For conditions of distribution and use, see the accompanying README file.\r
- *\r
- * This file contains common declarations for the sample applications\r
- * cjpeg and djpeg.  It is NOT used by the core JPEG library.\r
- */\r
-\r
-#define JPEG_CJPEG_DJPEG       /* define proper options in jconfig.h */\r
-#define JPEG_INTERNAL_OPTIONS  /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */\r
-#include "jinclude.h"\r
-#include "jpeglib.h"\r
-#include "jerror.h"            /* get library error codes too */\r
-#include "cderror.h"           /* get application-specific error codes */\r
-\r
-\r
-/*\r
- * Object interface for cjpeg's source file decoding modules\r
- */\r
-\r
-typedef struct cjpeg_source_struct * cjpeg_source_ptr;\r
-\r
-struct cjpeg_source_struct {\r
-  JMETHOD(void, start_input, (j_compress_ptr cinfo,\r
-                             cjpeg_source_ptr sinfo));\r
-  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,\r
-                                      cjpeg_source_ptr sinfo));\r
-  JMETHOD(void, finish_input, (j_compress_ptr cinfo,\r
-                              cjpeg_source_ptr sinfo));\r
-\r
-  FXSYS_FILE *input_file;\r
-\r
-  JSAMPARRAY buffer;\r
-  JDIMENSION buffer_height;\r
-};\r
-\r
-\r
-/*\r
- * Object interface for djpeg's output file encoding modules\r
- */\r
-\r
-typedef struct djpeg_dest_struct * djpeg_dest_ptr;\r
-\r
-struct djpeg_dest_struct {\r
-  /* start_output is called after jpeg_start_decompress finishes.\r
-   * The color map will be ready at this time, if one is needed.\r
-   */\r
-  JMETHOD(void, start_output, (j_decompress_ptr cinfo,\r
-                              djpeg_dest_ptr dinfo));\r
-  /* Emit the specified number of pixel rows from the buffer. */\r
-  JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,\r
-                                djpeg_dest_ptr dinfo,\r
-                                JDIMENSION rows_supplied));\r
-  /* Finish up at the end of the image. */\r
-  JMETHOD(void, finish_output, (j_decompress_ptr cinfo,\r
-                               djpeg_dest_ptr dinfo));\r
-\r
-  /* Target file spec; filled in by djpeg.c after object is created. */\r
-  FXSYS_FILE * output_file;\r
-\r
-  /* Output pixel-row buffer.  Created by module init or start_output.\r
-   * Width is cinfo->output_width * cinfo->output_components;\r
-   * height is buffer_height.\r
-   */\r
-  JSAMPARRAY buffer;\r
-  JDIMENSION buffer_height;\r
-};\r
-\r
-\r
-/*\r
- * cjpeg/djpeg may need to perform extra passes to convert to or from\r
- * the source/destination file format.  The JPEG library does not know\r
- * about these passes, but we'd like them to be counted by the progress\r
- * monitor.  We use an expanded progress monitor object to hold the\r
- * additional pass count.\r
- */\r
-\r
-struct cdjpeg_progress_mgr {\r
-  struct jpeg_progress_mgr pub;        /* fields known to JPEG library */\r
-  int completed_extra_passes;  /* extra passes completed */\r
-  int total_extra_passes;      /* total extra */\r
-  /* last printed percentage stored here to avoid multiple printouts */\r
-  int percent_done;\r
-};\r
-\r
-typedef struct cdjpeg_progress_mgr * cd_progress_ptr;\r
-\r
-\r
-/* Short forms of external names for systems with brain-damaged linkers. */\r
-\r
-#ifdef NEED_SHORT_EXTERNAL_NAMES\r
-#define jinit_read_bmp         jIRdBMP\r
-#define jinit_write_bmp                jIWrBMP\r
-#define jinit_read_gif         jIRdGIF\r
-#define jinit_write_gif                jIWrGIF\r
-#define jinit_read_ppm         jIRdPPM\r
-#define jinit_write_ppm                jIWrPPM\r
-#define jinit_read_rle         jIRdRLE\r
-#define jinit_write_rle                jIWrRLE\r
-#define jinit_read_targa       jIRdTarga\r
-#define jinit_write_targa      jIWrTarga\r
-#define read_quant_tables      RdQTables\r
-#define read_scan_script       RdScnScript\r
-#define set_quant_slots                SetQSlots\r
-#define set_sample_factors     SetSFacts\r
-#define read_color_map         RdCMap\r
-#define enable_signal_catcher  EnSigCatcher\r
-#define start_progress_monitor StProgMon\r
-#define end_progress_monitor   EnProgMon\r
-#define read_stdin             RdStdin\r
-#define write_stdout           WrStdout\r
-#endif /* NEED_SHORT_EXTERNAL_NAMES */\r
-\r
-/* Module selection routines for I/O modules. */\r
-\r
-EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));\r
-EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,\r
-                                           boolean is_os2));\r
-EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));\r
-EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));\r
-EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));\r
-EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));\r
-EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));\r
-EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));\r
-EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));\r
-EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));\r
-\r
-/* cjpeg support routines (in rdswitch.c) */\r
-\r
-EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,\r
-                                   int scale_factor, boolean force_baseline));\r
-EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));\r
-EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));\r
-EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));\r
-\r
-/* djpeg support routines (in rdcolmap.c) */\r
-\r
-EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FXSYS_FILE * infile));\r
-\r
-/* common support routines (in cdjpeg.c) */\r
-\r
-EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));\r
-EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,\r
-                                        cd_progress_ptr progress));\r
-EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));\r
-EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));\r
-EXTERN(FXSYS_FILE *) read_stdin JPP((void));\r
-EXTERN(FXSYS_FILE *) write_stdout JPP((void));\r
-\r
-/* miscellaneous useful macros */\r
-\r
-#ifdef DONT_USE_B_MODE         /* define mode parameters for fopen() */\r
-#define READ_BINARY    "r"\r
-#define WRITE_BINARY   "w"\r
-#else\r
-#ifdef VMS                     /* VMS is very nonstandard */\r
-#define READ_BINARY    "rb", "ctx=stm"\r
-#define WRITE_BINARY   "wb", "ctx=stm"\r
-#else                          /* standard ANSI-compliant case */\r
-#define READ_BINARY    "rb"\r
-#define WRITE_BINARY   "wb"\r
-#endif\r
-#endif\r
-\r
-#ifndef EXIT_FAILURE           /* define exit() codes if not provided */\r
-#define EXIT_FAILURE  1\r
-#endif\r
-#ifndef EXIT_SUCCESS\r
-#ifdef VMS\r
-#define EXIT_SUCCESS  1                /* VMS is very nonstandard */\r
-#else\r
-#define EXIT_SUCCESS  0\r
-#endif\r
-#endif\r
-#ifndef EXIT_WARNING\r
-#ifdef VMS\r
-#define EXIT_WARNING  1                /* VMS is very nonstandard */\r
-#else\r
-#define EXIT_WARNING  2\r
-#endif\r
-#endif\r
+/*
+ * cdjpeg.h
+ *
+ * Copyright (C) 1994-1997, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains common declarations for the sample applications
+ * cjpeg and djpeg.  It is NOT used by the core JPEG library.
+ */
+
+#define JPEG_CJPEG_DJPEG       /* define proper options in jconfig.h */
+#define JPEG_INTERNAL_OPTIONS  /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
+#include "jinclude.h"
+#include "jpeglib.h"
+#include "jerror.h"            /* get library error codes too */
+#include "cderror.h"           /* get application-specific error codes */
+
+
+/*
+ * Object interface for cjpeg's source file decoding modules
+ */
+
+typedef struct cjpeg_source_struct * cjpeg_source_ptr;
+
+struct cjpeg_source_struct {
+  JMETHOD(void, start_input, (j_compress_ptr cinfo,
+                             cjpeg_source_ptr sinfo));
+  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
+                                      cjpeg_source_ptr sinfo));
+  JMETHOD(void, finish_input, (j_compress_ptr cinfo,
+                              cjpeg_source_ptr sinfo));
+
+  FXSYS_FILE *input_file;
+
+  JSAMPARRAY buffer;
+  JDIMENSION buffer_height;
+};
+
+
+/*
+ * Object interface for djpeg's output file encoding modules
+ */
+
+typedef struct djpeg_dest_struct * djpeg_dest_ptr;
+
+struct djpeg_dest_struct {
+  /* start_output is called after jpeg_start_decompress finishes.
+   * The color map will be ready at this time, if one is needed.
+   */
+  JMETHOD(void, start_output, (j_decompress_ptr cinfo,
+                              djpeg_dest_ptr dinfo));
+  /* Emit the specified number of pixel rows from the buffer. */
+  JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,
+                                djpeg_dest_ptr dinfo,
+                                JDIMENSION rows_supplied));
+  /* Finish up at the end of the image. */
+  JMETHOD(void, finish_output, (j_decompress_ptr cinfo,
+                               djpeg_dest_ptr dinfo));
+
+  /* Target file spec; filled in by djpeg.c after object is created. */
+  FXSYS_FILE * output_file;
+
+  /* Output pixel-row buffer.  Created by module init or start_output.
+   * Width is cinfo->output_width * cinfo->output_components;
+   * height is buffer_height.
+   */
+  JSAMPARRAY buffer;
+  JDIMENSION buffer_height;
+};
+
+
+/*
+ * cjpeg/djpeg may need to perform extra passes to convert to or from
+ * the source/destination file format.  The JPEG library does not know
+ * about these passes, but we'd like them to be counted by the progress
+ * monitor.  We use an expanded progress monitor object to hold the
+ * additional pass count.
+ */
+
+struct cdjpeg_progress_mgr {
+  struct jpeg_progress_mgr pub;        /* fields known to JPEG library */
+  int completed_extra_passes;  /* extra passes completed */
+  int total_extra_passes;      /* total extra */
+  /* last printed percentage stored here to avoid multiple printouts */
+  int percent_done;
+};
+
+typedef struct cdjpeg_progress_mgr * cd_progress_ptr;
+
+
+/* Short forms of external names for systems with brain-damaged linkers. */
+
+#ifdef NEED_SHORT_EXTERNAL_NAMES
+#define jinit_read_bmp         jIRdBMP
+#define jinit_write_bmp                jIWrBMP
+#define jinit_read_gif         jIRdGIF
+#define jinit_write_gif                jIWrGIF
+#define jinit_read_ppm         jIRdPPM
+#define jinit_write_ppm                jIWrPPM
+#define jinit_read_rle         jIRdRLE
+#define jinit_write_rle                jIWrRLE
+#define jinit_read_targa       jIRdTarga
+#define jinit_write_targa      jIWrTarga
+#define read_quant_tables      RdQTables
+#define read_scan_script       RdScnScript
+#define set_quant_slots                SetQSlots
+#define set_sample_factors     SetSFacts
+#define read_color_map         RdCMap
+#define enable_signal_catcher  EnSigCatcher
+#define start_progress_monitor StProgMon
+#define end_progress_monitor   EnProgMon
+#define read_stdin             RdStdin
+#define write_stdout           WrStdout
+#endif /* NEED_SHORT_EXTERNAL_NAMES */
+
+/* Module selection routines for I/O modules. */
+
+EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,
+                                           boolean is_os2));
+EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));
+
+/* cjpeg support routines (in rdswitch.c) */
+
+EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,
+                                   int scale_factor, boolean force_baseline));
+EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));
+EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));
+EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));
+
+/* djpeg support routines (in rdcolmap.c) */
+
+EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FXSYS_FILE * infile));
+
+/* common support routines (in cdjpeg.c) */
+
+EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));
+EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,
+                                        cd_progress_ptr progress));
+EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));
+EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));
+EXTERN(FXSYS_FILE *) read_stdin JPP((void));
+EXTERN(FXSYS_FILE *) write_stdout JPP((void));
+
+/* miscellaneous useful macros */
+
+#ifdef DONT_USE_B_MODE         /* define mode parameters for fopen() */
+#define READ_BINARY    "r"
+#define WRITE_BINARY   "w"
+#else
+#ifdef VMS                     /* VMS is very nonstandard */
+#define READ_BINARY    "rb", "ctx=stm"
+#define WRITE_BINARY   "wb", "ctx=stm"
+#else                          /* standard ANSI-compliant case */
+#define READ_BINARY    "rb"
+#define WRITE_BINARY   "wb"
+#endif
+#endif
+
+#ifndef EXIT_FAILURE           /* define exit() codes if not provided */
+#define EXIT_FAILURE  1
+#endif
+#ifndef EXIT_SUCCESS
+#ifdef VMS
+#define EXIT_SUCCESS  1                /* VMS is very nonstandard */
+#else
+#define EXIT_SUCCESS  0
+#endif
+#endif
+#ifndef EXIT_WARNING
+#ifdef VMS
+#define EXIT_WARNING  1                /* VMS is very nonstandard */
+#else
+#define EXIT_WARNING  2
+#endif
+#endif