* cjpeg.c
*
* Copyright (C) 1991-1998, Thomas G. Lane.
+ * Modified 2003-2008 by Guido Vollbeding.
+ * Copyright (C) 2010, D. R. Commander.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* default sampling factors.
*/
- } else if (keymatch(arg, "scans", 2)) {
- } else if (keymatch(arg, "scale", 4)) {
- /* Scale the image by a fraction M/N. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%d/%d",
- &cinfo->scale_num, &cinfo->scale_denom) != 2)
- usage();
-
+ } else if (keymatch(arg, "scans", 4)) {
/* Set scan script. */
#ifdef C_MULTISCAN_FILES_SUPPORTED
if (++argn >= argc) /* advance to next argument */
}
++#if JPEG_LIB_VERSION < 70
++static int q_scale_factor = 100;
++#endif
++
GLOBAL(boolean)
- read_quant_tables (j_compress_ptr cinfo, char * filename,
- int scale_factor, boolean force_baseline)
+ read_quant_tables (j_compress_ptr cinfo, char * filename, boolean force_baseline)
/* Read a set of quantization tables from the specified file.
* The file is plain ASCII text: decimal numbers with whitespace between.
* Comments preceded by '#' may be included in the file.
}
table[i] = (unsigned int) val;
}
- jpeg_add_quant_table(cinfo, tblno, table, scale_factor, force_baseline);
++#if JPEG_LIB_VERSION >= 70
+ jpeg_add_quant_table(cinfo, tblno, table, cinfo->q_scale_factor[tblno],
+ force_baseline);
++#else
++ jpeg_add_quant_table(cinfo, tblno, table, q_scale_factor, force_baseline);
++#endif
tblno++;
}
#endif /* C_MULTISCAN_FILES_SUPPORTED */
+ GLOBAL(boolean)
+ set_quality_ratings (j_compress_ptr cinfo, char *arg, boolean force_baseline)
+ /* Process a quality-ratings parameter string, of the form
+ * N[,N,...]
+ * If there are more q-table slots than parameters, the last value is replicated.
+ */
+ {
+ int val = 75; /* default value */
+ int tblno;
+ char ch;
+
+ for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
+ if (*arg) {
+ ch = ','; /* if not set by sscanf, will be ',' */
+ if (sscanf(arg, "%d%c", &val, &ch) < 1)
+ return FALSE;
+ if (ch != ',') /* syntax check */
+ return FALSE;
+ /* Convert user 0-100 rating to percentage scaling */
++#if JPEG_LIB_VERSION >= 70
+ cinfo->q_scale_factor[tblno] = jpeg_quality_scaling(val);
++#endif
+ while (*arg && *arg++ != ',') /* advance to next segment of arg string */
+ ;
+ } else {
+ /* reached end of parameter, set remaining factors to last value */
++#if JPEG_LIB_VERSION >= 70
+ cinfo->q_scale_factor[tblno] = jpeg_quality_scaling(val);
++#endif
+ }
+ }
++#if JPEG_LIB_VERSION >= 70
+ jpeg_default_qtables(cinfo, force_baseline);
++#else
++ jpeg_set_quality(cinfo, val, force_baseline);
++#endif
+ return TRUE;
+ }
+
+
GLOBAL(boolean)
set_quant_slots (j_compress_ptr cinfo, char *arg)
/* Process a quantization-table-selectors parameter string, of the form