https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a6b84082e6a8e07e6c89eb...
commit a6b84082e6a8e07e6c89eb62952463fbc4a3f8c9 Author: Katayama Hirofumi MZ katayama.hirofumi.mz@gmail.com AuthorDate: Mon Apr 22 13:48:57 2019 +0900 Commit: GitHub noreply@github.com CommitDate: Mon Apr 22 13:48:57 2019 +0900
[GDI32_APITEST] Rewrite DPtoLP testcase (#1509)
Sorry, I had to rewrite gdi32!DPtoLP testcase. ROSTESTS-319 --- modules/rostests/apitests/gdi32/DPtoLP.c | 779 +++++++++++++++++++------------ 1 file changed, 486 insertions(+), 293 deletions(-)
diff --git a/modules/rostests/apitests/gdi32/DPtoLP.c b/modules/rostests/apitests/gdi32/DPtoLP.c index 48a841407c..88e18fb38d 100644 --- a/modules/rostests/apitests/gdi32/DPtoLP.c +++ b/modules/rostests/apitests/gdi32/DPtoLP.c @@ -9,319 +9,512 @@ #include "precomp.h"
#define INVALID_POINTER ((PVOID)(ULONG_PTR)0xdeadbeefdeadbeefULL) +#define IGNORE 0xFACECAFE +#define CALC_VALUE_1 0xBADACE01 +#define CALC_VALUE_2 0xFEEDF00D +#define CALC_VALUE_3 0xDEADCAD1 +#define DISPLAY_SIZE 0xDEADBEEF +#define NEGA_DISPLAY_SIZE 0xBEEFDEAD + +typedef struct PRESET +{ + LONG xWnd; + LONG yWnd; + LONG cxWnd; + LONG cyWnd; + + LONG xView; + LONG yView; + LONG cxView; + LONG cyView; +} PRESET; + +typedef struct TEST_ENTRY +{ + INT lineno; + BOOL ret; + DWORD error; + + BOOL bWndExt; + INT nMapMode; + + PRESET preset; + + LONG xWndOut; + LONG yWndOut; + LONG cxWndOut; + LONG cyWndOut; + + LONG xViewOut; + LONG yViewOut; + LONG cxViewOut; + LONG cyViewOut; + + POINT ptSrc; + POINT ptDest; +} TEST_ENTRY; + +#define PRESET0 { 0, 0, 0, 0, 0, 0, 0, 0 } +#define PRESET1 { 0, 0, 1, 1, 0, 0, 1, 1 } +#define PRESET2 { 75, 0, 1, 1, 0, 0, 10, 10 } +#define PRESET3 { 0, 180, 1, 1, 120, 0, 1, 1 } +#define PRESET4 { 0, 0, 200, 1, 50, 0, 1, 1 } +#define PRESET5 { 0, 0, 1, 200, 0, 0, -100, 1 } +#define PRESET6 { 50, 0, 1, 200, 10, 0, 100, 200 } + +static const TEST_ENTRY s_entries[] = +{ + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET0, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET2, 75, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 175, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { -20, 330 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET4, 0, 0, 1, 1, 50, 0, 1, 1, { 100, 150 }, { 50, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET5, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET6, 50, 0, 1, 1, 10, 0, 1, 1, { 100, 150 }, { 140, 150 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ANISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { IGNORE, IGNORE } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { 85, 15 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { -20, 330 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 1, { 100, 150 }, { 10000, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, -100, 1, { 100, 150 }, { -1, 30000 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 100, 200, { 100, 150 }, { 51, 150 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { IGNORE, IGNORE } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { 85, 15 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { -20, 330 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 0, { 100, 150 }, { 100, 150 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, 0, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 1, 200, { 100, 150 }, { 140, 150 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_1 , CALC_VALUE_1 } }, +}; +static const size_t s_entries_count = _countof(s_entries); + +static const TEST_ENTRY s_shifted_entries[] = +{ + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET0, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET2, 75, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET4, 0, 0, 1, 1, 50, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET5, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET6, 50, 0, 1, 1, 10, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ANISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { IGNORE, IGNORE } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, -100, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 100, 200, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { IGNORE, IGNORE } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 0, { 100, 150 }, { 100, 150 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, 0, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 1, 200, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_2, CALC_VALUE_2 } }, +}; +static const size_t s_shifted_entries_count = _countof(s_shifted_entries); + +static const TEST_ENTRY s_transformed_entries[] = +{ + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET0, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET2, 75, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET4, 0, 0, 1, 1, 50, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET5, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TEXT, PRESET6, 50, 0, 1, 1, 10, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ANISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, -100, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ANISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 100, 200, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, FALSE, MM_ISOTROPIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, IGNORE, IGNORE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET1, 0, 0, 1, 1, 0, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET2, 75, 0, 1, 1, 0, 0, 10, 10, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET3, 0, 180, 1, 1, 120, 0, 1, 1, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET4, 0, 0, 200, 1, 50, 0, 1, 0, { 100, 150 }, { 100, 150 } }, + { __LINE__, FALSE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET5, 0, 0, 1, 200, 0, 0, 0, 1, { 100, 150 }, { 100, 150 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_ISOTROPIC, PRESET6, 50, 0, 1, 200, 10, 0, 1, 200, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIMETRIC, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_LOENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_HIENGLISH, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET0, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET1, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET2, 75, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET3, 0, 180, IGNORE, IGNORE, 120, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET4, 0, 0, IGNORE, IGNORE, 50, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET5, 0, 0, IGNORE, IGNORE, 0, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, + { __LINE__, TRUE, 0xDEADBEEF, TRUE, MM_TWIPS, PRESET6, 50, 0, IGNORE, IGNORE, 10, 0, DISPLAY_SIZE, NEGA_DISPLAY_SIZE, { 100, 150 }, { CALC_VALUE_3, CALC_VALUE_3 } }, +}; +static const size_t s_transformed_entries_count = _countof(s_transformed_entries); + +static void SetXForm1(XFORM *pxform) +{ + pxform->eM11 = 1; + pxform->eM12 = 0; + pxform->eM21 = 0; + pxform->eM22 = 1; + pxform->eDx = 314; + pxform->eDy = -99; +} + +static void SetXForm2(XFORM *pxform) +{ + pxform->eM11 = 2; + pxform->eM12 = 0; + pxform->eM21 = 0; + pxform->eM22 = 3; + pxform->eDx = 0; + pxform->eDy = 0; +}
-void Test_DPtoLP_Params() +static BOOL InverseXForm(XFORM *pxform) { - HDC hdc; + XFORM xform = *pxform; + FLOAT delta = xform.eM11 * xform.eM22 - xform.eM12 * xform.eM21; + if (delta == 0) + return FALSE; + + pxform->eM11 = xform.eM22 / delta; + pxform->eM12 = -xform.eM12 / delta; + pxform->eM21 = -xform.eM21 / delta; + pxform->eM22 = xform.eM11 / delta; + pxform->eDx = (-xform.eM22 * xform.eDx + xform.eM12 * xform.eDy); + pxform->eDy = (xform.eM21 * xform.eDx - xform.eM11 * xform.eDy); + return TRUE; +} + +static void DoTestEntry(HDC hDC, const TEST_ENTRY *entry) +{ + POINT pt, ptWnd, ptView; + SIZE siz, sizWnd, sizView; + INT ret; + + SetMapMode(hDC, entry->nMapMode); + + ret = SetWindowOrgEx(hDC, entry->preset.xWnd, entry->preset.yWnd, NULL); + ok(ret == TRUE, "Line %d: SetWindowOrgEx failed\n", entry->lineno); + + ret = SetWindowExtEx(hDC, entry->preset.cxWnd, entry->preset.cyWnd, NULL); + ok(ret == entry->bWndExt, "Line %d: SetWindowExtEx() expected %d, was %d\n", entry->lineno, entry->bWndExt, ret); + + ret = SetViewportOrgEx(hDC, entry->preset.xView, entry->preset.yView, NULL); + ok(ret == TRUE, "Line %d: SetViewportOrgEx failed\n", entry->lineno); + + ret = SetViewportExtEx(hDC, entry->preset.cxView, entry->preset.cyView, NULL); + ok(ret == TRUE, "Line %d: SetViewportExtEx failed\n", entry->lineno); + + ok(GetWindowOrgEx(hDC, &pt) == TRUE, "Line %d: GetWindowOrgEx failed\n", entry->lineno); + ptWnd = pt; + ok(GetWindowExtEx(hDC, &siz) == TRUE, "Line %d: GetWindowExtEx failed\n", entry->lineno); + sizWnd = siz; + + ok(pt.x == entry->xWndOut && pt.y == entry->yWndOut, + "Line %d: Window org expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, entry->xWndOut, entry->yWndOut, pt.x, pt.y); + + if (entry->cxWndOut == DISPLAY_SIZE || entry->cxWndOut == NEGA_DISPLAY_SIZE) + { + LONG cx = GetDeviceCaps(hDC, HORZRES); + LONG cy = GetDeviceCaps(hDC, VERTRES); + if (entry->cxWndOut == NEGA_DISPLAY_SIZE) + cx = -cx; + if (entry->cyWndOut == NEGA_DISPLAY_SIZE) + cy = -cy; + ok(siz.cx == cx && siz.cy == cy, + "Line %d: Window ext expected display size (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, cx, cy, siz.cx, siz.cy); + } + else if (entry->cxWndOut != IGNORE) + { + ok(siz.cx == entry->cxWndOut && siz.cy == entry->cyWndOut, + "Line %d: Window ext expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, entry->cxWndOut, entry->cyWndOut, siz.cx, siz.cy); + } + + ok(GetViewportOrgEx(hDC, &pt) == TRUE, "Line %d: GetViewportOrgEx failed\n", entry->lineno); + ptView = pt; + ok(GetViewportExtEx(hDC, &siz) == TRUE, "Line %d: GetViewportExtEx failed\n", entry->lineno); + sizView = siz; + + ok(pt.x == entry->xViewOut && pt.y == entry->yViewOut, + "Line %d: Viewport org expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, entry->xViewOut , entry->yViewOut, pt.x, pt.y); + + if (entry->cxViewOut == DISPLAY_SIZE || entry->cxViewOut == NEGA_DISPLAY_SIZE) + { + LONG cx = GetDeviceCaps(hDC, HORZRES); + LONG cy = GetDeviceCaps(hDC, VERTRES); + if (entry->cxViewOut == NEGA_DISPLAY_SIZE) + cx = -cx; + if (entry->cyViewOut == NEGA_DISPLAY_SIZE) + cy = -cy; + ok(siz.cx == cx && siz.cy == cy, + "Line %d: Viewport ext expected display size (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, cx, cy, siz.cx, siz.cy); + } + else if (entry->cxViewOut != IGNORE) + { + ok(siz.cx == entry->cxViewOut && siz.cy == entry->cyViewOut, + "Line %d: Viewport ext expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, entry->cxViewOut, entry->cyViewOut, siz.cx, siz.cy); + } + + pt = entry->ptSrc; + + SetLastError(0xDEADBEEF); + ret = DPtoLP(hDC, &pt, 1); + ok(ret == entry->ret, "Line %d: DPtoLP() expected %d, was %d\n", entry->lineno, entry->ret, ret); + + ok(GetLastError() == entry->error, "Line %d: GetLastError() expected %ld, was %ld\n", + entry->lineno, entry->error, GetLastError()); + + if (entry->ptDest.x == CALC_VALUE_1) + { + LONG x = MulDiv(entry->ptSrc.x - ptView.x, sizWnd.cx, sizView.cx) + ptWnd.x; + LONG y = MulDiv(entry->ptSrc.y - ptView.y, sizWnd.cy, sizView.cy) + ptWnd.y; + // TODO: make more accurate + ok(labs(pt.x - x) <= 1 && labs(pt.y - y) <= 1, + "Line %d: Dest expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, x, y, pt.x, pt.y); + } + else if (entry->ptDest.x == CALC_VALUE_2) + { + XFORM xform; + LONG x, y; + SetXForm1(&xform); + if (InverseXForm(&xform)) + { + x = MulDiv(entry->ptSrc.x - ptView.x, sizWnd.cx, sizView.cx) + ptWnd.x; + y = MulDiv(entry->ptSrc.y - ptView.y, sizWnd.cy, sizView.cy) + ptWnd.y; + x = (LONG)((xform.eM11 * x + xform.eM12 * y) + xform.eDx); + y = (LONG)((xform.eM21 * x + xform.eM22 * y) + xform.eDy); + // TODO: make more accurate + ok(labs(pt.x - x) <= 1 && labs(pt.y - y) <= 1, + "Line %d: Dest expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, x, y, pt.x, pt.y); + } + } + else if (entry->ptDest.x == CALC_VALUE_3) + { + XFORM xform; + LONG x, y; + SetXForm2(&xform); + if (InverseXForm(&xform)) + { + x = MulDiv(entry->ptSrc.x - ptView.x, sizWnd.cx, sizView.cx) + ptWnd.x; + y = MulDiv(entry->ptSrc.y - ptView.y, sizWnd.cy, sizView.cy) + ptWnd.y; + x = (LONG)((xform.eM11 * x + xform.eM12 * y) + xform.eDx); + y = (LONG)((xform.eM21 * x + xform.eM22 * y) + xform.eDy); + // TODO: make more accurate + ok(labs(pt.x - x) <= 2 && labs(pt.y - y) <= 2, + "Line %d: Dest expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, x, y, pt.x, pt.y); + } + } + else if (entry->ptDest.x != IGNORE) + { + ok(pt.x == entry->ptDest.x && pt.y == entry->ptDest.y, + "Line %d: Dest expected (%ld, %ld), was (%ld, %ld)\n", + entry->lineno, entry->ptDest.x, entry->ptDest.y, pt.x, pt.y); + } +} + +START_TEST(DPtoLP) +{ + size_t i; POINT apt[2]; + XFORM xform;
- apt[0].x = 0; - apt[0].y = 0; - apt[1].x = -1000; - apt[1].y = 1000; + HDC hDC = CreateCompatibleDC(NULL); + ok(hDC != NULL, "hDC is NULL\n");
- SetLastError(ERROR_SUCCESS); + SetLastError(0xDEADBEEF); ok_int(DPtoLP(NULL, NULL, 0), 1); - ok_err(ERROR_SUCCESS); + ok_err(0xDEADBEEF);
ok_int(DPtoLP(NULL, NULL, -1), 1); - ok_err(ERROR_SUCCESS); + ok_err(0xDEADBEEF);
ok_int(DPtoLP(NULL, INVALID_POINTER, -1), 1); - ok_err(ERROR_SUCCESS); + ok_err(0xDEADBEEF);
ok_int(DPtoLP(NULL, NULL, 2), 0); ok_err(ERROR_INVALID_PARAMETER);
- SetLastError(ERROR_SUCCESS); + SetLastError(0xDEADBEEF); ok_int(DPtoLP(NULL, apt, 2), 0); ok_err(ERROR_INVALID_PARAMETER);
- SetLastError(ERROR_SUCCESS); + SetLastError(0xDEADBEEF); ok_int(DPtoLP(NULL, apt, 0), 1); - ok_err(ERROR_SUCCESS); + ok_err(0xDEADBEEF);
- SetLastError(ERROR_SUCCESS); + SetLastError(0xDEADBEEF); ok_int(DPtoLP(NULL, apt, -2), 1); - ok_err(ERROR_SUCCESS); + ok_err(0xDEADBEEF);
- SetLastError(ERROR_SUCCESS); + SetLastError(0xDEADBEEF); ok_int(DPtoLP((HDC)-4, apt, -2), 1); - ok_err(ERROR_SUCCESS); - - hdc = GetDC(0); - SetLastError(ERROR_SUCCESS); - ok_int(DPtoLP(hdc, NULL, 2), 1); - ok_err(ERROR_SUCCESS); - - hdc = GetDC(0); - SetLastError(ERROR_SUCCESS); - ok_int(DPtoLP(hdc, INVALID_POINTER, 2), 1); - ok_err(ERROR_SUCCESS); - - - ReleaseDC(0, hdc); -} - -static void GetExtent(HDC hdc, SIZE *psizWnd, SIZE *psizView) -{ - GetWindowExtEx(hdc, psizWnd); - //trace("*psizWnd: (%ld, %ld)\n", psizWnd->cx, psizWnd->cy); - - GetViewportExtEx(hdc, psizView); - //trace("*psizView: (%ld, %ld)\n", psizView->cx, psizView->cy); -} - -void Test_DPtoLP() -{ - HDC hdc; - POINT apt[2]; - XFORM xform; - LONG lLogPixelsX, lLogPixelsY; - SIZE sizWnd, sizView; - LONG xLow, yLow, xHigh, yHigh; - - hdc = CreateCompatibleDC(NULL); - lLogPixelsX = GetDeviceCaps(hdc, LOGPIXELSX); - lLogPixelsY = GetDeviceCaps(hdc, LOGPIXELSY); - trace("lLogPixelsX: %ld\n", lLogPixelsX); - trace("lLogPixelsY: %ld\n", lLogPixelsY); - -//#define MULDIV(a, b, c) (((a) * (b)) / (c)) -#define MULDIV(a, b, c) MulDiv((a), (b), (c)) - - // MM_TEXT - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_TEXT); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(sizWnd.cx, 1); - ok_long(sizWnd.cy, 1); - ok_long(sizView.cx, 1); - ok_long(sizView.cy, 1); - ok_long(apt[0].x, 100); - ok_long(apt[0].y, 256); - ok_long(apt[1].x, -1000); - ok_long(apt[1].y, 1000); - - // MM_LOMETRIC - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_LOMETRIC); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - xLow = apt[0].x; - yLow = apt[0].y; - - // MM_HIMETRIC - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_HIMETRIC); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - xHigh = apt[0].x; - yHigh = apt[0].y; - ok(labs(xLow) * 9 < labs(xHigh) && labs(xHigh) < 11 * labs(xLow), "%ld, %ld\n", xLow, xHigh); - ok(labs(yLow) * 9 < labs(yHigh) && labs(yHigh) < 11 * labs(yLow), "%ld, %ld\n", yLow, yHigh); - - // MM_LOENGLISH - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_LOENGLISH); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - xLow = apt[0].x; - yLow = apt[0].y; - - // MM_HIENGLISH - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_HIENGLISH); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - xHigh = apt[0].x; - yHigh = apt[0].y; - ok(labs(xLow) * 9 < labs(xHigh) && labs(xHigh) < 11 * labs(xLow), "%ld, %ld\n", xLow, xHigh); - ok(labs(yLow) * 9 < labs(yHigh) && labs(yHigh) < 11 * labs(yLow), "%ld, %ld\n", yLow, yHigh); - - // MM_TWIPS - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - SetMapMode(hdc, MM_TWIPS); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - SetGraphicsMode(hdc, GM_ADVANCED); - SetMapMode(hdc, MM_ANISOTROPIC); - - xform.eM11 = 1.; - xform.eM12 = 0.; - xform.eM21 = 0.; - xform.eM22 = 1.; - xform.eDx = 2.; - xform.eDy = 1.; - ok_int(SetWorldTransform(hdc, &xform), 1); - - // eDx == 2, eDy == 1 - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100, sizWnd.cx, sizView.cx) - (LONG)xform.eDx); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy) - (LONG)xform.eDy); - ok_long(apt[1].x, MULDIV(-1000, sizWnd.cx, sizView.cx) - (LONG)xform.eDx); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy) - (LONG)xform.eDy); - - // eM11 == 10000000 - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = 10000000.; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, 0); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - // eM11 == 2 - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = 2.; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, MULDIV(100 / 2, sizWnd.cx, sizView.cx)); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, MULDIV(-1000 / 2, sizWnd.cx, sizView.cx)); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - // eM11 == (FLOAT)0x1FFFFFFFF - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = (FLOAT)0x1FFFFFFFF; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - //ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, 0); - //ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - // eM11 == (FLOAT)0xFFFFFFFFU - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = (FLOAT)0xFFFFFFFFU; - xform.eM22 = 1.; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, 0); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - // eM22 == (FLOAT)0xFFFFFFFFU - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = 1.; - xform.eM22 = (FLOAT)0xFFFFFFFFU; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - //ok_long(apt[0].x, MULDIV(100, sizWnd.cy, sizView.cy)); - ok_long(apt[0].y, 0); - //ok_long(apt[1].x, MULDIV(-1000, sizWnd.cy, sizView.cy)); - ok_long(apt[1].y, 0); - - // eM22 == (FLOAT)0x1FFFFFFFFU - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = 1.; - xform.eM22 = (FLOAT)0x1FFFFFFFFU; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - //ok_long(apt[0].x, MULDIV(100, sizWnd.cy, sizView.cy)); - ok_long(apt[0].y, 0); - //ok_long(apt[1].x, MULDIV(-1000, sizWnd.cy, sizView.cy)); - ok_long(apt[1].y, 0); - - // eM11 == (FLOAT)0xFFFFFFFFU, eM22 == (FLOAT)0xFFFFFFFFU - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = (FLOAT)0xFFFFFFFFU; - xform.eM22 = (FLOAT)0xFFFFFFFFU; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - ok_long(apt[0].y, 0); - ok_long(apt[1].x, 0); - ok_long(apt[1].y, 0); - - // eM11 == (FLOAT)0x1FFFFFFFFU, eM22 == (FLOAT)0x1FFFFFFFFU - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = (FLOAT)0x1FFFFFFFFU; - xform.eM22 = (FLOAT)0x1FFFFFFFFU; - xform.eDx = 0.; - xform.eDy = 0.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - ok_long(apt[0].y, 0); - ok_long(apt[1].x, 0); - ok_long(apt[1].y, 0); - - // eM11 == 10000000 - apt[0].x = 100; apt[0].y = 256; apt[1].x = -1000; apt[1].y = 1000; - xform.eM11 = 10000000.; - xform.eM22 = 1.0; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, 0); - ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - xform.eM11 = 1000000.; - ok_int(SetWorldTransform(hdc, &xform), 1); - GetExtent(hdc, &sizWnd, &sizView); - ok_int(DPtoLP(hdc, apt, 2), 1); - ok_long(apt[0].x, 0); - //ok_long(apt[0].y, MULDIV(256, sizWnd.cy, sizView.cy)); - ok_long(apt[1].x, 0); - //ok_long(apt[1].y, MULDIV(1000, sizWnd.cy, sizView.cy)); - - DeleteDC(hdc); + ok_err(0xDEADBEEF); + + SetLastError(0xDEADBEEF); + ok_int(DPtoLP(hDC, NULL, 2), 1); + ok_err(0xDEADBEEF); + + SetLastError(0xDEADBEEF); + ok_int(DPtoLP(hDC, INVALID_POINTER, 2), 1); + ok_err(0xDEADBEEF); + + SetGraphicsMode(hDC, GM_COMPATIBLE); + ModifyWorldTransform(hDC, NULL, MWT_IDENTITY); + + for (i = 0; i < s_entries_count; ++i) + { + DoTestEntry(hDC, &s_entries[i]); + } + + SetGraphicsMode(hDC, GM_ADVANCED); + ModifyWorldTransform(hDC, NULL, MWT_IDENTITY); + + for (i = 0; i < s_entries_count; ++i) + { + DoTestEntry(hDC, &s_entries[i]); + } + + SetXForm1(&xform); + SetGraphicsMode(hDC, GM_ADVANCED); + SetWorldTransform(hDC, &xform); + for (i = 0; i < s_shifted_entries_count; ++i) + { + DoTestEntry(hDC, &s_shifted_entries[i]); + } + + SetXForm2(&xform); + SetGraphicsMode(hDC, GM_ADVANCED); + SetWorldTransform(hDC, &xform); + for (i = 0; i < s_transformed_entries_count; ++i) + { + DoTestEntry(hDC, &s_transformed_entries[i]); + } + + DeleteDC(hDC); } - -START_TEST(DPtoLP) -{ - Test_DPtoLP_Params(); - Test_DPtoLP(); -} -