Raster Data encoding
Pixels are stored bottom-up, left-to-right in the same manner as monochrome BMPs. Pixel lines are padded with zeros to end on a 32bit (4byte) boundary. Every line will have the same number of bytes. Every byte holds 8 pixels, its highest order bit representing the leftmost pixel of those. Remember padding with zeros up to a 32bit boundary (This can be up to 31 zeros/pixels!). Although there are 2 color table entries, I haven't seen a file that uses them, since Windows seems to ignore its contents.
Whenever Windows draws a cursor the ANDbitmap is applied to whatever is on the screen. After that, the XOR Bitmap is applied. Both bitmaps are encoded in the same scheme as monochrome BMPs. When there is more than one cursor in the file Windows uses the one that matches the system settings.
AND | XOR | Result |
---|
0 | 0 | Black pixel |
0 | 1 | White pixel |
1 | 0 | Transparent Background pixel |
1 | 1 | Inverted Background pixel |