RFR: 8315113: Print request Chromaticity.MONOCHROME attribute does not work on macOS

GennadiyKrivoshein duke at openjdk.org
Wed Nov 13 19:59:46 UTC 2024


This update allows users to print with grayscale using color printers.
Actually, it is not possible to use the "Monochrome" option from the "Color Appearance" panel. Also Chromaticity.MONOCHROME can't be used to print grayscale on color printers ([JDK-8315113](https://bugs.openjdk.org/browse/JDK-8315113)).

**Fix description**
When a printer supports color printing and a user adds Chromaticity.MONOCHROME attribute to a PrintRequestAttributeSet, then the final printing raster is transformed to the grayscale color using java.awt.image.ColorConvertOp. When the job is a PostScript job, then the "setColor" and "setPaint" methods of the Graphics are overridden, and user colors (paints) are transformed to the grayscale form using the new proxy class GrayscaleProxyGraphics2D.

This approach is assumed to be platform, CUPS, and IPP protocol independent.

**Tests**
The fix was tested on Ubuntu 22.04 and MacOS 12.6.1.

-------------

Commit messages:
 - Update src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterJob.java
 - update copyright
 - formatting
 - grammar fixes
 - 8315113: Print request Chromaticity.MONOCHROME attribute does not work on macOS

Changes: https://git.openjdk.org/jdk/pull/21930/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21930&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8315113
  Stats: 564 lines in 7 files changed: 556 ins; 0 del; 8 mod
  Patch: https://git.openjdk.org/jdk/pull/21930.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21930/head:pull/21930

PR: https://git.openjdk.org/jdk/pull/21930


More information about the client-libs-dev mailing list