30 #define NONAMELESSUNION 47 #define expect_eq(expr, value, type, format) { type ret = (expr); ok((value) == ret, #expr " expected " format " got " format "\n", value, ret); } 49 #define ole_expect(expr, expect) { \ 51 ok(r == (expect), #expr " returned %x, expected %s (%x)\n", r, #expect, expect); \ 54 #define ole_check(expr) ole_expect(expr, S_OK); 61 #define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr) 65 0x47,0x49,0x46,0x38,0x37,0x61,0x01,0x00,0x01,0x00,0x80,0x00,0x00,0xff,0xff,0xff,
66 0xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x02,0x02,0x44,
72 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c,
73 0x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x05,0x03,0x04,0x04,0x04,0x03,0x05,
74 0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x07,0x0c,0x08,0x07,0x07,0x07,0x07,0x0f,0x0b,
75 0x0b,0x09,0x0c,0x11,0x0f,0x12,0x12,0x11,0x0f,0x11,0x11,0x13,0x16,0x1c,0x17,0x13,
76 0x14,0x1a,0x15,0x11,0x11,0x18,0x21,0x18,0x1a,0x1d,0x1d,0x1f,0x1f,0x1f,0x13,0x17,
77 0x22,0x24,0x22,0x1e,0x24,0x1c,0x1e,0x1f,0x1e,0xff,0xdb,0x00,0x43,0x01,0x05,0x05,
78 0x05,0x07,0x06,0x07,0x0e,0x08,0x08,0x0e,0x1e,0x14,0x11,0x14,0x1e,0x1e,0x1e,0x1e,
79 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
80 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
81 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xff,0xc0,
82 0x00,0x11,0x08,0x00,0x01,0x00,0x01,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
83 0x01,0xff,0xc4,0x00,0x15,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
84 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xff,0xc4,0x00,0x14,0x10,0x01,0x00,0x00,
85 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc4,
86 0x00,0x14,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
87 0x00,0x00,0x00,0x00,0xff,0xc4,0x00,0x14,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
88 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xda,0x00,0x0c,0x03,0x01,
89 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xb2,0xc0,0x07,0xff,0xd9
94 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
95 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53,
96 0xde,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,
97 0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd5,
98 0x06,0x03,0x0f,0x07,0x2d,0x12,0x10,0xf0,0xfd,0x00,0x00,0x00,0x0c,0x49,0x44,0x41,
99 0x54,0x08,0xd7,0x63,0xf8,0xff,0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,
100 0xe7,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
105 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
106 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
107 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
108 0x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,
114 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
115 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x01,0x00,
116 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
117 0x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x01,
123 0x47,0x49,0x46,0x38,0x37,0x61,0x02,0x00,0x02,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,
124 0x39,0x62,0xfc,0xff,0x1a,0xe5,0xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x02,0x00,
125 0x02,0x00,0x00,0x02,0x03,0x14,0x16,0x05,0x00,0x3b
131 0xd7,0xcd,0xc6,0x9a, 0x00,0x00,0x00,0x00, 0x00,0x00,0xee,0x02, 0xb1,0x03,0xa0,0x05,
132 0x00,0x00,0x00,0x00, 0xee,0x53,0x01,0x00, 0x09,0x00,0x00,0x03, 0x13,0x00,0x00,0x00,
133 0x01,0x00,0x05,0x00, 0x00,0x00,0x00,0x00, 0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
134 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00
139 0x01, 0x00, 0x09, 0x00, 0x00, 0x03, 0x19, 0x00,
140 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x32, 0x0a,
142 0x16, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x00, 0x00,
143 0x54, 0x65, 0x73, 0x74, 0x03, 0x00, 0x05, 0x00,
144 0x08, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00,
150 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
152 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0xe7, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xff,
155 0x20, 0x45, 0x4d, 0x46, 0x00, 0x00, 0x01, 0x00,
156 0xf4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
157 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
160 0x40, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x04, 0x00,
163 0x80, 0xa9, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00,
164 0x08, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
165 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
167 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0xc8, 0x41, 0x00, 0x80, 0xbb, 0x41,
169 0x0b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
170 0x04, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
173 0xff, 0xff, 0xff, 0xff, 0x54, 0x00, 0x00, 0x00,
174 0x54, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00,
175 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
176 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
177 0x3c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
178 0x0e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
179 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
180 0x14, 0x00, 0x00, 0x00
232 ok(
hres ==
S_OK,
"OLP (NULL,..) does not return 0, but 0x%08x\n",
hres);
233 ok(pic !=
NULL,
"OLP (NULL,..) returns NULL, instead of !NULL\n");
240 ok(
hres ==
S_OK,
"IPicture_QI does not return S_OK, but 0x%08x\n",
hres);
241 ok(pvObj !=
NULL,
"IPicture_QI does return NULL, instead of a ptr\n");
243 IPicture_Release ((
IPicture*)pvObj);
247 ok(
hres ==
S_OK,
"IPicture_get_Handle does not return S_OK, but 0x%08x\n",
hres);
248 ok(
handle != 0,
"IPicture_get_Handle returns a NULL handle, but it should be non NULL\n");
254 ok(
bmp.bmBits != 0,
"not a dib\n");
259 ok(
hres ==
S_OK,
"IPicture_get_Width does not return S_OK, but 0x%08x\n",
hres);
260 ok(
width != 0,
"IPicture_get_Width returns 0, but it should not be 0.\n");
264 ok(
hres ==
S_OK,
"IPicture_get_Height does not return S_OK, but 0x%08x\n",
hres);
265 ok(
height != 0,
"IPicture_get_Height returns 0, but it should not be 0.\n");
268 hres = IPicture_get_Type (pic, &
type);
269 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
273 hres = IPicture_get_Attributes (pic, &
attr);
274 ok(
hres ==
S_OK,
"IPicture_get_Attributes does not return S_OK, but 0x%08x\n",
hres);
275 ok(
attr == 0,
"IPicture_get_Attributes returns %d, but it should be 0.\n",
attr);
278 hres = IPicture_get_hPal (pic, &hPal);
279 ok(
hres ==
S_OK,
"IPicture_get_hPal does not return S_OK, but 0x%08x\n",
hres);
281 ok(hPal == 0,
"IPicture_get_hPal returns %d, but it should be 0.\n", hPal);
283 res = IPicture_Release (pic);
284 ok (
res == 0,
"refcount after release is %d, but should be 0?\n",
res);
288 test_pic(
const unsigned char *imgdata,
unsigned int imgsize)
306 ok (
hres ==
S_OK,
"createstreamonhglobal failed? doubt it... hres 0x%08x\n",
hres);
310 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
321 for (
i = 1;
i <= 8;
i++) {
330 for (
j = 2;
j <=
i;
j++) {
337 ok (
hres ==
S_OK,
"createstreamonhglobal failed? doubt it... hres 0x%08x\n",
hres);
341 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
374 ok (
hres ==
S_OK,
"CreatestreamOnHGlobal failed? doubt it... hres 0x%08x\n",
hres);
378 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
384 ok(pic !=
NULL,
"empty picture not loaded, pic is NULL\n");
386 hres = IPicture_get_Type (pic, &
type);
387 ok (
hres ==
S_OK,
"empty picture get type failed with hres 0x%08x\n",
hres);
391 hres = IPicture_get_Attributes (pic, &
attr);
392 ok (
hres ==
S_OK,
"empty picture get attributes failed with hres 0x%08x\n",
hres);
393 ok (
attr == 0,
"attr is %d, but should be 0\n",
attr);
396 ok (
hres ==
S_OK,
"empty picture get handle failed with hres 0x%08x\n",
hres);
397 ok (
handle == 0,
"empty picture get handle did not return 0, but 0x%08x\n",
handle);
398 IPicture_Release (pic);
420 ok (
hres ==
S_OK,
"CreatestreamOnHGlobal failed? doubt it... hres 0x%08x\n",
hres);
425 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
431 ok(pic !=
NULL,
"empty picture not loaded, pic is NULL\n");
433 hres = IPicture_get_Type (pic, &
type);
434 ok (
hres ==
S_OK,
"empty picture get type failed with hres 0x%08x\n",
hres);
437 IPicture_Release (pic);
468 V_BOOL(&vararg) = VARIANT_FALSE;
469 dispparams.cNamedArgs = 0;
470 dispparams.rgdispidNamedArgs =
NULL;
471 dispparams.cArgs = 1;
472 dispparams.rgvarg = &vararg;
474 ok(
hr ==
DISP_E_UNKNOWNNAME,
"IPictureDisp_Invoke should have returned DISP_E_UNKNOWNNAME instead of 0x%08x\n",
hr);
476 ok(
hr ==
DISP_E_UNKNOWNNAME,
"IPictureDisp_Invoke should have returned DISP_E_UNKNOWNNAME instead of 0x%08x\n",
hr);
478 dispparams.cArgs = 0;
479 dispparams.rgvarg =
NULL;
494 ok(
V_VT(&varresult) ==
VT_I4,
"V_VT(&varresult) should have been VT_UINT instead of %d\n",
V_VT(&varresult));
502 dispparams.cArgs = 1;
503 dispparams.rgvarg = &vararg;
507 dispparams.cArgs = 1;
508 dispparams.rgvarg = &vararg;
529 dispparams.rgvarg =
args;
530 dispparams.rgdispidNamedArgs =
NULL;
531 dispparams.cArgs = 10;
532 dispparams.cNamedArgs = 0;
545 dispparams.cArgs = 9;
550 IPictureDisp_Release(picdisp);
570 desc.bmp.hpal = (HPALETTE)0xbeefdead;
594 ok(0,
"picture type %d is not supported\n",
type);
617 pict = (
void *)0xdeadbeef;
620 ok(pict ==
NULL,
"got %p\n", pict);
628 hr = IPicture_get_Type(pict, &
type);
633 hr = IPicture_get_Handle(pict, &
handle);
641 hr = IPicture_get_hPal(pict, &
handle);
659 IPicture_Release(pict);
682 ok(
handle != 0,
"handle is null\n");
687 ole_check(IPicture_get_Height(pict, &cxy));
690 ole_check(IPicture_get_Width(pict, &cxy));
693 ole_check(IPicture_get_KeepOriginalFormat(pict, &keep));
697 IPicture_Release(pict);
738 ok(
handle != 0,
"handle is null\n");
743 ole_check(IPicture_get_Height(pict, &cxy));
746 ole_check(IPicture_get_Width(pict, &cxy));
749 ole_check(IPicture_get_KeepOriginalFormat(pict, &keep));
752 IPicture_Release(pict);
769 hr = IPicture_Render(iface,
hdc,
x,
y,
cx,
cy, xSrc, ySrc, cxSrc, cySrc, bounds);
771 IPicture_QueryInterface(iface, &
IID_IDispatch, (
void**)&disp);
797 ok(
hr == hr_disp,
"DISPID_PICT_RENDER returned wrong code, 0x%08x, expected 0x%08x\n",
800 IDispatch_Release(disp);
819 hres = IPicture_get_Type(pic, &
type);
820 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
823 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 0, 0,
NULL);
825 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 0,
NULL);
827 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 10,
NULL);
829 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 0,
NULL);
831 hres =
picture_render(pic,
hdc, 0, 0, 0, 10, 0, 0, 10, 10,
NULL);
833 hres =
picture_render(pic,
hdc, 0, 0, 10, 0, 0, 0, 10, 10,
NULL);
835 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 10, 10,
NULL);
838 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 10,
NULL);
840 IPicture_Release(pic);
845 if(!
desc.icon.hicon){
846 win_skip(
"LoadIcon failed. Skipping...\n");
854 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 0, 0,
NULL);
856 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 0,
NULL);
858 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 10,
NULL);
860 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 0,
NULL);
862 hres =
picture_render(pic,
hdc, 0, 0, 0, 10, 0, 0, 10, 10,
NULL);
864 hres =
picture_render(pic,
hdc, 0, 0, 10, 0, 0, 0, 10, 10,
NULL);
866 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 10, 10,
NULL);
870 IPicture_get_Width(pic, &pWidth);
871 IPicture_get_Height(pic, &pHeight);
878 hres =
picture_render(pic,
hdc, 1, 1, 9, 9, 0, pHeight, pWidth, -pHeight,
NULL);
886 "Color at 0,0 should be unchanged 0x%06X, but was 0x%06X\n",
expected,
result);
889 "Color at 5,5 should have changed, but still was 0x%06X\n",
expected);
892 "Color at 10,10 should be unchanged 0x%06X, but was 0x%06X\n",
expected,
result);
895 IPicture_Release(pic);
908 hres = IPicture_get_Type(pic, &
type);
909 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
912 hres = IPicture_get_Attributes(pic,
NULL);
916 hres = IPicture_get_Attributes(pic, &
attr);
918 ok(
attr == 0,
"IPicture_get_Attributes does not reset attr to zero, got %d\n",
attr);
920 IPicture_Release(pic);
930 hres = IPicture_get_Handle(pic,
NULL);
933 IPicture_Release(pic);
944 hres = IPicture_get_Type(pic,
NULL);
947 IPicture_Release(pic);
959 WCHAR temp_fileW[
MAX_PATH + 5] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'/'};
970 } invalid_parameters[] =
984 invalid_parameters[
i].
riid,
985 (
void **)invalid_parameters[
i].pic);
987 "[%d] Expected OleLoadPicturePath to return E_INVALIDARG, got 0x%08x\n",
i,
hres);
989 "[%d] Expected output pointer to be 0xdeadbeef, got %p\n",
i, pic);
995 ok(
hres == INET_E_UNKNOWN_PROTOCOL ||
998 "Expected OleLoadPicturePath to return INET_E_UNKNOWN_PROTOCOL, got 0x%08x\n",
hres);
1000 "Expected the output interface pointer to be NULL, got %p\n", pic);
1005 ok(
hres == INET_E_UNKNOWN_PROTOCOL ||
1008 "Expected OleLoadPicturePath to return INET_E_UNKNOWN_PROTOCOL, got 0x%08x\n",
hres);
1010 "Expected the output interface pointer to be NULL, got %p\n", pic);
1026 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1028 IPicture_Release(pic);
1035 IPicture_Release(pic);
1042 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1044 IPicture_Release(pic);
1057 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1060 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1070 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1073 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1088 ptr = temp_fileW + 8;
1099 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1101 IPicture_Release(pic);
1114 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1117 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1138 static const BYTE bmp_bits[1024];
1149 desc.cbSizeofstruct =
sizeof(
desc);
1166 hr = IPicture_get_Width(pic, &
cx);
1168 ok(
cx ==
d,
"got %d, expected %d\n",
cx,
d);
1172 hr = IPicture_get_Height(pic, &
cy);
1174 ok(
cy ==
d,
"got %d, expected %d\n",
cy,
d);
1177 IPicture_Release(pic);
1181 1, 1, bmp_bits, bmp_bits);
1182 ok(icon !=
NULL,
"failed to create icon\n");
1185 desc.icon.hicon = icon;
1192 hr = IPicture_get_Width(pic, &
cx);
1194 ok(
cx ==
d,
"got %d, expected %d\n",
cx,
d);
1198 hr = IPicture_get_Height(pic, &
cy);
1200 ok(
cy ==
d,
"got %d, expected %d\n",
cy,
d);
1202 IPicture_Release(pic);
1222 desc.cbSizeofstruct =
sizeof(
desc);
1227 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1230 hr = IPicture_get_Type(pic, &
type);
1234 hr = IPicture_get_Handle(pic, &
handle);
1235 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1240 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1243 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1244 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1245 ok(
size == 66,
"expected 66, got %d\n",
size);
1247 ok(!
memcmp(&
mem[0],
"BM", 2),
"got wrong bmp header %04x\n",
mem[0]);
1251 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1253 ok(
size == -1,
"expected -1, got %d\n",
size);
1260 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1262 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1265 IPersistStream_Release(src_stream);
1266 IStream_Release(dst_stream);
1269 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1270 ok(
mem[1] == 66,
"expected stream size 66, got %u\n",
mem[1]);
1271 ok(!
memcmp(&
mem[2],
"BM", 2),
"got wrong bmp header %04x\n",
mem[2]);
1277 IPicture_Release(pic);
1294 desc.cbSizeofstruct =
sizeof(
desc);
1298 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1301 hr = IPicture_get_Type(pic, &
type);
1305 hr = IPicture_get_Handle(pic, &
handle);
1306 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1311 ok(
hr ==
S_OK,
"CreateStreamOnHGlobal error %#x\n",
hr);
1314 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1315 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1317 ok(
size == 766,
"expected 766, got %d\n",
size);
1319 ok(
mem[0] == 0x00010000,
"got wrong icon header %04x\n",
mem[0]);
1323 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1325 ok(
size == -1,
"expected -1, got %d\n",
size);
1332 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1334 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1337 IPersistStream_Release(src_stream);
1338 IStream_Release(dst_stream);
1341 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1343 ok(
mem[1] == 766,
"expected stream size 766, got %u\n",
mem[1]);
1344 ok(
mem[2] == 0x00010000,
"got wrong icon header %04x\n",
mem[2]);
1350 IPicture_Release(pic);
1367 memset(&pic, 0,
sizeof(pic));
1368 desc.cbSizeofstruct =
sizeof(
desc);
1371 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1374 hr = IPicture_get_Type(pic, &
type);
1379 hr = IPicture_get_Handle(pic, &
handle);
1380 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1385 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1388 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1389 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1390 ok(
size == -1,
"expected -1, got %d\n",
size);
1393 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1394 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1395 ok(
size == -1,
"expected -1, got %d\n",
size);
1398 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1400 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1404 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1405 ok(
mem[1] == 0,
"expected stream size 0, got %u\n",
mem[1]);
1408 IPersistStream_Release(src_stream);
1409 IPicture_Release(pic);
1418 ok(
hr ==
S_OK,
"OleLoadPicture error %#x\n",
hr);
1419 ok(pic !=
NULL,
"picture should not be not NULL\n");
1423 hr = IPicture_get_Type(pic, &
type);
1428 hr = IPicture_get_Handle(pic, &
handle);
1429 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1432 IPicture_Release(pic);
1434 IStream_Release(dst_stream);
1438 ok(
stream !=
NULL,
"failed to create empty image stream\n");
1442 ok(
hr ==
S_OK,
"OleLoadPicture error %#x\n",
hr);
1443 ok(pic !=
NULL,
"picture should not be not NULL\n");
1447 hr = IPicture_get_Type(pic, &
type);
1452 hr = IPicture_get_Handle(pic, &
handle);
1453 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1456 IPicture_Release(pic);
1479 ok(
hdc != 0,
"CreateEnhMetaFileA failed\n");
1481 desc.cbSizeofstruct =
sizeof(
desc);
1484 ok(
desc.emf.hemf != 0,
"CloseEnhMetaFile failed\n");
1486 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1489 hr = IPicture_get_Type(pic, &
type);
1493 hr = IPicture_get_Handle(pic, &
handle);
1494 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1499 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1502 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1503 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1504 ok(
size == 128,
"expected 128, got %d\n",
size);
1514 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1516 ok(
size == -1,
"expected -1, got %d\n",
size);
1523 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1525 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1528 IPersistStream_Release(src_stream);
1529 IStream_Release(dst_stream);
1532 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1533 ok(
mem[1] == 128,
"expected 128, got %u\n",
mem[1]);
1542 IPicture_Release(pic);
1550 if (!pOleLoadPicture)
1552 win_skip(
"OleLoadPicture is not available\n");
1566 if (pOleLoadPictureEx)
1573 win_skip(
"OleLoadPictureEx is not available\n");
1600 This->supportHandle=0;
1646 void* supportBuffer;
1647 ULONG bytesReadBuffer;
1648 ULONG bytesToReadFromBuffer;
1651 pcbRead = &bytesReadBuffer;
1652 bytesToReadFromBuffer =
min(
This->streamSize.u.LowPart -
This->currentPosition.u.LowPart,
cb);
1654 memcpy(pv, (
char *) supportBuffer+
This->currentPosition.u.LowPart, bytesToReadFromBuffer);
1655 This->currentPosition.u.LowPart+=bytesToReadFromBuffer;
1656 *pcbRead = bytesToReadFromBuffer;
1670 void* supportBuffer;
1674 if (pcbWritten == 0)
1678 newSize.
u.HighPart = 0;
1679 newSize.
u.LowPart =
This->currentPosition.u.LowPart +
cb;
1680 if (newSize.
u.LowPart >
This->streamSize.u.LowPart)
1681 IStream_SetSize(iface, newSize);
1684 memcpy((
char *) supportBuffer+
This->currentPosition.u.LowPart, pv,
cb);
1685 This->currentPosition.u.LowPart+=
cb;
1701 case STREAM_SEEK_SET:
1702 newPosition.
u.HighPart = 0;
1703 newPosition.
u.LowPart = 0;
1705 case STREAM_SEEK_CUR:
1706 newPosition =
This->currentPosition;
1708 case STREAM_SEEK_END:
1709 newPosition =
This->streamSize;
1717 if (plibNewPosition) *plibNewPosition = newPosition;
1718 This->currentPosition = newPosition;
1728 if (libNewSize.
u.HighPart != 0)
1730 if (
This->streamSize.u.LowPart == libNewSize.
u.LowPart)
1733 if (supportHandle == 0)
1735 This->supportHandle = supportHandle;
1736 This->streamSize.u.LowPart = libNewSize.
u.LowPart;
1748 BYTE tmpBuffer[128];
1755 totalBytesRead.
u.LowPart = totalBytesRead.
u.HighPart = 0;
1756 totalBytesWritten.
u.LowPart = totalBytesWritten.
u.HighPart = 0;
1758 while (
cb.u.LowPart > 0 )
1760 if (
cb.u.LowPart >= 128 )
1763 copySize =
cb.u.LowPart;
1764 IStream_Read(iface, tmpBuffer, copySize, &bytesRead);
1765 totalBytesRead.
u.LowPart += bytesRead;
1766 IStream_Write(pstm, tmpBuffer, bytesRead, &
bytesWritten);
1773 if (bytesRead!=copySize)
1776 cb.u.LowPart -= bytesRead;
1780 pcbRead->
u.LowPart = totalBytesRead.
u.LowPart;
1781 pcbRead->
u.HighPart = totalBytesRead.
u.HighPart;
1786 pcbWritten->
u.LowPart = totalBytesWritten.
u.LowPart;
1787 pcbWritten->
u.HighPart = totalBytesWritten.
u.HighPart;
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define CTL_E_FILENOTFOUND
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
static HRESULT WINAPI NoStatStreamImpl_UnlockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static HRESULT WINAPI NoStatStreamImpl_Revert(IStream *iface)
#define DISP_E_UNKNOWNNAME
static HRESULT WINAPI NoStatStreamImpl_QueryInterface(IStream *iface, REFIID riid, void **ppvObject)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
GLint GLint GLsizei width
static ULONG WINAPI NoStatStreamImpl_AddRef(IStream *iface)
#define PICTYPE_UNINITIALIZED
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static HRESULT WINAPI NoStatStreamImpl_Read(IStream *iface, void *pv, ULONG cb, ULONG *pcbRead)
#define DISPATCH_PROPERTYGET
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
HGLOBAL NTAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags)
#define STG_E_INVALIDPOINTER
struct _ULARGE_INTEGER::@3916 u
BOOL WINAPI DestroyIcon(_In_ HICON)
const GUID IID_IPictureDisp
static HDC create_render_dc(void)
static HRESULT WINAPI NoStatStreamImpl_Write(IStream *iface, const void *pv, ULONG cb, ULONG *pcbWritten)
HDC WINAPI CreateMetaFileA(_In_opt_ LPCSTR)
static const unsigned char bmpimage_rle8[]
#define DISP_E_MEMBERNOTFOUND
struct tagPICTDESC PICTDESC
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
static void test_pic(const unsigned char *imgdata, unsigned int imgsize)
GLint GLint GLint GLint GLint x
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
static HRESULT WINAPI NoStatStreamImpl_CopyTo(IStream *iface, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
interface IStream * LPSTREAM
static NoStatStreamImpl * impl_from_IStream(IStream *iface)
void WINAPI VariantInit(VARIANTARG *pVarg)
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
static LPVOID *static DWORD
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE, _In_ LPCSTR)
static const unsigned char metafile[]
static void test_metafile(void)
static void NoStatStreamImpl_Destroy(NoStatStreamImpl *This)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static const unsigned char gif4pixel[42]
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
HRESULT WINAPI OleLoadPictureFile(VARIANT filename, IDispatch **picture)
GLenum const GLfloat * params
ULARGE_INTEGER currentPosition
static const WCHAR desc[]
#define expect_eq(expr, value, type, format)
_Out_opt_ int _Out_opt_ int * cy
static void test_Invoke(void)
HDC WINAPI CreateEnhMetaFileA(_In_opt_ HDC, _In_opt_ LPCSTR, _In_opt_ LPCRECT, _In_opt_ LPCSTR)
static void test_load_save_empty_picture(void)
BSTR WINAPI SysAllocString(LPCOLESTR str)
static void test_load_save_icon(void)
static void test_enhmetafile(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
static ULONG WINAPI NoStatStreamImpl_Release(IStream *iface)
#define DISPID_PICT_RENDER
BOOL WINAPI DeleteEnhMetaFile(_In_opt_ HENHMETAFILE)
HMETAFILE WINAPI CloseMetaFile(_In_ HDC hdc)
#define STG_E_INVALIDFUNCTION
static const unsigned char bmpimage[66]
#define DISPATCH_PROPERTYPUT
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
static void test_get_Attributes(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static HRESULT WINAPI NoStatStreamImpl_Commit(IStream *iface, DWORD grfCommitFlags)
static const IStreamVtbl NoStatStreamImpl_Vtbl
static void test_himetric(void)
#define DISP_E_TYPEMISMATCH
static void test_pic_with_stream(LPSTREAM stream, unsigned int imgsize)
static HRESULT WINAPI NoStatStreamImpl_Stat(IStream *iface, STATSTG *pstatstg, DWORD grfStatFlag)
#define PICTYPE_ENHMETAFILE
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static void delete_render_dc(HDC dc)
static void test_load_save_emf(void)
#define UlongToHandle(ul)
static void test_get_Type(void)
static HRESULT(WINAPI *pOleLoadPicture)(LPSTREAM
HICON WINAPI CreateIcon(_In_opt_ HINSTANCE, _In_ int, _In_ int, _In_ BYTE, _In_ BYTE, _In_ const BYTE *, _In_ const BYTE *)
static HRESULT WINAPI NoStatStreamImpl_SetSize(IStream *iface, ULARGE_INTEGER libNewSize)
int WINAPI GetSystemMetrics(_In_ int)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
HENHMETAFILE WINAPI CloseEnhMetaFile(_In_ HDC hdc)
const GUID IID_IPersistStream
struct NoStatStreamImpl NoStatStreamImpl
static const unsigned char enhmetafile[]
#define FILE_ATTRIBUTE_NORMAL
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid, BOOL Own, void **ppvObj)
#define seekto(pos, errstr)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
#define InterlockedDecrement
#define DISP_E_PARAMNOTOPTIONAL
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define memcpy(s1, s2, n)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
REFIID LPVOID * ppvObject
static const unsigned char jpgimage[285]
static const unsigned char gifimage[35]
#define ENHMETA_SIGNATURE
GLint GLint GLsizei GLsizei height
static HRESULT WINAPI NoStatStreamImpl_LockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
GLenum GLsizei GLuint GLint * bytesWritten
static HRESULT create_picture(short type, IPicture **pict)
static HRESULT WINAPI NoStatStreamImpl_Clone(IStream *iface, IStream **ppstm)
static HRESULT WINAPI NoStatStreamImpl_Seek(IStream *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
HRESULT WINAPI OleLoadPicturePath(LPOLESTR szURLorPath, LPUNKNOWN punkCaller, DWORD dwReserved, OLE_COLOR clrReserved, REFIID riid, LPVOID *ppvRet)
#define InterlockedIncrement
static const WCHAR emptyW[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL WINAPI DeleteDC(_In_ HDC)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
static IStream * NoStatStream_Construct(HGLOBAL hGlobal)
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
ULARGE_INTEGER streamSize
static void test_load_save_bmp(void)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
static void test_get_Handle(void)
static const unsigned char apmdata[]
GLint GLint GLint GLint GLint GLint y
#define DISP_E_BADPARAMCOUNT
#define MultiByteToWideChar
#define ok_ole_success(hr, func)
static HMODULE MODULEINFO DWORD cb
struct stdole::DISPPARAMS DISPPARAMS
static HRESULT picture_render(IPicture *iface, HDC hdc, LONG x, LONG y, LONG cx, LONG cy, OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc, OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc, const RECT *bounds)
#define CTL_E_INVALIDPROPERTYVALUE
#define GetProcAddress(x, y)
static void test_empty_image(void)
static void test_OleLoadPicturePath(void)
GLuint GLuint GLsizei GLenum type
#define CreateFileA(a, b, c, d, e, f, g)
BOOL WINAPI SetPixelV(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF)
static const unsigned char pngimage[285]
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
#define HeapFree(x, y, z)
#define IsEqualIID(riid1, riid2)
#define CTL_E_PATHFILEACCESSERROR
static void test_empty_image_2(void)
static void test_apm(void)
#define ole_expect(expr, expect)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
static void test_Render(void)
static void test_OleCreatePictureIndirect(void)