Alexandre Julliard : gdi32: Clip output to both the DIB visible rectangle and the total DIB extents.
Alexandre Julliard
julliard at winehq.org
Tue Jun 5 14:46:53 CDT 2012
Module: wine
Branch: master
Commit: c07763b4194c3dc81391c8d74d0552f5140b18ef
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c07763b4194c3dc81391c8d74d0552f5140b18ef
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Jun 4 22:22:29 2012 +0200
gdi32: Clip output to both the DIB visible rectangle and the total DIB extents.
---
dlls/gdi32/dibdrv/dc.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/gdi32/dibdrv/dc.c b/dlls/gdi32/dibdrv/dc.c
index 798a9cd..df51332 100644
--- a/dlls/gdi32/dibdrv/dc.c
+++ b/dlls/gdi32/dibdrv/dc.c
@@ -263,10 +263,11 @@ int get_clipped_rects( const dib_info *dib, const RECT *rc, HRGN clip, struct cl
init_clipped_rects( clip_rects );
- rect.left = 0;
- rect.top = 0;
- rect.right = dib->rect.right - dib->rect.left;
- rect.bottom = dib->rect.bottom - dib->rect.top;
+ rect.left = max( 0, -dib->rect.left );
+ rect.top = max( 0, -dib->rect.top );
+ rect.right = min( dib->rect.right, dib->width ) - dib->rect.left;
+ rect.bottom = min( dib->rect.bottom, dib->height ) - dib->rect.top;
+ if (is_rect_empty( &rect )) return 0;
if (rc && !intersect_rect( &rect, &rect, rc )) return 0;
if (!clip)
More information about the wine-cvs
mailing list