Fixed round joins to not fall through to miter case

This commit is contained in:
Carl Worth 2003-01-25 11:12:39 +00:00
parent 341c446ba2
commit f93c88efbf
2 changed files with 10 additions and 16 deletions

View file

@ -135,8 +135,8 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
_XrPolygonInit (&polygon);
switch (gstate->line_join) {
case XrLineJoinRound: {
}
case XrLineJoinRound:
break;
case XrLineJoinMiter: {
XDouble c = (-in->vector.x * out->vector.x)+(-in->vector.y * out->vector.y);
XDouble ml = gstate->miter_limit;
@ -175,13 +175,12 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
/* fall through ... */
}
case XrLineJoinBevel: {
case XrLineJoinBevel:
_XrPolygonAddEdge (&polygon, &in->pt, inpt);
_XrPolygonAddEdge (&polygon, inpt, outpt);
_XrPolygonAddEdge (&polygon, outpt, &in->pt);
break;
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
@ -201,9 +200,8 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
_XrPolygonInit (&polygon);
switch (gstate->line_cap) {
case XrLineCapRound: {
case XrLineCapRound:
break;
}
case XrLineCapSquare: {
double dx, dy;
XPointFixed fvector;
@ -226,10 +224,9 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
_XrPolygonAddEdge (&polygon, &f->ccw, &f->cw);
break;
}
case XrLineCapButt: {
case XrLineCapButt:
break;
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);

View file

@ -135,8 +135,8 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
_XrPolygonInit (&polygon);
switch (gstate->line_join) {
case XrLineJoinRound: {
}
case XrLineJoinRound:
break;
case XrLineJoinMiter: {
XDouble c = (-in->vector.x * out->vector.x)+(-in->vector.y * out->vector.y);
XDouble ml = gstate->miter_limit;
@ -175,13 +175,12 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
/* fall through ... */
}
case XrLineJoinBevel: {
case XrLineJoinBevel:
_XrPolygonAddEdge (&polygon, &in->pt, inpt);
_XrPolygonAddEdge (&polygon, inpt, outpt);
_XrPolygonAddEdge (&polygon, outpt, &in->pt);
break;
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
@ -201,9 +200,8 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
_XrPolygonInit (&polygon);
switch (gstate->line_cap) {
case XrLineCapRound: {
case XrLineCapRound:
break;
}
case XrLineCapSquare: {
double dx, dy;
XPointFixed fvector;
@ -226,10 +224,9 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
_XrPolygonAddEdge (&polygon, &f->ccw, &f->cw);
break;
}
case XrLineCapButt: {
case XrLineCapButt:
break;
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);