From 2a2d7224e94251de54266189b4ed466cc1508702 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Mon, 14 Sep 2009 16:08:25 -0500 Subject: [PATCH] gdiplus: Add tests for linear gradient preset blends. --- dlls/gdiplus/tests/brush.c | 85 ++++++++++++++++++++++++++++++++++++++++++++ include/gdiplusflat.h | 4 ++ 2 files changed, 89 insertions(+), 0 deletions(-) diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c index e0515f4..cf94611 100644 --- a/dlls/gdiplus/tests/brush.c +++ b/dlls/gdiplus/tests/brush.c @@ -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); } diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index c06d951..11756c8 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -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); -- 1.5.4.3