Fix the bugs in the conversion from drawables to cairo surfaces.
Most of the code was taken from the print plugin, and it includes iterating over pixel regions (instead of fetching them at once), correct support for RGBA (which was buggy previously), etc. This commit removes the usage of A8 cairo surfaces for GRAY layers, simply because it seems not to work. This should be investigated and fixed in order to optimize the file size (by saving gray images as gray). Also should be checked is why we treat the cairo bpp as 4 when calculating the pixel locations in RGB cairo buffers. The print plug-in does this and it works, and when I tried 3 it didn't work. May be because of word alignment...
Showing with 174 additions and 96 deletions