28#define expect(expected,got) expect_(__LINE__, expected, got)
33#define expectf(expected, got) ok(fabs(expected - got) < 0.0001, "Expected %.2f, got %.2f\n", expected, got)
44 ok(brush !=
NULL,
"Expected brush to be initialized\n");
60 ok(brush !=
NULL,
"Expected the brush to be initialized.\n");
66 ok(brush !=
NULL,
"Expected the brush to be initialized.\n");
205 blends[0] = (
REAL)0xdeadbeef;
294 static const unsigned char bmpimage[] = {
295 0x42,0x4d,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,
296 0x00,0x00,0x28,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x05,0x00,
297 0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
298 0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x00,0x00,
299 0x00,0x00,0x00,0x00,0x00,0x00,
300 0xff,0x11,0xff,0x00,0xff,0x11,0xff,0x00,0xff,0x11,0xff,0x00,
301 0xff,0x33,0xff,0x00,0xff,0x33,0xff,0x00,0xff,0x33,0xff,0x00,
302 0xff,0x55,0xff,0x00,0xff,0x55,0xff,0x00,0xff,0x55,0xff,0x00,
303 0xff,0xaa,0xff,0x00,0xff,0xaa,0xff,0x00,0xff,0xaa,0xff,0x00,
304 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
305 0x00,0x00,0x00,0x00};
307 static const UINT buf_rotate_180[15] = {
308 0xffffffff, 0xffffffff, 0xffffffff,
309 0xffff11ff, 0xffff11ff, 0xffff11ff,
310 0xffff33ff, 0xffff33ff, 0xffff33ff,
311 0xffff55ff, 0xffff55ff, 0xffff55ff,
312 0xffffaaff, 0xffffaaff, 0xffffaaff};
523 expectf(1.414214, elements[0]);
524 expectf(2.828427, elements[1]);
525 expectf(-0.353553, elements[2]);
526 expectf(0.707107, elements[3]);
527 expectf(5.303300, elements[4]);
528 expectf(-3.535534, elements[5]);
569 rectf.
X = rectf.
Y = 10.0;
626 ok(!
memcmp(
buf, buf_rotate_180,
sizeof(
buf)),
"Failed to rotate image.\n");
703 {
LinearGradientModeVertical, { 0.0f, 0.0f, 100.0f, 10.0f }, { 0.0f, 0.1f, -10.0f, -0.0f, 100.0f, 0.0f } },
704 {
LinearGradientModeVertical, { 10.0f, -12.0f, 100.0f, 105.0f }, { 0.0f, 1.05f, -0.952f, 0.0f, 98.571f, -22.5f } },
714 { { 1.0f, 1.0f }, { 100.0f, 100.0f }, { 1.0f, 1.0f, 99.0f, 99.0f }, { 1.0f, 1.0f, -1.0f, 1.0f, 50.50f, -50.50f } },
715 { { 0.0f, 0.0f }, { 0.0f, 10.0f }, { -5.0f, 0.0f, 10.0f, 10.0f }, { 0.0f, 1.0f, -1.0f, 0.0f, 5.0f, 5.0f } },
716 { { 0.0f, 0.0f }, { 10.0f, 0.0f }, { 0.0f, -5.0f, 10.0f, 10.0f }, { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f } },
718 { { 0.0f, 0.0f }, { 20.0f, -20.0f }, { 0.0f, -20.0f, 20.0f, 20.0f }, { 1.0f, -1.0f, 1.0f, 1.0f, 10.0f, 10.0f } },
720 { { 0.0f, 0.0f }, { 100.0f, 1.0f }, { 0.0f, 0.0f, 100.0f, 1.0f }, { 1.0f, 0.01f, -0.02f, 2.0f, 0.01f, -1.0f } },
721 { { 10.0f, 10.0f }, { -90.0f, 10.0f }, { -90.0f, -40.0f, 100.0f, 100.0f }, { -1.0f, 0.0f, 0.0f, -1.0f, -80.0f, 20.0f } },
730 create_with_angle[] =
732 { { 10.0f, 10.0f, -100.0f, -100.0f }, 0.0f,
TRUE },
733 { { 10.0f, 10.0f, -100.0f, -100.0f }, 0.0f,
FALSE },
734 { { 10.0f, 10.0f, 100.0f, 100.0f }, 0.0f,
FALSE },
735 { { 10.0f, 10.0f, 100.0f, 100.0f }, 0.0f,
TRUE },
736 { { 10.0f, -5.0f, 100.0f, 50.0f }, 0.0f,
FALSE },
737 { { 10.0f, -5.0f, 100.0f, 50.0f }, 0.0f,
TRUE },
738 { { -5.0f, 10.0f, 100.0f, 50.0f }, 0.0f,
FALSE },
739 { { -5.0f, 10.0f, 100.0f, 50.0f }, 0.0f,
TRUE },
740 { { 0.0f, 0.0f, 100.0f, 10.0f }, -90.0f,
TRUE, { 0.0f, -0.1f, 10.0f, 0.0f, 0.0f, 10.0f } },
741 { { 10.0f, -12.0f, 100.0f, 105.0f }, -90.0f,
TRUE, { 0.0f, -1.05f, 0.952f, 0.0f, 21.429f, 103.5f } },
742 { { 0.0f, 0.0f, 100.0f, 10.0f }, -90.0f,
FALSE, { 0.0f, -0.1f, 10.0f, -0.0f, 0.0f, 10.0f } },
743 { { 10.0f, -12.0f, 100.0f, 105.0f }, -90.0f,
FALSE, { 0.0f, -1.05f, 0.952f, 0.0f, 21.429f, 103.5f } },
761 memset(&rectf, 0,
sizeof(rectf));
764 ok(!
memcmp(&rectf, &create_from_pt[
i].
rect,
sizeof(rectf)),
"Unexpected brush rect.\n");
772#define expectf2(expected, got) ok(fabs(expected - got) < 0.001, "%u: expected %.3f, got %.3f.\n", i, expected, got)
783 ok(colors[0] == 0x1 && colors[1] == 0x2,
"Unexpected brush colors.\n");
790 rectf.
X = rectf.
Y = 10.0;
798 rectf.
X = rectf.
Y = 10.0;
814 memset(&rectf, 0,
sizeof(rectf));
817 ok(!
memcmp(&rectf, &create_from_rect[
i].
rect,
sizeof(rectf)),
"Unexpected brush rect.\n");
832#define expectf2(expected, got) ok(fabs(expected - got) < 0.001, "%u: expected %.3f, got %.3f.\n", i, expected, got)
844 ok(colors[0] == 0x1 && colors[1] == 0x2,
"Unexpected brush colors.\n");
859 memset(&rectf, 0,
sizeof(rectf));
862 ok(!
memcmp(&rectf, &create_with_angle[
i].
rect,
sizeof(rectf)),
"%u: unexpected brush rect {%f,%f,%f,%f}.\n",
868 if (create_with_angle[
i].
angle == 0.0f)
878#define expectf2(expected, got) ok(fabs(expected - got) < 0.001, "%u: expected %.3f, got %.3f.\n", i, expected, got)
890 ok(colors[0] == 0x1 && colors[1] == 0x2,
"Unexpected brush colors.\n");
906 const REAL factors[5] = {0.0f, 0.1f, 0.5f, 0.9f, 1.0f};
907 const REAL positions[5] = {0.0f, 0.2f, 0.5f, 0.8f, 1.0f};
908 const REAL two_positions[2] = {0.0f, 1.0f};
909 const ARGB colors[5] = {0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000, 0xffffffff};
910 REAL res_factors[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
911 REAL res_positions[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
912 ARGB res_colors[6] = {0xdeadbeef, 0, 0, 0, 0};
914 pt1.
X = pt1.
Y = pt2.
Y = pt2.
X = 1.0;
919 pt2.
X = pt2.
Y = 100.0;
1082 expectf(positions[
i], res_positions[
i]);
1101 REAL res_factors[3] = {0.3f};
1102 REAL res_positions[3] = {0.3f};
1107 pt1.
X = pt1.
Y = 1.0;
1108 pt2.
X = pt2.
Y = 100.0;
1123 expectf(0.0, res_positions[0]);
1125 expectf(0.6, res_positions[1]);
1127 expectf(1.0, res_positions[2]);
1140 expectf(0.0, res_positions[0]);
1142 expectf(1.0, res_positions[1]);
1155 expectf(0.0, res_positions[0]);
1157 expectf(1.0, res_positions[1]);
1220 color[0] = 0x00ff0000;
1221 color[1] = 0x0000ff00;
1367 static const GpPointF path_points[] = {{0,0}, {3,0}, {0,4}};
1441 static const GpPointF path_points[] = {{0,0}, {3,0}, {0,4}};
1446 const REAL positions[5] = {0.0f, 0.2f, 0.5f, 0.8f, 1.0f};
1447 const REAL two_positions[2] = {0.0f, 1.0f};
1448 const ARGB colors[5] = {0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000, 0xffffffff};
1449 REAL res_positions[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
1450 ARGB res_colors[6] = {0xdeadbeef, 0, 0, 0, 0};
1529 res_colors[0] = 0xdeadbeef;
1530 res_positions[0] = 0.3;
1535 expect(0xdeadbeef, res_colors[0]);
1536 expectf(0.3, res_positions[0]);
1541 expectf(positions[
i], res_positions[
i]);
1549 expect(colors[
i], res_colors[
i+1]);
1550 expectf(positions[
i], res_positions[
i+1]);
1560 expectf(positions[
i], res_positions[
i]);
1581 static const GpPointF path_points[] = {{0,0}, {3,0}, {0,4}};
1585 const REAL factors[5] = {0.0f, 0.1f, 0.5f, 0.9f, 1.0f};
1586 const REAL positions[5] = {0.0f, 0.2f, 0.5f, 0.8f, 1.0f};
1587 REAL res_factors[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
1588 REAL res_positions[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
1663 expectf(positions[
i], res_positions[
i]);
1707 (
color & 0xff) << 16 |
1709 (
color & 0xff0000) >> 16;
1724 { {0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000},
HatchStyleVertical },
1727 { {0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xffff},
HatchStyleCross },
1729 { {0x0000, 0x0000, 0x0000, 0x00c0, 0x0000, 0x0000, 0x0000, 0xc000},
HatchStyle05Percent },
1730 { {0x0000, 0x00c0, 0x0000, 0xc000, 0x0000, 0x00c0, 0x0000, 0xc000},
HatchStyle10Percent },
1731 { {0x0000, 0x0c0c, 0x0000, 0xc0c0, 0x0000, 0x0c0c, 0x0000, 0xc0c0},
HatchStyle20Percent },
1732 { {0x0c0c, 0xc0c0, 0x0c0c, 0xc0c0, 0x0c0c, 0xc0c0, 0x0c0c, 0xc0c0},
HatchStyle25Percent },
1733 { {0x0303, 0xcccc, 0x3030, 0xcccc, 0x0303, 0xcccc, 0x3030, 0xcccc},
HatchStyle30Percent },
1734 { {0x0333, 0xcccc, 0x3333, 0xcccc, 0x3303, 0xcccc, 0x3333, 0xcccc},
HatchStyle40Percent },
1735 { {0x3333, 0xcccc, 0x3333, 0xcccc, 0x3333, 0xcccc, 0x3333, 0xcccc},
HatchStyle50Percent },
1736 { {0x3333, 0xcfcf, 0x3333, 0xfcfc, 0x3333, 0xcfcf, 0x3333, 0xfcfc},
HatchStyle60Percent },
1737 { {0xf3f3, 0x3f3f, 0xf3f3, 0x3f3f, 0xf3f3, 0x3f3f, 0xf3f3, 0x3f3f},
HatchStyle70Percent },
1738 { {0xffff, 0xf3f3, 0xffff, 0x3f3f, 0xffff, 0xf3f3, 0xffff, 0x3f3f},
HatchStyle75Percent },
1739 { {0xffff, 0xfffc, 0xffff, 0xfcff, 0xffff, 0xfffc, 0xffff, 0xfcff},
HatchStyle80Percent },
1740 { {0x3fff, 0xffff, 0xffff, 0xffff, 0xff3f, 0xffff, 0xffff, 0xffff},
HatchStyle90Percent },
1759 { {0x03c0, 0x0c30, 0x300c, 0xc003, 0x03c0, 0x0c30, 0x300c, 0xc003},
HatchStyleZigZag },
1760 { {0xf000, 0x0c33, 0x03c0, 0x0000, 0xf000, 0x0c33, 0x03c0, 0x0000},
HatchStyleWave },
1763 { {0x3303, 0x0c0c, 0x0330, 0xc0c0, 0x3033, 0x0c0c, 0x3330, 0xc0c0},
HatchStyleWeave },
1764 { {0xff00, 0xff00, 0xff00, 0xff00, 0x3333, 0xcccc, 0x3333, 0xcccc},
HatchStylePlaid },
1765 { {0xc000, 0x0003, 0xc000, 0x0000, 0x0300, 0x00c0, 0x0300, 0x0000},
HatchStyleDivot },
1768 { {0x0003, 0x0003, 0x000c, 0x00f0, 0x0f00, 0x30c0, 0xc030, 0x000f},
HatchStyleShingle },
1769 { {0xc3c3, 0xffff, 0x3c3c, 0xffff, 0xc3c3, 0xffff, 0x3c3c, 0xffff},
HatchStyleTrellis },
1770 { {0xffc0, 0xffc0, 0xc3c0, 0x3f3f, 0xc0ff, 0xc0ff, 0xc0c3, 0x3f3f},
HatchStyleSphere },
1771 { {0xc0c0, 0xc0c0, 0xc0c0, 0xffff, 0xc0c0, 0xc0c0, 0xc0c0, 0xffff},
HatchStyleSmallGrid },
1777 static const ARGB exp_colors[] = { 0xffffffff, 0xffbfbfbf, 0xff151515, 0xff000000 };
1778 static const ARGB fore_color = 0xff000000;
1779 static const ARGB back_color = 0xffffffff;
1795 ok(graphics_hdc !=
NULL,
"Expected the graphics context to be initialized.\n");
1801 ok(graphics_image !=
NULL,
"Expected the graphics context to be initialized.\n");
1807 ok(brush !=
NULL,
"Expected the brush to be initialized.\n");
1818 for(
y = 0;
y <
width && (match_hdc || match_image);
y++)
1820 for(
x = 0;
x <
height && (match_hdc || match_image);
x++)
1823 int cindex = (styles[
i].pattern[7-(
y%8)] >> (2*(7-(
x%8)))) & 3;
1831 match_image =
FALSE;
1834 ok(match_hdc,
"Unexpected pattern for hatch style %#x with hdc.\n", styles[
i].hs);
1835 ok(match_image,
"Unexpected pattern for hatch style %#x with image.\n", styles[
i].hs);
1859 static const INT tests[][2] = {{3, 6}, {-7, -4}};
1860 static const ARGB fore_color = 0xff000000;
1861 static const ARGB back_color = 0xffffffff;
1876 ok(
x == 0 &&
y == 0,
"Expected (%d, %d) got (%d, %d)\n", 0, 0,
x,
y);
1880 ok(
x == 0 &&
y == 0,
"Expected (%d, %d) got (%d, %d)\n", 0, 0,
x,
y);
1894 ok(
x ==
tests[
i][0] &&
y ==
tests[
i][1],
"Expected (%d, %d) got (%d, %d)\n",
1898 ok(
x ==
tests[
i][0] &&
y ==
tests[
i][1],
"Expected (%d, %d) got (%d, %d)\n",
1906 for (
y = 0;
y <
height && (match_hdc || match_image);
y++)
1908 for (
x = 0;
x <
width && (match_hdc || match_image);
x++)
1911 const ARGB exp_color = (
x == exp_x ||
y == exp_y) ? fore_color : back_color;
1914 if (
color != exp_color)
1918 if (
color != exp_color)
1919 match_image =
FALSE;
1922 ok(match_hdc,
"Hatch brush rendered incorrectly on hdc with rendering origin (%d, %d).\n",
1924 ok(match_image,
"Hatch brush rendered incorrectly on image with rendering origin (%d, %d).\n",
1950 memset( &
class, 0,
sizeof(
class) );
1951 class.lpszClassName =
"gdiplus_test";
1961 ok(
hwnd !=
NULL,
"Expected window to be created\n");
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
#define GetProcAddress(x, y)
GpStatus WINGDIPAPI GdipScaleLineTransform(GpLineGradient *brush, REAL sx, REAL sy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture *brush, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF *rect, ARGB startcolor, ARGB endcolor, LinearGradientMode mode, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF *rect, ARGB startcolor, ARGB endcolor, REAL angle, BOOL isAngleScalable, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipMultiplyLineTransform(GpLineGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient *brush, ARGB *colors)
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
GpStatus WINGDIPAPI GdipGetLinePresetBlendCount(GpLineGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipCreateHatchBrush(GpHatchStyle hatchstyle, ARGB forecol, ARGB backcol, GpHatch **brush)
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient *line, BOOL *usinggamma)
GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture *brush, GpWrapMode *wrapmode)
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath *path, GpPathGradient **grad)
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *texture, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlend(GpPathGradient *brush, ARGB *blend, REAL *pos, INT count)
GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient *grad, ARGB *argb, INT *count)
GpStatus WINGDIPAPI GdipResetLineTransform(GpLineGradient *brush)
GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient *brush, GpRectF *rect)
GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient *brush, GDIPCONST REAL *blend, GDIPCONST REAL *pos, INT count)
GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient *grad, GpPointF *point)
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF *points, INT count, GpWrapMode wrap, GpPathGradient **grad)
GpStatus WINGDIPAPI GdipGetLineTransform(GpLineGradient *brush, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF *startpoint, GDIPCONST GpPointF *endpoint, ARGB startcolor, ARGB endcolor, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient *brush, REAL *blend, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetLineTransform(GpLineGradient *brush, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipGetHatchStyle(GpHatch *brush, GpHatchStyle *hatchstyle)
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlendCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient *brush, GDIPCONST REAL *factors, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipGetPathGradientPath(GpPathGradient *grad, GpPath *path)
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorCount(GpPathGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
GpStatus WINGDIPAPI GdipTranslateLineTransform(GpLineGradient *brush, REAL dx, REAL dy, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetLineLinearBlend(GpLineGradient *brush, REAL focus, REAL scale)
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture *brush)
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient *brush, GpRectF *rect)
GpStatus WINGDIPAPI GdipRotateTextureTransform(GpTexture *brush, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture *brush, GpWrapMode wrapmode)
GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient *brush, REAL *factors, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient *grad, GpPointF *point)
GpStatus WINGDIPAPI GdipGetLinePresetBlend(GpLineGradient *brush, ARGB *blend, REAL *positions, INT count)
GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient *brush, INT *count)
GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient *grad, GDIPCONST ARGB *argb, INT *count)
GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode, GpTexture **texture)
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush *brush, GpBrushType *type)
GpStatus WINGDIPAPI GdipSetPathGradientPresetBlend(GpPathGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL *pos, INT count)
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics *graphics, INT *x, INT *y)
GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics *graphics, INT x, INT y)
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND hwnd, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode fill, GpPath **path)
GpStatus WINGDIPAPI GdipDeletePath(GpPath *path)
GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath *path, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride, PixelFormat format, BYTE *scan0, GpBitmap **bitmap)
GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage *image, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT width, INT height, GpGraphics *target, GpBitmap **bitmap)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap *bitmap, INT x, INT y, ARGB *color)
GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream *stream, GpImage **image)
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix *matrix, REAL scaleX, REAL scaleY, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy, GpMatrix **matrix)
GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix *matrix, GDIPCONST GpMatrix *matrix2, BOOL *result)
GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix *matrix, REAL *out)
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix *matrix, REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy)
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix *matrix, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix *matrix, BOOL *result)
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix **matrix)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP errno_t __cdecl _controlfp_s(unsigned int *, unsigned int, unsigned int)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define wrap(journal, var)
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
@ HatchStyleDashedUpwardDiagonal
@ HatchStyleLargeConfetti
@ HatchStyleNarrowHorizontal
@ HatchStyleDottedDiamond
@ HatchStyleNarrowVertical
@ HatchStyleLightVertical
@ HatchStyleLargeCheckerBoard
@ HatchStyleDashedVertical
@ HatchStyleDashedHorizontal
@ HatchStyleWideUpwardDiagonal
@ HatchStyleSmallConfetti
@ HatchStyleWideDownwardDiagonal
@ HatchStyleOutlinedDiamond
@ HatchStyleDarkDownwardDiagonal
@ HatchStyleDiagonalCross
@ HatchStyleLightDownwardDiagonal
@ HatchStyleLightUpwardDiagonal
@ HatchStyleDashedDownwardDiagonal
@ HatchStyleDarkHorizontal
@ HatchStyleForwardDiagonal
@ HatchStyleSmallCheckerBoard
@ HatchStyleBackwardDiagonal
@ HatchStyleHorizontalBrick
@ HatchStyleLightHorizontal
@ HatchStyleDarkUpwardDiagonal
@ HatchStyleDiagonalBrick
@ LinearGradientModeHorizontal
@ LinearGradientModeVertical
void WINAPI GdiplusShutdown(ULONG_PTR)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLuint GLenum GLenum transform
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static ERESOURCE GlobalLock
#define memcpy(s1, s2, n)
static struct test_info tests[]
static void test_renderingOrigin(void)
static void test_getgamma(void)
static void test_gradientgetrect(void)
BOOL color_match(ARGB c1, ARGB c2, BYTE max_diff)
static void test_pathgradientpresetblend(void)
static void test_pathgradientblend(void)
static void test_createHatchBrush(void)
static void test_getblend(void)
static void test_getHatchStyle(void)
static void test_createLineBrushFromRectWithAngle(void)
static void test_linelinearblend(void)
static GpPointF getblend_ptf[]
static void test_type(void)
static void test_lineblend(void)
static GpPointF getbounds_ptf[]
static void test_pathgradientcenterpoint(void)
static void test_texturewrap(void)
static void test_getbounds(void)
static GpPointF blendcount_ptf[]
#define expectf(expected, got)
static void test_gradientblendcount(void)
static void test_pathgradientpath(void)
static void test_gradientsurroundcolorcount(void)
static ARGB COLORREF2ARGB(COLORREF color)
static void test_constructor_destructor(void)
#define expectf2(expected, got)
static void test_hatchBrushStyles(void)
static void test_transform(void)
#define expect_(expected, got, precision)
static const unsigned char bmpimage[66]
#define WS_OVERLAPPEDWINDOW
TW_UINT32 TW_UINT16 TW_UINT16 MSG
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
LONG WINAPI GetBitmapBits(_In_ HBITMAP hbit, _In_ LONG cb, _Out_writes_bytes_(cb) LPVOID lpvBits)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
HDC WINAPI GetDC(_In_opt_ HWND)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI DestroyWindow(_In_ HWND)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)