static void svg_polygon(GVJ_t * job, pointf * A, int n, int filled) { int i, gid = 0; if (filled == GRADIENT) { gid = svg_gradstyle(job, A, n); } else if (filled == (RGRADIENT)) { gid = svg_rgradstyle(job, A, n); } gvputs(job, "<polygon"); svg_grstyle(job, filled, gid); gvputs(job, " points=\""); for (i = 0; i < n; i++) gvprintf(job, "%g,%g ", A[i].x, -A[i].y); gvprintf(job, "%g,%g", A[0].x, -A[0].y); /* because Adobe SVG is broken */ gvputs(job, "\"/>\n"); }
static void svg_ellipse(GVJ_t * job, pointf * A, int filled) { int gid = 0; /* A[] contains 2 points: the center and corner. */ if (filled == GRADIENT) { gid = svg_gradstyle(job, A, 2); } else if (filled == (RGRADIENT)) { gid = svg_rgradstyle(job, A, 2); } gvputs(job, "<ellipse"); svg_grstyle(job, filled, gid); gvprintf(job, " cx=\"%g\" cy=\"%g\"", A[0].x, -A[0].y); gvprintf(job, " rx=\"%g\" ry=\"%g\"", A[1].x - A[0].x, A[1].y - A[0].y); gvputs(job, "/>\n"); }
static void svg_bezier(GVJ_t * job, pointf * A, int n, int arrow_at_start, int arrow_at_end, int filled) { int gid = 0; if (filled == GRADIENT) { gid = svg_gradstyle(job, A, n); } else if (filled == (RGRADIENT)) { gid = svg_rgradstyle(job, A, n); } gvputs(job, "<path"); svg_grstyle(job, filled, gid); gvputs(job, " d=\""); svg_bzptarray(job, A, n); gvputs(job, "\"/>\n"); }
static void svg_bezier(GVJ_t * job, pointf * A, int n, int arrow_at_start, int arrow_at_end, int filled) { int gid = 0; obj_state_t *obj = job->obj; if (filled == GRADIENT) { gid = svg_gradstyle(job, A, n); } else if (filled == (RGRADIENT)) { gid = svg_rgradstyle(job, A, n); } gvputs(job, "<path"); if (obj->labeledgealigned) { gvputs(job, " id=\""); gvputs(job, xml_string(obj->id)); gvputs(job, "_p\" "); } svg_grstyle(job, filled, gid); gvputs(job, " d=\""); svg_bzptarray(job, A, n); gvputs(job, "\"/>\n"); }