Fixed holes in self-intersecting splines, (from change to winding rule parameter interface)

This commit is contained in:
Carl Worth 2002-12-03 12:37:59 +00:00
parent 7f49b9ee83
commit cdae3ba615
6 changed files with 27 additions and 9 deletions

View file

@ -1,3 +1,13 @@
2002-12-03 Carl Worth <cworth@isi.edu>
* xrstroker.c (_XrStrokerJoin):
(_XrStrokerCap): Fixed to track change in winding rule parameter
to XrTrapsTessellatePolygon, (otherwise self-intersecting splines
suddenly had holes).
* xrpen.c (_XrPenStrokeSpline): Fixed to track change in winding
rule parameter to XrTrapsTessellatePolygon.
2002-11-11 Carl Worth <cworth@isi.edu>
* xrtransform.c (_XrTransformBoundingBox): Added support for

14
TODO
View file

@ -11,14 +11,22 @@ scalefont
transformfont (not in postscript)
Perhaps needed?
---------------
===============
Relative Offsets
----------------
ashow show with x/y displacement added to each character
widthshow show with x/y displacement added to specified character
xyshow show with array of x/y displacements substituted
awidthshow same as ashow plus widthshow
glyphshow show with name-based rather than encoded lookup of glyph
cshow show with a callback for drawing each glyph
kshow show with a callback between drawing each glyph
awidthshow same as ashow plus widthshow
Absolute offsets
----------------
xyshow show with array of x/y displacements substituted
xshow same as xyshow with y==0
yshow same as xyshow with x==0

View file

@ -327,7 +327,7 @@ _XrPenStrokeSpline(XrPen *pen,
return status;
_XrPolygonClose(&polygon);
_XrTrapsTessellatePolygon(traps, &polygon, 1);
_XrTrapsTessellatePolygon(traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit(&polygon);
return XrStatusSuccess;

View file

@ -183,7 +183,7 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, 1);
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
return status;
@ -231,7 +231,7 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, 1);
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
return status;

View file

@ -327,7 +327,7 @@ _XrPenStrokeSpline(XrPen *pen,
return status;
_XrPolygonClose(&polygon);
_XrTrapsTessellatePolygon(traps, &polygon, 1);
_XrTrapsTessellatePolygon(traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit(&polygon);
return XrStatusSuccess;

View file

@ -183,7 +183,7 @@ _XrStrokerJoin(XrStroker *stroker, XrStrokeFace *in, XrStrokeFace *out)
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, 1);
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
return status;
@ -231,7 +231,7 @@ _XrStrokerCap(XrStroker *stroker, XrStrokeFace *f)
}
}
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, 1);
status = _XrTrapsTessellatePolygon (stroker->traps, &polygon, XrFillRuleWinding);
_XrPolygonDeinit (&polygon);
return status;