gdi32: Simplify dibdrv_PutImage a little.

This commit is contained in:
Huw Davies 2011-08-19 16:26:16 +01:00 committed by Alexandre Julliard
parent de213f2c66
commit 2e908e067c
1 changed files with 9 additions and 12 deletions

View File

@ -490,7 +490,7 @@ static DWORD dibdrv_PutImage( PHYSDEV dev, HBITMAP hbitmap, HRGN clip, BITMAPINF
DWORD ret; DWORD ret;
POINT origin; POINT origin;
dib_info src_dib; dib_info src_dib;
HRGN total_clip, saved_clip = NULL; HRGN saved_clip = NULL;
dibdrv_physdev *pdev = NULL; dibdrv_physdev *pdev = NULL;
const WINEREGION *clip_data; const WINEREGION *clip_data;
int i, rop2; int i, rop2;
@ -518,6 +518,7 @@ static DWORD dibdrv_PutImage( PHYSDEV dev, HBITMAP hbitmap, HRGN clip, BITMAPINF
goto done; goto done;
} }
dib = &stand_alone; dib = &stand_alone;
rop = SRCCOPY;
} }
else else
{ {
@ -544,22 +545,18 @@ static DWORD dibdrv_PutImage( PHYSDEV dev, HBITMAP hbitmap, HRGN clip, BITMAPINF
origin.x = src->visrect.left; origin.x = src->visrect.left;
origin.y = src->visrect.top; origin.y = src->visrect.top;
if (hbitmap) if (!hbitmap)
{
total_clip = clip;
rop2 = R2_COPYPEN;
}
else
{ {
if (clip) saved_clip = add_extra_clipping_region( pdev, clip ); if (clip) saved_clip = add_extra_clipping_region( pdev, clip );
total_clip = pdev->clip; clip = pdev->clip;
rop2 = ((rop >> 16) & 0xf) + 1;
} }
if (total_clip == NULL) dib->funcs->copy_rect( dib, &dst->visrect, &src_dib, &origin, rop2 ); rop2 = ((rop >> 16) & 0xf) + 1;
if (clip == NULL) dib->funcs->copy_rect( dib, &dst->visrect, &src_dib, &origin, rop2 );
else else
{ {
clip_data = get_wine_region( total_clip ); clip_data = get_wine_region( clip );
for (i = 0; i < clip_data->numRects; i++) for (i = 0; i < clip_data->numRects; i++)
{ {
RECT clipped_rect; RECT clipped_rect;
@ -571,7 +568,7 @@ static DWORD dibdrv_PutImage( PHYSDEV dev, HBITMAP hbitmap, HRGN clip, BITMAPINF
dib->funcs->copy_rect( dib, &clipped_rect, &src_dib, &origin, rop2 ); dib->funcs->copy_rect( dib, &clipped_rect, &src_dib, &origin, rop2 );
} }
} }
release_wine_region( total_clip ); release_wine_region( clip );
} }
ret = ERROR_SUCCESS; ret = ERROR_SUCCESS;