X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxtools.c;h=f6853daff5caa667b665277df2342cbc6d29b7de;hp=2e080de30e49bdc19d14e42bb833819a4b31a4e1;hb=395359a0831639fcc30aab4ea897e23ff8ab420c;hpb=6c8f037f0f76ce4b28b80a2133e4150d93012ef7 diff --git a/lib/gfxtools.c b/lib/gfxtools.c index 2e080de..f6853da 100644 --- a/lib/gfxtools.c +++ b/lib/gfxtools.c @@ -234,7 +234,7 @@ void gfxtool_draw_dashed_line(gfxdrawer_t*d, gfxline_t*line, float*r, float phas return; } if(r[0]<0 || phase<0) { - fprintf(stderr, "gfxtool: invalid (negative) dashes: %f, phase=%f", r[0], phase); + fprintf(stderr, "gfxtool: invalid (negative) dashes: %f, phase=%f\n", r[0], phase); return; } @@ -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) +{ + gfxbbox_expand_to_point(box, box2.xmin, box2.ymin); + 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) @@ -728,8 +735,8 @@ void gfxline_transform(gfxline_t*line, gfxmatrix_t*matrix) void gfxmatrix_dump(gfxmatrix_t*m, FILE*fi, char*prefix) { - fprintf(fi, "%f %f | %f\n", m->m00, m->m10, m->tx); - fprintf(fi, "%f %f | %f\n", m->m01, m->m11, m->ty); + fprintf(fi, "%s%f %f | %f\n", prefix, m->m00, m->m10, m->tx); + fprintf(fi, "%s%f %f | %f\n", prefix, m->m01, m->m11, m->ty); } void gfxmatrix_transform(gfxmatrix_t*m, double* v, double*dest) @@ -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; @@ -1137,19 +1144,13 @@ gfxline_t* gfxline_reverse(gfxline_t*line) return b; } -void gfximage_save_jpeg(gfximage_t*img, char*filename, int quality) +void gfxgradient_destroy(gfxgradient_t*gradient) { - unsigned char*data = malloc(img->width*img->height*3); - int t; - int size = img->width*img->height; - int s = 0; - for(t=0;tdata[t].r; - data[s+1] = img->data[t].g; - data[s+2] = img->data[t].b; - s+=3; + while(gradient) { + gfxgradient_t*next = gradient->next; + free(gradient); + gradient = next; } - jpeg_save(data, img->width, img->height, quality, filename); } gfxparams_t* gfxparams_new() @@ -1193,5 +1194,6 @@ void gfxparams_free(gfxparams_t*params) free(p); p = next; } + free(params); }