mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 09:23:06 +00:00
[GDI32_APITEST]
Add tests for ExtCreateRegion svn path=/trunk/; revision=65380
This commit is contained in:
parent
8cd169b5c5
commit
a1330711d6
3 changed files with 132 additions and 0 deletions
|
@ -25,6 +25,7 @@ list(APPEND SOURCE
|
||||||
EnumFontFamilies.c
|
EnumFontFamilies.c
|
||||||
ExcludeClipRect.c
|
ExcludeClipRect.c
|
||||||
ExtCreatePen.c
|
ExtCreatePen.c
|
||||||
|
ExtCreateRegion.c
|
||||||
GdiConvertBitmap.c
|
GdiConvertBitmap.c
|
||||||
GdiConvertBrush.c
|
GdiConvertBrush.c
|
||||||
GdiConvertDC.c
|
GdiConvertDC.c
|
||||||
|
|
129
rostests/apitests/gdi32/ExtCreateRegion.c
Normal file
129
rostests/apitests/gdi32/ExtCreateRegion.c
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS api tests
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
|
* PURPOSE: Test for ExtCeateRegion
|
||||||
|
* PROGRAMMERS: Timo Kreuzer
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <apitest.h>
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
VOID
|
||||||
|
InitXFORM(
|
||||||
|
PXFORM pxform,
|
||||||
|
FLOAT eM11,
|
||||||
|
FLOAT eM12,
|
||||||
|
FLOAT eM21,
|
||||||
|
FLOAT eM22,
|
||||||
|
FLOAT eDx,
|
||||||
|
FLOAT eDy)
|
||||||
|
{
|
||||||
|
pxform->eM11 = eM11;
|
||||||
|
pxform->eM12 = eM12;
|
||||||
|
pxform->eM21 = eM21;
|
||||||
|
pxform->eM22 = eM22;
|
||||||
|
pxform->eDx = eDx;
|
||||||
|
pxform->eDy = eDy;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void Test_ExtCreateRegion_Parameters()
|
||||||
|
{
|
||||||
|
hrgn = ExtCreateRegion(NULL, 1, pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed \n");
|
||||||
|
}
|
||||||
|
#endif // 0
|
||||||
|
|
||||||
|
#define CheckRect(prect, _left, _top, _right, _bottom) \
|
||||||
|
do { \
|
||||||
|
ok(((prect)->left == _left) && ((prect)->top == _top) && \
|
||||||
|
((prect)->right == _right) && ((prect)->bottom == _bottom), \
|
||||||
|
"Region does not match, expected (%ld,%ld,%ld,%ld) got (%ld,%ld,%ld,%ld)\n", \
|
||||||
|
_left, _top, _right, _bottom, \
|
||||||
|
(prect)->left, (prect)->top, (prect)->right, (prect)->bottom); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define CheckRectRegion(hrgn, _left, _top, _right, _bottom) \
|
||||||
|
do { \
|
||||||
|
HRGN hrgnTemp = CreateRectRgn(_left, _top, _right, _bottom); \
|
||||||
|
RECT rcTemp; \
|
||||||
|
ok(GetRgnBox(hrgn, &rcTemp) == SIMPLEREGION, "Region is not SIMPLEREGION\n"); \
|
||||||
|
CheckRect(&rcTemp, _left, _top, _right, _bottom); \
|
||||||
|
ok(EqualRgn(hrgn, hrgnTemp), "Region does not match\n"); \
|
||||||
|
DeleteObject(hrgnTemp); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
void Test_ExtCreateRegion_Transform()
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
RGNDATA rgndata;
|
||||||
|
CHAR data[sizeof(RECT) - 1];
|
||||||
|
} RgnDataBuffer;
|
||||||
|
PRECT prect = (PRECT)&RgnDataBuffer.rgndata.Buffer;
|
||||||
|
const RGNDATA *pRgnData = (const RGNDATA *)&RgnDataBuffer;
|
||||||
|
XFORM xform;
|
||||||
|
FLOAT eAngle;
|
||||||
|
HRGN hrgn;
|
||||||
|
RECT rcTemp;
|
||||||
|
|
||||||
|
RgnDataBuffer.rgndata.rdh.dwSize = sizeof(RGNDATAHEADER);
|
||||||
|
RgnDataBuffer.rgndata.rdh.iType = RDH_RECTANGLES;
|
||||||
|
RgnDataBuffer.rgndata.rdh.nCount = 1;
|
||||||
|
RgnDataBuffer.rgndata.rdh.nRgnSize = sizeof(RGNDATAHEADER) + sizeof(RECT);
|
||||||
|
RgnDataBuffer.rgndata.rdh.rcBound.left = 0;
|
||||||
|
RgnDataBuffer.rgndata.rdh.rcBound.top = 0;
|
||||||
|
RgnDataBuffer.rgndata.rdh.rcBound.right = 10;
|
||||||
|
RgnDataBuffer.rgndata.rdh.rcBound.bottom = 10;
|
||||||
|
prect->left = 0;
|
||||||
|
prect->top = 0;
|
||||||
|
prect->right = 10;
|
||||||
|
prect->bottom = 10;
|
||||||
|
|
||||||
|
SetRectEmpty(&RgnDataBuffer.rgndata.rdh.rcBound);
|
||||||
|
|
||||||
|
hrgn = ExtCreateRegion(NULL, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with without transform\n");
|
||||||
|
CheckRectRegion(hrgn, 0, 0, 10, 10);
|
||||||
|
|
||||||
|
InitXFORM(&xform, 1., 0., 0., 1., 0., 0.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with identity transform\n");
|
||||||
|
CheckRectRegion(hrgn, 0, 0, 10, 10);
|
||||||
|
|
||||||
|
InitXFORM(&xform, 1., 0., 0., 1., 10., 10.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with offset transform\n");
|
||||||
|
CheckRectRegion(hrgn, 10, 10, 20, 20);
|
||||||
|
|
||||||
|
InitXFORM(&xform, 2.5, 0., 0., 1.5, 0., 0.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with scaling transform\n");
|
||||||
|
CheckRectRegion(hrgn, 0, 0, 25, 15);
|
||||||
|
|
||||||
|
InitXFORM(&xform, 2.5, 0., 0., 1.5, 20., 40.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with scaling+offset transform\n");
|
||||||
|
CheckRectRegion(hrgn, 20, 40, 45, 55);
|
||||||
|
|
||||||
|
InitXFORM(&xform, 1., 10., 0., 1., 0., 0.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with shearing transform\n");
|
||||||
|
ok(GetRgnBox(hrgn, &rcTemp) == COMPLEXREGION, "not a complex region\n");
|
||||||
|
CheckRect(&rcTemp, 0, 1, 10, 101);
|
||||||
|
|
||||||
|
eAngle = 23.6f;
|
||||||
|
InitXFORM(&xform, cosf(eAngle), -sinf(eAngle), sinf(eAngle), cosf(eAngle), 10., 10.);
|
||||||
|
hrgn = ExtCreateRegion(&xform, sizeof(RgnDataBuffer), pRgnData);
|
||||||
|
ok(hrgn != NULL, "ExtCreateRegion failed with rotating transform\n");
|
||||||
|
CheckRectRegion(hrgn, 0, 10, 10, 20);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(ExtCreateRegion)
|
||||||
|
{
|
||||||
|
Test_ExtCreateRegion_Transform();
|
||||||
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ extern void func_EngReleaseSemaphore(void);
|
||||||
extern void func_EnumFontFamilies(void);
|
extern void func_EnumFontFamilies(void);
|
||||||
extern void func_ExcludeClipRect(void);
|
extern void func_ExcludeClipRect(void);
|
||||||
extern void func_ExtCreatePen(void);
|
extern void func_ExtCreatePen(void);
|
||||||
|
extern void func_ExtCreateRegion(void);
|
||||||
extern void func_GdiConvertBitmap(void);
|
extern void func_GdiConvertBitmap(void);
|
||||||
extern void func_GdiConvertBrush(void);
|
extern void func_GdiConvertBrush(void);
|
||||||
extern void func_GdiConvertDC(void);
|
extern void func_GdiConvertDC(void);
|
||||||
|
@ -89,6 +90,7 @@ const struct test winetest_testlist[] =
|
||||||
{ "EnumFontFamilies", func_EnumFontFamilies },
|
{ "EnumFontFamilies", func_EnumFontFamilies },
|
||||||
{ "ExcludeClipRect", func_ExcludeClipRect },
|
{ "ExcludeClipRect", func_ExcludeClipRect },
|
||||||
{ "ExtCreatePen", func_ExtCreatePen },
|
{ "ExtCreatePen", func_ExtCreatePen },
|
||||||
|
{ "ExtCreateRegion", func_ExtCreateRegion },
|
||||||
{ "GdiConvertBitmap", func_GdiConvertBitmap },
|
{ "GdiConvertBitmap", func_GdiConvertBitmap },
|
||||||
{ "GdiConvertBrush", func_GdiConvertBrush },
|
{ "GdiConvertBrush", func_GdiConvertBrush },
|
||||||
{ "GdiConvertDC", func_GdiConvertDC },
|
{ "GdiConvertDC", func_GdiConvertDC },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue