Vincent Povirk : gdiplus: Improve GdipSetMetafileDownLevelRasterizationLimit.
Alexandre Julliard
julliard at winehq.org
Mon May 18 15:00:13 CDT 2020
Module: wine
Branch: master
Commit: e41058243a7ba416be4898335d41ba13f07be2fc
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e41058243a7ba416be4898335d41ba13f07be2fc
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Sun May 17 20:16:25 2020 -0500
gdiplus: Improve GdipSetMetafileDownLevelRasterizationLimit.
Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdiplus/metafile.c | 8 +++++++-
dlls/gdiplus/tests/metafile.c | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index 3fdbc69fdc..f0dacab498 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -4028,9 +4028,15 @@ GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile *metaf
{
TRACE("(%p,%u)\n", metafile, limitDpi);
- if (!metafile)
+ if (limitDpi == 0)
+ limitDpi = 96;
+
+ if (!metafile || limitDpi < 10)
return InvalidParameter;
+ if (!metafile->record_dc)
+ return WrongState;
+
metafile->limit_dpi = limitDpi;
return Ok;
diff --git a/dlls/gdiplus/tests/metafile.c b/dlls/gdiplus/tests/metafile.c
index b9dc33fce3..3ffdb7b0e9 100644
--- a/dlls/gdiplus/tests/metafile.c
+++ b/dlls/gdiplus/tests/metafile.c
@@ -428,6 +428,23 @@ static void test_empty(void)
expect(Ok, stat);
ok(limit_dpi == 255, "limit_dpi was %d\n", limit_dpi);
+ stat = GdipSetMetafileDownLevelRasterizationLimit(metafile, 0);
+ expect(Ok, stat);
+
+ limit_dpi = 0xdeadbeef;
+ stat = GdipGetMetafileDownLevelRasterizationLimit(metafile, &limit_dpi);
+ expect(Ok, stat);
+ ok(limit_dpi == 96, "limit_dpi was %d\n", limit_dpi);
+
+ stat = GdipSetMetafileDownLevelRasterizationLimit(metafile, 1);
+ expect(InvalidParameter, stat);
+
+ stat = GdipSetMetafileDownLevelRasterizationLimit(metafile, 9);
+ expect(InvalidParameter, stat);
+
+ stat = GdipSetMetafileDownLevelRasterizationLimit(metafile, 10);
+ expect(Ok, stat);
+
stat = GdipGetHemfFromMetafile(metafile, &hemf);
expect(InvalidParameter, stat);
@@ -445,6 +462,9 @@ static void test_empty(void)
expect(WrongState, stat);
expect(0xdeadbeef, limit_dpi);
+ stat = GdipSetMetafileDownLevelRasterizationLimit(metafile, 200);
+ expect(WrongState, stat);
+
check_metafile(metafile, empty_records, "empty metafile", dst_points, &frame, UnitPixel);
sync_metafile(&metafile, "empty.emf");
More information about the wine-cvs
mailing list