static void write_paths_transparent_rec(FILE *fout, potrace_path_t *tree) { potrace_path_t *p, *q; for (p=tree; p; p=p->sibling) { if (info.grouping == 2) { fprintf(fout, "<g>\n"); } if (info.grouping != 0) { column = fprintf(fout, "<path d=\""); newline = 1; lastop = 0; } if (info.debug == 1) { svg_jaggy_path(fout, p->priv->pt, p->priv->len, 1); } else { svg_path(fout, &p->curve, 1); } for (q=p->childlist; q; q=q->sibling) { if (info.debug == 1) { svg_jaggy_path(fout, q->priv->pt, q->priv->len, 0); } else { svg_path(fout, &q->curve, 0); } } if (info.grouping != 0) { fprintf(fout, "\"/>\n"); } for (q=p->childlist; q; q=q->sibling) { write_paths_transparent_rec(fout, q->childlist); } if (info.grouping == 2) { fprintf(fout, "</g>\n"); } } }
static void write_paths_opaque(FILE *fout, potrace_path_t *tree) { potrace_path_t *p, *q; int c; for (p=tree; p; p=p->sibling) { if (info.group) { fprintf(fout, "<g>\n"); fprintf(fout, "<g>\n"); } c = fprintf(fout, "<path fill=\"#%06x\" stroke=\"none\" d=\"", info.color); column = c; newline = 1; lastop = 0; if (info.debug == 1) { svg_jaggy_path(fout, p->priv->pt, p->priv->len, 1); } else { svg_path(fout, &p->curve, 1); } fprintf(fout, "\"/>\n"); for (q=p->childlist; q; q=q->sibling) { c = fprintf(fout, "<path fill=\"#%06x\" stroke=\"none\" d=\"", info.fillcolor); column = c; newline = 1; lastop = 0; if (info.debug == 1) { svg_jaggy_path(fout, q->priv->pt, q->priv->len, 1); } else { svg_path(fout, &q->curve, 1); } fprintf(fout, "\"/>\n"); } if (info.group) { fprintf(fout, "</g>\n"); } for (q=p->childlist; q; q=q->sibling) { write_paths_opaque(fout, q->childlist); } if (info.group) { fprintf(fout, "</g>\n"); } } }