/* writenodeandport: */ static void writenodeandport(FILE * fp, char *node, char *port) { char *ss; agputs(agcanonical(node), fp); /* slimey i know */ if (port && *port) { if (aghtmlstr(port)) { agputc(':', fp); agputs(agstrcanon(port, getoutputbuffer(port)), fp); } else { ss = strchr (port, ':'); if (ss) { *ss = '\0'; agputc(':', fp); agputs(_agstrcanon(port, getoutputbuffer(port)), fp); agputc(':', fp); agputs(_agstrcanon(ss+1, getoutputbuffer(ss+1)), fp); *ss = ':'; } else { agputc(':', fp); agputs(_agstrcanon(port, getoutputbuffer(port)), fp); } } } }
/* writenodeandport: */ static void writenodeandport(FILE * fp, char *node, char *port) { char *ss; fprintf(fp, "%s", agcanonical(node)); /* slimey i know */ if (port && *port) { if (aghtmlstr(port)) { fprintf(fp, ":%s", agstrcanon(port, getoutputbuffer(port))); } else { ss = strchr (port, ':'); if (ss) { *ss = '\0'; fprintf(fp, ":%s", _agstrcanon(port, getoutputbuffer(port))); fprintf(fp, ":%s", _agstrcanon(ss+1, getoutputbuffer(ss+1))); *ss = ':'; } else { fprintf(fp, ":%s", _agstrcanon(port, getoutputbuffer(port))); } } } }
/* agcanonical: * Safe version of agstrcanon. */ char* agcanonical(char *str) { return agstrcanon(str, getoutputbuffer(str)); }
void write_plainstr(graph_t* g, std::string *str) { int i; node_t *n; edge_t *e; bezier bz; char buf[SMALLBUF],buf1[SMALLBUF]; char tmpbuf[1000]; setup_graph(g); sprintf(tmpbuf, "graph %.3f", g->u.drawing->scale); str->append(tmpbuf); printptf(str, g->u.bb.UR); str->append("\n"); for (n = agfstnode(g); n; n = agnxtnode(g,n)) { str->append("node "); str->append(agstrcanon(n->name,buf)); printptf(str,n->u.coord); sprintf(tmpbuf, " %.3f", n->u.width); str->append(tmpbuf); sprintf(tmpbuf, " %.3f ", n->u.height); str->append(tmpbuf); str->append(agstrcanon(n->u.label->text,buf)); str->append(" "); str->append(late_nnstring(n,N_style,"solid")); str->append(" "); str->append(n->u.shape->name); str->append(" "); str->append(late_nnstring(n,N_color,DEFAULT_COLOR)); str->append(" "); str->append(late_nnstring(n,N_fillcolor,DEFAULT_FILL)); str->append("\n"); } for (n = agfstnode(g); n; n = agnxtnode(g,n)) { for (e = agfstout(g,n); e; e = agnxtout(g,e)) { bz = e->u.spl->list[0]; str->append("edge "); str->append(agstrcanon(e->tail->name,buf)); str->append(" "); str->append(agstrcanon(e->head->name,buf1)); str->append(" "); sprintf(tmpbuf, " %d", bz.size); str->append(tmpbuf); for (i = 0; i < bz.size; i++) printptf(str,bz.list[i]); if (e->u.label) { str->append(" "); str->append(agstrcanon(e->u.label->text,buf)); printptf(str,e->u.label->p); } str->append(" "); str->append(late_nnstring(e,E_style,"solid")); str->append(" "); str->append(late_nnstring(e,E_color,DEFAULT_COLOR)); str->append("\n"); } } str->append("stop\n"); }