mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-05-21 10:38:24 +00:00
Annex C describes how to read a grayscale bitmap with n bits per pixel: It's encoded as n bilevel bitmaps, where each bilevel bitmap stores one bit of the grayscale value (using a en.wikipedia.org/wiki/Gray_code, which is named after Frank Gray and doesn't normally have much to do with grayscale images). A halftone region stores a grayscale bitmap and a linear coordinate system the grayscale bitmap is in. The grayscale bitmap is overlaid the halftone region using the coordinate system, and each sample in the grayscale bitmap is used as an index into a pattern dictionary and the bitmap at that index is drawn at the current location. This allows for efficient compression of ordered dithering (but not error-diffusion dithering). This does not yet implement halftone region decoding for MMR bitmaps. The halftone region decoding procedure is the only way to call the generic region decoding procedure with a skip pattern. This does include code to compute the skip pattern, but support for that is not yet implemented in the generic region decoding procedure, so it'll error out when encountered. (I haven't yet found a file using this feature, not a way to create such a file yet.)