Added negative arcs to the OS X backend. Now we have a crash in one of the tests; still debugging.
This commit is contained in:
parent
0989454106
commit
f4b0e7e35e
|
@ -30,7 +30,7 @@ void uiDrawPathNewFigure(uiDrawPath *p, double x, double y)
|
|||
CGPathMoveToPoint(p->path, NULL, x, y);
|
||||
}
|
||||
|
||||
void uiDrawPathNewFigureWithArc(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep)
|
||||
void uiDrawPathNewFigureWithArc(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep, int negative)
|
||||
{
|
||||
double sinStart, cosStart;
|
||||
double startx, starty;
|
||||
|
@ -42,7 +42,7 @@ void uiDrawPathNewFigureWithArc(uiDrawPath *p, double xCenter, double yCenter, d
|
|||
startx = xCenter + radius * cosStart;
|
||||
starty = yCenter + radius * sinStart;
|
||||
CGPathMoveToPoint(p->path, NULL, startx, starty);
|
||||
uiDrawPathArcTo(p, xCenter, yCenter, radius, startAngle, sweep);
|
||||
uiDrawPathArcTo(p, xCenter, yCenter, radius, startAngle, sweep, negative);
|
||||
}
|
||||
|
||||
void uiDrawPathLineTo(uiDrawPath *p, double x, double y)
|
||||
|
@ -52,16 +52,22 @@ void uiDrawPathLineTo(uiDrawPath *p, double x, double y)
|
|||
CGPathAddLineToPoint(p->path, NULL, x, y);
|
||||
}
|
||||
|
||||
void uiDrawPathArcTo(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep)
|
||||
void uiDrawPathArcTo(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep, int negative)
|
||||
{
|
||||
bool cw;
|
||||
|
||||
if (p->ended)
|
||||
complain("attempt to add arc to ended path in uiDrawPathArcTo()");
|
||||
if (sweep > 2 * M_PI)
|
||||
sweep = 2 * M_PI;
|
||||
CGPathAddRelativeArc(p->path, NULL,
|
||||
cw = false;
|
||||
if (negative)
|
||||
cw = true;
|
||||
CGPathAddArc(p->path, NULL,
|
||||
xCenter, yCenter,
|
||||
radius,
|
||||
startAngle, sweep);
|
||||
startAngle, startAngle + sweep,
|
||||
cw);
|
||||
}
|
||||
|
||||
void uiDrawPathBezierTo(uiDrawPath *p, double c1x, double c1y, double c2x, double c2y, double endX, double endY)
|
||||
|
@ -137,7 +143,6 @@ void uiDrawStroke(uiDrawContext *c, uiDrawPath *path, uiDrawBrush *b, uiDrawStro
|
|||
switch (p->Join) {
|
||||
case uiDrawLineJoinMiter:
|
||||
join = kCGLineJoinMiter;
|
||||
CGContextSetMiterLimit(c->c, p->MiterLimit);
|
||||
break;
|
||||
case uiDrawLineJoinRound:
|
||||
join = kCGLineJoinRound;
|
||||
|
|
|
@ -1160,21 +1160,21 @@ static void drawCSFillStyle(uiAreaDrawParams *p)
|
|||
sp.Thickness = 6;
|
||||
|
||||
path = uiDrawNewPath(uiDrawFillModeAlternate);
|
||||
uiDrawPathAddRectangle(path, 12, 12, 232, 70);
|
||||
// uiDrawPathAddRectangle(path, 12, 12, 232, 70);
|
||||
uiDrawPathNewFigureWithArc(path,
|
||||
64, 64,
|
||||
40,
|
||||
0, 2*M_PI,
|
||||
0);
|
||||
uiDrawPathNewFigureWithArc(path,
|
||||
/* uiDrawPathNewFigureWithArc(path,
|
||||
192, 64,
|
||||
40,
|
||||
0, -2*M_PI,
|
||||
1);
|
||||
uiDrawPathEnd(path);
|
||||
*/ uiDrawPathEnd(path);
|
||||
|
||||
crsourcergba(&source, 0, 0.7, 0, 1);
|
||||
uiDrawFill(p->Context, path, &source);
|
||||
// uiDrawFill(p->Context, path, &source);
|
||||
crsourcergba(&source, 0, 0, 0, 1);
|
||||
uiDrawStroke(p->Context, path, &source, &sp);
|
||||
uiDrawFreePath(path);
|
||||
|
@ -1184,9 +1184,8 @@ static void drawCSFillStyle(uiAreaDrawParams *p)
|
|||
uiDrawTransform(p->Context, &m);
|
||||
|
||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||
uiDrawPathAddRectangle(path, 12, 12, 232, 70);
|
||||
// TODO THIS DOESN'T WORK.
|
||||
uiDrawPathNewFigureWithArc(path,
|
||||
// uiDrawPathAddRectangle(path, 12, 12, 232, 70);
|
||||
/* uiDrawPathNewFigureWithArc(path,
|
||||
64, 64,
|
||||
40,
|
||||
0, 2*M_PI,
|
||||
|
@ -1196,12 +1195,12 @@ static void drawCSFillStyle(uiAreaDrawParams *p)
|
|||
40,
|
||||
0, -2*M_PI,
|
||||
1);
|
||||
uiDrawPathEnd(path);
|
||||
*/ uiDrawPathEnd(path);
|
||||
|
||||
crsourcergba(&source, 0, 0, 0.9, 1);
|
||||
uiDrawFill(p->Context, path, &source);
|
||||
// uiDrawFill(p->Context, path, &source);
|
||||
crsourcergba(&source, 0, 0, 0, 1);
|
||||
uiDrawStroke(p->Context, path, &source, &sp);
|
||||
// uiDrawStroke(p->Context, path, &source, &sp);
|
||||
uiDrawFreePath(path);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue