Vincent Povirk : windowscodecs: Add test for IWICImagingFactory:: CreateBitmapFromSource.
Alexandre Julliard
julliard at winehq.org
Thu Aug 16 15:26:15 CDT 2012
Module: wine
Branch: master
Commit: 6c1fcaa3924966e9d0323495975a3da8be0e0095
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6c1fcaa3924966e9d0323495975a3da8be0e0095
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Tue Aug 14 16:15:12 2012 -0500
windowscodecs: Add test for IWICImagingFactory::CreateBitmapFromSource.
---
dlls/windowscodecs/tests/bitmap.c | 103 +++++++++++++++++++++++++++++++++++++
1 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/dlls/windowscodecs/tests/bitmap.c b/dlls/windowscodecs/tests/bitmap.c
index 34305cd..56b4cfd 100644
--- a/dlls/windowscodecs/tests/bitmap.c
+++ b/dlls/windowscodecs/tests/bitmap.c
@@ -264,6 +264,108 @@ static void test_createbitmap(void)
IWICBitmap_Release(bitmap);
}
+static void test_createbitmapfromsource(void)
+{
+ HRESULT hr;
+ IWICBitmap *bitmap, *bitmap2;
+ IWICPalette *palette;
+ IWICBitmapLock *lock;
+ int i;
+ WICRect rc;
+ const BYTE bitmap_data[27] = {
+ 128,128,255, 128,128,128, 128,255,128,
+ 128,128,128, 128,128,128, 255,255,255,
+ 255,128,128, 255,255,255, 255,255,255};
+ BYTE returned_data[27] = {0};
+ BYTE *lock_buffer=NULL;
+ UINT lock_buffer_stride=0;
+ UINT lock_buffer_size=0;
+ WICPixelFormatGUID pixelformat = {0};
+ UINT width=0, height=0;
+ double dpix=10.0, dpiy=10.0;
+
+ hr = IWICImagingFactory_CreateBitmap(factory, 3, 3, &GUID_WICPixelFormat24bppBGR,
+ WICBitmapCacheOnLoad, &bitmap);
+ ok(hr == S_OK, "IWICImagingFactory_CreateBitmap failed hr=%x\n", hr);
+
+ if (FAILED(hr))
+ return;
+
+ hr = IWICImagingFactory_CreatePalette(factory, &palette);
+ ok(hr == S_OK, "IWICImagingFactory_CreatePalette failed hr=%x\n", hr);
+
+ hr = IWICPalette_InitializePredefined(palette, WICBitmapPaletteTypeFixedGray256, FALSE);
+ ok(hr == S_OK, "IWICPalette_InitializePredefined failed hr=%x\n", hr);
+
+ hr = IWICBitmap_SetPalette(bitmap, palette);
+ ok(hr == S_OK, "IWICBitmap_SetPalette failed hr=%x\n", hr);
+
+ IWICPalette_Release(palette);
+
+ rc.X = rc.Y = 0;
+ rc.Width = 3;
+ rc.Height = 3;
+ hr = IWICBitmap_Lock(bitmap, &rc, WICBitmapLockWrite, &lock);
+ ok(hr == S_OK, "IWICBitmap_Lock failed hr=%x\n", hr);
+ if (SUCCEEDED(hr))
+ {
+ hr = IWICBitmapLock_GetStride(lock, &lock_buffer_stride);
+ ok(hr == S_OK, "IWICBitmapLock_GetStride failed hr=%x\n", hr);
+ ok(lock_buffer_stride == 12, "got %i, expected 12\n", lock_buffer_stride);
+
+ hr = IWICBitmapLock_GetDataPointer(lock, &lock_buffer_size, &lock_buffer);
+ ok(hr == S_OK, "IWICBitmapLock_GetDataPointer failed hr=%x\n", hr);
+ ok(lock_buffer_size == 33, "got %i, expected 33\n", lock_buffer_size);
+ ok(lock_buffer != NULL, "got NULL data pointer\n");
+
+ for (i=0; i<3; i++)
+ memcpy(lock_buffer + lock_buffer_stride*i, bitmap_data + i*9, 9);
+
+ IWICBitmapLock_Release(lock);
+ }
+
+ hr = IWICBitmap_SetResolution(bitmap, 12.0, 34.0);
+ ok(hr == S_OK, "IWICBitmap_SetResolution failed hr=%x\n", hr);
+
+ hr = IWICImagingFactory_CreateBitmapFromSource(factory, (IWICBitmapSource*)bitmap,
+ WICBitmapCacheOnLoad, &bitmap2);
+ todo_wine ok(hr == S_OK, "IWICImagingFactory_CreateBitmapFromSource failed hr=%x\n", hr);
+
+ IWICBitmap_Release(bitmap);
+
+ if (FAILED(hr)) return;
+
+ hr = IWICImagingFactory_CreatePalette(factory, &palette);
+ ok(hr == S_OK, "IWICImagingFactory_CreatePalette failed hr=%x\n", hr);
+
+ hr = IWICBitmap_CopyPalette(bitmap2, palette);
+ ok(hr == WINCODEC_ERR_PALETTEUNAVAILABLE, "IWICBitmap_CopyPalette failed hr=%x\n", hr);
+
+ IWICPalette_Release(palette);
+
+ hr = IWICBitmap_CopyPixels(bitmap2, NULL, 9, 27, returned_data);
+ ok(hr == S_OK, "IWICBitmap_CopyPixels failed hr=%x\n", hr);
+
+ for (i=0; i<27; i++)
+ ok(returned_data[i] == bitmap_data[i], "returned_data[%i] == %i\n", i, returned_data[i]);
+
+ hr = IWICBitmap_GetPixelFormat(bitmap2, &pixelformat);
+ ok(hr == S_OK, "IWICBitmap_GetPixelFormat failed hr=%x\n", hr);
+ ok(IsEqualGUID(&pixelformat, &GUID_WICPixelFormat24bppBGR), "unexpected pixel format\n");
+
+ hr = IWICBitmap_GetResolution(bitmap2, &dpix, &dpiy);
+ ok(hr == S_OK, "IWICBitmap_GetResolution failed hr=%x\n", hr);
+ ok(dpix == 12.0, "got %f, expected 12.0\n", dpix);
+ ok(dpiy == 34.0, "got %f, expected 34.0\n", dpiy);
+
+ hr = IWICBitmap_GetSize(bitmap2, &width, &height);
+ ok(hr == S_OK, "IWICBitmap_GetSize failed hr=%x\n", hr);
+ ok(width == 3, "got %d, expected 3\n", width);
+ ok(height == 3, "got %d, expected 3\n", height);
+
+ IWICBitmap_Release(bitmap2);
+}
+
START_TEST(bitmap)
{
HRESULT hr;
@@ -275,6 +377,7 @@ START_TEST(bitmap)
ok(SUCCEEDED(hr), "CoCreateInstance failed, hr=%x\n", hr);
test_createbitmap();
+ test_createbitmapfromsource();
IWICImagingFactory_Release(factory);
More information about the wine-cvs
mailing list