As a sidequest of a sidequest of a sidequest [1], I'm adding a "Convert to Bilevel…" feature to SerenityOS's PixelPaint.
I've been wanting to implement Floyd-Steinberg error diffusion dithering (something much simpler than this long name might suggest) for literally decades, cool that I finally got around to it :)
1: PDFs can contain an obscure file format called JBIG2, so I needed to write a JBIG2 decoder. That needs tests, there are very few JBIG2 encoders out there, and the ones that exist use way fewer features than what's found in PDFs, so I'm writing a JBIG2 encoder too. JBIG2 can only store black and white pixels, so I needed to write a "convert to bilevel" feature. And since I have that anyway, might as well hook it up!















