mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 14:45:53 +00:00
[gdiplus_winetest]
sync gdiplus_winetest with wine 1.1.35 svn path=/trunk/; revision=44906
This commit is contained in:
parent
65abaf1120
commit
d8530b148b
8 changed files with 1796 additions and 76 deletions
|
@ -27,28 +27,34 @@
|
|||
#include "gdiplus.h"
|
||||
#include "wine/test.h"
|
||||
|
||||
#define expect(expected, got) ok(((UINT)got) == ((UINT)expected), "Expected %.8x, got %.8x\n", (UINT)expected, (UINT)got)
|
||||
#define expect(expected, got) ok((UINT)(got) == (UINT)(expected), "Expected %.8x, got %.8x\n", (UINT)(expected), (UINT)(got))
|
||||
#define expectf(expected, got) ok(fabs(expected - got) < 0.0001, "Expected %.2f, got %.2f\n", expected, got)
|
||||
|
||||
static void expect_guid(REFGUID expected, REFGUID got, int line, BOOL todo)
|
||||
{
|
||||
WCHAR bufferW[39];
|
||||
char buffer[39];
|
||||
char buffer2[39];
|
||||
|
||||
StringFromGUID2(got, bufferW, sizeof(bufferW)/sizeof(bufferW[0]));
|
||||
WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer, sizeof(buffer), NULL, NULL);
|
||||
StringFromGUID2(expected, bufferW, sizeof(bufferW)/sizeof(bufferW[0]));
|
||||
WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer2, sizeof(buffer2), NULL, NULL);
|
||||
if(todo)
|
||||
todo_wine ok_(__FILE__, line)(IsEqualGUID(expected, got), "Expected %s, got %s\n", buffer2, buffer);
|
||||
else
|
||||
ok_(__FILE__, line)(IsEqualGUID(expected, got), "Expected %s, got %s\n", buffer2, buffer);
|
||||
}
|
||||
|
||||
static void expect_rawformat(REFGUID expected, GpImage *img, int line, BOOL todo)
|
||||
{
|
||||
GUID raw;
|
||||
WCHAR bufferW[39];
|
||||
char buffer[39];
|
||||
char buffer2[39];
|
||||
GpStatus stat;
|
||||
|
||||
stat = GdipGetImageRawFormat(img, &raw);
|
||||
ok_(__FILE__, line)(stat == Ok, "GdipGetImageRawFormat failed with %d\n", stat);
|
||||
if(stat != Ok) return;
|
||||
StringFromGUID2(&raw, bufferW, sizeof(bufferW)/sizeof(bufferW[0]));
|
||||
WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer, sizeof(buffer), NULL, NULL);
|
||||
StringFromGUID2(expected, bufferW, sizeof(bufferW)/sizeof(bufferW[0]));
|
||||
WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer2, sizeof(buffer2), NULL, NULL);
|
||||
if(todo)
|
||||
todo_wine ok_(__FILE__, line)(IsEqualGUID(&raw, expected), "Expected format %s, got %s\n", buffer2, buffer);
|
||||
else
|
||||
ok_(__FILE__, line)(IsEqualGUID(&raw, expected), "Expected format %s, got %s\n", buffer2, buffer);
|
||||
expect_guid(expected, &raw, line, todo);
|
||||
}
|
||||
|
||||
static void test_bufferrawformat(void* buff, int size, REFGUID expected, int line, BOOL todo)
|
||||
|
@ -177,6 +183,9 @@ static void test_GdipImageGetFrameDimensionsCount(void)
|
|||
GpStatus stat;
|
||||
const REAL WIDTH = 10.0, HEIGHT = 20.0;
|
||||
UINT w;
|
||||
GUID dimension = {0};
|
||||
UINT count;
|
||||
ARGB color;
|
||||
|
||||
bm = (GpBitmap*)0xdeadbeef;
|
||||
stat = GdipCreateBitmapFromScan0(WIDTH, HEIGHT, 0, PixelFormat24bppRGB,NULL, &bm);
|
||||
|
@ -194,6 +203,26 @@ static void test_GdipImageGetFrameDimensionsCount(void)
|
|||
stat = GdipImageGetFrameDimensionsCount((GpImage*)bm,&w);
|
||||
expect(Ok, stat);
|
||||
expect(1, w);
|
||||
|
||||
stat = GdipImageGetFrameDimensionsList((GpImage*)bm, &dimension, 1);
|
||||
expect(Ok, stat);
|
||||
expect_guid(&FrameDimensionPage, &dimension, __LINE__, TRUE);
|
||||
|
||||
count = 12345;
|
||||
stat = GdipImageGetFrameCount((GpImage*)bm, &dimension, &count);
|
||||
todo_wine expect(Ok, stat);
|
||||
todo_wine expect(1, count);
|
||||
|
||||
GdipBitmapSetPixel(bm, 0, 0, 0xffffffff);
|
||||
|
||||
stat = GdipImageSelectActiveFrame((GpImage*)bm, &dimension, 0);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* SelectActiveFrame has no effect on image data of memory bitmaps */
|
||||
color = 0xdeadbeef;
|
||||
GdipBitmapGetPixel(bm, 0, 0, &color);
|
||||
expect(0xffffffff, color);
|
||||
|
||||
GdipDisposeImage((GpImage*)bm);
|
||||
}
|
||||
|
||||
|
@ -465,6 +494,7 @@ static void test_GdipCreateBitmapFromHBITMAP(void)
|
|||
const REAL HEIGHT2 = 20;
|
||||
HDC hdc;
|
||||
BITMAPINFO bmi;
|
||||
BYTE *bits;
|
||||
|
||||
stat = GdipCreateBitmapFromHBITMAP(NULL, NULL, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
@ -486,7 +516,7 @@ static void test_GdipCreateBitmapFromHBITMAP(void)
|
|||
stat = GdipCreateBitmapFromHBITMAP(hbm, NULL, &gpbm);
|
||||
expect(Ok, stat);
|
||||
/* raw format */
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)gpbm, __LINE__, TRUE);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)gpbm, __LINE__, FALSE);
|
||||
|
||||
expect(Ok, GdipGetImageDimension((GpImage*) gpbm, &width, &height));
|
||||
expectf(WIDTH2, width);
|
||||
|
@ -504,20 +534,31 @@ static void test_GdipCreateBitmapFromHBITMAP(void)
|
|||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
hbm = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, NULL, NULL, 0);
|
||||
hbm = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
|
||||
ok(hbm != NULL, "CreateDIBSection failed\n");
|
||||
|
||||
bits[0] = 0;
|
||||
|
||||
stat = GdipCreateBitmapFromHBITMAP(hbm, NULL, &gpbm);
|
||||
expect(Ok, stat);
|
||||
expect(Ok, GdipGetImageDimension((GpImage*) gpbm, &width, &height));
|
||||
expectf(WIDTH1, width);
|
||||
expectf(HEIGHT1, height);
|
||||
if (stat == Ok)
|
||||
{
|
||||
/* test whether writing to the bitmap affects the original */
|
||||
stat = GdipBitmapSetPixel(gpbm, 0, 0, 0xffffffff);
|
||||
expect(Ok, stat);
|
||||
|
||||
expect(0, bits[0]);
|
||||
|
||||
GdipDisposeImage((GpImage*)gpbm);
|
||||
}
|
||||
|
||||
LogPal = GdipAlloc(sizeof(LOGPALETTE));
|
||||
ok(LogPal != NULL, "unable to allocate LOGPALETTE\n");
|
||||
LogPal->palVersion = 0x300;
|
||||
LogPal->palNumEntries = 1;
|
||||
hpal = CreatePalette(LogPal);
|
||||
ok(hpal != NULL, "CreatePalette failed\n");
|
||||
GdipFree(LogPal);
|
||||
|
@ -564,12 +605,12 @@ static void test_GdipCloneImage(void)
|
|||
/* Create an image, clone it, delete the original, make sure the copy works */
|
||||
stat = GdipCreateBitmapFromScan0(WIDTH, HEIGHT, 0, PixelFormat24bppRGB, NULL, &bm);
|
||||
expect(Ok, stat);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bm, __LINE__, TRUE);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bm, __LINE__, FALSE);
|
||||
|
||||
image_src = ((GpImage*)bm);
|
||||
stat = GdipCloneImage(image_src, &image_dest);
|
||||
expect(Ok, stat);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, image_dest, __LINE__, TRUE);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, image_dest, __LINE__, FALSE);
|
||||
|
||||
stat = GdipDisposeImage((GpImage*)bm);
|
||||
expect(Ok, stat);
|
||||
|
@ -646,7 +687,7 @@ static void test_fromhicon(void)
|
|||
stat = GdipGetImagePixelFormat((GpImage*)bitmap, &format);
|
||||
expect(PixelFormat32bppARGB, format);
|
||||
/* raw format */
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bitmap, __LINE__, TRUE);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bitmap, __LINE__, FALSE);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
DestroyIcon(hIcon);
|
||||
|
@ -682,7 +723,7 @@ static void test_fromhicon(void)
|
|||
stat = GdipGetImagePixelFormat((GpImage*)bitmap, &format);
|
||||
expect(PixelFormat32bppARGB, format);
|
||||
/* raw format */
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bitmap, __LINE__, TRUE);
|
||||
expect_rawformat(&ImageFormatMemoryBMP, (GpImage*)bitmap, __LINE__, FALSE);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
DestroyIcon(hIcon);
|
||||
|
@ -735,10 +776,320 @@ static const unsigned char jpgimage[285] = {
|
|||
};
|
||||
static void test_getrawformat(void)
|
||||
{
|
||||
test_bufferrawformat((void*)pngimage, sizeof(pngimage), &ImageFormatPNG, __LINE__, TRUE);
|
||||
test_bufferrawformat((void*)gifimage, sizeof(gifimage), &ImageFormatGIF, __LINE__, TRUE);
|
||||
test_bufferrawformat((void*)pngimage, sizeof(pngimage), &ImageFormatPNG, __LINE__, FALSE);
|
||||
test_bufferrawformat((void*)gifimage, sizeof(gifimage), &ImageFormatGIF, __LINE__, FALSE);
|
||||
test_bufferrawformat((void*)bmpimage, sizeof(bmpimage), &ImageFormatBMP, __LINE__, FALSE);
|
||||
test_bufferrawformat((void*)jpgimage, sizeof(jpgimage), &ImageFormatJPEG, __LINE__, TRUE);
|
||||
test_bufferrawformat((void*)jpgimage, sizeof(jpgimage), &ImageFormatJPEG, __LINE__, FALSE);
|
||||
}
|
||||
|
||||
static void test_createhbitmap(void)
|
||||
{
|
||||
GpStatus stat;
|
||||
GpBitmap *bitmap;
|
||||
HBITMAP hbitmap, oldhbitmap;
|
||||
BITMAP bm;
|
||||
int ret;
|
||||
HDC hdc;
|
||||
COLORREF pixel;
|
||||
BYTE bits[640];
|
||||
|
||||
memset(bits, 0x68, 640);
|
||||
|
||||
/* create Bitmap */
|
||||
stat = GdipCreateBitmapFromScan0(10, 20, 32, PixelFormat24bppRGB, bits, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* test NULL values */
|
||||
stat = GdipCreateHBITMAPFromBitmap(NULL, &hbitmap, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipCreateHBITMAPFromBitmap(bitmap, NULL, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
/* create HBITMAP */
|
||||
stat = GdipCreateHBITMAPFromBitmap(bitmap, &hbitmap, 0);
|
||||
expect(Ok, stat);
|
||||
|
||||
if (stat == Ok)
|
||||
{
|
||||
ret = GetObjectA(hbitmap, sizeof(BITMAP), &bm);
|
||||
expect(sizeof(BITMAP), ret);
|
||||
|
||||
expect(0, bm.bmType);
|
||||
expect(10, bm.bmWidth);
|
||||
expect(20, bm.bmHeight);
|
||||
expect(40, bm.bmWidthBytes);
|
||||
expect(1, bm.bmPlanes);
|
||||
expect(32, bm.bmBitsPixel);
|
||||
ok(bm.bmBits != NULL, "got DDB, expected DIB\n");
|
||||
|
||||
hdc = CreateCompatibleDC(NULL);
|
||||
|
||||
oldhbitmap = SelectObject(hdc, hbitmap);
|
||||
pixel = GetPixel(hdc, 5, 5);
|
||||
SelectObject(hdc, oldhbitmap);
|
||||
|
||||
DeleteDC(hdc);
|
||||
|
||||
expect(0x686868, pixel);
|
||||
|
||||
DeleteObject(hbitmap);
|
||||
}
|
||||
|
||||
stat = GdipDisposeImage((GpImage*)bitmap);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_getsetpixel(void)
|
||||
{
|
||||
GpStatus stat;
|
||||
GpBitmap *bitmap;
|
||||
ARGB color;
|
||||
BYTE bits[16] = {0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0x00,
|
||||
0xff,0x00,0x00,0x00, 0xff,0xff,0xff,0x00};
|
||||
|
||||
stat = GdipCreateBitmapFromScan0(2, 2, 8, PixelFormat32bppRGB, bits, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* null parameters */
|
||||
stat = GdipBitmapGetPixel(NULL, 1, 1, &color);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 1, 1, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(NULL, 1, 1, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
/* out of bounds */
|
||||
stat = GdipBitmapGetPixel(bitmap, -1, 1, &color);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, -1, 1, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 1, -1, &color);
|
||||
ok(stat == InvalidParameter ||
|
||||
broken(stat == Ok), /* Older gdiplus */
|
||||
"Expected InvalidParameter, got %.8x\n", stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, 1, -1, 0);
|
||||
ok(stat == InvalidParameter ||
|
||||
broken(stat == Ok), /* Older gdiplus */
|
||||
"Expected InvalidParameter, got %.8x\n", stat);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 2, 1, &color);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, 2, 1, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 1, 2, &color);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, 1, 2, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
/* valid use */
|
||||
stat = GdipBitmapGetPixel(bitmap, 1, 1, &color);
|
||||
expect(Ok, stat);
|
||||
expect(0xffffffff, color);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 0, 1, &color);
|
||||
expect(Ok, stat);
|
||||
expect(0xff0000ff, color);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, 1, 1, 0xff676869);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipBitmapSetPixel(bitmap, 0, 0, 0xff474849);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 1, 1, &color);
|
||||
expect(Ok, stat);
|
||||
expect(0xff676869, color);
|
||||
|
||||
stat = GdipBitmapGetPixel(bitmap, 0, 0, &color);
|
||||
expect(Ok, stat);
|
||||
expect(0xff474849, color);
|
||||
|
||||
stat = GdipDisposeImage((GpImage*)bitmap);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void check_halftone_palette(ColorPalette *palette)
|
||||
{
|
||||
static const BYTE halftone_values[6]={0x00,0x33,0x66,0x99,0xcc,0xff};
|
||||
UINT i;
|
||||
|
||||
for (i=0; i<palette->Count; i++)
|
||||
{
|
||||
ARGB expected=0xff000000;
|
||||
if (i<8)
|
||||
{
|
||||
if (i&1) expected |= 0x800000;
|
||||
if (i&2) expected |= 0x8000;
|
||||
if (i&4) expected |= 0x80;
|
||||
}
|
||||
else if (i == 8)
|
||||
{
|
||||
expected = 0xffc0c0c0;
|
||||
}
|
||||
else if (i < 16)
|
||||
{
|
||||
if (i&1) expected |= 0xff0000;
|
||||
if (i&2) expected |= 0xff00;
|
||||
if (i&4) expected |= 0xff;
|
||||
}
|
||||
else if (i < 40)
|
||||
{
|
||||
expected = 0x00000000;
|
||||
}
|
||||
else
|
||||
{
|
||||
expected |= halftone_values[(i-40)%6];
|
||||
expected |= halftone_values[((i-40)/6)%6] << 8;
|
||||
expected |= halftone_values[((i-40)/36)%6] << 16;
|
||||
}
|
||||
ok(expected == palette->Entries[i], "Expected %.8x, got %.8x, i=%u/%u\n",
|
||||
expected, palette->Entries[i], i, palette->Count);
|
||||
}
|
||||
}
|
||||
|
||||
static void test_palette(void)
|
||||
{
|
||||
GpStatus stat;
|
||||
GpBitmap *bitmap;
|
||||
INT size;
|
||||
BYTE buffer[1040];
|
||||
ColorPalette *palette=(ColorPalette*)buffer;
|
||||
|
||||
/* test initial palette from non-indexed bitmap */
|
||||
stat = GdipCreateBitmapFromScan0(2, 2, 8, PixelFormat32bppRGB, NULL, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB), size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(0, palette->Count);
|
||||
|
||||
/* test setting palette on not-indexed bitmap */
|
||||
palette->Count = 3;
|
||||
|
||||
stat = GdipSetImagePalette((GpImage*)bitmap, palette);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*3, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(3, palette->Count);
|
||||
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
|
||||
/* test initial palette on 1-bit bitmap */
|
||||
stat = GdipCreateBitmapFromScan0(2, 2, 4, PixelFormat1bppIndexed, NULL, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*2, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(PaletteFlagsGrayScale, palette->Flags);
|
||||
expect(2, palette->Count);
|
||||
|
||||
expect(0xff000000, palette->Entries[0]);
|
||||
expect(0xffffffff, palette->Entries[1]);
|
||||
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
|
||||
/* test initial palette on 4-bit bitmap */
|
||||
stat = GdipCreateBitmapFromScan0(2, 2, 4, PixelFormat4bppIndexed, NULL, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*16, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(0, palette->Flags);
|
||||
expect(16, palette->Count);
|
||||
|
||||
check_halftone_palette(palette);
|
||||
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
|
||||
/* test initial palette on 8-bit bitmap */
|
||||
stat = GdipCreateBitmapFromScan0(2, 2, 8, PixelFormat8bppIndexed, NULL, &bitmap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*256, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(PaletteFlagsHalftone, palette->Flags);
|
||||
expect(256, palette->Count);
|
||||
|
||||
check_halftone_palette(palette);
|
||||
|
||||
/* test setting/getting a different palette */
|
||||
palette->Entries[1] = 0xffcccccc;
|
||||
|
||||
stat = GdipSetImagePalette((GpImage*)bitmap, palette);
|
||||
expect(Ok, stat);
|
||||
|
||||
palette->Entries[1] = 0;
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*256, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(PaletteFlagsHalftone, palette->Flags);
|
||||
expect(256, palette->Count);
|
||||
expect(0xffcccccc, palette->Entries[1]);
|
||||
|
||||
/* test count < 256 */
|
||||
palette->Flags = 12345;
|
||||
palette->Count = 3;
|
||||
|
||||
stat = GdipSetImagePalette((GpImage*)bitmap, palette);
|
||||
expect(Ok, stat);
|
||||
|
||||
palette->Entries[1] = 0;
|
||||
palette->Entries[3] = 0xdeadbeef;
|
||||
|
||||
stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size);
|
||||
expect(Ok, stat);
|
||||
expect(sizeof(UINT)*2+sizeof(ARGB)*3, size);
|
||||
|
||||
stat = GdipGetImagePalette((GpImage*)bitmap, palette, size);
|
||||
expect(Ok, stat);
|
||||
expect(12345, palette->Flags);
|
||||
expect(3, palette->Count);
|
||||
expect(0xffcccccc, palette->Entries[1]);
|
||||
expect(0xdeadbeef, palette->Entries[3]);
|
||||
|
||||
/* test count > 256 */
|
||||
palette->Count = 257;
|
||||
|
||||
stat = GdipSetImagePalette((GpImage*)bitmap, palette);
|
||||
ok(stat == InvalidParameter ||
|
||||
broken(stat == Ok), /* Old gdiplus behavior */
|
||||
"Expected %.8x, got %.8x\n", InvalidParameter, stat);
|
||||
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
|
||||
START_TEST(image)
|
||||
|
@ -766,6 +1117,9 @@ START_TEST(image)
|
|||
test_testcontrol();
|
||||
test_fromhicon();
|
||||
test_getrawformat();
|
||||
test_createhbitmap();
|
||||
test_getsetpixel();
|
||||
test_palette();
|
||||
|
||||
GdiplusShutdown(gdiplusToken);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue