Vincent Povirk : gdiplus: Improve GdipSetMetafileDownLevelRasterizationLimit.
Module: wine Branch: master Commit: e41058243a7ba416be4898335d41ba13f07be2fc URL: https://source.winehq.org/git/wine.git/?a=commit;h=e41058243a7ba416be4898335... Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Sun May 17 20:16:25 2020 -0500 gdiplus: Improve GdipSetMetafileDownLevelRasterizationLimit. Signed-off-by: Vincent Povirk <vincent(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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");
participants (1)
-
Alexandre Julliard