gdiplus: Add tests for linear gradient preset blends.

This commit is contained in:
Vincent Povirk 2009-09-14 16:08:25 -05:00 committed by Alexandre Julliard
parent 8bdabe3a18
commit ad6adc750e
2 changed files with 89 additions and 0 deletions

View file

@ -395,8 +395,11 @@ static void test_lineblend(void)
int i;
const REAL factors[5] = {0.0f, 0.1f, 0.5f, 0.9f, 1.0f};
const REAL positions[5] = {0.0f, 0.2f, 0.5f, 0.8f, 1.0f};
const REAL two_positions[2] = {0.0f, 1.0f};
const ARGB colors[5] = {0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000, 0xffffffff};
REAL res_factors[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
REAL res_positions[6] = {0.3f, 0.0f, 0.0f, 0.0f, 0.0f};
ARGB res_colors[6] = {0xdeadbeef, 0, 0, 0, 0};
pt1.X = pt1.Y = 1.0;
pt2.X = pt2.Y = 100.0;
@ -489,6 +492,88 @@ static void test_lineblend(void)
status = GdipGetLineBlend(brush, res_factors, res_positions, 1);
expect(Ok, status);
status = GdipGetLinePresetBlendCount(NULL, &count);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlendCount(brush, NULL);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlendCount(brush, &count);
expect(Ok, status);
expect(0, count);
status = GdipGetLinePresetBlend(NULL, res_colors, res_positions, 1);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, NULL, res_positions, 1);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, res_colors, NULL, 1);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 0);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, -1);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 1);
expect(InvalidParameter, status);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 2);
expect(GenericError, status);
status = GdipSetLinePresetBlend(NULL, colors, positions, 5);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, NULL, positions, 5);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, colors, NULL, 5);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, colors, positions, 0);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, colors, positions, -1);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, colors, positions, 1);
expect(InvalidParameter, status);
/* leave off the 0.0 position */
status = GdipSetLinePresetBlend(brush, &colors[1], &positions[1], 4);
expect(InvalidParameter, status);
/* leave off the 1.0 position */
status = GdipSetLinePresetBlend(brush, colors, positions, 4);
expect(InvalidParameter, status);
status = GdipSetLinePresetBlend(brush, colors, positions, 5);
expect(Ok, status);
status = GdipGetLinePresetBlendCount(brush, &count);
expect(Ok, status);
expect(5, count);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 4);
expect(InsufficientBuffer, status);
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 5);
expect(Ok, status);
for (i=0; i<5; i++)
{
expect(colors[i], res_colors[i]);
expectf(positions[i], res_positions[i]);
}
status = GdipGetLinePresetBlend(brush, res_colors, res_positions, 6);
expect(Ok, status);
status = GdipSetLinePresetBlend(brush, colors, two_positions, 2);
expect(Ok, status);
status = GdipDeleteBrush((GpBrush*)brush);
expect(Ok, status);
}

View file

@ -412,6 +412,10 @@ GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,
GDIPCONST REAL*,INT);
GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient*,REAL*,REAL*,INT);
GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient*,INT*);
GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient*,GDIPCONST ARGB*,
GDIPCONST REAL*,INT);
GpStatus WINGDIPAPI GdipGetLinePresetBlend(GpLineGradient*,ARGB*,REAL*,INT);
GpStatus WINGDIPAPI GdipGetLinePresetBlendCount(GpLineGradient*,INT*);
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);