Module: wine Branch: master Commit: 9285915720cb50814b24e305753287e5f2093b42 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9285915720cb50814b24e30575...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Mar 10 20:38:51 2011 +0100
wineps: Add support for SetDCBrush/PenColor.
---
dlls/wineps.drv/brush.c | 17 +++++++++++++++++ dlls/wineps.drv/pen.c | 13 +++++++++++++ dlls/wineps.drv/wineps.drv.spec | 2 ++ 3 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dlls/wineps.drv/brush.c b/dlls/wineps.drv/brush.c index c88ab49..c7b350c 100644 --- a/dlls/wineps.drv/brush.c +++ b/dlls/wineps.drv/brush.c @@ -35,6 +35,9 @@ HBRUSH CDECL PSDRV_SelectBrush( PSDRV_PDEVICE *physDev, HBRUSH hbrush )
TRACE("hbrush = %p\n", hbrush);
+ if (hbrush == GetStockObject( DC_BRUSH )) + logbrush.lbColor = GetDCBrushColor( physDev->hdc ); + switch(logbrush.lbStyle) {
case BS_SOLID: @@ -62,6 +65,20 @@ HBRUSH CDECL PSDRV_SelectBrush( PSDRV_PDEVICE *physDev, HBRUSH hbrush ) }
+/*********************************************************************** + * SetDCBrushColor (WINEPS.@) + */ +COLORREF CDECL PSDRV_SetDCBrushColor( PSDRV_PDEVICE *physDev, COLORREF color ) +{ + if (GetCurrentObject( physDev->hdc, OBJ_BRUSH ) == GetStockObject( DC_BRUSH )) + { + PSDRV_CreateColor( physDev, &physDev->brush.color, color ); + physDev->brush.set = FALSE; + } + return color; +} + + /********************************************************************** * * PSDRV_SetBrush diff --git a/dlls/wineps.drv/pen.c b/dlls/wineps.drv/pen.c index 529c738..f8f4037 100644 --- a/dlls/wineps.drv/pen.c +++ b/dlls/wineps.drv/pen.c @@ -69,6 +69,8 @@ HPEN CDECL PSDRV_SelectPen( PSDRV_PDEVICE *physDev, HPEN hpen ) physDev->pen.width = PSDRV_XWStoDS( physDev, physDev->pen.width ); if(physDev->pen.width < 0) physDev->pen.width = -physDev->pen.width; } + if (hpen == GetStockObject( DC_PEN )) + logpen.lopnColor = GetDCPenColor( physDev->hdc );
switch (logpen.lopnStyle & PS_JOIN_MASK) { @@ -124,6 +126,17 @@ HPEN CDECL PSDRV_SelectPen( PSDRV_PDEVICE *physDev, HPEN hpen ) }
+/*********************************************************************** + * SetDCPenColor (WINEPS.@) + */ +COLORREF CDECL PSDRV_SetDCPenColor( PSDRV_PDEVICE *physDev, COLORREF color ) +{ + if (GetCurrentObject( physDev->hdc, OBJ_PEN ) == GetStockObject( DC_PEN )) + PSDRV_CreateColor( physDev, &physDev->pen.color, color ); + return color; +} + + /********************************************************************** * * PSDRV_SetPen diff --git a/dlls/wineps.drv/wineps.drv.spec b/dlls/wineps.drv/wineps.drv.spec index 38ada75..d14d919 100644 --- a/dlls/wineps.drv/wineps.drv.spec +++ b/dlls/wineps.drv/wineps.drv.spec @@ -31,6 +31,8 @@ @ cdecl SelectFont(ptr long long) PSDRV_SelectFont @ cdecl SelectPen(ptr long) PSDRV_SelectPen @ cdecl SetBkColor(ptr long) PSDRV_SetBkColor +@ cdecl SetDCBrushColor(ptr long) PSDRV_SetDCBrushColor +@ cdecl SetDCPenColor(ptr long) PSDRV_SetDCPenColor @ cdecl SetDeviceClipping(ptr long long) PSDRV_SetDeviceClipping @ cdecl SetPixel(ptr long long long) PSDRV_SetPixel @ cdecl SetTextColor(ptr long) PSDRV_SetTextColor