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

Reply via email to