[Bug 54418] New: gdiplus: SOFTWARE_GdipFillPath is not anti-aliased, making the UI interface invisible
https://bugs.winehq.org/show_bug.cgi?id=54418 Bug ID: 54418 Summary: gdiplus: SOFTWARE_GdipFillPath is not anti-aliased, making the UI interface invisible Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: gdiplus Assignee: wine-bugs(a)winehq.org Reporter: 399989567(a)qq.com Distribution: --- When some fonts use fillpath for drawing, when the font is extremely small, it will be difficult for people to read, or even part of it will be missing -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 Bartosz <gang65(a)poczta.onet.pl> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gang65(a)poczta.onet.pl -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #1 from Bartosz <gang65(a)poczta.onet.pl> --- please provude screenshot and some example application. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #2 from 399989567(a)qq.com --- Created attachment 73983 --> https://bugs.winehq.org/attachment.cgi?id=73983 [PNG]Some icons are seriously jagged Some icons are seriously jagged -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #3 from 399989567(a)qq.com --- (In reply to Bartosz from comment #1)
please provude screenshot and some example application.
It seems that we implemented it with an algorithm similar to Bresenham. I will provide a demo later, but because the brush of this demo is a solid color, the function GDI32_GdipFillPath will be used, so we may need to comment out the function GDI32_GdipFillPath in the source code to reproduce the problem which is in the real application -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #4 from 399989567(a)qq.com --- Created attachment 73984 --> https://bugs.winehq.org/attachment.cgi?id=73984 the font file we use -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #5 from 399989567(a)qq.com --- Created attachment 73985 --> https://bugs.winehq.org/attachment.cgi?id=73985 the font file we use -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 399989567(a)qq.com changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #73985|0 |1 is obsolete| | --- Comment #6 from 399989567(a)qq.com --- Created attachment 73986 --> https://bugs.winehq.org/attachment.cgi?id=73986 demo code -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #7 from Esme Povirk <madewokherd(a)gmail.com> --- When an anti-aliased version of GdipFillPath is implemented, it should be used instead of GDI32_GdipFillPath when anti-aliasing is enabled. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=54418 Esme Povirk <madewokherd(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=54418 Thomas <rittert@outlook.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rittert@outlook.de --- Comment #8 from Thomas <rittert@outlook.de> --- Still present in Wine 11.18. GdipSetSmoothingMode only stores the value (dlls/gdiplus/graphics.c: "FIXME: Smoothing mode is not used anywhere except the getter/setter"), so paths filled or drawn with SmoothingModeAntiAlias or SmoothingModeHighQuality come out aliased, and vector icons drawn this way look jagged compared to Windows. Comparison with Windows 11, see the attached image (8x zoom): a black ellipse at (4.3, 4.3), 23 x 23, with SmoothingModeAntiAlias and PixelOffsetModeHighQuality, drawn into a 32 bpp DIB section and into a PixelFormat32bppARGB bitmap (same result for both; on Wine both go through SOFTWARE_GdipFillPath): - GdipFillEllipse with a solid brush: 76 partially covered pixels on Windows 11, none on Wine. - GdipDrawEllipse with a 1 px pen: 144 partially covered pixels on Windows 11, none on Wine. Pens thinner than about 1.4 device pixels go through SOFTWARE_GdipDrawThinPath, which does not antialias either. According to the SmoothingMode documentation, SmoothingModeAntiAlias uses an 8x4 box filter and SmoothingModeAntiAlias8x8 an 8x8 one. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #9 from Thomas <rittert@outlook.de> --- Created attachment 82210 --> http://bugs.winehq.org/attachment.cgi?id=82210 SmoothingModeAntiAlias: Windows 11 (left) vs Wine 11.18 (right), 8x zoom -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #10 from Thomas <rittert@outlook.de> --- Merge request: https://gitlab.winehq.org/wine/wine/-/merge_requests/12221 It antialiases what gdiplus draws in software, i.e. into bitmaps and 32 bpp DIB sections: fills, wide lines and thin lines, for SmoothingModeAntiAlias, SmoothingModeAntiAlias8x8 and SmoothingModeHighQuality. The expected values of the new test were measured on Windows 11 and Windows Server 2025. Drawing on other DCs still goes through GDI32_GdipFillPath and stays aliased, so the attached demo, which fills with a solid brush on the window DC, is not changed by it yet (see comment 7). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=54418 --- Comment #11 from Thomas <rittert@outlook.de> --- The merge request (https://gitlab.winehq.org/wine/wine/-/merge_requests/12221) has been updated after review: it now antialiases on window and memory DCs as well; only printers, metafiles and CompositingModeSourceCopy stay aliased. With it, the attached demo is drawn antialiased on its window. The new test passes on Windows Server 2025 and in the Windows 10 test jobs of the merge request. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (2)
-
WineHQ Bugzilla -
WineHQ Bugzilla