X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fgfxtools.c;h=082eefa11e90b2b2e116e4db0fe28e3c01d7b25a;hb=HEAD;hp=08694554d6c30698a8d806647fe2aeab189ef772;hpb=9ed9a87914fc9a590967d46de404e0f6290b7bb2;p=swftools.git diff --git a/lib/gfxtools.c b/lib/gfxtools.c index 0869455..082eefa 100644 --- a/lib/gfxtools.c +++ b/lib/gfxtools.c @@ -205,8 +205,8 @@ static double get_spline_len(qspline_abc_t*s) void gfxtool_draw_dashed_line(gfxdrawer_t*d, gfxline_t*line, float*r, float phase) { double x=0,y=0; - double linepos,nextpos; - char on; + double linepos = 0,nextpos = 0; + char on = 0; int apos=0; if(line && line->type != gfx_moveTo) { @@ -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) @@ -904,7 +911,7 @@ gfxbbox_t* gfxline_isrectangle(gfxline_t*_l) gfxline_t*l = gfxline_clone(_l); gfxline_optimize(l); - double x1,x2,y1,y2; + double x1=0,x2=0,y1=0,y2=0; int xc=0,yc=0; char corners=0; @@ -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)); @@ -1178,5 +1195,6 @@ void gfxparams_free(gfxparams_t*params) free(p); p = next; } + free(params); }