Piotr Caban : gdiplus: Add GdipDrawImagePointsRect test on EmfTypeEmfPlusOnly file.
Alexandre Julliard
julliard at winehq.org
Thu Jun 29 15:23:24 CDT 2017
Module: wine
Branch: master
Commit: 4884815505701bc84b8068e86c21dbd16ce8fe9d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4884815505701bc84b8068e86c21dbd16ce8fe9d
Author: Piotr Caban <piotr at codeweavers.com>
Date: Wed Jun 28 20:47:31 2017 +0200
gdiplus: Add GdipDrawImagePointsRect test on EmfTypeEmfPlusOnly file.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdiplus/tests/metafile.c | 68 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/dlls/gdiplus/tests/metafile.c b/dlls/gdiplus/tests/metafile.c
index f73dc42..0f5be7b 100644
--- a/dlls/gdiplus/tests/metafile.c
+++ b/dlls/gdiplus/tests/metafile.c
@@ -2322,6 +2322,73 @@ static void test_gditransform(void)
expect(Ok, stat);
}
+static const emfplus_record draw_image_records[] = {
+ {0, EMR_HEADER},
+ {0, EmfPlusRecordTypeHeader},
+ {1, EmfPlusRecordTypeObject},
+ {1, EmfPlusRecordTypeDrawImagePoints},
+ {1, EMR_SAVEDC},
+ {1, EMR_SETICMMODE},
+ {1, EMR_BITBLT},
+ {1, EMR_RESTOREDC},
+ {0, EmfPlusRecordTypeEndOfFile},
+ {0, EMR_EOF},
+ {0}
+};
+
+static void test_drawimage(void)
+{
+ static const WCHAR description[] = {'w','i','n','e','t','e','s','t',0};
+ static const GpPointF dst_points[3] = {{10.0,10.0},{25.0,15.0},{10.0,20.0}};
+ static const GpRectF frame = {0.0, 0.0, 100.0, 100.0};
+
+ GpMetafile *metafile;
+ GpGraphics *graphics;
+ HENHMETAFILE hemf;
+ GpStatus stat;
+ BITMAPINFO info;
+ BYTE buff[400];
+ GpBitmap *bm;
+ HDC hdc;
+
+ memset(buff, 0x80, sizeof(buff));
+ hdc = CreateCompatibleDC(0);
+ stat = GdipRecordMetafile(hdc, EmfTypeEmfPlusOnly, &frame, MetafileFrameUnitPixel, description, &metafile);
+ expect(Ok, stat);
+ DeleteDC(hdc);
+
+ stat = GdipGetImageGraphicsContext((GpImage*)metafile, &graphics);
+ expect(Ok, stat);
+
+ memset(&info, 0, sizeof(info));
+ info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ info.bmiHeader.biWidth = 10;
+ info.bmiHeader.biHeight = 10;
+ info.bmiHeader.biPlanes = 1;
+ info.bmiHeader.biBitCount = 32;
+ info.bmiHeader.biCompression = BI_RGB;
+ stat = GdipCreateBitmapFromGdiDib(&info, buff, &bm);
+ expect(Ok, stat);
+
+ stat = GdipDrawImagePointsRect(graphics, (GpImage*)bm, dst_points, 3,
+ 0.0, 0.0, 10.0, 10.0, UnitPixel, NULL, NULL, NULL);
+ expect(Ok, stat);
+
+ GdipDisposeImage((GpImage*)bm);
+
+ stat = GdipDeleteGraphics(graphics);
+ expect(Ok, stat);
+ sync_metafile(&metafile, "draw_image.emf");
+
+ stat = GdipGetHemfFromMetafile(metafile, &hemf);
+ expect(Ok, stat);
+
+ check_emfplus(hemf, draw_image_records, "draw image");
+
+ stat = GdipDisposeImage((GpImage*)metafile);
+ expect(Ok, stat);
+}
+
START_TEST(metafile)
{
struct GdiplusStartupInput gdiplusStartupInput;
@@ -2359,6 +2426,7 @@ START_TEST(metafile)
test_containers();
test_clipping();
test_gditransform();
+ test_drawimage();
GdiplusShutdown(gdiplusToken);
}
More information about the wine-cvs
mailing list