http://bugs.winehq.org/show_bug.cgi?id=30923
Bug #: 30923 Summary: Gigasoft ProEssentials graphing component clips improperly Product: Wine Version: 1.5.6 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: gdi32 AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
A real app that uses Gigasoft's graphing dll has a clipping problem. I was able to reproduce the clipping problem with a small C program which uses the DLL to create a graph containing two horizontal lines, one of which is outside the graph's clipping region and should not be drawn. On Windows Vista, the graph draws properly, and only the dashed line is visible. On Wine, the solid blue line is also visible, even though it should be clipped away.
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #1 from Dan Kegel dank@kegel.com 2012-06-15 21:07:43 CDT --- Created attachment 40559 --> http://bugs.winehq.org/attachment.cgi?id=40559 C test program
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #2 from Dan Kegel dank@kegel.com 2012-06-15 21:08:09 CDT --- Created attachment 40560 --> http://bugs.winehq.org/attachment.cgi?id=40560 Good screenshot on Vista
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #3 from Dan Kegel dank@kegel.com 2012-06-15 21:08:34 CDT --- Created attachment 40561 --> http://bugs.winehq.org/attachment.cgi?id=40561 Bad screenshot from Wine
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, testcase URL| |http://gigasoft.com/PE7-Pro | |-Setup.exe
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #4 from Dan Kegel dank@kegel.com 2012-06-15 21:21:55 CDT --- Created attachment 40562 --> http://bugs.winehq.org/attachment.cgi?id=40562 Bad screenshot from Wine, with grid enabled so you can relate what you see to the data points being graphed
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #5 from Dan Kegel dank@kegel.com 2012-06-15 21:58:12 CDT --- WINEDEBUG=+relay,+gdi,+region,+clipping log shows:
left 3 top 63 rite 487 bot 267 0009:Call gdi32.CreateRectRgn(00000003,0000003f,000001e7,0000010b) ret=1001bb0d 0009:Call gdi32.SelectClipRgn(00000658,000006a8) ret=10264bb0 0009:Call gdi32.CreatePen(00000000,00000001,00fb0201) ret=10238fb8 trace:gdi:CreatePen 0 1 fb0201 0009:Call gdi32.CreateSolidBrush(00fb0201) ret=10238f01 trace:gdi:CreateSolidBrush fb0201 trace:gdi:Polyline Polyline points: (3,366) (486,366)
left 3 top 265 rite 487 bot 469 0009:Call gdi32.CreateRectRgn(00000003,00000109,000001e7,000001d5) ret=1001bb0d 0009:Call gdi32.SelectClipRgn(00000658,000006d4) ret=10264bb0 trace:gdi:Polyline Polyline points: (3,305) (486,305)
It seems that the first SelectClipRgn (left 3 top 63 rite 487 bot 267) was ignored, else the line at Y=366 would not have been drawn?
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #6 from Dan Kegel dank@kegel.com 2012-06-15 22:00:47 CDT --- Created attachment 40563 --> http://bugs.winehq.org/attachment.cgi?id=40563 rzipped +relay,+gdi,+region,+clipping log
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #7 from Dan Kegel dank@kegel.com 2012-06-16 18:36:50 CDT --- Created attachment 40570 --> http://bugs.winehq.org/attachment.cgi?id=40570 Simpler test case that does not need binary dll to reproduce
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |source URL|http://gigasoft.com/PE7-Pro | |-Setup.exe | Summary|Gigasoft ProEssentials |SelectClipRgn gets wrong |graphing component clips |arguments in metafiles? |improperly |
--- Comment #8 from Dan Kegel dank@kegel.com 2012-06-16 18:40:00 CDT --- It turns out that the problem can be reproduced with just a few lines:
#if USE_METAFILE hdcm = CreateMetaFile(NULL); #else hdcm = hdc; #endif
hrgn = CreateRectRgn(3, 63, 487, 267); SelectClipRgn(hdcm, hrgn); Polyline(hdcm, pts, 2);
#if USE_METAFILE hmf = CloseMetaFile(hdcm); PlayMetaFile(hdc, hmf); DeleteMetaFile(hmf); #endif
If metafiles are used, the clip region parameters are lost, either during metafile recording or playback, not sure which.
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #40570|0 |1 is obsolete| |
--- Comment #9 from Dan Kegel dank@kegel.com 2012-06-16 20:50:43 CDT --- Created attachment 40571 --> http://bugs.winehq.org/attachment.cgi?id=40571 Nicer example; run with arg 1 to use metafile.
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #10 from Dan Kegel dank@kegel.com 2012-06-16 20:54:08 CDT --- Created attachment 40572 --> http://bugs.winehq.org/attachment.cgi?id=40572 kludge patch that makes test case work...
The attached patch points out two suspicious areas of code; with this patch attached, the tiny test case works, but the small one that uses the DLL is still broken.
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #11 from Dan Kegel dank@kegel.com 2012-06-17 12:44:44 CDT --- Looks like windows uses META_SELECTOBJECT instead of META_SELECTCLIPREGION, see https://testbot.winehq.org/JobDetails.pl?Key=19195
http://bugs.winehq.org/show_bug.cgi?id=30923
--- Comment #12 from Dan Kegel dank@kegel.com 2012-06-17 15:19:27 CDT --- Created attachment 40582 --> http://bugs.winehq.org/attachment.cgi?id=40582 Draft patch with tests
Here's a draft patch that fixes the real app, adds a conformance test for using SelectClipRgn inside metafiles (there already was one for enhmetafiles), and makes the test pass.
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #40582|0 |1 is obsolete| |
--- Comment #13 from Dan Kegel dank@kegel.com 2012-06-17 16:32:35 CDT --- Created attachment 40583 --> http://bugs.winehq.org/attachment.cgi?id=40583 Draft patch with tests
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #40572|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=30923
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #14 from Dan Kegel dank@kegel.com 2012-06-20 18:30:04 CDT --- Fixed in git as of b85270e3a57df29c49974cbc3616cef7bf62a62a.
http://bugs.winehq.org/show_bug.cgi?id=30923
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #15 from Alexandre Julliard julliard@winehq.org 2012-06-22 13:29:26 CDT --- Closing bugs fixed in 1.5.7.