mirror of
https://github.com/glfw/glfw.git
synced 2024-11-14 06:23:50 +00:00
x11: Premultiply custom cursor image alpha
As with Wayland, X11 expects cursor pixels to have the alpha premultiplied, so lets convert the non-premultiplied pixels to premultiplied pixels. Fixes #353. Closes #707.
This commit is contained in:
parent
71c72db1e3
commit
9160a7ceb3
@ -690,10 +690,12 @@ Cursor _glfwCreateCursorX11(const GLFWimage* image, int xhot, int yhot)
|
|||||||
|
|
||||||
for (i = 0; i < image->width * image->height; i++, target++, source += 4)
|
for (i = 0; i < image->width * image->height; i++, target++, source += 4)
|
||||||
{
|
{
|
||||||
*target = (source[3] << 24) |
|
unsigned char alpha = source[3];
|
||||||
(source[0] << 16) |
|
|
||||||
(source[1] << 8) |
|
*target = (alpha << 24) |
|
||||||
source[2];
|
(_glfwMultiplyAlpha(alpha, source[0]) << 16) |
|
||||||
|
(_glfwMultiplyAlpha(alpha, source[1]) << 8) |
|
||||||
|
_glfwMultiplyAlpha(alpha, source[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
cursor = XcursorImageLoadCursor(_glfw.x11.display, native);
|
cursor = XcursorImageLoadCursor(_glfw.x11.display, native);
|
||||||
|
Loading…
Reference in New Issue
Block a user