Module: wine Branch: master Commit: 76b0626ff2d251122c01fb609c2ed9f9b6842e60 URL: http://source.winehq.org/git/wine.git/?a=commit;h=76b0626ff2d251122c01fb609c...
Author: Huw Davies huw@codeweavers.com Date: Tue Aug 2 14:11:07 2011 +0100
gdi32: Add a function to retrieve the rop codes.
---
dlls/gdi32/dibdrv/dibdrv.h | 6 ++++++ dlls/gdi32/dibdrv/objects.c | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/dibdrv/dibdrv.h b/dlls/gdi32/dibdrv/dibdrv.h index 7889ebb..ee08bbd 100644 --- a/dlls/gdi32/dibdrv/dibdrv.h +++ b/dlls/gdi32/dibdrv/dibdrv.h @@ -56,6 +56,12 @@ extern const primitive_funcs funcs_4 DECLSPEC_HIDDEN; extern const primitive_funcs funcs_1 DECLSPEC_HIDDEN; extern const primitive_funcs funcs_null DECLSPEC_HIDDEN;
+struct rop_codes +{ + DWORD a1, a2, x1, x2; +}; + +extern void get_rop_codes(INT rop, struct rop_codes *codes); extern void calc_and_xor_masks(INT rop, DWORD color, DWORD *and, DWORD *xor) DECLSPEC_HIDDEN; extern void update_brush_rop( dibdrv_physdev *pdev, INT rop ) DECLSPEC_HIDDEN; extern void reset_dash_origin(dibdrv_physdev *pdev) DECLSPEC_HIDDEN; diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c index 70e2904..15ce72f 100644 --- a/dlls/gdi32/dibdrv/objects.c +++ b/dlls/gdi32/dibdrv/objects.c @@ -85,11 +85,22 @@ static const DWORD rop2_xor_array[16][2] = #undef ONE #undef ZERO
-void calc_and_xor_masks(INT rop, DWORD color, DWORD *and, DWORD *xor) +void get_rop_codes(INT rop, struct rop_codes *codes) { /* NB The ROP2 codes start at one and the arrays are zero-based */ - *and = (color & rop2_and_array[rop-1][0]) ^ rop2_and_array[rop-1][1]; - *xor = (color & rop2_xor_array[rop-1][0]) ^ rop2_xor_array[rop-1][1]; + codes->a1 = rop2_and_array[rop-1][0]; + codes->a2 = rop2_and_array[rop-1][1]; + codes->x1 = rop2_xor_array[rop-1][0]; + codes->x2 = rop2_xor_array[rop-1][1]; +} + +void calc_and_xor_masks(INT rop, DWORD color, DWORD *and, DWORD *xor) +{ + struct rop_codes codes; + get_rop_codes( rop, &codes ); + + *and = (color & codes.a1) ^ codes.a2; + *xor = (color & codes.x1) ^ codes.x2; }
static inline RGBQUAD rgbquad_from_colorref(COLORREF c)