Piotr Caban : gdi32/enhmfdrv: Fix PolyBezierTo bounding box computation.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 29 11:05:57 CDT 2016
Module: wine
Branch: master
Commit: a3e741fd4c4b8ab76c1be19b3bb5a233729eb3f4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3e741fd4c4b8ab76c1be19b3bb5a233729eb3f4
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Apr 28 18:47:04 2016 +0200
gdi32/enhmfdrv: Fix PolyBezierTo bounding box computation.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/enhmfdrv/graphics.c | 36 ++++++++++++++++++++++++++++++------
1 file changed, 30 insertions(+), 6 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c
index ae05378..e5553e0 100644
--- a/dlls/gdi32/enhmfdrv/graphics.c
+++ b/dlls/gdi32/enhmfdrv/graphics.c
@@ -348,10 +348,22 @@ EMFDRV_Polylinegon( PHYSDEV dev, const POINT* pt, INT count, DWORD iType )
emr->emr.iType = iType;
emr->emr.nSize = size;
- emr->rclBounds.left = emr->rclBounds.right = pt[0].x;
- emr->rclBounds.top = emr->rclBounds.bottom = pt[0].y;
+ if(iType == EMR_POLYBEZIERTO) {
+ POINT cur_pt;
- for(i = 1; i < count; i++) {
+ GetCurrentPositionEx( dev->hdc, &cur_pt );
+ emr->rclBounds.left = emr->rclBounds.right = cur_pt.x;
+ emr->rclBounds.top = emr->rclBounds.bottom = cur_pt.y;
+ i = 0;
+ }
+ else
+ {
+ emr->rclBounds.left = emr->rclBounds.right = pt[0].x;
+ emr->rclBounds.top = emr->rclBounds.bottom = pt[0].y;
+ i = 1;
+ }
+
+ for(; i < count; i++) {
if(pt[i].x < emr->rclBounds.left)
emr->rclBounds.left = pt[i].x;
else if(pt[i].x > emr->rclBounds.right)
@@ -402,10 +414,22 @@ EMFDRV_Polylinegon16( PHYSDEV dev, const POINT* pt, INT count, DWORD iType )
emr->emr.iType = iType;
emr->emr.nSize = size;
- emr->rclBounds.left = emr->rclBounds.right = pt[0].x;
- emr->rclBounds.top = emr->rclBounds.bottom = pt[0].y;
+ if(iType == EMR_POLYBEZIERTO16) {
+ POINT cur_pt;
+
+ GetCurrentPositionEx( dev->hdc, &cur_pt );
+ emr->rclBounds.left = emr->rclBounds.right = cur_pt.x;
+ emr->rclBounds.top = emr->rclBounds.bottom = cur_pt.y;
+ i = 0;
+ }
+ else
+ {
+ emr->rclBounds.left = emr->rclBounds.right = pt[0].x;
+ emr->rclBounds.top = emr->rclBounds.bottom = pt[0].y;
+ i = 1;
+ }
- for(i = 1; i < count; i++) {
+ for(; i < count; i++) {
if(pt[i].x < emr->rclBounds.left)
emr->rclBounds.left = pt[i].x;
else if(pt[i].x > emr->rclBounds.right)
More information about the wine-cvs
mailing list