]> granicus.if.org Git - graphviz/commitdiff
*** empty log message ***
authorarif <devnull@localhost>
Tue, 26 Feb 2008 19:33:46 +0000 (19:33 +0000)
committerarif <devnull@localhost>
Tue, 26 Feb 2008 19:33:46 +0000 (19:33 +0000)
cmd/smyrna/glexpose.c [new file with mode: 0644]
cmd/smyrna/glexpose.h [new file with mode: 0644]
cmd/smyrna/topviewdata.c [new file with mode: 0644]
cmd/smyrna/topviewdata.h [new file with mode: 0644]
cmd/smyrna/topviewdefs.h [new file with mode: 0644]

diff --git a/cmd/smyrna/glexpose.c b/cmd/smyrna/glexpose.c
new file mode 100644 (file)
index 0000000..b5d13d4
--- /dev/null
@@ -0,0 +1,83 @@
+#include "glexpose.h"
+#include "draw.h"
+#include "topview.h"
+/*
+       refreshes camera settings using view parameters such as pan zoom etc
+       params:ViewInfo , global view variable defined in viewport.c
+       return value:always 1
+*/
+int glupdatecamera(ViewInfo* view)
+{
+
+       gluLookAt(view->panx,view->pany,view->zoom*-1,view->panx,view->pany,0.0,0.0,1.0,0.0);
+       GetOGLPosRef(1,view->h-5,&(view->clipX1),&(view->clipY1),&(view->clipZ1));
+       GetOGLPosRef(view->w-1,1,&(view->clipX2),&(view->clipY2),&(view->clipZ2));
+       return 1;
+}
+
+/*
+       main gl expose ,any time sreen needs to be redrawn, this function is called by gltemplate
+       ,all drawings are initialized in this function
+       params:ViewInfo , global view variable defined in viewport.c
+       return value:0 if something goes wrong with GL 1 , otherwise
+*/
+int glexpose_main(ViewInfo* view)
+{
+       if(!glupdatecamera(view))
+               return 0;
+       glexpose_grid(view);
+       draw_fisheye_magnifier(view);
+       draw_magnifier(view);
+       glexpose_drawgraph(view);
+       draw_selection_box(view);
+       drawBorders(view);
+       return 1;
+}
+
+/*
+       draws grid (little dots , with no use)
+       params:ViewInfo , global view variable defined in viewport.c
+       return value:none
+*/
+void glexpose_grid(ViewInfo* view)
+{
+       //drawing grids
+       float x,y;
+       if(view->gridVisible)
+       {
+               glPointSize     (1);
+               glBegin(GL_POINTS);
+               glColor4f(view->gridColor.R,view->gridColor.G,view->gridColor.B,view->gridColor.A);
+               for (x=view->bdxLeft; x <= view->bdxRight;x=x +view->gridSize)
+               {
+                       for (y=view->bdyBottom; y <=view->bdyTop ;y=y +view->gridSize)
+                       {
+                                       glVertex3f(x,y,0);                      
+                       }
+               }
+               glEnd();
+       }
+}
+
+/*
+       draws active graph depending on graph type
+       params:ViewInfo , global view variable defined in viewport.c
+       return value:1 if there is a graph to draw else 0 
+*/
+int glexpose_drawgraph(ViewInfo* view)
+{
+       if(view->activeGraph > -1)
+       {
+               if(((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->TopView)
+               {
+                       drawTopViewGraph(view->g[view->activeGraph]);//view->Topview style dots and straight lines
+                       glCompSetDraw(view->Topview->topviewmenu);
+               }
+               else    
+                       drawGraph(view->g[view->activeGraph]);//xdot based drawing functions
+
+               return 1;
+       }
+       return 0;
+}
+
diff --git a/cmd/smyrna/glexpose.h b/cmd/smyrna/glexpose.h
new file mode 100644 (file)
index 0000000..765b4d0
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef GLEXPOSE_H
+#define GLEXPOSE_H
+
+#include "viewport.h"
+int glupdatecamera(ViewInfo* v);
+int glexpose_main(ViewInfo* v);
+void glexpose_grid(ViewInfo* v);
+int glexpose_drawgraph(ViewInfo* view);
+
+#endif
diff --git a/cmd/smyrna/topviewdata.c b/cmd/smyrna/topviewdata.c
new file mode 100644 (file)
index 0000000..66d688e
--- /dev/null
@@ -0,0 +1,146 @@
+#include "topviewdata.h"
+
+
+int prepare_nodes_for_groups(topview* t,topviewdata* td,int groupindex)
+{
+       GdkColor color;
+       int i=0;
+       int count=0;
+       tv_node tvn;
+       gtk_color_button_get_color(td->gtkhostcolor[0],&color);
+
+       for (i;i <t->Nodecount ; i++)
+       {
+               tvn.index=i;
+               if(validate_group_node(&tvn,td->hostregex[groupindex]))
+               {
+                       count ++;
+                       gtk_color_button_get_color(td->gtkhostcolor[groupindex],&color);
+                       t->Nodes[i].GroupIndex=groupindex;
+                       t->Nodes[i].GroupColor.R=color.red/65535.0;
+                       t->Nodes[i].GroupColor.G=color.green/65535.0;
+                       t->Nodes[i].GroupColor.B=color.blue/65535.0;
+               }
+       }
+}
+
+int load_host_buttons(topview* t,Agraph_t *g,glCompSet* s)
+{
+       GtkLayout* layout;
+       int btncount=0;
+       int i=0;
+       char buf[255];
+       char *str;
+       char hostbtncaption[50];
+       char hostbtnregex[50];
+       char hostbtncolorR[50];
+       char hostbtncolorG[50];
+       char hostbtncolorB[50];
+       char hostbtncolorA[50];
+       int X=10;
+       int Y=25;
+       GdkColor color;
+       glCompPanel* p;
+       glCompButton* b;
+
+       layout=glade_xml_get_widget(xml, "frmHostSelectionFixed");
+       str='\0';
+       str=agget(g, "hostbtncount");
+       if (str)        
+               btncount=atoi(str);
+
+//     Graph [hostbtncaption1="AT&T",hostbtnregex1="*.ATT*",hostbtncolorR1="1",hostbtncolorG1="0",hostbtncolorB1="0",hostbtncolorA1="1"];
+
+       t->TopviewData->hostregex=malloc (sizeof(char**)*btncount);
+       t->TopviewData->gtkhostbtn=malloc(sizeof(GtkButton*)*btncount);
+       t->TopviewData->gtkhostcolor=malloc(sizeof(GtkColorButton*)*btncount);
+       t->TopviewData->gtkhostbtncount=btncount;
+       if (btncount > 0)
+       {
+               p=glCompPanelNew(25,75,165,400);
+               p->data=2;              //data panel
+               p->color.R=0.80;
+               p->color.B=0,2;
+               glCompSetAddPanel(s,p);
+       }
+       for (i=0;i < btncount ; i++)
+       {
+               sprintf(hostbtncaption,"hostbtncaption%i",i);
+               sprintf(hostbtnregex,"hostbtnregex%i",i);
+               sprintf(hostbtncolorR,"hostbtncolorR%i",i);
+               sprintf(hostbtncolorG,"hostbtncolorG%i",i);
+               sprintf(hostbtncolorB,"hostbtncolorB%i",i);
+               sprintf(hostbtncolorA,"hostbtncolorA%i",i);
+               printf ("caption:%s regex:%s Color(%s,%s,%s,%s)\n",
+                       agget(g,hostbtncaption ),
+                       agget(g,hostbtnregex),
+                       agget(g,hostbtncolorR),
+                       agget(g,hostbtncolorG),
+                       agget(g,hostbtncolorB),
+                       agget(g,hostbtncolorA));
+               t->TopviewData->hostregex[i]=agget(g,hostbtnregex);
+
+               b=glCompButtonNew(5,7+(i+1)*36,150,35,agget(g,hostbtncaption ),'\0',0,0);
+               b->color.R=atof(agget(g,hostbtncolorR));
+               b->color.G=atof(agget(g,hostbtncolorG));
+               b->color.B=atof(agget(g,hostbtncolorB));
+               b->color.A=1;
+               b->panel=p;
+               b->groupid=-1;
+               b->callbackfunc=glhost_button_clicked_Slot;
+               b->data=i;
+               glCompSetAddButton(s,b);
+
+               t->TopviewData->gtkhostbtn[i]=gtk_button_new_with_label(agget(g,hostbtncaption ));
+               g_signal_connect ((gpointer) t->TopviewData->gtkhostbtn[i], "clicked", G_CALLBACK(host_button_clicked_Slot),i);
+
+               color.blue=65535*atof(agget(g,hostbtncolorB));
+               color.red=65535*atof(agget(g,hostbtncolorR));
+               color.green=65535*atof(agget(g,hostbtncolorG));
+
+               t->TopviewData->gtkhostcolor[i]=gtk_color_button_new_with_color(&color);
+
+               gtk_color_button_set_alpha(t->TopviewData->gtkhostbtn[i],65535*atof(agget(g,hostbtncolorA)));
+
+
+               gtk_layout_put  (layout,t->TopviewData->gtkhostbtn[i],X,Y);
+               gtk_widget_set_size_request(t->TopviewData->gtkhostbtn[i],200,35);
+
+               gtk_layout_put  (layout,t->TopviewData->gtkhostcolor[i],X+225,Y);
+               gtk_widget_set_size_request(t->TopviewData->gtkhostcolor[i],40,35);
+
+               gtk_widget_show(t->TopviewData->gtkhostbtn[i]);
+               gtk_widget_show(t->TopviewData->gtkhostcolor[i]);
+               Y=Y+40;
+               t->TopviewData->hostactive[i]=0;
+       }
+       p->height=15+(btncount+1)*36;
+       for (i=0;i < btncount ; i++)
+       {
+               prepare_nodes_for_groups(t,t->TopviewData,i);
+       }
+}
+void glhost_button_clicked_Slot(void* p)
+{
+       //negative active
+       int i,user_data;
+       user_data=((glCompButton*)p)->data;
+       if(view->Topview->TopviewData->hostactive[user_data]==0)
+               view->Topview->TopviewData->hostactive[user_data]=1;
+       else
+               view->Topview->TopviewData->hostactive[user_data]=0;
+       glexpose();
+}
+void host_button_clicked_Slot(GtkWidget *widget,gpointer     user_data)
+{
+       //negative active
+       int i;
+       if(view->Topview->TopviewData->hostactive[(int)user_data]==0)
+               view->Topview->TopviewData->hostactive[(int)user_data]=1;
+       else
+               view->Topview->TopviewData->hostactive[(int)user_data]=0;
+       glexpose();
+}
+
+
+
diff --git a/cmd/smyrna/topviewdata.h b/cmd/smyrna/topviewdata.h
new file mode 100644 (file)
index 0000000..03b334d
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef TOPVIEWDATA_H
+#define TOPVIEWDATA_H
+
+#include <gtk/gtk.h>
+#include "cgraph.h"
+#include "smyrnadefs.h"
+#include "tvnodes.h"
+
+
+
+
+
+int prepare_nodes_for_groups(topview* t,topviewdata* td,int groupindex);
+int load_host_buttons(topview* t,Agraph_t *g,glCompSet* s);
+int validate_group_node(tv_node* TV_Node,char* regex_string);
+int click_group_button(int groupindex);
+void glhost_button_clicked_Slot(void* p);
+_BB void host_button_clicked_Slot(GtkWidget *widget,gpointer     user_data);
+
+
+#endif
diff --git a/cmd/smyrna/topviewdefs.h b/cmd/smyrna/topviewdefs.h
new file mode 100644 (file)
index 0000000..aecb04e
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef TOPVIEWDEFS_H
+#define TOPVIEWDEFS_H
+#include "smyrnadefs.h"
+#include "gui.h"
+#include "tvnodes.h"
+#include "glcompset.h"
+
+
+
+
+#endif