|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/gdi.h>
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/dc.h>
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/pen.h>
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/shape.h>
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/region.h>
|
|
Packit Service |
fa4841 |
#include <freerdp/gdi/bitmap.h>
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <winpr/crt.h>
|
|
Packit Service |
fa4841 |
#include <winpr/print.h>
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include "line.h"
|
|
Packit Service |
fa4841 |
#include "brush.h"
|
|
Packit Service |
fa4841 |
#include "clipping.h"
|
|
Packit Service |
fa4841 |
#include "helpers.h"
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Ellipse() Test Data */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
static const BYTE ellipse_case_1[256] = {
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
static const BYTE ellipse_case_2[256] = {
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
static const BYTE ellipse_case_3[256] = {
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
Packit Service |
fa4841 |
"\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
int TestGdiEllipse(int argc, char* argv[])
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
int rc = -1;
|
|
Packit Service |
fa4841 |
UINT32 i, j;
|
|
Packit Service |
fa4841 |
const UINT32 RawFormat = PIXEL_FORMAT_RGB8;
|
|
Packit Service |
b1ea74 |
const UINT32 colorFormats[] = { PIXEL_FORMAT_RGB15, PIXEL_FORMAT_ARGB15, PIXEL_FORMAT_RGB16,
|
|
Packit Service |
b1ea74 |
PIXEL_FORMAT_RGB24, PIXEL_FORMAT_ARGB32, PIXEL_FORMAT_XRGB32,
|
|
Packit Service |
b1ea74 |
PIXEL_FORMAT_RGBA32, PIXEL_FORMAT_RGBX32, PIXEL_FORMAT_BGR15,
|
|
Packit Service |
b1ea74 |
PIXEL_FORMAT_ABGR15, PIXEL_FORMAT_BGR16, PIXEL_FORMAT_BGR24,
|
|
Packit Service |
b1ea74 |
PIXEL_FORMAT_ABGR32, PIXEL_FORMAT_XBGR32, PIXEL_FORMAT_BGRA32,
|
|
Packit Service |
b1ea74 |
PIXEL_FORMAT_BGRX32 };
|
|
Packit Service |
fa4841 |
const UINT32 number_formats = sizeof(colorFormats) / sizeof(colorFormats[0]);
|
|
Packit Service |
fa4841 |
gdiPalette g;
|
|
Packit Service |
b1ea74 |
WINPR_UNUSED(argc);
|
|
Packit Service |
b1ea74 |
WINPR_UNUSED(argv);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
for (i = 0; i < number_formats; i++)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
HGDI_DC hdc = NULL;
|
|
Packit Service |
fa4841 |
HGDI_PEN pen = NULL;
|
|
Packit Service |
fa4841 |
HGDI_BITMAP hBmp = NULL;
|
|
Packit Service |
fa4841 |
HGDI_BITMAP hBmp_Ellipse_1 = NULL;
|
|
Packit Service |
fa4841 |
HGDI_BITMAP hBmp_Ellipse_2 = NULL;
|
|
Packit Service |
fa4841 |
HGDI_BITMAP hBmp_Ellipse_3 = NULL;
|
|
Packit Service |
fa4841 |
const UINT32 format = colorFormats[i];
|
|
Packit Service |
fa4841 |
gdiPalette* hPalette = &g;
|
|
Packit Service |
fa4841 |
g.format = format;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
for (j = 0; j < 256; j++)
|
|
Packit Service |
fa4841 |
g.palette[i] = FreeRDPGetColor(format, j, j, j, 0xFF);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
rc = -1;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!(hdc = gdi_GetDC()))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
printf("failed to get gdi device context\n");
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
hdc->format = format;
|
|
Packit Service |
fa4841 |
gdi_SetNullClipRgn(hdc);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!(pen = gdi_CreatePen(1, 1, 0, format, hPalette)))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
printf("gdi_CreatePen failed\n");
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
gdi_SelectObject(hdc, (HGDIOBJECT)pen);
|
|
Packit Service |
fa4841 |
hBmp = gdi_CreateCompatibleBitmap(hdc, 16, 16);
|
|
Packit Service |
b1ea74 |
gdi_SelectObject(hdc, (HGDIOBJECT)hBmp);
|
|
Packit Service |
b1ea74 |
hBmp_Ellipse_1 = test_convert_to_bitmap(ellipse_case_1, RawFormat, 0, 0, 0, format, 0, 0, 0,
|
|
Packit Service |
b1ea74 |
16, 16, hPalette);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!hBmp_Ellipse_1)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
hBmp_Ellipse_2 = test_convert_to_bitmap(ellipse_case_2, RawFormat, 0, 0, 0, format, 0, 0, 0,
|
|
Packit Service |
b1ea74 |
16, 16, hPalette);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!hBmp_Ellipse_2)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
b1ea74 |
hBmp_Ellipse_3 = test_convert_to_bitmap(ellipse_case_3, RawFormat, 0, 0, 0, format, 0, 0, 0,
|
|
Packit Service |
b1ea74 |
16, 16, hPalette);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!hBmp_Ellipse_3)
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Test Case 1: (0,0) -> (16, 16) */
|
|
Packit Service |
fa4841 |
if (!gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS, hPalette))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
printf("gdi_BitBlt failed (line #%u)\n", __LINE__);
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!gdi_Ellipse(hdc, 0, 0, 15, 15))
|
|
Packit Service |
fa4841 |
goto fail;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
rc = 0;
|
|
Packit Service |
fa4841 |
fail:
|
|
Packit Service |
b1ea74 |
gdi_DeleteObject((HGDIOBJECT)hBmp_Ellipse_1);
|
|
Packit Service |
b1ea74 |
gdi_DeleteObject((HGDIOBJECT)hBmp_Ellipse_2);
|
|
Packit Service |
b1ea74 |
gdi_DeleteObject((HGDIOBJECT)hBmp_Ellipse_3);
|
|
Packit Service |
b1ea74 |
gdi_DeleteObject((HGDIOBJECT)hBmp);
|
|
Packit Service |
b1ea74 |
gdi_DeleteObject((HGDIOBJECT)pen);
|
|
Packit Service |
fa4841 |
gdi_DeleteDC(hdc);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (rc != 0)
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
return rc;
|
|
Packit Service |
fa4841 |
}
|