mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:32:43 +00:00 
			
		
		
		
	 9c762b9650
			
		
	
	
		9c762b9650
		
	
	
	
	
		
			
			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.)
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			706 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			706 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
| set(SOURCES
 | |
|     ColorSpace.cpp
 | |
|     CommonNames.cpp
 | |
|     Document.cpp
 | |
|     DocumentParser.cpp
 | |
|     Encoding.cpp
 | |
|     Encryption.cpp
 | |
|     Filter.cpp
 | |
|     Fonts/CFF.cpp
 | |
|     Fonts/PDFFont.cpp
 | |
|     Fonts/PS1FontProgram.cpp
 | |
|     Fonts/SimpleFont.cpp
 | |
|     Fonts/TrueTypeFont.cpp
 | |
|     Fonts/Type0Font.cpp
 | |
|     Fonts/Type1Font.cpp
 | |
|     Fonts/Type1FontProgram.cpp
 | |
|     Fonts/Type3Font.cpp
 | |
|     Function.cpp
 | |
|     Interpolation.cpp
 | |
|     ObjectDerivatives.cpp
 | |
|     Page.cpp
 | |
|     Parser.cpp
 | |
|     Reader.cpp
 | |
|     Renderer.cpp
 | |
|     Value.cpp
 | |
|     )
 | |
| 
 | |
| serenity_lib(LibPDF pdf)
 | |
| target_link_libraries(LibPDF PRIVATE LibCompress LibCore LibIPC LibGfx LibTextCodec LibCrypto)
 | |
| 
 | |
| include(${SerenityOS_SOURCE_DIR}/Meta/CMake/download_icc_profiles.cmake)
 |