From aee5cc78145c722895e58b0e5ed5854aebcbe5da Mon Sep 17 00:00:00 2001
From: kramm <kramm>
Date: Sat, 18 Dec 2004 19:19:03 +0000
Subject: [PATCH] * fixed bbox bug, which caused shapes to disappear * in
 closed shapes, the cap style is no longer processed

---
 pdf2swf/swfoutput.cc |   18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc
index 1c12e46..7071724 100644
--- a/pdf2swf/swfoutput.cc
+++ b/pdf2swf/swfoutput.cc
@@ -808,12 +808,18 @@ void drawpath2poly(struct swfoutput *obj, SWF_OUTLINE*outline, struct swfmatrix*
     tmp->last = 0;
 
     while(1) {
+	double previousx = x, previousy = y;
 	if(tmp) {
 	    x += (tmp->dest.x/(float)0xffff);
 	    y += (tmp->dest.y/(float)0xffff);
 	}
         if(!tmp || tmp->type == SWF_PATHTYPE_MOVE) {
 	    if(valid && last) {
+		if(fabs(lastx-previousx)<0.001 && fabs(lasty-previousy)<0.001) {
+		    /* endpoints match- the path is closed.
+		       Don't bother to draw endings */
+		    drawShortPath(obj, lastx, lasty, m, last);
+		}
 		if(last->type == SWF_PATHTYPE_LINE && t1linelen(obj,last)>line_width*2 &&
 		   lastwasline && line_cap != LINE_CAP_ROUND)
 		    drawShortPathWithStraightEnds(obj, lastx, lasty, m, last, valid, line_cap, line_join, line_width);
@@ -828,7 +834,7 @@ void drawpath2poly(struct swfoutput *obj, SWF_OUTLINE*outline, struct swfmatrix*
 	    lasty = y;
 	} else {
 	    if(!last)
-		last = tmp;
+		last = tmp; //remember last stroke start (first segment after moveto)
 	    valid++;
 	}
 
@@ -1724,11 +1730,11 @@ static void endshape(swfoutput*obj, int clipdepth)
        (i->bboxrect.xmin == i->bboxrect.xmax && 
         i->bboxrect.ymin == i->bboxrect.ymax) ||
        /*bbox outside page?*/
-       (i->bboxrect.xmax <= i->min_x ||
-	i->bboxrect.ymax <= i->min_y ||
-	i->bboxrect.xmin >= i->max_x ||
-	i->bboxrect.ymin >= i->max_y)
-       ) 
+       (i->bboxrect.xmax <= i->min_x*20 ||
+	i->bboxrect.ymax <= i->min_y*20 ||
+	i->bboxrect.xmin >= i->max_x*20 ||
+	i->bboxrect.ymin >= i->max_y*20)
+       )
     {
 	// delete the shape again, we didn't do anything
 	cancelshape(obj);
-- 
1.7.10.4