… | |
… | |
703 | c.color.red = color.r; |
703 | c.color.red = color.r; |
704 | c.color.green = color.g; |
704 | c.color.green = color.g; |
705 | c.color.blue = color.b; |
705 | c.color.blue = color.b; |
706 | c.color.alpha = alpha; |
706 | c.color.alpha = alpha; |
707 | |
707 | |
708 | // ARGB visuals use premultiplied alpha |
708 | // Xft wants premultiplied alpha, but abuses the alpha channel |
709 | if (format->direct.alphaMask) |
709 | // as blend factor, and doesn't allow us to set the alpha channel |
710 | { |
|
|
711 | c.color.red = c.color.red * alpha / 0xffff; |
710 | c.color.red = c.color.red * alpha / 0xffff; |
712 | c.color.green = c.color.green * alpha / 0xffff; |
711 | c.color.green = c.color.green * alpha / 0xffff; |
713 | c.color.blue = c.color.blue * alpha / 0xffff; |
712 | c.color.blue = c.color.blue * alpha / 0xffff; |
714 | } |
|
|
715 | |
713 | |
716 | c.pixel = insert_component (c.color.red , format->direct.redMask , format->direct.red ) |
714 | c.pixel = insert_component (c.color.red , format->direct.redMask , format->direct.red ) |
717 | | insert_component (c.color.green, format->direct.greenMask, format->direct.green) |
715 | | insert_component (c.color.green, format->direct.greenMask, format->direct.green) |
718 | | insert_component (c.color.blue , format->direct.blueMask , format->direct.blue ) |
716 | | insert_component (c.color.blue , format->direct.blueMask , format->direct.blue ) |
719 | | insert_component (alpha , format->direct.alphaMask, format->direct.alpha); |
717 | | insert_component (alpha , format->direct.alphaMask, format->direct.alpha); |