From f33c63d806c544621bcfcb532dfeabc074dc2a1f Mon Sep 17 00:00:00 2001 From: erg Date: Mon, 15 Sep 2008 17:44:12 +0000 Subject: [PATCH] Fix pos handling code to work with floating point --- cmd/smyrna/viewport.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/cmd/smyrna/viewport.c b/cmd/smyrna/viewport.c index 2deed8d99..b21a78b1c 100755 --- a/cmd/smyrna/viewport.c +++ b/cmd/smyrna/viewport.c @@ -1006,25 +1006,13 @@ static int init_object_custom_data(Agraph_t * graph, void *obj) void move_node(void *obj, float dx, float dy) { char buf[512]; - char buf2[512]; - char *pch; - int a = 0; - int i = 0; - if ((agget(obj, "pos")) && (AGTYPE(obj) == AGNODE)) { - //tokenize - strcpy(buf, agget(obj, "pos")); - - pch = strtok(buf, ","); - while (pch != NULL) { - if (i == 0) - a = sprintf(buf2 + a, "%i,", atoi(pch) - (int) dx); - else - a = sprintf(buf2 + a, "%i,", atoi(pch) - (int) dy); - pch = strtok(NULL, ","); - i++; - } - buf2[strlen(buf2) - 1] = '\0'; - agset(obj, "pos", buf2); + double x, y; + Agsym_t* pos; + + if ((AGTYPE(obj) == AGNODE) && (pos = agattrsym (obj, "pos"))) { + sscanf (agxget (obj, pos), "%lf,%lf", &x, &y); + sprintf (buf, "%lf,%lf", x - dx, y - dy); + agxset(obj, pos, buf); } } -- 2.40.0