]> granicus.if.org Git - graphviz/commitdiff
edge position support added.
authorarif <devnull@localhost>
Tue, 3 Aug 2010 17:44:18 +0000 (17:44 +0000)
committerarif <devnull@localhost>
Tue, 3 Aug 2010 17:44:18 +0000 (17:44 +0000)
cmd/smyrna/glexpose.c
cmd/smyrna/smyrna.vcproj.RESEARCH.arif.user
cmd/smyrna/smyrnadefs.h
cmd/smyrna/topviewfuncs.c
cmd/smyrna/viewport.c

index 662c2d8a4494341a0bb8a54e064ca31c15157083..77ec5ab2f39914db13e9f025c6ddfede0567c397 100644 (file)
@@ -259,7 +259,7 @@ int glexpose_main(ViewInfo * view)
     if (!glupdatecamera(view))
        return 0;
 
-      draw_cube();
+//      draw_cube();
 
 
     if (view->activeGraph >= 0) {
index 3dd9b160421e5447610853c6ca817128e6a94538..f2fba747f82ee27769d1370456a259cc3b65145a 100644 (file)
@@ -11,7 +11,7 @@
                        <DebugSettings
                                Command="$(TargetPath)"
                                WorkingDirectory="C:\graphviz-ms\bin"
-                               CommandArguments="-f c:\4elt.dot"
+                               CommandArguments="c:/graphviz-ms/graphs/dot.gv"
                                Attach="false"
                                DebuggerType="3"
                                Remote="1"
index b8ac74f5d2ff2ca7941db8ee70ae6ed0bd6a9008..147c6a7a2c357ddd5691825df4e5b237746cab4d 100644 (file)
@@ -427,6 +427,7 @@ typedef struct
        Agsym_t* N_labelattribute;
        Agsym_t* E_visible;
        Agsym_t* E_selected;
+       Agsym_t* E_pos;
        Agsym_t* G_edgelabelcolor;
        Agsym_t* E_labelattribute;
     } graphRec;
@@ -437,10 +438,12 @@ typedef struct
 #define GN_selected(g) (GREC(g)->N_selected)
 #define GG_nodelabelcolor(g) (GREC(g)->G_nodelabelcolor)
 #define GN_labelattribute(g) (GREC(g)->N_labelattribute)
+#define GE_pos(g) (GREC(g)->E_pos)
 #define GE_visible(g) (GREC(g)->E_visible)
 #define GE_selected(g) (GREC(g)->E_selected)
 #define GG_edgelabelcolor(g) (GREC(g)->G_edgelabelcolor)
 #define GE_labelattribute(g) (GREC(g)->E_labelattribute)
+
 #define GUI_WINDOWED   0
 #define GUI_FULLSCREEN    1
 
index 6087e358f25da37c788941b212157cc0938ef491..a1f1910d0829885a209c1aaf3498fa4fd5138218 100644 (file)
@@ -449,15 +449,50 @@ static void renderSelectedEdges(Agraph_t * g)
     }
     glEnd();
 }
+static int removeChar(char* str,char r)
+{
+    char* ptr=str;
+    int rv=0;
+    while (*ptr!='\0')
+    {
+       if(*ptr == r)
+       {
+           *ptr=' ';
+           rv++;
+       }
 
+       ptr++;
+    }
+    return rv;
+}
 
+char* pos_to_xdot(char* xdots,char* buf)
+{
+/*
+"e,227.75,177.25 186.27,218.73 196.2,208.8 209.32,195.68 220.44,184.56", 
+"B 4 186 219 196 209 209 196 220 185 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 223 187 228 177 218 182 ";*/
+    char* pt;
+    int spaceCnt=0;
+    strcpy(buf,xdots);
+    pt=buf;
+    while ((spaceCnt == 0) && (*pt!='\0'))
+    {
+       if(*pt==' ')
+           spaceCnt++;
+       pt++;
+    }
+    return pt;
+}
 
 
 static void renderEdges(Agraph_t * g)
 {
+    char Buf[1024];
+    char posBuf[1024];
     Agedge_t *e;
     Agnode_t *v;
     Agsym_t* pos_attr = GN_pos(g);
+    Agsym_t* pos_attr_e = GE_pos(g);
     xdot * x;
     glCompPoint posT;  /*Tail position*/
     glCompPoint posH;  /*Head position*/
@@ -499,12 +534,27 @@ static void renderEdges(Agraph_t * g)
                continue;
            if(ED_selected(e))
                continue;
-           glColor4f(c.R,c.G,c.B,c.A);     
-           posT=getPointFromStr(agxget(agtail(e), pos_attr));
-           posH=getPointFromStr(agxget(aghead(e), pos_attr));
-           draw_edge(&posT,&posH,getEdgeLength(e),0);
-           ED_posTail(e) = posT;
-           ED_posHead(e) = posH;
+           glColor4f(c.R,c.G,c.B,c.A);    
+           if(!pos_attr_e)
+           {
+               posT=getPointFromStr(agxget(agtail(e), pos_attr));
+               posH=getPointFromStr(agxget(aghead(e), pos_attr));
+               draw_edge(&posT,&posH,getEdgeLength(e),0);
+               ED_posTail(e) = posT;
+               ED_posHead(e) = posH;
+           }
+           else/*NOT IMPLEMENTED YET*/
+           {
+               int pCount=0;
+               char* bf;
+               bf=pos_to_xdot(agxget(e,pos_attr_e),Buf);
+               pCount=removeChar(bf,',');
+               sprintf(posBuf,"B %d %s ",pCount,bf);
+               x=parseXDotFOn (posBuf, OpFns,sizeof(sdot_op), NULL);
+               draw_xdot(x,0);
+               if(x)
+                   freeXDot (x);
+           }
        }
     }
     glEnd();
index 01e759b2c12f54215337b1b471f819962e982d94..fe5e1801c2a889a6c108ce670b84129af9aadcba 100755 (executable)
@@ -662,6 +662,7 @@ graphRecord (Agraph_t* g)
     GN_selected(g) = agattr (g, AGNODE, "selected", 0);
     GN_labelattribute(g) = agattr (g, AGNODE, agget(g,"nodelabelattribute"), 0);
 
+    GE_pos(g)=agattr(g,AGEDGE,"pos",0);
     GE_visible(g) = agattr (g, AGEDGE, "visible", 0);
     GE_selected(g) = agattr (g, AGEDGE, "selected", 0);
     GE_labelattribute(g) = agattr (g, AGEDGE, agget(g,"edgelabelattribute"), 0);