Roderick Colenbrander : winex11: Add a helper function for converting a random color to a XRenderColor.
Alexandre Julliard
julliard at winehq.org
Mon Jul 13 07:56:21 CDT 2009
Module: wine
Branch: master
Commit: ea700f5d549f0cfbbb7ff2e445f714aa2858c7e1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea700f5d549f0cfbbb7ff2e445f714aa2858c7e1
Author: Roderick Colenbrander <thunderbird2k at gmail.com>
Date: Mon Jul 6 23:01:07 2009 +0200
winex11: Add a helper function for converting a random color to a XRenderColor.
---
dlls/winex11.drv/xrender.c | 41 ++++++++++++++++++++++++-----------------
1 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index dd53f23..a3f5c3b 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -390,6 +390,29 @@ sym_not_found:
else TRACE("Using X11 core fonts\n");
}
+/* Helper function to convert from a color packed in a 32-bit integer to a XRenderColor */
+static void get_xrender_color(WineXRenderFormat *wxr_format, int src_color, XRenderColor *dst_color)
+{
+ XRenderPictFormat *pf = wxr_format->pict_format;
+
+ if(pf->direct.redMask)
+ dst_color->red = ((src_color >> pf->direct.red) & pf->direct.redMask) * 65535/pf->direct.redMask;
+ else
+ dst_color->red = 0;
+
+ if(pf->direct.greenMask)
+ dst_color->green = ((src_color >> pf->direct.green) & pf->direct.greenMask) * 65535/pf->direct.greenMask;
+ else
+ dst_color->green = 0;
+
+ if(pf->direct.blueMask)
+ dst_color->blue = ((src_color >> pf->direct.blue) & pf->direct.blueMask) * 65535/pf->direct.blueMask;
+ else
+ dst_color->blue = 0;
+
+ dst_color->alpha = 0xffff;
+}
+
static WineXRenderFormat *get_xrender_format(WXRFormat format)
{
int i;
@@ -1323,23 +1346,7 @@ static Picture get_tile_pict(WineXRenderFormat *wxr_format, int text_pixel)
if(text_pixel != tile->current_color && wxr_format->format != WXR_FORMAT_MONO)
{
- /* Map 0 -- 0xff onto 0 -- 0xffff */
- int r_shift, r_len;
- int g_shift, g_len;
- int b_shift, b_len;
-
- ExamineBitfield (visual->red_mask, &r_shift, &r_len );
- ExamineBitfield (visual->green_mask, &g_shift, &g_len);
- ExamineBitfield (visual->blue_mask, &b_shift, &b_len);
-
- col.red = GetField(text_pixel, r_shift, r_len);
- col.red |= col.red << 8;
- col.green = GetField(text_pixel, g_shift, g_len);
- col.green |= col.green << 8;
- col.blue = GetField(text_pixel, b_shift, b_len);
- col.blue |= col.blue << 8;
- col.alpha = 0xffff;
-
+ get_xrender_color(wxr_format, text_pixel, &col);
wine_tsx11_lock();
pXRenderFillRectangle(gdi_display, PictOpSrc, tile->pict, &col, 0, 0, 1, 1);
wine_tsx11_unlock();
More information about the wine-cvs
mailing list