From 0e18e1bd9b685d530709757f9df779b51d7a4a9b Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Tue, 28 Apr 2009 17:30:39 -0500 Subject: [PATCH] gdiplus: add tests for GdipGet/SetLineBlend --- dlls/gdiplus/tests/brush.c | 108 ++++++++++++++++++++++++++++++++++++++++++++ include/gdiplusflat.h | 2 + 2 files changed, 110 insertions(+), 0 deletions(-) diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c index d2cbd3c..cabbd7f 100644 --- a/dlls/gdiplus/tests/brush.c +++ b/dlls/gdiplus/tests/brush.c @@ -344,6 +344,113 @@ static void test_gradientgetrect(void) status = GdipDeleteBrush((GpBrush*)brush); } +static void test_lineblend(void) +{ + GpLineGradient *brush; + GpStatus status; + GpPointF pt1, pt2; + INT count=10; + 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}; + 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}; + + pt1.X = pt1.Y = 1.0; + pt2.X = pt2.Y = 100.0; + status = GdipCreateLineBrush(&pt1, &pt2, 0, 0, WrapModeTile, &brush); + expect(Ok, status); + + status = GdipGetLineBlendCount(NULL, &count); + expect(InvalidParameter, status); + + status = GdipGetLineBlendCount(brush, NULL); + expect(InvalidParameter, status); + + status = GdipGetLineBlendCount(brush, &count); + expect(Ok, status); + expect(1, count); + + status = GdipGetLineBlend(NULL, res_factors, res_positions, 1); + expect(InvalidParameter, status); + + status = GdipGetLineBlend(brush, NULL, res_positions, 1); + expect(InvalidParameter, status); + + status = GdipGetLineBlend(brush, res_factors, NULL, 1); + expect(InvalidParameter, status); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 0); + expect(InvalidParameter, status); + + status = GdipGetLineBlend(brush, res_factors, res_positions, -1); + expect(InvalidParameter, status); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 1); + expect(Ok, status); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 2); + expect(Ok, status); + + status = GdipSetLineBlend(NULL, factors, positions, 5); + expect(InvalidParameter, status); + + status = GdipSetLineBlend(brush, NULL, positions, 5); + expect(InvalidParameter, status); + + status = GdipSetLineBlend(brush, factors, NULL, 5); + expect(InvalidParameter, status); + + status = GdipSetLineBlend(brush, factors, positions, 0); + expect(InvalidParameter, status); + + status = GdipSetLineBlend(brush, factors, positions, -1); + expect(InvalidParameter, status); + + /* leave off the 0.0 position */ + status = GdipSetLineBlend(brush, &factors[1], &positions[1], 4); + expect(InvalidParameter, status); + + /* leave off the 1.0 position */ + status = GdipSetLineBlend(brush, factors, positions, 4); + expect(InvalidParameter, status); + + status = GdipSetLineBlend(brush, factors, positions, 5); + expect(Ok, status); + + status = GdipGetLineBlendCount(brush, &count); + expect(Ok, status); + expect(5, count); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 4); + expect(InsufficientBuffer, status); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 5); + expect(Ok, status); + + for (i=0; i<5; i++) + { + expectf(factors[i], res_factors[i]); + expectf(positions[i], res_positions[i]); + } + + status = GdipGetLineBlend(brush, res_factors, res_positions, 6); + expect(Ok, status); + + status = GdipSetLineBlend(brush, factors, positions, 1); + expect(Ok, status); + + status = GdipGetLineBlendCount(brush, &count); + expect(Ok, status); + expect(1, count); + + status = GdipGetLineBlend(brush, res_factors, res_positions, 1); + expect(Ok, status); + + status = GdipDeleteBrush((GpBrush*)brush); + expect(Ok, status); +} + START_TEST(brush) { struct GdiplusStartupInput gdiplusStartupInput; @@ -365,6 +472,7 @@ START_TEST(brush) test_transform(); test_texturewrap(); test_gradientgetrect(); + test_lineblend(); GdiplusShutdown(gdiplusToken); } diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index f8ebc73..4041c2c 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -382,6 +382,8 @@ GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*); GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*); GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*, GDIPCONST REAL*,INT); +GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient*,REAL*,REAL*,INT); +GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient*,INT*); GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB); GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL); GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL); -- 1.5.4.3