Why not support Y8? As it is now all RGB channels are identical. Sure you can do something like
pg_draw(...).ShowRed("Y8"), but wouldn't be faster/more efficient if you process/output one greyscale plane from the get-go rather than 3 identical ones? Just my 2 cents
.