Windows: Fixed swapped colors for custom cursors

Previously the red and blue color channels were swapped,
since Windows expects a different channel order for DIBs.

This fixes issue #1464.
This commit is contained in:
Mario Liebisch 2018-08-09 13:03:14 +02:00 committed by Lukas Dürrenberger
parent 46ce05cd9c
commit 5e10e1f0c9

View File

@ -89,7 +89,15 @@ bool CursorImpl::loadFromPixels(const Uint8* pixels, Vector2u size, Vector2u hot
} }
// Fill our bitmap with the cursor color data // Fill our bitmap with the cursor color data
std::memcpy(bitmapData, pixels, size.x * size.y * 4); // We'll have to swap the red and blue channels here
Uint8* bitmapOffset = bitmapData;
for (std::size_t remaining = size.x * size.y; remaining; --remaining, pixels += 4)
{
*bitmapOffset++ = pixels[2]; // Blue
*bitmapOffset++ = pixels[1]; // Green
*bitmapOffset++ = pixels[0]; // Red
*bitmapOffset++ = pixels[3]; // Alpha
}
// Create a dummy mask bitmap (it won't be used) // Create a dummy mask bitmap (it won't be used)
HBITMAP mask = CreateBitmap(size.x, size.y, 1, 1, NULL); HBITMAP mask = CreateBitmap(size.x, size.y, 1, 1, NULL);