diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 2118a3d3305..b4f314adf47 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -435,7 +435,7 @@ @ stub GdipIsVisibleRegionPointI @ stub GdipIsVisibleRegionRect @ stub GdipIsVisibleRegionRectI -@ stub GdipLoadImageFromFile +@ stdcall GdipLoadImageFromFile(wstr ptr) @ stub GdipLoadImageFromFileICM @ stdcall GdipLoadImageFromStream(ptr ptr) @ stdcall GdipLoadImageFromStreamICM(ptr ptr) diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index 82b0858ba4b..587120950b9 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -697,6 +697,27 @@ GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage *image, return Ok; } +GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR* filename, + GpImage **image) +{ + GpStatus stat; + IStream *stream; + + if (!filename || !image) + return InvalidParameter; + + stat = GdipCreateStreamOnFile(filename, GENERIC_READ, &stream); + + if (stat != Ok) + return stat; + + stat = GdipLoadImageFromStream(stream, image); + + IStream_Release(stream); + + return stat; +} + GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image) { IPicture *pic; diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 72283391fe7..5ff164d6c70 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -114,6 +114,12 @@ static void test_LoadingImages(void) stat = GdipCreateBitmapFromFile(0, (GpBitmap**)0xdeadbeef); expect(InvalidParameter, stat); + + stat = GdipLoadImageFromFile(0, 0); + expect(InvalidParameter, stat); + + stat = GdipLoadImageFromFile(0, (GpImage**)0xdeadbeef); + expect(InvalidParameter, stat); } START_TEST(image)