X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fdevices%2Fswf.c;h=d349bda06ecfe0ec01e40d1713910ab5a9efde30;hb=7cd054491ed32224ed0939db4387e7a8f4d600d6;hp=86b2e2c804b3b75b3e03e5023a621e2687677f55;hpb=255ce8bb8fa14085b4d1e65073a60f4e8cdedd98;p=swftools.git diff --git a/lib/devices/swf.c b/lib/devices/swf.c index 86b2e2c..d349bda 100644 --- a/lib/devices/swf.c +++ b/lib/devices/swf.c @@ -247,8 +247,10 @@ static U16 getNewID(gfxdevice_t* dev) { swfoutput_internal*i = (swfoutput_internal*)dev->internal; if(i->currentswfid == 65535) { - if(!id_error) + if(!id_error) { msg(" ID Table overflow"); + msg(" This file is too complex to render- SWF only supports 65536 shapes at once"); + } id_error=1; i->overflow = 1; exit(1); @@ -259,8 +261,10 @@ static U16 getNewDepth(gfxdevice_t* dev) { swfoutput_internal*i = (swfoutput_internal*)dev->internal; if(i->depth == 65535) { - if(!id_error) + if(!id_error) { msg(" Depth Table overflow"); + msg(" This file is too complex to render- SWF only supports 65536 shapes at once"); + } id_error=1; i->overflow = 1; exit(1); @@ -1511,24 +1515,23 @@ static void drawgfxline(gfxdevice_t*dev, gfxline_t*line) swfoutput_internal*i = (swfoutput_internal*)dev->internal; gfxcoord_t lastx=0,lasty=0,px=0,py=0; char lastwasmoveto; + int lines= 0, splines=0; while(1) { if(!line) break; /* check whether the next segment is zero */ if(line->type == gfx_moveTo) { - msg(" ======== moveTo %.2f %.2f", line->x, line->y); moveto(dev, i->tag, line->x, line->y); px = lastx = line->x; py = lasty = line->y; lastwasmoveto = 1; } if(line->type == gfx_lineTo) { - msg(" ======== lineTo %.2f %.2f", line->x, line->y); lineto(dev, i->tag, line->x, line->y); px = line->x; py = line->y; lastwasmoveto = 0; + lines++; } else if(line->type == gfx_splineTo) { - msg(" ======== splineTo %.2f %.2f", line->x, line->y); plotxy_t s,p; s.x = line->sx;p.x = line->x; s.y = line->sy;p.y = line->y; @@ -1536,9 +1539,11 @@ static void drawgfxline(gfxdevice_t*dev, gfxline_t*line) px = line->x; py = line->y; lastwasmoveto = 0; + splines++; } line = line->next; } + msg(" drawgfxline, %d lines, %d splines", lines, splines); } @@ -2230,6 +2235,8 @@ static void swf_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color) swfoutput_internal*i = (swfoutput_internal*)dev->internal; if(line_is_empty(line)) return; + if(!color->a) + return; gfxbbox_t r = gfxline_getbbox(line); int is_outside_page = !is_inside_page(dev, r.xmin, r.ymin) || !is_inside_page(dev, r.xmax, r.ymax);