#include "render.h"
#include "agxbuf.h"
+#define YDIR(y) (Y_invert ? (Y_off - (y)) : (y))
+#define YFDIR(y) (Y_invert ? (YF_off - (y)) : (y))
+
+int Y_off; /* ymin + ymax */
+double YF_off; /* Y_off in inches */
static void printptf(FILE * f, point pt)
{
attach_attrs_and_arrows (g, &s, &e);
}
+void output_point(agxbuf *xbuf, pointf p)
+{
+ char buf[BUFSIZ];
+ sprintf(buf, "%d %d ", ROUND(p.x), YDIR(ROUND(p.y)));
+ agxbput(xbuf, buf);
+}
+
extern void attach_attrs_and_arrows(graph_t*, int*, int*);
extern char *xml_string(char *str);
extern void write_plain(GVJ_t * job, graph_t * g, FILE * f, bool extend);
+extern void output_point(agxbuf *xbuf, pointf p);
#define GNEW(t) (t*)malloc(sizeof(t))
rc = agxbputc(xbufs[emit_state], c);
sprintf(buf, " %d ", n);
agxbput(xbufs[emit_state], buf);
- for (i = 0; i < n; i++) {
- sprintf(buf, "%d %d ", ROUND(A[i].x), ROUND(A[i].y));
- agxbput(xbufs[emit_state], buf);
- }
+ for (i = 0; i < n; i++)
+ output_point(xbufs[emit_state], A[i]);
}
static void xdot_pencolor (GVJ_t *job)
j = 0;
break;
}
- sprintf(buf, "T %d %d %d %d ", ROUND(p.x), ROUND(p.y), j, (int) para->width);
+ agxbput(xbufs[emit_state], "T ");
+ output_point(xbufs[emit_state], p);
+ sprintf(buf, "%d %d ", j, (int) para->width);
agxbput(xbufs[emit_state], buf);
xdot_str (job, "", para->str);
}
emit_state_t emit_state = job->obj->emit_state;
char buf[BUFSIZ];
- int rc;
xdot_style (job);
xdot_pencolor (job);
if (filled) {
xdot_fillcolor (job);
- rc = agxbputc(xbufs[emit_state], 'E');
+ agxbput(xbufs[emit_state], "E ");
}
else
- rc = agxbputc(xbufs[emit_state], 'e');
- sprintf(buf, " %d %d %d %d ",
- ROUND(A[0].x), ROUND(A[0].y), ROUND(A[1].x - A[0].x), ROUND(A[1].y - A[0].y));
+ agxbput(xbufs[emit_state], "e ");
+ output_point(xbufs[emit_state], A[0]);
+ sprintf(buf, " %d %d ", ROUND(A[1].x - A[0].x), ROUND(A[1].y - A[0].y));
agxbput(xbufs[emit_state], buf);
}