blob: ffd57eb95ed68d2420e3c3234f880e949156c972 [file] [log] [blame]
From f08c698a40f8fc6f91f09445038b1aaeba1f04b2 Mon Sep 17 00:00:00 2001
From: Till Kamppeter <till.kamppeter@gmail.com>
Date: Thu, 3 Dec 2020 23:46:25 +0100
Subject: [PATCH] libcupsfilters: Corrected color space mapping in
cupsRasterParseIPPOptions()
---
NEWS | 6 +++++
cupsfilters/raster.c | 64 +++++++++++++++++++++++++++++++++++---------
2 files changed, 57 insertions(+), 13 deletions(-)
diff --git a/NEWS b/NEWS
index 738f0eb8..a7a76e58 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,12 @@
NEWS - OpenPrinting CUPS Filters v1.28.5 - 2020-10-13
-----------------------------------------------------
+CHANGES IN V2.0.0
+
+ - libcupsfilters: In the cupsRasterParseIPPOptions() map the
+ color spaces the same way as in the PPD generator (Issue
+ #326, Pull request #327).
+
CHANGES IN V1.28.5
- cups-browsed: UUID from IPP response was used after its
diff --git a/cupsfilters/raster.c b/cupsfilters/raster.c
index c8e2b8f9..45ce8d6b 100644
--- a/cupsfilters/raster.c
+++ b/cupsfilters/raster.c
@@ -771,6 +771,25 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
colorspace = 20;
numcolors = 3;
}
+ else if (!strncasecmp(val, "adobe-rgb", 9))
+ {
+ if (*(val + 9) == '_' || *(val + 9) == '-')
+ ptr = val + 10;
+ colorspace = 20;
+ numcolors = 3;
+ }
+ else if (!strcasecmp(val, "auto-monochrome"))
+ {
+ colorspace = 18;
+ numcolors = 1;
+ }
+ else if (!strcasecmp(val, "bi-level") ||
+ !strcasecmp(val, "process-bi-level"))
+ {
+ bitspercolor = 1;
+ colorspace = 3;
+ numcolors = 1;
+ }
else if (!strncasecmp(val, "Black", 5))
{
if (*(val + 5) == '_' || *(val + 5) == '-')
@@ -779,22 +798,30 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
colorspace = 3;
numcolors = 1;
}
+ else if (!strcasecmp(val, "process-monochrome"))
+ {
+ colorspace = 18;
+ numcolors = 1;
+ }
else if (!strncasecmp(val, "Monochrome", 10))
{
if (*(val + 10) == '_' || *(val + 10) == '-')
ptr = val + 11;
- bitspercolor = 1;
- colorspace = 3;
+ colorspace = 18;
numcolors = 1;
}
else if (!strncasecmp(val, "Mono", 4))
{
if (*(val + 4) == '_' || *(val + 4) == '-')
ptr = val + 5;
- bitspercolor = 1;
- colorspace = 3;
+ colorspace = 18;
numcolors = 1;
}
+ else if (!strcasecmp(val, "color"))
+ {
+ colorspace = 19;
+ numcolors = 3;
+ }
else if (!strncasecmp(val, "Cmyk", 4))
{
if (*(val + 4) == '_' || *(val + 4) == '-')
@@ -835,7 +862,7 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
{
if (*(val + 4) == '_' || *(val + 4) == '-')
ptr = val + 5;
- colorspace = 3;
+ colorspace = 18;
numcolors = 1;
}
else if (!strncasecmp(val, "Srgb", 4))
@@ -859,6 +886,17 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
colorspace = 1;
numcolors = 3;
}
+ else if (!strcasecmp(val, "auto"))
+ {
+ /* Let "auto" not look like an error */
+ if (set_defaults)
+ {
+ fprintf(stderr,
+ "DEBUG: \"Auto\" mode, using default RGB color space.\n");
+ colorspace = 19;
+ numcolors = 3;
+ }
+ }
if (numcolors > 0)
{
if (ptr)
@@ -879,19 +917,19 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
fprintf(stderr, "DEBUG: Bad color space value \"%s\".\n", val);
if (set_defaults)
{
- h->cupsBitsPerColor = 1;
- h->cupsBitsPerPixel = 1;
- h->cupsColorSpace = 3;
- h->cupsNumColors = 1;
+ h->cupsBitsPerColor = 8;
+ h->cupsBitsPerPixel = 24;
+ h->cupsColorSpace = 19;
+ h->cupsNumColors = 3;
}
}
}
else if (set_defaults)
{
- h->cupsBitsPerColor = 1;
- h->cupsBitsPerPixel = 1;
- h->cupsColorSpace = 3;
- h->cupsNumColors = 1;
+ h->cupsBitsPerColor = 8;
+ h->cupsBitsPerPixel = 24;
+ h->cupsColorSpace = 19;
+ h->cupsNumColors = 3;
}
h->cupsBytesPerLine = (h->cupsWidth * h->cupsBitsPerPixel + 7) / 8;
--
2.29.2.576.ga3fc446d84-goog