Change the Kernel classes to operate over the extra channels as well e.g alpha.
Remove inline accessor methods that are only used internally and are unnecessary for external use.
Ugh, it turns out that LCMS2 does *nothing* with the 'extra' channels e.g alpha. So we have to copy/convert them ourselves.
Allow PNGfile to load and save images with an alpha channel.
Preserve the 'extra' channels (and other information) by modifying the image type instead of providing a new one.
Add alpha support to TIFFfile. Haven't tested reading - possibly need to handle "unassocaited" alpha i.e pre-multiply the pixel values.
Use a template function to give the maximum value of a pixel component and specialise it for each type we use.
Use this function when transferring the alpha channel between images.
Multiply the colour values by the alpha if the alpha channel is "associated". Untested.
Add read support to WebPfile. This will always produce an image with an alpha channel because there doesn't seem to be a way to find out if a WebP file has one (using libwebp, at least). May have to inspect the file ourselves and look for an 'ALPH' chunk.
The libwebp encoder will emit a VP8X chunk if we give it RGBA data, so we have to catch it and modify it instead of writing our own.
Don't modify the RIFF file size in the writer, go back to writing it after everything has finished.
Correctly calculate the 'next'chunk' value when a chunk size is odd.