Alignment parameters
Conversion functions, L_ClrConvert, and L_ClrConvertDirect, take two alignment parameters, one for the input buffer, and the other one for the output buffer. Non-zero values for these parameters indicate that the input and output buffer's scanlines (rows of pixels) are padded with extra non-image bytes so that the total number of bytes in each scanline is a multiple of nInAlign (input buffer) or nOutAlign (output buffer).
For example, consider having a 3 column x 1 row CMY image buffer (9 bytes total) to be converted to RGB:
If the input buffer is not aligned and you need the output buffer to be aligned by 4 bytes (a memory need), call L_ClrConvert or L_ClrConvertDirect with:
nInAlign = 0
nOutAlign = 4
If the above 3 column x 1 row CMY input buffer is 4-bytes aligned (12 bytes total), and the output buffer is not to be aligned call L_ClrConvert or L_ClrConvertDirect with:
nInAlign = 4
nOutAlign = 0
If the above 3 column x 1 row CMY input buffer is 4-bytes aligned (12 bytes total), and the output buffer needs to be 4-bytes aligned, call L_ClrConvert or L_ClrConvertDirect with:
nInAlign = 4
nOutAlign = 4
Any other combination may be used for any supported color conversions. In any case the user should allocate enough memory for the actual pixels and the additional alignment bytes if any.