Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324/* * PROJECT: ReactOS api tests * LICENSE: GPL - See COPYING in the top level directory * PURPOSE: Test for SetWindowExtEx * PROGRAMMERS: Timo Kreuzer * Katayama Hirofumi MZ */
#include "precomp.h"
void Test_SetWindowExtEx(){ HDC hDC; BOOL ret; SIZE WindowExt, ViewportExt; //PGDI_TABLE_ENTRY pEntry; //DC_ATTR* pDC_Attr;
hDC = CreateCompatibleDC(0); ok(hDC != NULL, "CreateCompatibleDC failed. Skipping tests.\n"); if (hDC == NULL) return;
SetLastError(0); ret = SetWindowExtEx(0, 0, 0, NULL); ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x1234, 0, 0, NULL); ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x10000, 0, 0, NULL); ok_err(ERROR_INVALID_PARAMETER); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x210000, 0, 0, NULL); // GDILoObjType_LO_ALTDC_TYPE ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x260000, 0, 0, NULL); // GDILoObjType_LO_METAFILE16_TYPE ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x460000, 0, 0, NULL); // GDILoObjType_LO_METAFILE_TYPE ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx((HDC)0x660000, 0, 0, NULL); // GDILoObjType_LO_METADC16_TYPE ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
SetLastError(0); ret = SetWindowExtEx(hDC, 0, 0, NULL); ok_err(0); ok_int(ret, 1);
/* Test 16 bit handle */ SetLastError(0); ret = SetWindowExtEx((HDC)((ULONG_PTR)hDC & 0xffff), 0, 0, NULL); ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0);
WindowExt.cx = 1234; WindowExt.cy = 6789; SetLastError(0); ret = SetWindowExtEx(0, 0, 0, &WindowExt); ok_err(ERROR_INVALID_HANDLE); ok_int(ret, 0); ok_long(WindowExt.cx, 1234); ok_long(WindowExt.cy, 6789);
DeleteDC(hDC);
/* Test with a deleted DC */ SetLastError(0); ret = SetWindowExtEx(hDC, 0, 0, NULL); ok_err(ERROR_INVALID_PARAMETER); ok_int(ret, 0);
hDC = CreateCompatibleDC(0); ok(hDC != NULL, "CreateCompatibleDC failed. Skipping tests.\n"); if (hDC == NULL) return;
//pEntry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hDC); //pDC_Attr = pEntry->UserData; //ASSERT(pDC_Attr);
/* Test setting 0 extents without changing the map mode (MM_TEXT) */ ret = SetWindowExtEx(hDC, 0, 0, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1);
/* Test setting proper extents without changing the map mode (MM_TEXT) */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 10, 20, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 40, 30, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1);
/* Test setting in isotropic mode with 0 extents */ SetMapMode(hDC, MM_ISOTROPIC); WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 0, 0, &WindowExt); ok_int(ret, 0); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700); ret = SetWindowExtEx(hDC, 100, 0, &WindowExt); ok_int(ret, 0); ret = SetWindowExtEx(hDC, 0, 100, &WindowExt); ok_int(ret, 0);
/* Test setting in isotropic mode */ ret = SetWindowExtEx(hDC, 21224, 35114, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700);
/* Values should be changed */ ret = SetWindowExtEx(hDC, 4 * GetDeviceCaps(GetDC(0), HORZRES), -4 * GetDeviceCaps(GetDC(0), VERTRES), &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 21224); ok_long(WindowExt.cy, 35114);
/* Check the viewport, should be the same */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* again isotropic mode with 1:1 res */ ret = SetWindowExtEx(hDC, 123, 123, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 4 * GetDeviceCaps(GetDC(0), HORZRES)); ok_long(WindowExt.cy, -4 * GetDeviceCaps(GetDC(0), VERTRES));
/* Test flXform */ //TEST(pDC_Attr->flXform & PAGE_EXTENTS_CHANGED);
/* Check the viewport from the dcattr, without going through gdi */ //ok_long(pDC_Attr->szlViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); //ok_long(pDC_Attr->szlViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Check the viewport with gdi, should not be the same */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), VERTRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Test flXform */ //TEST(pDC_Attr->flXform & PAGE_EXTENTS_CHANGED);
/* again isotropic mode with 3:1 res */ ret = SetWindowExtEx(hDC, 300, 100, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 123); ok_long(WindowExt.cy, 123);
/* Check the viewport now, should not be the same */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), VERTRES)); ok_long(ViewportExt.cy, -MulDiv(GetDeviceCaps(GetDC(0), VERTRES), 1, 3));
/* again isotropic mode with 1:3 res */ SetViewportExtEx(hDC, 6000, 3000, 0); ret = SetWindowExtEx(hDC, 200, 600, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 300); ok_long(WindowExt.cy, 100);
/* Check the viewport now, should not be the same */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 1000); ok_long(ViewportExt.cy, 3000);
/* Test setting in anisotropic mode */ SetMapMode(hDC, MM_ANISOTROPIC); ret = SetWindowExtEx(hDC, 80, 60, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 200); ok_long(WindowExt.cy, 600);
/* Values should be changed */ ret = SetWindowExtEx(hDC, 500, 500, &WindowExt); ok_int(ret, 1); ok_long(WindowExt.cx, 80); ok_long(WindowExt.cy, 60);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 1000); ok_long(ViewportExt.cy, 3000);
/* Test setting in low metric mode */ SetMapMode(hDC, MM_LOMETRIC); ret = SetWindowExtEx(hDC, 120, 90, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 900, 700, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Test setting in high metric mode */ SetMapMode(hDC, MM_HIMETRIC); ret = SetWindowExtEx(hDC, 120, 90, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 36000); //ok_long(WindowExt.cy, 27000);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 500, 300, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 36000); //ok_long(WindowExt.cy, 27000);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Test setting in low english mode */ SetMapMode(hDC, MM_LOENGLISH); ret = SetWindowExtEx(hDC, 320, 290, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 1417); //ok_long(WindowExt.cy, 1063);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 560, 140, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 1417); //ok_long(WindowExt.cy, 1063);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Test setting in high english mode */ SetMapMode(hDC, MM_HIENGLISH); ret = SetWindowExtEx(hDC, 320, 290, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 14173); //ok_long(WindowExt.cy, 10630);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 1560, 1140, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 14173); //ok_long(WindowExt.cy, 10630);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* Test setting in twips mode */ SetMapMode(hDC, MM_TWIPS); ret = SetWindowExtEx(hDC, 3320, 3290, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 20409); //ok_long(WindowExt.cy, 15307);
/* Values should not be changed */ WindowExt.cx = WindowExt.cy = 0; ret = SetWindowExtEx(hDC, 4560, 4140, &WindowExt); ok_int(ret, 1); //ok_long(WindowExt.cx, 20409); //ok_long(WindowExt.cy, 15307);
/* Check the viewport */ GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
/* test manually modifying the dcattr, should go to tests for GetViewportExtEx */ SetMapMode(hDC, MM_ISOTROPIC); ret = SetWindowExtEx(hDC, 420, 4140, &WindowExt); //pDC_Attr->szlWindowExt.cx = 0; GetViewportExtEx(hDC, &ViewportExt); //ok_long(pDC_Attr->szlWindowExt.cx, 0); //ok_long(ViewportExt.cx, 0);
DeleteDC(hDC);}
START_TEST(SetWindowExtEx){ Test_SetWindowExtEx();}