Rebase against a87abdbe85779adf6a2a7897bd88984587880693.

This commit is contained in:
Alistair Leslie-Hughes
2021-10-02 12:00:05 +10:00
parent c4535e89f7
commit 4d66e1bf6b
16 changed files with 618 additions and 140 deletions

View File

@@ -1,4 +1,4 @@
From e26a5fd9e3b44cbee2919398233739d985274638 Mon Sep 17 00:00:00 2001
From 16e4ec7b0a93b164e54a6665af39a25def99bfc8 Mon Sep 17 00:00:00 2001
From: Daniel Wendt <daniel.wendt@linux.com>
Date: Fri, 15 Nov 2013 12:52:37 +0100
Subject: [PATCH] gdi32: fix for rotated Arc, ArcTo, Chord and Pie drawing
@@ -11,10 +11,10 @@ Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=34579
2 files changed, 83 insertions(+)
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index 9ebcaf7e4a3..c4456a76e77 100644
index 875ae308546..ea03cac886f 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -312,6 +312,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
@@ -316,6 +316,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
return pos - count;
}
@@ -75,7 +75,7 @@ index 9ebcaf7e4a3..c4456a76e77 100644
/* backend for arc functions; extra_lines is -1 for ArcTo, 0 for Arc, 1 for Chord, 2 for Pie */
static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
INT start_x, INT start_y, INT end_x, INT end_y, INT extra_lines )
@@ -324,6 +378,22 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -328,6 +382,22 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
BOOL ret = TRUE;
HRGN outline = 0, interior = 0;
@@ -98,7 +98,7 @@ index 9ebcaf7e4a3..c4456a76e77 100644
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
width = rect.right - rect.left;
@@ -357,6 +427,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -361,6 +431,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
points[count].y = rect.top + height / 2;
count++;
}
@@ -114,9 +114,9 @@ index 9ebcaf7e4a3..c4456a76e77 100644
+
if (count < 2)
{
HeapFree( GetProcessHeap(), 0, points );
free( points );
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 9f092913110..8dbf2772555 100644
index 45bd5431a23..3f04d02f7a1 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -303,4 +303,7 @@ static inline int get_dib_info_size( const BITMAPINFO *info, UINT coloruse )

View File

@@ -1,4 +1,4 @@
From 017514cff847b53d409bf5c8735c30d26474ed8f Mon Sep 17 00:00:00 2001
From f678f5184cb4eef1ab47a4f8b4949c83f1af9791 Mon Sep 17 00:00:00 2001
From: Daniel Wendt <daniel.wendt@linux.com>
Date: Tue, 10 Dec 2013 14:55:32 +0100
Subject: [PATCH] gdi32: fix for rotated ellipse
@@ -9,10 +9,10 @@ Bug: http://bugs.winehq.org/show_bug.cgi?id=35331
1 file changed, 42 insertions(+), 18 deletions(-)
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index da9144f0862..6a0519644f4 100644
index ea03cac886f..412d19249f0 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -1535,6 +1535,23 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1541,6 +1541,23 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
BOOL ret = TRUE;
HRGN outline = 0, interior = 0;
@@ -36,7 +36,7 @@ index da9144f0862..6a0519644f4 100644
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
pt[0].x = pt[0].y = 0;
@@ -1555,23 +1572,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1561,23 +1578,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
return FALSE;
}
@@ -44,7 +44,7 @@ index da9144f0862..6a0519644f4 100644
- !(interior = NtGdiCreateRoundRectRgn( rect.left, rect.top, rect.right + 1, rect.bottom + 1,
- ellipse_width, ellipse_height )))
- {
- HeapFree( GetProcessHeap(), 0, points );
- free( points );
- if (outline) NtGdiDeleteObjectApp( outline );
- return FALSE;
- }
@@ -60,7 +60,7 @@ index da9144f0862..6a0519644f4 100644
count = ellipse_first_quadrant( ellipse_width, ellipse_height, points );
if (dc->attr->arc_direction == AD_CLOCKWISE)
@@ -1615,13 +1615,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1621,13 +1621,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
}
count = end + 1;
@@ -76,7 +76,7 @@ index da9144f0862..6a0519644f4 100644
+ if (pdev->brush.style != BS_NULL &&
+ !(interior = NtGdiPolyPolyDraw( ULongToHandle(ALTERNATE), points, (const UINT *)&count, 1, NtGdiPolyPolygonRgn )))
+ {
+ HeapFree( GetProcessHeap(), 0, points );
+ free( points );
+ if (outline) NtGdiDeleteObjectApp( outline );
+ return FALSE;
+ }