You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 7554bd4b41a1429517eb86fd20dbe813cdd0550a.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 16e4ec7b0a93b164e54a6665af39a25def99bfc8 Mon Sep 17 00:00:00 2001
|
||||
From dc2aaa6a25ebccc30c7903fa68235d5971f8d6b8 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
|
||||
@@ -6,22 +6,21 @@ Subject: [PATCH] gdi32: fix for rotated Arc, ArcTo, Chord and Pie drawing
|
||||
|
||||
Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=34579
|
||||
---
|
||||
dlls/gdi32/dibdrv/graphics.c | 80 ++++++++++++++++++++++++++++++++++++
|
||||
dlls/gdi32/gdi_private.h | 3 ++
|
||||
2 files changed, 83 insertions(+)
|
||||
dlls/win32u/dibdrv/graphics.c | 80 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 80 insertions(+)
|
||||
|
||||
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
|
||||
index 875ae308546..ea03cac886f 100644
|
||||
--- a/dlls/gdi32/dibdrv/graphics.c
|
||||
+++ b/dlls/gdi32/dibdrv/graphics.c
|
||||
@@ -316,6 +316,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
|
||||
diff --git a/dlls/win32u/dibdrv/graphics.c b/dlls/win32u/dibdrv/graphics.c
|
||||
index 410f29e8f19..3a6f8184009 100644
|
||||
--- a/dlls/win32u/dibdrv/graphics.c
|
||||
+++ b/dlls/win32u/dibdrv/graphics.c
|
||||
@@ -310,6 +310,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
|
||||
return pos - count;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ Check if matrix has uniform scale and shear and contains a rotation.
|
||||
+*/
|
||||
+BOOL xform_has_rotate_and_uniform_scale_and_shear( const XFORM *xform )
|
||||
+static BOOL xform_has_rotate_and_uniform_scale_and_shear( const XFORM *xform )
|
||||
+{
|
||||
+ return xform->eM21 != 0 && xform->eM11 == xform->eM22 && -xform->eM21 == xform->eM12;
|
||||
+}
|
||||
@@ -35,7 +34,7 @@ index 875ae308546..ea03cac886f 100644
|
||||
+ which has to be checked by a call to xform_has_rotate_and_uniform_scale_and_shear().
|
||||
+ Hints how to get unique values for non-uniform matrixes are welcome.
|
||||
+*/
|
||||
+BOOL xform_decompose_rotation_and_translation( XFORM *xform, XFORM *rotation_and_translation )
|
||||
+static BOOL xform_decompose_rotation_and_translation( XFORM *xform, XFORM *rotation_and_translation )
|
||||
+{
|
||||
+ XFORM inverse_matrix_scale;
|
||||
+ XFORM origin_matrix = *xform;
|
||||
@@ -75,7 +74,7 @@ index 875ae308546..ea03cac886f 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 )
|
||||
@@ -328,6 +382,22 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
|
||||
@@ -322,6 +376,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 +97,7 @@ index 875ae308546..ea03cac886f 100644
|
||||
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
|
||||
|
||||
width = rect.right - rect.left;
|
||||
@@ -361,6 +431,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
|
||||
@@ -355,6 +425,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
|
||||
points[count].y = rect.top + height / 2;
|
||||
count++;
|
||||
}
|
||||
@@ -115,18 +114,6 @@ index 875ae308546..ea03cac886f 100644
|
||||
if (count < 2)
|
||||
{
|
||||
free( points );
|
||||
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
|
||||
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 )
|
||||
|
||||
extern HMODULE gdi32_module DECLSPEC_HIDDEN;
|
||||
|
||||
+BOOL xform_has_rotate_and_uniform_scale_and_shear( const XFORM *xform ) DECLSPEC_HIDDEN;
|
||||
+BOOL xform_decompose_rotation_and_translation( XFORM *xform, XFORM *rotation_and_translation ) DECLSPEC_HIDDEN;
|
||||
+
|
||||
#endif /* __WINE_GDI_PRIVATE_H */
|
||||
--
|
||||
2.33.0
|
||||
|
||||
|
@@ -1,18 +1,18 @@
|
||||
From f678f5184cb4eef1ab47a4f8b4949c83f1af9791 Mon Sep 17 00:00:00 2001
|
||||
From 5dcb80fe0d35101804bb978e507e6db361a949af 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
|
||||
|
||||
Bug: http://bugs.winehq.org/show_bug.cgi?id=35331
|
||||
---
|
||||
dlls/gdi32/dibdrv/graphics.c | 60 +++++++++++++++++++++++++-----------
|
||||
dlls/win32u/dibdrv/graphics.c | 60 ++++++++++++++++++++++++-----------
|
||||
1 file changed, 42 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
|
||||
index ea03cac886f..412d19249f0 100644
|
||||
--- a/dlls/gdi32/dibdrv/graphics.c
|
||||
+++ b/dlls/gdi32/dibdrv/graphics.c
|
||||
@@ -1541,6 +1541,23 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
|
||||
diff --git a/dlls/win32u/dibdrv/graphics.c b/dlls/win32u/dibdrv/graphics.c
|
||||
index 3a6f8184009..b5231636261 100644
|
||||
--- a/dlls/win32u/dibdrv/graphics.c
|
||||
+++ b/dlls/win32u/dibdrv/graphics.c
|
||||
@@ -1535,6 +1535,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 ea03cac886f..412d19249f0 100644
|
||||
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
|
||||
|
||||
pt[0].x = pt[0].y = 0;
|
||||
@@ -1561,23 +1578,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
|
||||
@@ -1555,23 +1572,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ index ea03cac886f..412d19249f0 100644
|
||||
count = ellipse_first_quadrant( ellipse_width, ellipse_height, points );
|
||||
|
||||
if (dc->attr->arc_direction == AD_CLOCKWISE)
|
||||
@@ -1621,13 +1621,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
|
||||
@@ -1615,13 +1615,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
|
||||
}
|
||||
count = end + 1;
|
||||
|
||||
|
Reference in New Issue
Block a user