internal_t*i = (internal_t*)dev->internal;
ArtSVP* svp = gfxfillToSVP(line, 1);
+ if (svp->n_segs > 500)
+ {
+ int lineParts = 0;
+ gfxline_t* lineCursor = line;
+ while(lineCursor != NULL)
+ {
+ if(lineCursor->type != gfx_moveTo) ++lineParts;
+ lineCursor = lineCursor->next;
+ }
+ fprintf(stderr, "arts_fill abandonning shape with %d segments (%d line parts)\n", svp->n_segs, lineParts);
+ art_svp_free(svp);
+ return;
+ }
+
svp = art_svp_rewind_uncrossed(art_svp_uncross(svp),ART_WIND_RULE_ODDEVEN); /*FIXME*/
if(i->clip) {
dbg("arts_fillbitmap");
internal_t*i = (internal_t*)dev->internal;
ArtSVP* svp = gfxfillToSVP(line, 1);
+
if(i->clip) {
ArtSVP*old = svp;
svp = art_svp_intersect(svp, i->clip->svp);
void arts_drawchar(struct _gfxdevice*dev, gfxfont_t*font, int glyphnr, gfxcolor_t*color, gfxmatrix_t*matrix)
{
dbg("arts_drawchar");
+ if(!font)
+ return;
internal_t*i = (internal_t*)dev->internal;
gfxline_t*glyph = gfxline_clone(font->glyphs[glyphnr].line);
gfxline_transform(glyph, matrix);