ladybird/Userland/Libraries
Nico Weber 21917e7b1e LibPDF+PDFViewer+MacPDF: Don't draw hidden text by default
Text can be rendered in various ways in PDFs: Filled, stroked,
both filled and stroked, set as clipping path, hidden, or
some combinations thereof.

We don't implement any of this at the moment except "filled".

Hidden text is used in scanned documents: The image of the scan is
drawn in the background, and then OCRd text is "drawn" as hidden
on top of the scanned bitmap. That way, the (hidden) text can be
selected and copied, and it looks like you're selecting text from
the scanned bitmap. Find-in-page also works similarly. (We currently
have neither text selection nor find-in-page, but one day we will.)

Now that we have pretty good support for CCITT and are growing some
support for JBIG2, we now draw both the scanned background image
as well as the foreground text. They're not always perfectly aligned.

This change makes it so that we don't render text that's marked as
hidden. (We still do most of the coordinate math, which will probably
come in handy at some point when we implement text selection.)

This makes these scanned documents appear as they're supposed to
appear (at least in documents where we manage to decode the background
bitmap).

This also adds a debug option to force rendering of hidden text.
2024-03-16 13:10:48 -04:00
..
LibAccelGfx LibAccelGfx+LibWeb+WebContent: Handle OpenGL Context init errors 2024-01-24 19:43:51 +01:00
LibArchive Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibAudio AK+Lagom: Make it possible to build for iOS 2024-03-03 13:13:42 -07:00
LibC AK+Userland: Introduce ByteString::create_and_overwrite 2024-02-24 15:06:52 -07:00
LibCards Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibChess Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibCMake LibSyntax+Userland: Make LibSyntax not depend on LibGUI 2023-08-29 07:57:39 -04:00
LibCodeComprehension Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCompress AK+Lagom: Make it possible to build for iOS 2024-03-03 13:13:42 -07:00
LibConfig LibConfig+ConfigServer: Add permissive mode 2024-03-07 17:49:01 -05:00
LibCore LibCore: Replace MIME type description lookup with a more generic method 2024-03-16 08:42:33 +01:00
LibCoredump Everywhere: Remove references to UserspaceEmulator 2024-01-29 20:20:55 +00:00
LibCpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCrypt Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCrypto LibCrypto: Remove unused Crypto::PK::EMSA_PSS class 2024-03-16 01:17:02 -06:00
LibDebug Everywhere: Prefer {:#x} over 0x{:x} in format strings 2024-02-21 17:54:38 +01:00
LibDesktop AppFile: Add spawn_with_escalation 2024-02-23 09:47:27 +01:00
LibDeviceTree LibDeviceTree: Add a simple DeviceTree class 2024-02-24 16:43:44 -07:00
LibDiff patch+LibDiff: Add support for applying patches with preprocessor macro 2024-03-03 08:56:00 +01:00
LibDNS Userland: Remove LibCore dependency from libraries that do not use it 2024-01-22 08:48:34 -05:00
LibDSP Everywhere: Prefer VERIFY over assert() 2024-02-05 07:03:53 -05:00
LibEDID Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibELF LibELF: Prevent negative index when determining dynamic symbol count 2024-03-14 18:19:04 -06:00
LibFileSystem AK+Lagom: Make it possible to build for iOS 2024-03-03 13:13:42 -07:00
LibFileSystemAccessClient LibFileSystemAccessClient+Userland: Return file paths as ByteStrings 2024-01-29 23:14:39 +00:00
LibGemini Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibGfx LibGfx/JBIG2: Call decode_immediate_generic_region for lossless regions 2024-03-16 09:21:42 -04:00
LibGL LibGL: Create symlinks for headers and shared library 2024-02-22 03:48:08 +01:00
LibGLSL LibGLSL: Add tests for GLSL parser 2023-08-18 15:29:48 +02:00
LibGPU LibGL+LibGPU+LibSoftGPU: Implement blend equations 2024-02-19 23:23:40 +01:00
LibGUI LibGUI: Add FileTypeFilter factories for common audio and video types 2024-03-16 08:42:33 +01:00
LibHTTP LibHTTP: Disable finish repeat timer before deferring job completion 2024-03-02 20:45:35 +03:30
LibIDL LibIDL: Ignore leading underscores in IDL identifier names 2024-03-12 09:31:41 +01:00
LibImageDecoderClient ImageViewer: Transform the image's dimension accordingly to the metadata 2024-02-21 08:31:17 +00:00
LibIMAP Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibIPC LibIPC: Add support for encoding and decoding Array<T, N> 2024-03-06 07:19:10 +01:00
LibJIT Userland: Remove LibCore dependency from libraries that do not use it 2024-01-22 08:48:34 -05:00
LibJS LibJS+LibWeb: Change JobCallback to be GC-allocated 2024-03-16 14:27:06 +01:00
LibKeyboard Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibLine LibLine: Ensure suggestions are reset after ^C 2024-02-29 09:09:47 +01:00
LibLocale Userland: Remove LibCore dependency from libraries that do not use it 2024-01-22 08:48:34 -05:00
LibMain
LibManual Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibMarkdown Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibPartition
LibPCIDB Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibPDF LibPDF+PDFViewer+MacPDF: Don't draw hidden text by default 2024-03-16 13:10:48 -04:00
LibProtocol Everywhere: Merge the WebSocket service into RequestServer 2024-03-06 10:07:27 +01:00
LibRegex AK+LibRegex+LibWasm: Remove the non-const COWVector::operator[] 2024-03-12 17:10:47 +01:00
LibRIFF Userland: Remove LibCore dependency from libraries that do not use it 2024-01-22 08:48:34 -05:00
LibSanitizer LibSanitizer: Add _abort variants of UBSan handlers 2023-08-13 05:14:07 +02:00
LibSemVer Libraries: Implement SemVer for version parsing and comparisons 2024-02-15 18:23:05 +01:00
LibSoftGPU LibGL+LibGPU+LibSoftGPU: Implement blend equations 2024-02-19 23:23:40 +01:00
LibSQL LibSQL: Use Core::Environment instead of Core::System::*env() 2024-02-27 08:33:48 +00:00
LibSymbolication AK+Everywhere: Remove JsonValue APIs with implicit default values 2024-01-21 15:47:53 -07:00
LibSyntax Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibSystem
LibTest Userland+Tests: Remove unused <AK/Tuple.h> includes 2024-03-01 14:05:53 -07:00
LibTextCodec LibTextCodec+AK: Don't validate UTF-8 strings twice 2023-12-30 13:49:50 +01:00
LibThreading Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibTimeZone Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibTLS LibCrypto: Remove unused Crypto::PK::EMSA_PSS class 2024-03-16 01:17:02 -06:00
LibUnicode Userland: Remove LibCore dependency from libraries that do not use it 2024-01-22 08:48:34 -05:00
LibUSBDB Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibVideo LibVideo: Replace DeprecatedFlyString with FlyString 2024-01-14 15:00:13 -07:00
LibVirtGPU LibGL+Lib*GPU: Set model view and projection matrices separately 2023-10-15 12:14:07 +02:00
LibVT LibVT: Ability to generate each of the 32 ASCII control characters 2024-02-11 08:50:51 +01:00
LibWasm LibWasm: Remove uses of AK::Result 2024-03-12 17:10:47 +01:00
LibWeb LibWeb: Don't run HTMLImageElement timer when there is no animation 2024-03-16 16:35:54 +01:00
LibWebSocket Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibWebView Ladybird+LibWeb+WebContent: Parse the <input type=file> accept attribute 2024-03-16 08:42:33 +01:00
LibX86 Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibXML AK+LibXML+JSSpecCompiler: Move LineTrackingLexer to AK 2024-02-16 15:26:43 +01:00
CMakeLists.txt Libraries: Implement SemVer for version parsing and comparisons 2024-02-15 18:23:05 +01:00