serenity/Tests/LibPDF
Nico Weber 9c762b9650 LibPDF+Meta: Use a CMYK ICC profile to convert CMYK to RGB
CMYK data describes which inks a printer should use to print a color.
If a screen should display a color that's supposed to look similar
to what the printer produces, it results in a color very different
to what Color::from_cmyk() produces. (It's also printer-dependent.)

There are many ICC profiles describing printing processes. It doesn't
matter too much which one we use -- most of them look somewhat
similar, and they all look dramatically better than Color::from_cmyk().

This patch adds a function to download a zip file that Adobe offers
on their web site. They even have a page for redistribution:
https://www.adobe.com/support/downloads/iccprofiles/icc_eula_win_dist.html

(That one leads to a broken download though, so this downloads the
end-user version.)

In case we have to move off this download at some point, there are also
a whole bunch of profiles at https://www.color.org/registry/index.xalter
that "may be used, embedded, exchanged, and shared without restriction".

The adobe zip contains a whole bunch of other useful and fun profiles,
so I went with it.

For now, this only unzips the USWebCoatedSWOP.icc file though, and
installs it in ${CMAKE_BINARY_DIR}/Root/res/icc/Adobe/CMYK/. In
Serenity builds, this will make it to /res/icc/Adobe/CMYK in the
disk image. And in lagom build, after #23016 this is the
lagom res staging directory that tools can install via
Core::ResourceImplementation. `pdf` and `MacPDF` already do that,
`TestPDF` now does it too.

The final piece is that LibPDF then loads the profile from there
and uses it for DeviceCMYK color conversions.

(Doing file access from the bowels of a library is a bit weird,
especially in a system that has sandboxing built in. But LibGfx does
that in FontDatabase too already, and LibPDF uses that, so it's not a
new problem.)
2024-02-01 13:42:04 -07:00
..
CMakeLists.txt Tests: Add a PDF rendering test 2023-12-20 12:45:07 +01:00
colorspaces.pdf Tests: Add a pdf file for testing color spaces 2023-11-04 17:02:37 -04:00
complex.pdf
encoding.pdf LibPDF: Add (automated!) test for outline encoding 2023-11-22 09:08:06 -07:00
encryption_nocopy.pdf LibPDF: Make encrypted object streams work 2023-07-12 17:16:25 +02:00
linearized.pdf
non-linearized.pdf
oss-fuzz-testcase-62065.pdf LibPDF: Don't use unsanitized values in error messages 2023-10-26 11:05:32 +02:00
password-is-sup.pdf
pattern.pdf Tests: Add a test for LibPDF pattern rendering 2023-12-10 16:44:24 +01:00
rotate.pdf Tests: Add a pdf with text rotation 2024-01-18 14:01:30 +01:00
standard-14-fonts.pdf Tests/LibPDF: Add a PDF using the standard 14 fonts 2024-01-03 10:19:24 +01:00
TestPDF.cpp LibPDF+Meta: Use a CMYK ICC profile to convert CMYK to RGB 2024-02-01 13:42:04 -07:00
text.pdf Tests/LibPDF: Make text.pdf also use Tz, Tc, Tw, Ts operators 2024-01-18 14:01:30 +01:00
type1.pdf
type3.pdf Tests: Add a type3 test pdf 2023-11-19 22:33:34 +01:00
wide-gamut-only.pdf Tests: Add a pdf that embeds a wide-gamut 16-bits/channel image 2024-01-12 16:20:46 -07:00