static void check_metafile(GpMetafile *metafile, const emfplus_record *expected, const char *desc, const GpPointF *dst_points, const GpRectF *src_rect, Unit src_unit) { GpStatus stat; HDC hdc; GpGraphics *graphics; emfplus_check_state state; state.desc = desc; state.count = 0; state.expected = expected; state.metafile = metafile; hdc = CreateCompatibleDC(0); stat = GdipCreateFromHDC(hdc, &graphics); expect(Ok, stat); stat = GdipEnumerateMetafileSrcRectDestPoints(graphics, metafile, dst_points, 3, src_rect, src_unit, enum_metafile_proc, &state, NULL); expect(Ok, stat); if (expected[state.count].todo) todo_wine ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); else ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); GdipDeleteGraphics(graphics); DeleteDC(hdc); }
static void play_metafile(GpMetafile *metafile, GpGraphics *graphics, const emfplus_record *expected, const char *desc, const GpPointF *dst_points, const GpRectF *src_rect, Unit src_unit) { GpStatus stat; emfplus_check_state state; state.desc = desc; state.count = 0; state.expected = expected; state.metafile = metafile; stat = GdipEnumerateMetafileSrcRectDestPoints(graphics, metafile, dst_points, 3, src_rect, src_unit, play_metafile_proc, &state, NULL); expect(Ok, stat); }
GpStatus WINGDIPAPI GdipEnumerateMetafileDestRect(GpGraphics *graphics, GDIPCONST GpMetafile *metafile, GDIPCONST GpRectF *dest, EnumerateMetafileProc callback, VOID *cb_data, GDIPCONST GpImageAttributes *attrs) { GpPointF points[3]; if (!graphics || !metafile || !dest) return InvalidParameter; points[0].X = points[2].X = dest->X; points[0].Y = points[1].Y = dest->Y; points[1].X = dest->X + dest->Width; points[2].Y = dest->Y + dest->Height; return GdipEnumerateMetafileSrcRectDestPoints(graphics, metafile, points, 3, &metafile->bounds, metafile->unit, callback, cb_data, attrs); }