-CHANGES - 2.3.1 - 2019-11-27
+CHANGES - 2.3.1 - 2019-12-02
============================
Issue #5683, Issue #5684)
- The IPP backend did not detect all cases where a job should be retried using
a raster format (rdar://56021091)
+- Fixed a few issues with the Apple Raster support (rdar://55301114)
- Fixed spelling of "fold-accordion".
- Fixed the default common name for TLS certificates used by `ippeveprinter`.
- Fixed the option names used for IPP Everywhere finishing options.
/*
* Raster file routines for CUPS.
*
- * Copyright 2007-2018 by Apple Inc.
+ * Copyright 2007-2019 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* This file is part of the CUPS Imaging library.
* Local globals...
*/
+static const char * const apple_media_types[] =
+{ /* media-type values for Apple Raster */
+ "auto",
+ "stationery",
+ "transparency",
+ "envelope",
+ "cardstock",
+ "labels",
+ "stationery-letterhead",
+ "disc",
+ "photographic-matte",
+ "photographic-satin",
+ "photographic-semi-gloss",
+ "photographic-glossy",
+ "photographic-high-gloss",
+ "other"
+};
+
#ifdef DEBUG
static const char * const cups_modes[] =
{ /* Open modes */
{
CUPS_CSPACE_SW,
CUPS_CSPACE_SRGB,
- CUPS_CSPACE_RGBW,
+ CUPS_CSPACE_CIELab,
CUPS_CSPACE_ADOBERGB,
CUPS_CSPACE_W,
CUPS_CSPACE_RGB,
{
1,
3,
- 4,
+ 3,
3,
1,
3,
r->header.cupsPageSize[1] = (float)(r->header.cupsHeight * 72.0 / r->header.HWResolution[1]);
}
- r->header.cupsInteger[0] = r->apple_page_count;
- r->header.cupsInteger[7] = 0xffffff;
+ r->header.cupsInteger[CUPS_RASTER_PWG_TotalPageCount] = r->apple_page_count;
+ r->header.cupsInteger[CUPS_RASTER_PWG_AlternatePrimary] = 0xffffff;
+ r->header.cupsInteger[CUPS_RASTER_PWG_PrintQuality] = appleheader[3];
+
+ if (appleheader[2] >= 2)
+ r->header.Duplex = 1;
+ if (appleheader[2] == 2)
+ r->header.Tumble = 1;
+
+ r->header.MediaPosition = appleheader[5];
+
+ if (appleheader[4] < (int)(sizeof(apple_media_types) / sizeof(apple_media_types[0])))
+ strlcpy(r->header.MediaType, apple_media_types[appleheader[4]], sizeof(r->header.MediaType));
+ else
+ strlcpy(r->header.MediaType, "other", sizeof(r->header.MediaType));
}
break;
}
* zeroed.
*/
- unsigned char appleheader[32]; /* Raw page header */
- unsigned height = r->header.cupsHeight * r->rowheight;
+ int i; /* Looping var */
+ unsigned char appleheader[32];/* Raw page header */
+ unsigned height = r->header.cupsHeight * r->rowheight;
/* Computed page height */
if (r->apple_page_count == 0xffffffffU)
appleheader[0] = (unsigned char)r->header.cupsBitsPerPixel;
appleheader[1] = r->header.cupsColorSpace == CUPS_CSPACE_SRGB ? 1 :
- r->header.cupsColorSpace == CUPS_CSPACE_RGBW ? 2 :
+ r->header.cupsColorSpace == CUPS_CSPACE_CIELab ? 2 :
r->header.cupsColorSpace == CUPS_CSPACE_ADOBERGB ? 3 :
r->header.cupsColorSpace == CUPS_CSPACE_W ? 4 :
r->header.cupsColorSpace == CUPS_CSPACE_RGB ? 5 :
r->header.cupsColorSpace == CUPS_CSPACE_CMYK ? 6 : 0;
+ appleheader[2] = r->header.Duplex ? (r->header.Tumble ? 2 : 3) : 1;
+ appleheader[3] = r->header.cupsInteger[CUPS_RASTER_PWG_PrintQuality];
+ appleheader[5] = (unsigned char)(r->header.MediaPosition);
appleheader[12] = (unsigned char)(r->header.cupsWidth >> 24);
appleheader[13] = (unsigned char)(r->header.cupsWidth >> 16);
appleheader[14] = (unsigned char)(r->header.cupsWidth >> 8);
appleheader[22] = (unsigned char)(r->header.HWResolution[0] >> 8);
appleheader[23] = (unsigned char)(r->header.HWResolution[0]);
+ for (i = 0; i < (int)(sizeof(apple_media_types) / sizeof(apple_media_types[0])); i ++)
+ {
+ if (!strcmp(r->header.MediaType, apple_media_types[i]))
+ {
+ appleheader[4] = i;
+ break;
+ }
+ }
+
return (cups_raster_io(r, appleheader, sizeof(appleheader)) == sizeof(appleheader));
}
else
/*
* Raster test program routines for CUPS.
*
- * Copyright © 2007-2018 by Apple Inc.
+ * Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
static int do_ras_file(const char *filename);
static int do_raster_tests(cups_mode_t mode);
-static void print_changes(cups_page_header2_t *header,
- cups_page_header2_t *expected);
+static void print_changes(cups_page_header2_t *header, cups_page_header2_t *expected);
/*
header.cupsPageSize[0] = 288.0f;
header.cupsPageSize[1] = 288.0f;
+ strlcpy(header.MediaType, "auto", sizeof(header.MediaType));
+
if (page & 1)
{
header.cupsBytesPerLine *= 4;
expected.PageSize[0] = 288;
expected.PageSize[1] = 288;
+ strlcpy(expected.MediaType, "auto", sizeof(expected.MediaType));
+
if (mode != CUPS_RASTER_WRITE_PWG)
{
expected.cupsPageSize[0] = 288.0f;