From 9cb2c922b8a08a758c0849484be537911d51c5fa Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 11 Oct 2015 15:47:30 -0400 Subject: [PATCH] More samples. The fill style sample is showing the limitations of what I've done so far, and solving that problem is proving to be a nightmare. --- test/drawtests.c | 78 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/test/drawtests.c b/test/drawtests.c index fb87934c..8855b174 100644 --- a/test/drawtests.c +++ b/test/drawtests.c @@ -453,7 +453,12 @@ static void drawD2DRadialBrush(uiAreaDrawParams *p) uiDrawBrushGradientStop stops[2]; uiDrawStrokeParams sp; - // TODO transform by (25,25) to leave some room + uiDrawMatrix m; + + // leave some room + uiDrawMatrixSetIdentity(&m); + uiDrawMatrixTranslate(&m, 25, 25); + uiDrawTransform(p->Context, &m); gradient.Type = uiDrawBrushTypeRadialGradient; gradient.X0 = 75; @@ -673,6 +678,7 @@ static void drawD2DGeometryGroup(uiAreaDrawParams *p) uiDrawBrush fill; uiDrawBrush stroke; uiDrawStrokeParams sp; + uiDrawMatrix m; alternate = uiDrawNewPath(uiDrawFillModeAlternate); uiDrawPathNewFigureWithArc(alternate, @@ -729,9 +735,11 @@ static void drawD2DGeometryGroup(uiAreaDrawParams *p) uiDrawStroke(p->Context, alternate, &stroke, &sp); // TODO text - // TODO transform -// uiDrawFill(p->Context, winding, &fill); -// uiDrawStroke(p->Context, winding, &stroke, &sp); + uiDrawMatrixSetIdentity(&m); + uiDrawMatrixTranslate(&m, 300, 0); + uiDrawTransform(p->Context, &m); + uiDrawFill(p->Context, winding, &fill); + uiDrawStroke(p->Context, winding, &stroke, &sp); // // TODO text uiDrawFreePath(winding); @@ -762,6 +770,7 @@ static void drawD2DComplexShape(uiAreaDrawParams *p) uiDrawBrush gradient; uiDrawBrushGradientStop stops[2]; uiDrawStrokeParams sp; + uiDrawMatrix m; path = uiDrawNewPath(uiDrawFillModeWinding); uiDrawPathNewFigure(path, 0, 0); @@ -798,7 +807,9 @@ static void drawD2DComplexShape(uiAreaDrawParams *p) gradient.Stops = stops; gradient.NumStops = 2; - // TODO transform + uiDrawMatrixSetIdentity(&m); + uiDrawMatrixTranslate(&m, 20, 20); + uiDrawTransform(p->Context, &m); sp.Thickness = 10.0; sp.Cap = uiDrawLineCapFlat; @@ -1106,7 +1117,61 @@ static void drawCSFillAndStroke2(uiAreaDrawParams *p) uiDrawFreePath(path); } -// TODO fill style (needs transforms) +// fill style +static void drawCSFillStyle(uiAreaDrawParams *p) +{ + uiDrawBrush source; + uiDrawStrokeParams sp; + uiDrawPath *path; + uiDrawMatrix m; + + crsourcergba(&source, 0, 0, 0, 1); + sp.Join = uiDrawLineJoinMiter; + sp.MiterLimit = uiDrawDefaultMiterLimit; + + sp.Thickness = 6; + + path = uiDrawNewPath(uiDrawFillModeAlternate); + uiDrawPathAddRectangle(path, 12, 12, 232, 70); + uiDrawPathNewFigureWithArc(path, + 64, 64, + 40, + 0, 2*M_PI); + uiDrawPathNewFigureWithArc(path, + 192, 64, + 40, + 0, 2*M_PI); + uiDrawPathEnd(path); + + crsourcergba(&source, 0, 0.7, 0, 1); + uiDrawFill(p->Context, path, &source); + crsourcergba(&source, 0, 0, 0, 1); + uiDrawStroke(p->Context, path, &source, &sp); + uiDrawFreePath(path); + + uiDrawMatrixSetIdentity(&m); + uiDrawMatrixTranslate(&m, 0, 128); + uiDrawTransform(p->Context, &m); + + path = uiDrawNewPath(uiDrawFillModeWinding); + uiDrawPathAddRectangle(path, 12, 12, 232, 70); +// TODO THIS DOESN'T WORK. + uiDrawPathNewFigureWithArc(path, + 64, 64, + 40, + 0, 2*M_PI); + uiDrawPathNewFigureWithArc(path, + 192, 64, + 40, + 0, 2*M_PI); + uiDrawPathEnd(path); + + crsourcergba(&source, 0, 0, 0.9, 1); + uiDrawFill(p->Context, path, &source); + crsourcergba(&source, 0, 0, 0, 1); + uiDrawStroke(p->Context, path, &source, &sp); + uiDrawFreePath(path); +} // TOOD gradient (radial gradient with two circles) @@ -1366,6 +1431,7 @@ static const struct drawtest tests[] = { { "cairo samples: curve rectangle", drawCSCurveRectangle }, { "cairo samples: curve to", drawCSCurveTo }, { "cairo samples: fill and stroke2", drawCSFillAndStroke2 }, + { "cairo samples: fill style", drawCSFillStyle }, { "cairo samples: multi segment caps", drawCSMultiCaps }, { "cairo samples: rounded rectangle", drawCSRoundRect }, { "cairo samples: set line cap", drawCSSetLineCap },