/*
 * PROJECT:         ReactOS api tests
 * LICENSE:         GPL - See COPYING in the top level directory
 * PURPOSE:         Test for FrameRgn
 * PROGRAMMERS:     Timo Kreuzer
 */

#include "precomp.h"

#include "init.h"

void Test_PaintRgn()
{
    RECT rc = { 0, 0, 100, 100 };
    HRGN hrgn1, hrgn2;
    BOOL bRet;
    XFORM xform;
    PULONG pulDIB = gpvDIB1;

    FillRect(ghdcDIB1, &rc, GetStockObject(BLACK_BRUSH));

    hrgn1 = CreateRectRgn(0, 0, 8, 3);
    ok(hrgn1 != NULL, "failed to create region\n");

    hrgn2 = CreateRectRgn(2, 3, 5, 8);
    ok(hrgn1 != NULL, "failed to create region\n");

    CombineRgn(hrgn1, hrgn1, hrgn2, RGN_OR);

    xform.eM11 = 1.0;
    xform.eM12 = 0.5f;
    xform.eM21 = 0.0;
    xform.eM22 = 1.0;
    xform.eDx = 0.0;
    xform.eDy = 0.0;

    SetGraphicsMode(ghdcDIB1, GM_ADVANCED);
    ok(SetWorldTransform(ghdcDIB1, &xform) == TRUE, "SetWorldTransform failed\n");

    SelectObject(ghdcDIB1, GetStockObject(WHITE_BRUSH));

    bRet = PaintRgn(ghdcDIB1, hrgn1);
    ok(bRet == TRUE, "PaintRgn failed\n");

    ok_long(pulDIB[0], 0x00000000); // 000000000
    ok_long(pulDIB[1], 0x000000C0); // 110000000
    ok_long(pulDIB[2], 0x000000F0); // 111110000
    ok_long(pulDIB[3], 0x000000FC); // 111111000
    ok_long(pulDIB[4], 0x0000003F); // 001111110
    ok_long(pulDIB[5], 0x0000003F); // 001111110
    ok_long(pulDIB[6], 0x0000003B); // 001110110
    ok_long(pulDIB[7], 0x00000038); // 001110000
    ok_long(pulDIB[8], 0x00000038); // 001110000
}

START_TEST(PaintRgn)
{
    InitStuff();
    Test_PaintRgn();
}

