X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fdrawer.c;h=801ff38b318c3441d29f51b91ee4c6f57950d935;hb=2b39e1bd64223659303afb113da273eb8499db6e;hp=a7c336e9954c5c888e939b3f1f02cbd693997034;hpb=95651d88dd7661170695d2c32c0a5ec446d56951;p=swftools.git diff --git a/lib/drawer.c b/lib/drawer.c index a7c336e..801ff38 100644 --- a/lib/drawer.c +++ b/lib/drawer.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "drawer.h" static char* getToken(const char**p) @@ -35,7 +36,18 @@ static char* getToken(const char**p) (*p)++; } start = *p; - while(**p && !strchr(" ,()\t\n\r", **p)) { + + /* + SVF pathdata can exclude whitespace after L and M commands. + Ref: http://www.w3.org/TR/SVG11/paths.html#PathDataGeneralInformation + This allows us to use svg files output from gnuplot. + Also checks for relative MoveTo and LineTo (m and l). + 051106 Magnus Lundin, lundin@mlu.mine.nu + */ + if (strchr("LMlm", **p) && (isdigit(*(*p+1))||strchr("+-", *(*p+1)))) { + (*p)++; + } + else while(**p && !strchr(" ,()\t\n\r", **p)) { (*p)++; } result = malloc((*p)-start+1); @@ -124,10 +136,11 @@ void draw_string(drawer_t*draw, const char*string) } else if(!strncmp(token, "circle", 6)) { int mx,my,r; - double r2 = 0.70710678118654757*r; + double r2; mx = atof(getToken(&p)); my = atof(getToken(&p)); r = atof(getToken(&p)); + r2 = 0.70710678118654757*r; draw_moveTo2(draw, mx, my-r); draw_conicTo2(draw, mx+r2, my-r2, mx+r, my); draw_conicTo2(draw, mx+r2, my+r2, mx, my+r);