more horizontal refactoring
[swftools.git] / lib / gfxtools.c
index 929d5bf..7160033 100644 (file)
@@ -656,6 +656,13 @@ gfxbbox_t gfxbbox_expand_to_point(gfxbbox_t box, gfxcoord_t x, gfxcoord_t y)
     return box;
 }
 
+gfxbbox_t gfxbbox_expand_to_bbox(gfxbbox_t box, gfxbbox_t box2)
+{
+    box = gfxbbox_expand_to_point(box, box2.xmin, box2.ymin);
+    box = gfxbbox_expand_to_point(box, box2.xmax, box2.ymax);
+    return box;
+}
+
 void gfxbbox_intersect(gfxbbox_t*box1, gfxbbox_t*box2)
 {
     if(box2->xmin > box1->xmin)
@@ -1038,7 +1045,7 @@ gfxline_t* gfxline_restitch(gfxline_t*line)
     gfxline_t*prev=0;
     while(line) {
        gfxline_t*next = line->next;
-       if(line->type == gfx_moveTo) {
+       if(line->type == gfx_moveTo && (line->next && line->next->type != gfx_moveTo)) {
            gfxpoint_t xy = {line->x, line->y};
            dict_put(ff, &xy, line);
            prev = line;
@@ -1047,6 +1054,7 @@ gfxline_t* gfxline_restitch(gfxline_t*line)
                gfxpoint_t xy = {line->x, line->y};
                dict_put(rev, &xy, prev);
                line->next = 0;
+               prev=0;
            }
        }
        line = next;
@@ -1137,6 +1145,15 @@ gfxline_t* gfxline_reverse(gfxline_t*line)
     return b;
 }
 
+void gfxgradient_destroy(gfxgradient_t*gradient)
+{
+    while(gradient) {
+       gfxgradient_t*next = gradient->next;
+       free(gradient);
+       gradient = next;
+    }
+}
+
 gfxparams_t* gfxparams_new()
 {
     return (gfxparams_t*)rfx_calloc(sizeof(gfxparams_t));