Huw Davies : gdi32: Keep track of the text pixel color.

Alexandre Julliard julliard at winehq.org
Mon Nov 14 13:33:59 CST 2011


Module: wine
Branch: master
Commit: 15fabcdefe1de1aa62945a5625070cdb424bc7cf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=15fabcdefe1de1aa62945a5625070cdb424bc7cf

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Nov 14 12:49:02 2011 +0000

gdi32: Keep track of the text pixel color.

---

 dlls/gdi32/dibdrv/dc.c     |   16 +++++++++++++++-
 dlls/gdi32/dibdrv/dibdrv.h |    3 +++
 2 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/dlls/gdi32/dibdrv/dc.c b/dlls/gdi32/dibdrv/dc.c
index a91de78..274d586 100644
--- a/dlls/gdi32/dibdrv/dc.c
+++ b/dlls/gdi32/dibdrv/dc.c
@@ -319,6 +319,7 @@ static void update_fg_colors( dibdrv_physdev *pdev )
 {
     pdev->pen_color   = get_pixel_color( pdev, pdev->pen_colorref,   TRUE );
     pdev->brush_color = get_pixel_color( pdev, pdev->brush_colorref, TRUE );
+    pdev->text_color  = get_pixel_color( pdev, GetTextColor( pdev->dev.hdc ), TRUE );
 }
 
 static void update_masks( dibdrv_physdev *pdev, INT rop )
@@ -518,6 +519,19 @@ static INT dibdrv_SetROP2( PHYSDEV dev, INT rop )
     return next->funcs->pSetROP2( next, rop );
 }
 
+/***********************************************************************
+ *           dibdrv_SetTextColor
+ */
+static COLORREF dibdrv_SetTextColor( PHYSDEV dev, COLORREF color )
+{
+    PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSetTextColor );
+    dibdrv_physdev *pdev = get_dibdrv_pdev(dev);
+
+    pdev->text_color = get_pixel_color( pdev, color, TRUE );
+
+    return next->funcs->pSetTextColor( next, color );
+}
+
 const struct gdi_dc_funcs dib_driver =
 {
     NULL,                               /* pAbortDoc */
@@ -638,7 +652,7 @@ const struct gdi_dc_funcs dib_driver =
     NULL,                               /* pSetStretchBltMode */
     NULL,                               /* pSetTextAlign */
     NULL,                               /* pSetTextCharacterExtra */
-    NULL,                               /* pSetTextColor */
+    dibdrv_SetTextColor,                /* pSetTextColor */
     NULL,                               /* pSetTextJustification */
     NULL,                               /* pSetViewportExt */
     NULL,                               /* pSetViewportOrg */
diff --git a/dlls/gdi32/dibdrv/dibdrv.h b/dlls/gdi32/dibdrv/dibdrv.h
index 6ef0d94..93753aa 100644
--- a/dlls/gdi32/dibdrv/dibdrv.h
+++ b/dlls/gdi32/dibdrv/dibdrv.h
@@ -97,6 +97,9 @@ typedef struct dibdrv_physdev
 
     /* background */
     DWORD bkgnd_color, bkgnd_and, bkgnd_xor;
+
+    /* text */
+    DWORD text_color;
 } dibdrv_physdev;
 
 #define DEFER_FORMAT     1




More information about the wine-cvs mailing list