Added line dashing and implemented it on GTK+.
This commit is contained in:
parent
10cba66bbf
commit
1cadb85bd0
144
test/drawtests.c
144
test/drawtests.c
|
@ -17,6 +17,10 @@ static void drawOriginal(uiAreaDrawParams *p)
|
||||||
uiDrawBrush brush;
|
uiDrawBrush brush;
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
brush.Type = uiDrawBrushTypeSolid;
|
brush.Type = uiDrawBrushTypeSolid;
|
||||||
brush.A = 1;
|
brush.A = 1;
|
||||||
|
|
||||||
|
@ -150,6 +154,10 @@ static void drawArcs(uiAreaDrawParams *p)
|
||||||
uiDrawBrush brush;
|
uiDrawBrush brush;
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
add = (2.0 * M_PI) / 12;
|
add = (2.0 * M_PI) / 12;
|
||||||
|
@ -322,6 +330,10 @@ static void drawD2DSimpleApp(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
d2dSolidBrush(&lightSlateGray, d2dLightSlateGray, 1.0);
|
d2dSolidBrush(&lightSlateGray, d2dLightSlateGray, 1.0);
|
||||||
d2dSolidBrush(&cornflowerBlue, d2dCornflowerBlue, 1.0);
|
d2dSolidBrush(&cornflowerBlue, d2dCornflowerBlue, 1.0);
|
||||||
|
|
||||||
|
@ -390,6 +402,10 @@ static void drawD2DSolidBrush(uiAreaDrawParams *p)
|
||||||
uiDrawBrush yellowGreen;
|
uiDrawBrush yellowGreen;
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
d2dSolidBrush(&black, d2dBlack, 1.0);
|
d2dSolidBrush(&black, d2dBlack, 1.0);
|
||||||
d2dSolidBrush(&yellowGreen, d2dYellowGreen, 1.0);
|
d2dSolidBrush(&yellowGreen, d2dYellowGreen, 1.0);
|
||||||
|
|
||||||
|
@ -420,6 +436,10 @@ static void drawD2DLinearBrush(uiAreaDrawParams *p)
|
||||||
|
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
// leave some room
|
// leave some room
|
||||||
uiDrawMatrixSetIdentity(&m);
|
uiDrawMatrixSetIdentity(&m);
|
||||||
uiDrawMatrixTranslate(&m, 25, 25);
|
uiDrawMatrixTranslate(&m, 25, 25);
|
||||||
|
@ -467,6 +487,10 @@ static void drawD2DRadialBrush(uiAreaDrawParams *p)
|
||||||
|
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
// leave some room
|
// leave some room
|
||||||
uiDrawMatrixSetIdentity(&m);
|
uiDrawMatrixSetIdentity(&m);
|
||||||
uiDrawMatrixTranslate(&m, 25, 25);
|
uiDrawMatrixTranslate(&m, 25, 25);
|
||||||
|
@ -526,6 +550,10 @@ static void drawD2DPathGeometries(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
uiDrawBrushGradientStop stops[2];
|
uiDrawBrushGradientStop stops[2];
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
// TODO this is definitely wrong but the example doesn't have the right brush in it
|
// TODO this is definitely wrong but the example doesn't have the right brush in it
|
||||||
radial.Type = uiDrawBrushTypeRadialGradient;
|
radial.Type = uiDrawBrushTypeRadialGradient;
|
||||||
radial.X0 = 75;
|
radial.X0 = 75;
|
||||||
|
@ -694,6 +722,10 @@ static void drawD2DGeometryGroup(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
alternate = uiDrawNewPath(uiDrawFillModeAlternate);
|
alternate = uiDrawNewPath(uiDrawFillModeAlternate);
|
||||||
uiDrawPathNewFigureWithArc(alternate,
|
uiDrawPathNewFigureWithArc(alternate,
|
||||||
105, 105,
|
105, 105,
|
||||||
|
@ -785,6 +817,13 @@ static void drawD2DRotate(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams transformsp;
|
uiDrawStrokeParams transformsp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
originalsp.Dashes = NULL;
|
||||||
|
originalsp.NumDashes = 0;
|
||||||
|
originalsp.DashPhase = 0;
|
||||||
|
transformsp.Dashes = NULL;
|
||||||
|
transformsp.NumDashes = 0;
|
||||||
|
transformsp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathAddRectangle(path, 438.0, 301.5, 498.0 - 438.0, 361.5 - 301.5);
|
uiDrawPathAddRectangle(path, 438.0, 301.5, 498.0 - 438.0, 361.5 - 301.5);
|
||||||
uiDrawPathEnd(path);
|
uiDrawPathEnd(path);
|
||||||
|
@ -849,6 +888,13 @@ static void drawD2DScale(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams transformsp;
|
uiDrawStrokeParams transformsp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
originalsp.Dashes = NULL;
|
||||||
|
originalsp.NumDashes = 0;
|
||||||
|
originalsp.DashPhase = 0;
|
||||||
|
transformsp.Dashes = NULL;
|
||||||
|
transformsp.NumDashes = 0;
|
||||||
|
transformsp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathAddRectangle(path, 438.0, 80.5, 498.0 - 438.0, 140.5 - 80.5);
|
uiDrawPathAddRectangle(path, 438.0, 80.5, 498.0 - 438.0, 140.5 - 80.5);
|
||||||
uiDrawPathEnd(path);
|
uiDrawPathEnd(path);
|
||||||
|
@ -914,6 +960,13 @@ void drawD2DSkew(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams transformsp;
|
uiDrawStrokeParams transformsp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
originalsp.Dashes = NULL;
|
||||||
|
originalsp.NumDashes = 0;
|
||||||
|
originalsp.DashPhase = 0;
|
||||||
|
transformsp.Dashes = NULL;
|
||||||
|
transformsp.NumDashes = 0;
|
||||||
|
transformsp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathAddRectangle(path, 126.0, 301.5, 186.0 - 126.0, 361.5 - 301.5);
|
uiDrawPathAddRectangle(path, 126.0, 301.5, 186.0 - 126.0, 361.5 - 301.5);
|
||||||
uiDrawPathEnd(path);
|
uiDrawPathEnd(path);
|
||||||
|
@ -978,6 +1031,13 @@ static void drawD2DTranslate(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams transformsp;
|
uiDrawStrokeParams transformsp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
originalsp.Dashes = NULL;
|
||||||
|
originalsp.NumDashes = 0;
|
||||||
|
originalsp.DashPhase = 0;
|
||||||
|
transformsp.Dashes = NULL;
|
||||||
|
transformsp.NumDashes = 0;
|
||||||
|
transformsp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathAddRectangle(path, 126.0, 80.5, 186.0 - 126.0, 140.5 - 80.5);
|
uiDrawPathAddRectangle(path, 126.0, 80.5, 186.0 - 126.0, 140.5 - 80.5);
|
||||||
uiDrawPathEnd(path);
|
uiDrawPathEnd(path);
|
||||||
|
@ -1021,6 +1081,13 @@ static void drawD2DMultiTransforms(uiAreaDrawParams *p)
|
||||||
uiDrawMatrix mtranslate;
|
uiDrawMatrix mtranslate;
|
||||||
uiDrawMatrix mrotate;
|
uiDrawMatrix mrotate;
|
||||||
|
|
||||||
|
originalsp.Dashes = NULL;
|
||||||
|
originalsp.NumDashes = 0;
|
||||||
|
originalsp.DashPhase = 0;
|
||||||
|
transformsp.Dashes = NULL;
|
||||||
|
transformsp.NumDashes = 0;
|
||||||
|
transformsp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathAddRectangle(path, 300.0, 40.0, 360.0 - 300.0, 100.0 - 40.0);
|
uiDrawPathAddRectangle(path, 300.0, 40.0, 360.0 - 300.0, 100.0 - 40.0);
|
||||||
uiDrawPathEnd(path);
|
uiDrawPathEnd(path);
|
||||||
|
@ -1100,6 +1167,10 @@ static void drawD2DComplexShape(uiAreaDrawParams *p)
|
||||||
uiDrawStrokeParams sp;
|
uiDrawStrokeParams sp;
|
||||||
uiDrawMatrix m;
|
uiDrawMatrix m;
|
||||||
|
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
uiDrawPathNewFigure(path, 0, 0);
|
uiDrawPathNewFigure(path, 0, 0);
|
||||||
uiDrawPathLineTo(path, 200, 0);
|
uiDrawPathLineTo(path, 200, 0);
|
||||||
|
@ -1195,6 +1266,9 @@ static void drawCSArc(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
sp.Thickness = 10.0;
|
sp.Thickness = 10.0;
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
@ -1255,6 +1329,9 @@ static void drawCSArcNegative(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
sp.Thickness = 10.0;
|
sp.Thickness = 10.0;
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
@ -1310,6 +1387,9 @@ static void drawCSClip(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1361,6 +1441,9 @@ static void drawCSCurveRectangle(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1430,6 +1513,9 @@ static void drawCSCurveTo(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1452,7 +1538,44 @@ static void drawCSCurveTo(uiAreaDrawParams *p)
|
||||||
uiDrawFreePath(path);
|
uiDrawFreePath(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO dash
|
// dash
|
||||||
|
static void drawCSDash(uiAreaDrawParams *p)
|
||||||
|
{
|
||||||
|
double dashes[] = {
|
||||||
|
50.0, /* ink */
|
||||||
|
10.0, /* skip */
|
||||||
|
10.0, /* ink */
|
||||||
|
10.0 /* skip*/
|
||||||
|
};
|
||||||
|
int ndash = sizeof (dashes)/sizeof(dashes[0]);
|
||||||
|
double offset = -50.0;
|
||||||
|
|
||||||
|
uiDrawBrush source;
|
||||||
|
uiDrawStrokeParams sp;
|
||||||
|
uiDrawPath *path;
|
||||||
|
|
||||||
|
crsourcergba(&source, 0, 0, 0, 1);
|
||||||
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = dashes;
|
||||||
|
sp.NumDashes = ndash;
|
||||||
|
sp.DashPhase = offset;
|
||||||
|
sp.Thickness = 10.0;
|
||||||
|
|
||||||
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
uiDrawPathNewFigure(path, 128.0, 25.6);
|
||||||
|
uiDrawPathLineTo(path, 230.4, 230.4);
|
||||||
|
uiDrawPathLineTo(path, 230.4 -102.4, 230.4 + 0.0);
|
||||||
|
uiDrawPathBezierTo(path,
|
||||||
|
51.2, 230.4,
|
||||||
|
51.2, 128.0,
|
||||||
|
128.0, 128.0);
|
||||||
|
uiDrawPathEnd(path);
|
||||||
|
|
||||||
|
uiDrawStroke(p->Context, path, &source, &sp);
|
||||||
|
uiDrawFreePath(path);
|
||||||
|
}
|
||||||
|
|
||||||
// fill and stroke2
|
// fill and stroke2
|
||||||
static void drawCSFillAndStroke2(uiAreaDrawParams *p)
|
static void drawCSFillAndStroke2(uiAreaDrawParams *p)
|
||||||
|
@ -1465,6 +1588,9 @@ static void drawCSFillAndStroke2(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1502,6 +1628,9 @@ static void drawCSFillStyle(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
sp.Thickness = 6;
|
sp.Thickness = 6;
|
||||||
|
|
||||||
|
@ -1566,6 +1695,9 @@ static void drawCSMultiCaps(uiAreaDrawParams *p)
|
||||||
crsourcergba(&source, 0, 0, 0, 1);
|
crsourcergba(&source, 0, 0, 0, 1);
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1606,6 +1738,9 @@ static void drawCSRoundRect(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
|
||||||
|
@ -1655,6 +1790,9 @@ static void drawCSSetLineCap(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
sp.Thickness = 30.0;
|
sp.Thickness = 30.0;
|
||||||
|
|
||||||
|
@ -1709,6 +1847,9 @@ static void drawCSSetLineJoin(uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
sp.Thickness = 40.96;
|
sp.Thickness = 40.96;
|
||||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||||
|
@ -1814,6 +1955,7 @@ static const struct drawtest tests[] = {
|
||||||
{ "cairo samples: clip", drawCSClip },
|
{ "cairo samples: clip", drawCSClip },
|
||||||
{ "cairo samples: curve rectangle", drawCSCurveRectangle },
|
{ "cairo samples: curve rectangle", drawCSCurveRectangle },
|
||||||
{ "cairo samples: curve to", drawCSCurveTo },
|
{ "cairo samples: curve to", drawCSCurveTo },
|
||||||
|
{ "cairo samples: dash", drawCSDash },
|
||||||
{ "cairo samples: fill and stroke2", drawCSFillAndStroke2 },
|
{ "cairo samples: fill and stroke2", drawCSFillAndStroke2 },
|
||||||
{ "cairo samples: fill style", drawCSFillStyle },
|
{ "cairo samples: fill style", drawCSFillStyle },
|
||||||
{ "cairo samples: multi segment caps", drawCSMultiCaps },
|
{ "cairo samples: multi segment caps", drawCSMultiCaps },
|
||||||
|
|
|
@ -34,6 +34,9 @@ static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *p)
|
||||||
sp.Cap = uiDrawLineCapFlat;
|
sp.Cap = uiDrawLineCapFlat;
|
||||||
sp.Join = uiDrawLineJoinMiter;
|
sp.Join = uiDrawLineJoinMiter;
|
||||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||||
|
sp.Dashes = NULL;
|
||||||
|
sp.NumDashes = 0;
|
||||||
|
sp.DashPhase = 0;
|
||||||
|
|
||||||
startText = uiEntryText(startAngle);
|
startText = uiEntryText(startAngle);
|
||||||
sweepText = uiEntryText(sweep);
|
sweepText = uiEntryText(sweep);
|
||||||
|
|
7
ui.h
7
ui.h
|
@ -288,8 +288,6 @@ struct uiAreaDrawParams {
|
||||||
intmax_t VScrollPos;
|
intmax_t VScrollPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO dotting/dashing
|
|
||||||
|
|
||||||
typedef struct uiDrawPath uiDrawPath;
|
typedef struct uiDrawPath uiDrawPath;
|
||||||
typedef struct uiDrawBrush uiDrawBrush;
|
typedef struct uiDrawBrush uiDrawBrush;
|
||||||
typedef struct uiDrawStrokeParams uiDrawStrokeParams;
|
typedef struct uiDrawStrokeParams uiDrawStrokeParams;
|
||||||
|
@ -381,6 +379,11 @@ struct uiDrawStrokeParams {
|
||||||
uiDrawLineJoin Join;
|
uiDrawLineJoin Join;
|
||||||
double Thickness;
|
double Thickness;
|
||||||
double MiterLimit;
|
double MiterLimit;
|
||||||
|
double *Dashes;
|
||||||
|
// TOOD what if this is 1 on Direct2D?
|
||||||
|
// TODO what if a dash is 0 on Cairo or Quartz?
|
||||||
|
size_t NumDashes;
|
||||||
|
double DashPhase;
|
||||||
};
|
};
|
||||||
|
|
||||||
_UI_EXTERN uiDrawPath *uiDrawNewPath(uiDrawFillMode fillMode);
|
_UI_EXTERN uiDrawPath *uiDrawNewPath(uiDrawFillMode fillMode);
|
||||||
|
|
|
@ -278,6 +278,7 @@ void uiDrawStroke(uiDrawContext *c, uiDrawPath *path, uiDrawBrush *b, uiDrawStro
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
cairo_set_line_width(c->cr, p->Thickness);
|
cairo_set_line_width(c->cr, p->Thickness);
|
||||||
|
cairo_set_dash(c->cr, p->Dashes, p->NumDashes, p->DashPhase);
|
||||||
cairo_stroke(c->cr);
|
cairo_stroke(c->cr);
|
||||||
cairo_pattern_destroy(pat);
|
cairo_pattern_destroy(pat);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue