From: erg Date: Wed, 19 Mar 2008 21:43:58 +0000 (+0000) Subject: Clean up smyrna files: X-Git-Tag: LAST_LIBGRAPH~32^2~4481 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=271e198329b367e2eaae3c323eedd9a7659c4846;p=graphviz Clean up smyrna files: remove unnecessary globals modify libraries not to rely on code in cmd/smyrna remove static declarations from .h files remove unnecessary libraries mark unused code and clean up warnings --- diff --git a/cmd/smyrna/Makefile.am b/cmd/smyrna/Makefile.am index 628541cf6..30a4e8125 100644 --- a/cmd/smyrna/Makefile.am +++ b/cmd/smyrna/Makefile.am @@ -14,8 +14,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/lib/cgraph \ -I$(top_srcdir)/lib/cdt \ -I$(top_srcdir)/lib/glcomp \ - -I$(top_srcdir)/lib/filter \ - -I$(top_srcdir)/lib/utilities \ -I$(top_srcdir)/lib/xdot \ -I$(top_srcdir)/lib/glcomp \ -I$(top_srcdir)/lib/topfish \ @@ -28,7 +26,8 @@ noinst_HEADERS = btree.h draw.h filter.h glexpose.h gltemplate.h hier.h \ materials.h selection.h smyrnadefs.h support.h topview.h \ topviewdata.h topviewdefs.h trackball.h tvnodes.h viewport.h \ gui/callbacks.h gui/datalistcallbacks.h gui/filterscallbacks.h \ - gui/glmenu.h gui/gui.h gui/menucallbacks.h gui/toolboxcallbacks.h + gui/glmenu.h gui/gui.h gui/menucallbacks.h gui/toolboxcallbacks.h \ + gui/topviewsettings.h bin_PROGRAMS = smyrna endif @@ -36,7 +35,8 @@ smyrna_SOURCES = btree.c draw.c filter.c glexpose.c gltemplate.c hier.c \ main.c selection.c support.c template.c topview.c topviewdata.c \ trackball.c tvnodes.c viewport.c \ gui/callbacks.c gui/datalistcallbacks.c gui/filterscallbacks.c \ - gui/glmenu.c gui/gui.c gui/menucallbacks.c gui/toolboxcallbacks.c + gui/glmenu.c gui/gui.c gui/menucallbacks.c gui/toolboxcallbacks.c \ + gui/topviewsettings.c smyrna_LDADD = $(top_builddir)/lib/cgraph/libcgraph_C.la \ $(top_builddir)/lib/cdt/libcdt_C.la \ diff --git a/cmd/smyrna/btree.c b/cmd/smyrna/btree.c index 4e198e253..919262512 100644 --- a/cmd/smyrna/btree.c +++ b/cmd/smyrna/btree.c @@ -15,358 +15,340 @@ **********************************************************/ #include "btree.h" +#ifdef WIN32 #include "regex_win32.h" -btree_node* new_node(char* attribute,char* regex, float min, float max) +#else +#include "regex.h" +#endif +btree_node *new_node(char *attribute, char *regex, float min, float max) { - btree_node* n; - n=malloc(sizeof(btree_node)); - n->child_count=0; - n->childs=0; - n->rank=0; - n->attr_name=strdup(attribute); - n->regex=strdup(regex); - n->min=0; - n->max=0; - n->value=-1; - n->active=1; - return n; + btree_node *n; + n = malloc(sizeof(btree_node)); + n->child_count = 0; + n->childs = 0; + n->rank = 0; + n->attr_name = strdup(attribute); + n->regex = strdup(regex); + n->min = 0; + n->max = 0; + n->value = -1; + n->active = 1; + return n; } -int insert_node (btree_node* parent_n,btree_node* n) + +int insert_node(btree_node * parent_n, btree_node * n) { - parent_n->child_count ++; - parent_n->childs=realloc(parent_n->childs,parent_n->child_count*sizeof(btree_node*)); - parent_n->childs[parent_n->child_count-1]=n; - n->rank=parent_n->rank+1; - n->parent=parent_n; - return 1; + parent_n->child_count++; + parent_n->childs = + realloc(parent_n->childs, + parent_n->child_count * sizeof(btree_node *)); + parent_n->childs[parent_n->child_count - 1] = n; + n->rank = parent_n->rank + 1; + n->parent = parent_n; + return 1; } -int delete_node_recursive(btree_node* n) + +int delete_node_recursive(btree_node * n) { - int i=0; - int child_found=0; - //delete recursively - for (i=0;i < n->child_count;i++) - { - delete_node(n->childs[i]); - } - free(n->attr_name); - free(n->regex); - free(n->childs); + int i = 0; + //delete recursively + for (i = 0; i < n->child_count; i++) { + delete_node(n->childs[i]); + } + free(n->attr_name); + free(n->regex); + free(n->childs); - free(n); - return 1; + free(n); + return 1; } -int delete_node(btree_node* n) + +int delete_node(btree_node * n) { - int i=0; - int child_found=0; - //rmeove from parent's child list - if (n->parent) - { - n->parent->child_count--; - for (i=0;i < n->parent->child_count; i++) - { - if (n->parent->childs[i]==n) - { - child_found=1; - } - if (child_found) - n->parent->childs[i]=n->parent->childs[i+1]; - } + int i = 0; + int child_found = 0; + //rmeove from parent's child list + if (n->parent) { + n->parent->child_count--; + for (i = 0; i < n->parent->child_count; i++) { + if (n->parent->childs[i] == n) { + child_found = 1; + } + if (child_found) + n->parent->childs[i] = n->parent->childs[i + 1]; } - n->parent->childs=realloc(n->parent->childs,sizeof(btree_node*)*n->parent->child_count); - delete_node_recursive(n); - return 1; + } + n->parent->childs = + realloc(n->parent->childs, + sizeof(btree_node *) * n->parent->child_count); + delete_node_recursive(n); + return 1; } -btree_node* look_up_node_with_string(btree_node* n,char* string_to_lookup) +btree_node *look_up_node_with_string(btree_node * n, + char *string_to_lookup) { - int i=0; - btree_node* nn; - if (validate_lookup(n,string_to_lookup)) - return n; - else - { - for (i=0;i < n->child_count;i++) - { - nn=look_up_node_with_string(n->childs[i],string_to_lookup); - if (nn) - return nn; - } + int i = 0; + btree_node *nn; + if (validate_lookup(n, string_to_lookup)) + return n; + else { + for (i = 0; i < n->child_count; i++) { + nn = look_up_node_with_string(n->childs[i], string_to_lookup); + if (nn) + return nn; } - return 0; + } + return 0; } -int validate_lookup(btree_node* n,char* string_to_lookup) //it can be anything, in this case attr_name +int validate_lookup(btree_node * n, char *string_to_lookup) //it can be anything, in this case attr_name { - if (strcmp(n->attr_name,string_to_lookup)==0) - return 1; - return 0; + if (strcmp(n->attr_name, string_to_lookup) == 0) + return 1; + return 0; } -int print_tree(btree_node* root) + +int print_tree(btree_node * root) { - static rank=0; - return 1; + return 1; } -int print_children(btree_node* n) + +int print_children(btree_node * n) { - int i=0; - static int prev_rank=0; - if (n->node_type==2) - printf(" %*s=%s(%i)\n", n->rank*5+1,n->attr_name,n->regex,n->rank); - else - printf("%*s %c(%i)\n", n->rank*5+1,"",n->op,n->rank); - prev_rank=n->rank; - for (i=0;i < n->child_count;i++) - { - print_children(n->childs[i]); - } - return 1; + int i = 0; + static int prev_rank = 0; + if (n->node_type == 2) + printf(" %*s=%s(%i)\n", n->rank * 5 + 1, n->attr_name, + n->regex, n->rank); + else + printf("%*s %c(%i)\n", n->rank * 5 + 1, "", n->op, n->rank); + prev_rank = n->rank; + for (i = 0; i < n->child_count; i++) { + print_children(n->childs[i]); + } + return 1; } + int sample_tree() { - btree_node* root; - btree_node* n; - btree_node* nn; - btree_node* kurbanlik; - root=new_node("A","R", 0, 0); - root->parent=0; - insert_node (root,new_node("B","R", 0, 0)); - insert_node (root,new_node("C","R", 0, 0)); + btree_node *root; + btree_node *n; + btree_node *nn; + btree_node *kurbanlik; + root = new_node("A", "R", 0, 0); + root->parent = 0; + insert_node(root, new_node("B", "R", 0, 0)); + insert_node(root, new_node("C", "R", 0, 0)); - n=new_node("D","R", 0, 0); - kurbanlik=n; - insert_node (root,n); + n = new_node("D", "R", 0, 0); + kurbanlik = n; + insert_node(root, n); - nn=new_node("E","R", 0, 0); - insert_node (n,nn); - insert_node (n,new_node("X","R", 0, 0)); - insert_node (n,new_node("Y","R", 0, 0)); - insert_node (n,new_node("Z","R", 0, 0)); - n=new_node("F","R", 0, 0); - insert_node (root,n); + nn = new_node("E", "R", 0, 0); + insert_node(n, nn); + insert_node(n, new_node("X", "R", 0, 0)); + insert_node(n, new_node("Y", "R", 0, 0)); + insert_node(n, new_node("Z", "R", 0, 0)); + n = new_node("F", "R", 0, 0); + insert_node(root, n); - print_children(root); - n=look_up_node_with_string(root,"F"); - if(n) - printf("found value-->%s \n",n->attr_name); + print_children(root); + n = look_up_node_with_string(root, "F"); + if (n) + printf("found value-->%s \n", n->attr_name); - delete_node(kurbanlik); - print_children(root); + delete_node(kurbanlik); + print_children(root); print_children(tree_from_filter_string("(()(())((())()))")); - return 1; + return 1; + - } -btree_node* tree_from_filter_string(char* filter_string) +btree_node *tree_from_filter_string(char *filter_string) { - btree_node* root; - btree_node* cursor; - btree_node* n; - btree_node* Nodes[2]; - char buffer[512]; - char* b_cursor=0; - char* c_cursor; - char op='\0'; - char last_char; - int a=0; - root=new_node("R","", 0, 0); - cursor=root; - c_cursor=filter_string; - while (*c_cursor!='\0') - { - switch (*c_cursor) + btree_node *root; + btree_node *cursor; + btree_node *n; + btree_node *Nodes[2]; + char buffer[512]; + char *b_cursor = 0; + char *c_cursor; + char op = '\0'; + char last_char; + root = new_node("R", "", 0, 0); + cursor = root; + c_cursor = filter_string; + while (*c_cursor != '\0') { + switch (*c_cursor) { + case '(': + n = new_node(".", "", 0, 0); + insert_node(cursor, n); + last_char = '('; + cursor = n; + break; + case ')': + last_char = ')'; + cursor = cursor->parent; + break; + default: + if (last_char == '(') { + b_cursor = buffer; + while (*c_cursor != ')') { + *b_cursor = *c_cursor; + b_cursor++; + c_cursor++; + } + *b_cursor = '\0'; + evaluate_filter_atom(buffer, Nodes, &op); + if (Nodes[1] != 0) { + insert_node(cursor, Nodes[0]); + insert_node(cursor, Nodes[1]); + cursor->op = op; + } else //only one expression in () { - case '(' : - n=new_node(".","", 0, 0); - insert_node (cursor,n); - last_char='('; - cursor=n; - break; - case ')': - last_char=')'; - cursor=cursor->parent; - break; - default: - if (last_char=='(') - { - b_cursor=buffer; - while (*c_cursor !=')') - { - *b_cursor=*c_cursor; - b_cursor++; - c_cursor++; - } - *b_cursor='\0'; - evaluate_filter_atom(buffer,Nodes,&op); - if (Nodes[1] !=0) - { - insert_node(cursor,Nodes[0]); - insert_node(cursor,Nodes[1]); - cursor->op=op; - } - else //only one expression in () - { - insert_node(cursor->parent,Nodes[0]); - delete_node(cursor); - cursor=Nodes[0]; - } + insert_node(cursor->parent, Nodes[0]); + delete_node(cursor); + cursor = Nodes[0]; + } - c_cursor--; - } - if (last_char == ')') - cursor->op=*c_cursor; - break; - }; - c_cursor ++; - } - return root; + c_cursor--; + } + if (last_char == ')') + cursor->op = *c_cursor; + break; + }; + c_cursor++; + } + return root; } -int evaluate_filter_atom(char* string,btree_node* Nodes[],char* op) +int evaluate_filter_atom(char *string, btree_node * Nodes[], char *op) { - char* c_cursor; - char** attrs; - char buff_attr[512]; - int c_buff_attr=0; - char buff_value[512]; - int c_buff_value=0; - int attrs_count=0; - char** values; - int values_count=0; - int cc=0; - btree_node* n; - int kp_open=0; //[ open - int qt_open=0; //" open? - int error=0; - int i=0; + char *c_cursor; + char **attrs; + char buff_attr[512]; + int c_buff_attr = 0; + char buff_value[512]; + int c_buff_value = 0; + int attrs_count = 0; + char **values; + int values_count = 0; + btree_node *n; + int kp_open = 0; //[ open + int qt_open = 0; //" open? + int i = 0; - attrs=0; - values=0; + attrs = 0; + values = 0; - c_cursor=string; - while ( *c_cursor !='\0') - { - if (kp_open) - { - if ((*c_cursor == ',') || ((*c_cursor==']') && (!qt_open))) - { - attrs=realloc(attrs,(attrs_count+1)*sizeof(char*)); - attrs[attrs_count]=strdup(buff_attr); - attrs_count++; - values=realloc(values,(values_count+1)*sizeof(char*)); - values[values_count]=strdup(buff_value); - values_count++; - buff_attr[0]='\0';buff_value[0]='\0'; - c_buff_attr=0;c_buff_value=0; - } - if ( (*c_cursor != '=') &&(*c_cursor != ',')&&(*c_cursor != '\"')) - { - if(!qt_open && (*c_cursor != ']')&&(*c_cursor != '[')) - { - buff_attr[c_buff_attr]=*c_cursor; - buff_attr[c_buff_attr+1]='\0'; - c_buff_attr++; - } - if (qt_open) - { - buff_value[c_buff_value]=*c_cursor; - buff_value[c_buff_value+1]='\0'; - c_buff_value++; - } - } - if ((*c_cursor == '\"')&&(qt_open)) - qt_open=0; - else - if ((*c_cursor == '\"')&&(!qt_open)) - qt_open=1; - if ((*c_cursor == ']') && !qt_open) - kp_open=0; + c_cursor = string; + while (*c_cursor != '\0') { + if (kp_open) { + if ((*c_cursor == ',') || ((*c_cursor == ']') && (!qt_open))) { + attrs = realloc(attrs, (attrs_count + 1) * sizeof(char *)); + attrs[attrs_count] = strdup(buff_attr); + attrs_count++; + values = + realloc(values, (values_count + 1) * sizeof(char *)); + values[values_count] = strdup(buff_value); + values_count++; + buff_attr[0] = '\0'; + buff_value[0] = '\0'; + c_buff_attr = 0; + c_buff_value = 0; + } + if ((*c_cursor != '=') && (*c_cursor != ',') + && (*c_cursor != '\"')) { + if (!qt_open && (*c_cursor != ']') && (*c_cursor != '[')) { + buff_attr[c_buff_attr] = *c_cursor; + buff_attr[c_buff_attr + 1] = '\0'; + c_buff_attr++; } - if (*c_cursor == '[') - kp_open=1; - if ( *c_cursor == '&') - *op='&'; - if ( *c_cursor == '|') - *op='|'; - c_cursor++; + if (qt_open) { + buff_value[c_buff_value] = *c_cursor; + buff_value[c_buff_value + 1] = '\0'; + c_buff_value++; + } + } + if ((*c_cursor == '\"') && (qt_open)) + qt_open = 0; + else if ((*c_cursor == '\"') && (!qt_open)) + qt_open = 1; + if ((*c_cursor == ']') && !qt_open) + kp_open = 0; } - - n=new_node(attrs[0],values[0],(float)atof(values[1]),(float)atof(values[2])); - n->node_type=2; - Nodes[0]=n; + if (*c_cursor == '[') + kp_open = 1; + if (*c_cursor == '&') + *op = '&'; + if (*c_cursor == '|') + *op = '|'; + c_cursor++; + } - if (attrs_count >5) - { - n=new_node(attrs[3],values[3],(float)atof(values[4]),(float)atof(values[5])); - n->node_type=2; - Nodes[1]=n; - } - else - Nodes[1]=0; - - for (i=0;i < attrs_count;i++) - { - free(attrs[i]); - free(values[i]); - } - free(attrs); - free(values); + n = new_node(attrs[0], values[0], (float) atof(values[1]), + (float) atof(values[2])); + n->node_type = 2; + Nodes[0] = n; - return 1; + if (attrs_count > 5) { + n = new_node(attrs[3], values[3], (float) atof(values[4]), + (float) atof(values[5])); + n->node_type = 2; + Nodes[1] = n; + } else + Nodes[1] = 0; + + for (i = 0; i < attrs_count; i++) { + free(attrs[i]); + free(values[i]); + } + free(attrs); + free(values); + + return 1; } -int evaluate_expresions (tv_node* TV_Node,btree_node* n) + +int evaluate_expresions(tv_node * TV_Node, btree_node * n) { - regex_t preg; - char* data; - int i=0; - int ii=0; - if (!n) - return 1; - if(n->op=='&') - ii=1; - for (i=0;i < n->child_count;i++) - { - evaluate_expresions(TV_Node,n->childs[i]); - if(n->op=='&') - ii =ii && n->childs[i]->value; -// if(n->op=='|') - else - ii =ii || n->childs[i]->value; + regex_t preg; + char *data; + int i = 0; + int ii = 0; + if (!n) + return 1; + if (n->op == '&') + ii = 1; + for (i = 0; i < n->child_count; i++) { + evaluate_expresions(TV_Node, n->childs[i]); + if (n->op == '&') + ii = ii && n->childs[i]->value; +// if(n->op=='|') + else + ii = ii || n->childs[i]->value; - } - if (n->node_type==2) - { + } + if (n->node_type == 2) { //assert(n); //assert(n->attr_name); //fprintf(stderr,"agget(%d,%s)", TV_Node->index , n->attr_name); - data=agget(view->Topview->Nodes[TV_Node->index].Node,n->attr_name); + data = + agget(view->Topview->Nodes[TV_Node->index].Node, n->attr_name); //fprintf(stderr," = %s\n", data); - if (data) - { - regcomp(&preg,n->regex,REG_NOSUB); - if (regexec(&preg,data,0,0,0)==0) - n->value=1; - else - n->value=0; - regfree(&preg); - } - else - n->value=1; //no attribute return 1 - } - else - n->value=ii; - return n->value; + if (data) { + regcomp(&preg, n->regex, REG_NOSUB); + if (regexec(&preg, data, 0, 0, 0) == 0) + n->value = 1; + else + n->value = 0; + regfree(&preg); + } else + n->value = 1; //no attribute return 1 + } else + n->value = ii; + return n->value; } - - - - - - - - - diff --git a/cmd/smyrna/topview.c b/cmd/smyrna/topview.c index 00dd9c068..7d743f9fd 100755 --- a/cmd/smyrna/topview.c +++ b/cmd/smyrna/topview.c @@ -26,383 +26,386 @@ #include "topviewdata.h" #include "hier.h" -static float dx=0.0; -static float dy=0.0; -void cleartopview(topview* t) +static float dx = 0.0; +static float dy = 0.0; +void cleartopview(topview * t) { - int ind=0; - /*clear nodes*/ - free (t->Nodes); - /*clear edges*/ - free(t->Edges); - /*clear gl menu*/ - glCompSetClear(t->topviewmenu); - free (t); + /*clear nodes */ + free(t->Nodes); + /*clear edges */ + free(t->Edges); + /*clear gl menu */ + glCompSetClear(t->topviewmenu); + free(t); } -void preparetopview(Agraph_t *g,topview* t) + +void preparetopview(Agraph_t * g, topview * t) { - int GP_flag=0; //general purpose flag - char* str; - char* d_attr1; - char* d_attr2; - float a,b,c; - Agnode_t *v; - Agedge_t *e; - Agsym_t *sym; - int ind,ind2,data_type_count; //number of columns for custom view->Topview data ,IP ,HOST, etc - char buf[256]; - ind=0;ind2=0; - gtk_widget_hide(glade_xml_get_widget(xml, "layout6")); //hide top panel -// gtk_widget_hide(glade_xml_get_widget(xml, "menubar1")); //hide menu - data_type_count=0; - d_attr1=agget(g, "DataAttribute1"); - if (d_attr1) { - if (!strcmp (d_attr1, "\\N")) - sym = 0; - else if (!(sym = agattr (g, AGNODE, d_attr1, 0))) - d_attr1 = 0; - } - d_attr2=agget(g, "DataAttribute2"); - - t->Edges=NULL; - t->Nodes=NULL; - /*initialize node and edge array*/ - t->Edges=malloc(sizeof(topview_edge)*agnedges(g)); - if (!t->Edges) - { - printf ("memory allocation problem\n"); - exit(1); + char *str; + char *d_attr1; + char *d_attr2; + float a, b, c; + Agnode_t *v; + Agedge_t *e; + Agsym_t *sym; + int ind, ind2, data_type_count; //number of columns for custom view->Topview data ,IP ,HOST, etc + char buf[256]; + ind = 0; + ind2 = 0; + gtk_widget_hide(glade_xml_get_widget(xml, "layout6")); //hide top panel +// gtk_widget_hide(glade_xml_get_widget(xml, "menubar1")); //hide menu + data_type_count = 0; + d_attr1 = agget(g, "DataAttribute1"); + if (d_attr1) { + if (!strcmp(d_attr1, "\\N")) + sym = 0; + else if (!(sym = agattr(g, AGNODE, d_attr1, 0))) + d_attr1 = 0; + } + d_attr2 = agget(g, "DataAttribute2"); + + t->Edges = NULL; + t->Nodes = NULL; + /*initialize node and edge array */ + t->Edges = malloc(sizeof(topview_edge) * agnedges(g)); + if (!t->Edges) { + printf("memory allocation problem\n"); + exit(1); + } + + t->Nodes = malloc(sizeof(topview_node) * agnnodes(g)); + if (!t->Nodes) { + printf("memory allocation problem\n"); + exit(1); + } + + printf("# of edges :%i\n", agnnodes(g)); + printf("# of edges :%i\n", agnedges(g)); + + /*malloc topviewdata */ + t->TopviewData = malloc(sizeof(topviewdata)); + + for (v = agfstnode(g); v; v = agnxtnode(g, v)) { + //set node TV reference + ((custom_object_data *) AGDATA(v))->TVRef = ind; //view->Topview reference + strcpy(buf, agget(v, "pos")); + if (strlen(buf)) { + a = (float) atof(strtok(buf, ",")); + b = (float) atof(strtok(NULL, ",")); + str = strtok(NULL, ","); + if (str) + c = (float) atof(str); + else + c = (float) 0.0; } + /*initialize group index, -1 means no group */ + t->Nodes[ind].GroupIndex = -1; + randomize_color(&(t->Nodes[ind].Color), 2); + t->Nodes[ind].Node = v; + t->Nodes[ind].x = a; + t->Nodes[ind].y = b; + t->Nodes[ind].z = c; + t->Nodes[ind].distorted_x = a; + t->Nodes[ind].distorted_y = b; + t->Nodes[ind].zoom_factor = 1; + t->Nodes[ind].degree = agdegree(g, v, 1, 1); + t->Nodes[ind].node_alpha = + (float) log((double) t->Nodes[ind].degree + (double) 0.3); + if (d_attr1) { + if (sym) + str = agxget(v, sym); + else + str = agnameof(v); + t->Nodes[ind].Label = strdup(str); - t->Nodes=malloc(sizeof(topview_node)*agnnodes(g)); - if (!t->Nodes) - { - printf ("memory allocation problem\n"); - exit(1); } - - printf ("# of edges :%i\n",agnnodes(g)); - printf ("# of edges :%i\n",agnedges(g)); - - /*malloc topviewdata*/ - t->TopviewData=malloc (sizeof(topviewdata)); - - for (v = agfstnode(g); v; v = agnxtnode(g, v)) - { - //set node TV reference - ((custom_object_data*)AGDATA(v))->TVRef=ind; //view->Topview reference - strcpy(buf,agget(v, "pos")); - if(strlen(buf)) - { - a=(float)atof(strtok (buf,"," )); - b=(float)atof(strtok (NULL,"," )); - str=strtok (NULL,"," ); - if(str) - c=(float)atof(str); - else - c=(float)0.0; - } - /*initialize group index, -1 means no group*/ - t->Nodes[ind].GroupIndex=-1; - randomize_color(&(t->Nodes[ind].Color),2); - t->Nodes[ind].Node=v; - t->Nodes[ind].x=a; - t->Nodes[ind].y=b; - t->Nodes[ind].z=c; - t->Nodes[ind].distorted_x=a; - t->Nodes[ind].distorted_y=b; - t->Nodes[ind].zoom_factor=1; - t->Nodes[ind].degree=agdegree(g,v,1,1); - t->Nodes[ind].node_alpha=(float)log((double)t->Nodes[ind].degree+(double)0.3); - if(d_attr1) - { - if (sym) - str = agxget(v,sym); - else - str = agnameof(v); - t->Nodes[ind].Label=strdup(str); - - } - if(d_attr2) - { - str=agget(v,d_attr2); - if(str) - { - t->Nodes[ind].Label2=strdup(str); - } - } - for (e = agfstout(g,v) ; e ; e = agnxtout (g,e)) - { - aghead(e); - t->Edges[ind2].Hnode=aghead(e); - t->Edges[ind2].Tnode=agtail(e); - t->Edges[ind2].Edge=e; - strcpy(buf,agget(aghead(e), "pos")); - if(strlen(buf)) - { - a=(float)atof(strtok (buf,"," )); - b=(float)atof(strtok (NULL,"," )); - str=strtok (NULL,"," ); - if(str) - c=(float)atof(str); - else - c=(float)0.0; - - t->Edges[ind2].x1=a; - t->Edges[ind2].y1=b; - t->Edges[ind2].z1=b; - } - strcpy(buf,agget(agtail(e), "pos")); - if(strlen(buf)) - { - a=(float)atof(strtok (buf,"," )); - b=(float)atof(strtok (NULL,"," )); - str=strtok (NULL,"," ); - if(str) - c=(float)atof(str); - else - c=(float)0.0; - t->Edges[ind2].x2=a; - t->Edges[ind2].y2=b; - t->Edges[ind2].z2=c; - } - ind2++; - } - ind++; + if (d_attr2) { + str = agget(v, d_attr2); + if (str) { + t->Nodes[ind].Label2 = strdup(str); + } } - //attach edge node references loop one more time - ind=0;ind2=0; - for (v = agfstnode(g); v; v = agnxtnode(g, v)) - { - //set node TV reference - for (e = agfstout(g,v) ; e ; e = agnxtout (g,e)) - { - t->Edges[ind2].Node1= &t->Nodes[((custom_object_data*)AGDATA(t->Edges[ind2].Tnode))->TVRef]; - t->Edges[ind2].Node2= &t->Nodes[((custom_object_data*)AGDATA(t->Edges[ind2].Hnode))->TVRef]; - ind2++; + for (e = agfstout(g, v); e; e = agnxtout(g, e)) { + aghead(e); + t->Edges[ind2].Hnode = aghead(e); + t->Edges[ind2].Tnode = agtail(e); + t->Edges[ind2].Edge = e; + strcpy(buf, agget(aghead(e), "pos")); + if (strlen(buf)) { + a = (float) atof(strtok(buf, ",")); + b = (float) atof(strtok(NULL, ",")); + str = strtok(NULL, ","); + if (str) + c = (float) atof(str); + else + c = (float) 0.0; + + t->Edges[ind2].x1 = a; + t->Edges[ind2].y1 = b; + t->Edges[ind2].z1 = b; + } + strcpy(buf, agget(agtail(e), "pos")); + if (strlen(buf)) { + a = (float) atof(strtok(buf, ",")); + b = (float) atof(strtok(NULL, ",")); + str = strtok(NULL, ","); + if (str) + c = (float) atof(str); + else + c = (float) 0.0; + t->Edges[ind2].x2 = a; + t->Edges[ind2].y2 = b; + t->Edges[ind2].z2 = c; + } + ind2++; + } + ind++; + } + //attach edge node references loop one more time + ind = 0; + ind2 = 0; + for (v = agfstnode(g); v; v = agnxtnode(g, v)) { + //set node TV reference + for (e = agfstout(g, v); e; e = agnxtout(g, e)) { + t->Edges[ind2].Node1 = + &t-> + Nodes[((custom_object_data *) + AGDATA(t->Edges[ind2].Tnode))->TVRef]; + t->Edges[ind2].Node2 = + &t-> + Nodes[((custom_object_data *) + AGDATA(t->Edges[ind2].Hnode))->TVRef]; + ind2++; - } - ind++; } - t->Nodecount=ind; - t->Edgecount=ind2; - view->fmg.fisheye_distortion_fac=5; //need to be hooked to a widget - set_boundries(t); - set_update_required(t); - t->topviewmenu=glcreate_gl_topview_menu(); - load_host_buttons(t,g,t->topviewmenu); -// prepare_topological_fisheye(t); + ind++; + } + t->Nodecount = ind; + t->Edgecount = ind2; + view->fmg.fisheye_distortion_fac = 5; //need to be hooked to a widget + set_boundries(t); + set_update_required(t); + t->topviewmenu = glcreate_gl_topview_menu(); + load_host_buttons(t, g, t->topviewmenu); +// prepare_topological_fisheye(t); } -void drawTopViewGraph(Agraph_t *g) -{ -// DWORD t1,t2; - topview_node *v; - topview_edge *e; - float ddx,ddy; - float dddx,dddy; - int ind=0; - if(view->zoom > NODE_ZOOM_LIMIT) - { - glPointSize(15/view->zoom*-1); - //draw nodes - set_topview_options(); - if(view->zoom < NODE_CIRCLE_LIMIT) - glBegin(GL_POINTS); - //drawing labels - for (ind=0;ind < view->Topview->Nodecount;ind ++) - { +void drawTopViewGraph(Agraph_t * g) +{ +// DWORD t1,t2; + topview_node *v; + topview_edge *e; + float ddx, ddy; + float dddx, dddy; + int ind = 0; + if (view->zoom > NODE_ZOOM_LIMIT) { + glPointSize(15 / view->zoom * -1); + //draw nodes + set_topview_options(); + if (view->zoom < NODE_CIRCLE_LIMIT) + glBegin(GL_POINTS); - v=&view->Topview->Nodes[ind]; - if(!node_visible(v->Node)) - break; + //drawing labels + for (ind = 0; ind < view->Topview->Nodecount; ind++) { - draw_topview_label(v,1); + v = &view->Topview->Nodes[ind]; + if (!node_visible(v->Node)) + break; - } - for (ind=0;ind < view->Topview->Nodecount;ind ++) - { - - if((view->Topview->Nodes[ind].x > view->clipX1) && (view->Topview->Nodes[ind].x < view->clipX2) &&(view->Topview->Nodes[ind].y > view->clipY1)&&(view->Topview->Nodes[ind].y < view->clipY2)) - { - float zdepth; - - if(1) - { - v=&view->Topview->Nodes[ind]; - if(!node_visible(v->Node)) - break; - - select_topview_node(v); - //UPDATE view->Topview data from cgraph - if (v->update_required) - update_topview_node_from_cgraph(v); - if( ((custom_object_data*)AGDATA(v->Node))->Selected==1) - { - glColor4f(view->selectedNodeColor.R,view->selectedNodeColor.G,view->selectedNodeColor.B,view->selectedNodeColor.A); - ddx=dx;ddy=dy; - } - else //get the color from node - { - glColor4f(v->Color.R,v->Color.G,v->Color.B,v->node_alpha); - // glColor4f(1,0,0,v->node_alpha); - // glColor4f (log((double)v->degree+0.5),v->Color.G,v->Color.B,); - ddx=0;ddy=0; - } - - if (v->distorted_x!=v->x) - zdepth=(float)Z_FORWARD_PLANE; - else - zdepth=(float)Z_BACK_PLANE; - if(view->zoom < NODE_CIRCLE_LIMIT) - glVertex3f(v->distorted_x-ddx,v->distorted_y-ddy,zdepth); - else - drawCircle(v->distorted_x-ddx,v->distorted_y-ddy,v->node_alpha*v->zoom_factor,zdepth); - } - } - } - if(view->zoom< NODE_CIRCLE_LIMIT) - glEnd(); + draw_topview_label(v, 1); - } - //draw edges -// glLineWidth(5/view->zoom*-1); - glBegin(GL_LINES); - set_topview_options(); - for (ind=0;ind < view->Topview->Edgecount;ind ++) - { - if( - ((view->Topview->Edges[ind].x1 > view->clipX1) && (view->Topview->Edges[ind].x1 < view->clipX2) &&(view->Topview->Edges[ind].y1 > view->clipY1)&&(view->Topview->Edges[ind].y1 < view->clipY2)) - || - ((view->Topview->Edges[ind].x2 > view->clipX1) && (view->Topview->Edges[ind].x2 < view->clipX2) &&(view->Topview->Edges[ind].y2 > view->clipY1)&&(view->Topview->Edges[ind].y2 < view->clipY2)) - - ) - { - float zdepth1,zdepth2; - e=&view->Topview->Edges[ind]; - select_topview_edge(e); - if( ((custom_object_data*)AGDATA(e->Node1->Node))->Selected==1) //tail is selected - { ddx=dx;ddy=dy;} - else - { ddx=0;ddy=0;} - if( ((custom_object_data*)AGDATA(e->Node2->Node))->Selected==1) //head - { dddx=dx;dddy=dy;} - else - { dddx=0;dddy=0;} - - //zdepth - if (e->Node1->distorted_x!=e->Node1->x) - zdepth1=(float)Z_FORWARD_PLANE; - else - zdepth1=(float)Z_BACK_PLANE; - if (e->Node2->distorted_x!=e->Node2->x) - zdepth2=(float)Z_FORWARD_PLANE; - else - zdepth2=(float)Z_BACK_PLANE; - - - if(get_color_from_edge(e)) - { - glVertex3f(e->Node1->distorted_x-ddx,e->Node1->distorted_y-ddy,zdepth1); - glVertex3f(e->Node2->distorted_x-dddx,e->Node2->distorted_y-dddy,zdepth2); - } + for (ind = 0; ind < view->Topview->Nodecount; ind++) { + + if ((view->Topview->Nodes[ind].x > view->clipX1) + && (view->Topview->Nodes[ind].x < view->clipX2) + && (view->Topview->Nodes[ind].y > view->clipY1) + && (view->Topview->Nodes[ind].y < view->clipY2)) { + float zdepth; + + if (1) { + v = &view->Topview->Nodes[ind]; + if (!node_visible(v->Node)) + break; + + select_topview_node(v); + //UPDATE view->Topview data from cgraph + if (v->update_required) + update_topview_node_from_cgraph(v); + if (((custom_object_data *) AGDATA(v->Node))-> + Selected == 1) { + glColor4f(view->selectedNodeColor.R, + view->selectedNodeColor.G, + view->selectedNodeColor.B, + view->selectedNodeColor.A); + ddx = dx; + ddy = dy; + } else //get the color from node + { + glColor4f(v->Color.R, v->Color.G, v->Color.B, + v->node_alpha); + // glColor4f(1,0,0,v->node_alpha); + // glColor4f (log((double)v->degree+0.5),v->Color.G,v->Color.B,); + ddx = 0; + ddy = 0; + } + + if (v->distorted_x != v->x) + zdepth = (float) Z_FORWARD_PLANE; + else + zdepth = (float) Z_BACK_PLANE; + if (view->zoom < NODE_CIRCLE_LIMIT) + glVertex3f(v->distorted_x - ddx, + v->distorted_y - ddy, zdepth); + else + drawCircle(v->distorted_x - ddx, + v->distorted_y - ddy, + v->node_alpha * v->zoom_factor, zdepth); } + } } - glEnd(); - if((view->Selection.Active>0) && (!view->SignalBlock)) - { - view->Selection.Active=0; - drawTopViewGraph(g); - view->SignalBlock=1; - glexpose(); - view->SignalBlock=0; + if (view->zoom < NODE_CIRCLE_LIMIT) + glEnd(); + + + } + //draw edges +// glLineWidth(5/view->zoom*-1); + glBegin(GL_LINES); + set_topview_options(); + for (ind = 0; ind < view->Topview->Edgecount; ind++) { + if (((view->Topview->Edges[ind].x1 > view->clipX1) + && (view->Topview->Edges[ind].x1 < view->clipX2) + && (view->Topview->Edges[ind].y1 > view->clipY1) + && (view->Topview->Edges[ind].y1 < view->clipY2)) + || ((view->Topview->Edges[ind].x2 > view->clipX1) + && (view->Topview->Edges[ind].x2 < view->clipX2) + && (view->Topview->Edges[ind].y2 > view->clipY1) + && (view->Topview->Edges[ind].y2 < view->clipY2)) + + ) { + float zdepth1, zdepth2; + e = &view->Topview->Edges[ind]; + select_topview_edge(e); + if (((custom_object_data *) AGDATA(e->Node1->Node))->Selected == 1) //tail is selected + { + ddx = dx; + ddy = dy; + } else { + ddx = 0; + ddy = 0; + } + if (((custom_object_data *) AGDATA(e->Node2->Node))->Selected == 1) //head + { + dddx = dx; + dddy = dy; + } else { + dddx = 0; + dddy = 0; + } + + //zdepth + if (e->Node1->distorted_x != e->Node1->x) + zdepth1 = (float) Z_FORWARD_PLANE; + else + zdepth1 = (float) Z_BACK_PLANE; + if (e->Node2->distorted_x != e->Node2->x) + zdepth2 = (float) Z_FORWARD_PLANE; + else + zdepth2 = (float) Z_BACK_PLANE; + + + if (get_color_from_edge(e)) { + glVertex3f(e->Node1->distorted_x - ddx, + e->Node1->distorted_y - ddy, zdepth1); + glVertex3f(e->Node2->distorted_x - dddx, + e->Node2->distorted_y - dddy, zdepth2); + } } + } + glEnd(); + if ((view->Selection.Active > 0) && (!view->SignalBlock)) { + view->Selection.Active = 0; + drawTopViewGraph(g); + view->SignalBlock = 1; + glexpose(); + view->SignalBlock = 0; + } } -int select_topview_node(topview_node *n) +int select_topview_node(topview_node * n) { - if(!view->Selection.Active) - return 0; - if(is_point_in_rectangle(n->x,n->y,view->Selection.X,view->Selection.Y,view->Selection.W,view->Selection.H)) - { - - switch (view->Selection.Type) - { - case 0: - - if ( ((custom_object_data*)AGDATA(n->Node))->Selected==0) - { - ((custom_object_data*)AGDATA(n->Node))->Selected=1; - select_object (view->g[view->activeGraph],n->Node); - } - else - { - ((custom_object_data*)AGDATA(n->Node))->Selected=1; - deselect_object (view->g[view->activeGraph],n->Node); - } - break; - - case 1: - case 2: - if(view->Selection.Anti==0) - { - select_object (view->g[view->activeGraph],n->Node); - view->Selection.AlreadySelected=1; - } - else - { - deselect_object (view->g[view->activeGraph],n->Node); - view->Selection.AlreadySelected=1; - } - break; + if (!view->Selection.Active) + return 0; + if (is_point_in_rectangle + (n->x, n->y, view->Selection.X, view->Selection.Y, + view->Selection.W, view->Selection.H)) { + + switch (view->Selection.Type) { + case 0: + + if (((custom_object_data *) AGDATA(n->Node))->Selected == 0) { + ((custom_object_data *) AGDATA(n->Node))->Selected = 1; + select_object(view->g[view->activeGraph], n->Node); + } else { + ((custom_object_data *) AGDATA(n->Node))->Selected = 1; + deselect_object(view->g[view->activeGraph], n->Node); + } + break; + + case 1: + case 2: + if (view->Selection.Anti == 0) { + select_object(view->g[view->activeGraph], n->Node); + view->Selection.AlreadySelected = 1; + } else { + deselect_object(view->g[view->activeGraph], n->Node); + view->Selection.AlreadySelected = 1; + } + break; - } } - return 1; + } + return 1; } -int select_topview_edge(topview_edge *e) + +int select_topview_edge(topview_edge * e) { - int r=0; - if(!view->Selection.Active) - return 0; - r=(lineintersects(e->x1,e->y1,e->x2,e->y2)); - if(r >= 0) - { - - switch (view->Selection.Type) - { - case 0: - if ( ((custom_object_data*)AGDATA(e->Edge))->Selected==0) - { - ((custom_object_data*)AGDATA(e->Edge))->Selected=1; - select_object (view->g[view->activeGraph],e->Edge); - } - else - { - ((custom_object_data*)AGDATA(e->Edge))->Selected=1; - deselect_object (view->g[view->activeGraph],e->Edge); - } - break; + int r = 0; + if (!view->Selection.Active) + return 0; + r = (lineintersects(e->x1, e->y1, e->x2, e->y2)); + if (r >= 0) { + + switch (view->Selection.Type) { + case 0: + if (((custom_object_data *) AGDATA(e->Edge))->Selected == 0) { + ((custom_object_data *) AGDATA(e->Edge))->Selected = 1; + select_object(view->g[view->activeGraph], e->Edge); + } else { + ((custom_object_data *) AGDATA(e->Edge))->Selected = 1; + deselect_object(view->g[view->activeGraph], e->Edge); + } + break; - } } - return 1; + } + return 1; } -int update_topview_node_from_cgraph(topview_node* Node) + +int update_topview_node_from_cgraph(topview_node * Node) { - //for now just color, maybe i need more later - int i=0; - char* buf; - buf=agget(Node->Node,"color"); - if(buf) - Node->Color=GetRGBColor(buf); + //for now just color, maybe i need more later + char *buf; + buf = agget(Node->Node, "color"); + if (buf) + Node->Color = GetRGBColor(buf); /* else { randomize_color(&(Node->Color),2); @@ -412,424 +415,446 @@ int update_topview_node_from_cgraph(topview_node* Node) Node->Color.B=view->penColor.B; Node->Color.A=view->penColor.A; }*/ - Node->update_required=0; - return 1; + Node->update_required = 0; + return 1; } -int update_topview_edge_from_cgraph(topview_edge* Edge) + +int update_topview_edge_from_cgraph(topview_edge * Edge) { - //for now just color , maybe i need more later - int i=0; - char buf[124]; - strcpy(buf, (agget(Edge->Edge,"color")==NULL) ? "black" : agget(Edge->Edge,"color")); - if(strlen(buf) > 0) - Edge->Color=GetRGBColor(buf); - else - { - Edge->Color.R=view->penColor.R; - Edge->Color.G=view->penColor.G; - Edge->Color.B=view->penColor.B; - Edge->Color.A=view->penColor.A; - } - Edge->update_required=0; - return 1; + //for now just color , maybe i need more later + char buf[124]; + strcpy(buf, + (agget(Edge->Edge, "color") == + NULL) ? "black" : agget(Edge->Edge, "color")); + if (strlen(buf) > 0) + Edge->Color = GetRGBColor(buf); + else { + Edge->Color.R = view->penColor.R; + Edge->Color.G = view->penColor.G; + Edge->Color.B = view->penColor.B; + Edge->Color.A = view->penColor.A; + } + Edge->update_required = 0; + return 1; } -int set_update_required(topview* t) +int set_update_required(topview * t) { - int i=0; - int ilimit; - ilimit= (t->Nodecount > t->Edgecount) ? t->Nodecount : t->Edgecount; + int i = 0; + int ilimit; + ilimit = (t->Nodecount > t->Edgecount) ? t->Nodecount : t->Edgecount; - for (i=0; i < ilimit; i ++) - { - if( t->Nodecount > i) + for (i = 0; i < ilimit; i++) { + if (t->Nodecount > i) - t->Nodes[i].update_required=1; - if( t->Edgecount > i) - t->Edges[i].update_required=1; - } - return 1; + t->Nodes[i].update_required = 1; + if (t->Edgecount > i) + t->Edges[i].update_required = 1; + } + return 1; } -int draw_topview_label(topview_node* v,float zdepth) +int draw_topview_label(topview_node * v, float zdepth) { - float fs=0; - float ddx=0; - float ddy=0; - if(!v->Label) - return 0; - if((view->zoom*-1/v->degree/v->zoom_factor) > 2) - return 0; - if((v->distorted_x > view->clipX1) && (v->distorted_x < view->clipX2) &&(v->distorted_y > view->clipY1)&&(v->distorted_y < view->clipY2)) - { - - fs=(v->degree==1) ?(float)(log((double)v->degree+1)*(double)7):(float)(log((double)v->degree+(double)0.5)*(double)7); - fs=fs*v->zoom_factor; + float fs = 0; + float ddx = 0; + float ddy = 0; + if (!v->Label) + return 0; + if ((view->zoom * -1 / v->degree / v->zoom_factor) > 2) + return 0; + if ((v->distorted_x > view->clipX1) && (v->distorted_x < view->clipX2) + && (v->distorted_y > view->clipY1) + && (v->distorted_y < view->clipY2)) { + + fs = (v->degree == + 1) ? (float) (log((double) v->degree + + 1) * + (double) 7) : (float) (log((double) v->degree + + (double) 0.5) * + (double) 7); + fs = fs * v->zoom_factor; /* if(fs > 12) fs=24;*/ - if( ((custom_object_data*)AGDATA(v->Node))->Selected==1) - { - ddx=dx;ddy=dy; - } + if (((custom_object_data *) AGDATA(v->Node))->Selected == 1) { + ddx = dx; + ddy = dy; + } - fontSize ((int)fs); - if ((log((float)v->degree)*-0.6*view->zoom) >0) - fontColorA ((float)log((double)v->degree+(double)1),view->penColor.G,view->penColor.B,view->penColor.A/(float)log((double)v->degree)*(float)-0.6*(float)view->zoom); - else - fontColorA ((float)log((double)v->degree+(double)1),view->penColor.G,view->penColor.B,1); + fontSize((int) fs); + if ((log((float) v->degree) * -0.6 * view->zoom) > 0) + fontColorA((float) log((double) v->degree + (double) 1), + view->penColor.G, view->penColor.B, + view->penColor.A / (float) log((double) v->degree) * + (float) -0.6 * (float) view->zoom); + else + fontColorA((float) log((double) v->degree + (double) 1), + view->penColor.G, view->penColor.B, 1); - fontDrawString ((int)(v->distorted_x-ddx),(int)(v->distorted_y-ddy),v->Label,(int)(fs*5)); + fontDrawString((int) (v->distorted_x - ddx), + (int) (v->distorted_y - ddy), v->Label, + (int) (fs * 5)); - return 1; - } - else - return 0; + return 1; + } else + return 0; } void set_topview_options() { - - if ((view->mouse.mouse_mode==10) && (view->mouse.mouse_down==1)) //selected, if there is move move it, experimental - { - dx=view->GLx-view->GLx2; - dy=view->GLy-view->GLy2; - } - else - { - dx=0; - dy=0; - } + + if ((view->mouse.mouse_mode == 10) && (view->mouse.mouse_down == 1)) //selected, if there is move move it, experimental + { + dx = view->GLx - view->GLx2; + dy = view->GLy - view->GLy2; + } else { + dx = 0; + dy = 0; + } } + /*refreshes limits of the graph call it when node locations are changed*/ -void set_boundries(topview* t) +void set_boundries(topview * t) { - int ind=0; - float left,right,top,bottom; - left=t->Nodes[0].distorted_x; - right=t->Nodes[0].distorted_x; - top=t->Nodes[0].distorted_y; - bottom=t->Nodes[0].distorted_y; - for (ind=0;ind < t->Nodecount;ind ++) - { - if(left > t->Nodes[ind].distorted_x) - left=t->Nodes[ind].distorted_x; - if(right < t->Nodes[ind].distorted_x) - right=t->Nodes[ind].distorted_x; - if(bottom > t->Nodes[ind].distorted_y) - bottom=t->Nodes[ind].distorted_y; - if(top < t->Nodes[ind].distorted_y) - top=t->Nodes[ind].distorted_y; - } - view->bdxLeft=left; - view->bdyTop=top; - view->bdxRight=right; - view->bdyBottom=bottom; - view->bdzTop=0; - view->bdzBottom=0; + int ind = 0; + float left, right, top, bottom; + left = t->Nodes[0].distorted_x; + right = t->Nodes[0].distorted_x; + top = t->Nodes[0].distorted_y; + bottom = t->Nodes[0].distorted_y; + for (ind = 0; ind < t->Nodecount; ind++) { + if (left > t->Nodes[ind].distorted_x) + left = t->Nodes[ind].distorted_x; + if (right < t->Nodes[ind].distorted_x) + right = t->Nodes[ind].distorted_x; + if (bottom > t->Nodes[ind].distorted_y) + bottom = t->Nodes[ind].distorted_y; + if (top < t->Nodes[ind].distorted_y) + top = t->Nodes[ind].distorted_y; + } + view->bdxLeft = left; + view->bdyTop = top; + view->bdxRight = right; + view->bdyBottom = bottom; + view->bdzTop = 0; + view->bdzBottom = 0; } -int get_color_from_edge(topview_edge *e) +int get_color_from_edge(topview_edge * e) { - RGBColor c; - GdkColor color; - char* color_string; - int return_value=0; - float Alpha=0; - GtkHScale* AlphaScale=(GtkHScale*)glade_xml_get_widget(xml, "frmHostAlphaScale"); - Alpha=(float)gtk_range_get_value((GtkRange*) AlphaScale); - - //check visibility; - if( (node_visible(e->Node1->Node)) - && - (node_visible(e->Node2->Node)) ) - return_value=1; - - - if( ( ((custom_object_data*)AGDATA(e->Node1->Node))->Selected==1) - && - ( ((custom_object_data*)AGDATA(e->Node2->Node))->Selected==1) - ) - { -// glColor4f(0,0,1,1); - glColor4f(view->selectedNodeColor.R,view->selectedNodeColor.G,view->selectedNodeColor.B,view->selectedNodeColor.A); - return return_value; - } - if( ( ((custom_object_data*)AGDATA(e->Node1->Node))->Highlighted==1) - && - ( ((custom_object_data*)AGDATA(e->Node2->Node))->Highlighted==1) - ) - { - glColor4f(0,0,1,1); + RGBColor c; + GdkColor color; + char *color_string; + int return_value = 0; + float Alpha = 0; + GtkHScale *AlphaScale = + (GtkHScale *) glade_xml_get_widget(xml, "frmHostAlphaScale"); + Alpha = (float) gtk_range_get_value((GtkRange *) AlphaScale); + + //check visibility; + if ((node_visible(e->Node1->Node)) + && (node_visible(e->Node2->Node))) + return_value = 1; + + + if ((((custom_object_data *) AGDATA(e->Node1->Node))->Selected == 1) + && (((custom_object_data *) AGDATA(e->Node2->Node))->Selected == 1) + ) { +// glColor4f(0,0,1,1); + glColor4f(view->selectedNodeColor.R, view->selectedNodeColor.G, + view->selectedNodeColor.B, view->selectedNodeColor.A); + return return_value; + } + if ((((custom_object_data *) AGDATA(e->Node1->Node))->Highlighted == 1) + && + (((custom_object_data *) AGDATA(e->Node2->Node))->Highlighted == 1) + ) { + glColor4f(0, 0, 1, 1); + return return_value; + } + color_string = agget(e->Node1->Node, "fillcolor"); + //group colors + if ((e->Node1->GroupIndex >= 0) || (e->Node2->GroupIndex >= 0)) { + if (view->Topview->TopviewData->hostactive[e->Node1->GroupIndex] == + 1) { + gtk_color_button_get_color(view->Topview->TopviewData-> + gtkhostcolor[e->Node1->GroupIndex], + &color); + glColor4f((GLfloat) color.red / (GLfloat) 65535.0, + (GLfloat) color.green / (GLfloat) 65535.0, + (GLfloat) color.blue / (GLfloat) 65535.0, + (GLfloat) 1); + return return_value; + } else { + if (view->Topview->TopviewData-> + hostactive[e->Node2->GroupIndex] == 1) { + gtk_color_button_get_color(view->Topview->TopviewData-> + gtkhostcolor[e->Node2-> + GroupIndex], + &color); + glColor4f((GLfloat) color.red / (GLfloat) 65535.0, + (GLfloat) color.green / (GLfloat) 65535.0, + (GLfloat) color.blue / (GLfloat) 65535.0, + (GLfloat) 1); return return_value; + } } - color_string=agget(e->Node1->Node,"fillcolor"); - //group colors - if((e->Node1->GroupIndex >=0) || (e->Node2->GroupIndex >=0)) - { - if (view->Topview->TopviewData->hostactive[e->Node1->GroupIndex]==1) - { - gtk_color_button_get_color(view->Topview->TopviewData->gtkhostcolor[e->Node1->GroupIndex],&color); - glColor4f((GLfloat)color.red/(GLfloat)65535.0,(GLfloat)color.green/(GLfloat)65535.0,(GLfloat)color.blue/(GLfloat)65535.0,(GLfloat)1); - return return_value; - }else - { - if (view->Topview->TopviewData->hostactive[e->Node2->GroupIndex]==1) - { - gtk_color_button_get_color(view->Topview->TopviewData->gtkhostcolor[e->Node2->GroupIndex],&color); - glColor4f((GLfloat)color.red/(GLfloat)65535.0,(GLfloat)color.green/(GLfloat)65535.0,(GLfloat)color.blue/(GLfloat)65535.0,(GLfloat)1); - return return_value; - } - } - } + } - if(color_string) - { - c=GetRGBColor(color_string); - glColor4f(c.R,c.G,c.B,Alpha); - } - else - glColor4f(e->Node1->Color.R,e->Node1->Color.G,e->Node1->Color.B,Alpha); - return return_value; + if (color_string) { + c = GetRGBColor(color_string); + glColor4f(c.R, c.G, c.B, Alpha); + } else + glColor4f(e->Node1->Color.R, e->Node1->Color.G, e->Node1->Color.B, + Alpha); + return return_value; } -int node_visible(Agnode_t* n) + +int node_visible(Agnode_t * n) { - return ((custom_object_data*)AGDATA(n))->Visible; + return ((custom_object_data *) AGDATA(n))->Visible; } + int move_TVnodes() { - topview_node *v; - int ind=0; - for (ind=0;ind < view->Topview->Nodecount;ind ++) - { - v=&view->Topview->Nodes[ind]; - if( ((custom_object_data*)AGDATA(v->Node))->Selected==1) - { - v->x=v->x-dx; - v->y=v->y-dy; - } + topview_node *v; + int ind = 0; + for (ind = 0; ind < view->Topview->Nodecount; ind++) { + v = &view->Topview->Nodes[ind]; + if (((custom_object_data *) AGDATA(v->Node))->Selected == 1) { + v->x = v->x - dx; + v->y = v->y - dy; } - return 1; + } + return 1; } -/*int load_host_buttons(Agraph_t *g,glCompSet* s) +#ifdef UNUSED +int load_host_buttons(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"]; - - hostregex=malloc (sizeof(char**)*btncount); - gtkhostbtn=malloc(sizeof(GtkButton*)*btncount); - gtkhostcolor=malloc(sizeof(GtkColorButton*)*btncount); - 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)); - 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); - - gtkhostbtn[i]=gtk_button_new_with_label(agget(g,hostbtncaption )); - g_signal_connect ((gpointer) 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)); - - gtkhostcolor[i]=gtk_color_button_new_with_color(&color); - - gtk_color_button_set_alpha(gtkhostbtn[i],65535*atof(agget(g,hostbtncolorA))); - - - gtk_layout_put (layout,gtkhostbtn[i],X,Y); - gtk_widget_set_size_request(gtkhostbtn[i],200,35); - - gtk_layout_put (layout,gtkhostcolor[i],X+225,Y); - gtk_widget_set_size_request(gtkhostcolor[i],40,35); - - gtk_widget_show(gtkhostbtn[i]); - gtk_widget_show(gtkhostcolor[i]); - Y=Y+40; - hostactive[i]=0; - } - p->height=15+(btncount+1)*36; -/* for (i=0;i < btncount ; i++) - { - prepare_nodes_for_groups(i); - } -}*/ + 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"]; + + hostregex = malloc(sizeof(char **) * btncount); + gtkhostbtn = malloc(sizeof(GtkButton *) * btncount); + gtkhostcolor = malloc(sizeof(GtkColorButton *) * btncount); + 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)); + 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); + + gtkhostbtn[i] = + gtk_button_new_with_label(agget(g, hostbtncaption)); + g_signal_connect((gpointer) 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)); + + gtkhostcolor[i] = gtk_color_button_new_with_color(&color); + + gtk_color_button_set_alpha(gtkhostbtn[i], + 65535 * atof(agget(g, hostbtncolorA))); + + + gtk_layout_put(layout, gtkhostbtn[i], X, Y); + gtk_widget_set_size_request(gtkhostbtn[i], 200, 35); + + gtk_layout_put(layout, gtkhostcolor[i], X + 225, Y); + gtk_widget_set_size_request(gtkhostcolor[i], 40, 35); + + gtk_widget_show(gtkhostbtn[i]); + gtk_widget_show(gtkhostcolor[i]); + Y = Y + 40; + hostactive[i] = 0; + } + p->height = 15 + (btncount + 1) * 36; + for (i = 0; i < btncount; i++) { + prepare_nodes_for_groups(i); + } +} +#endif -int validate_group_node(tv_node* TV_Node,char* regex_string) +int validate_group_node(tv_node * TV_Node, char *regex_string) { - btree_node* n=0; -// n=tree_from_filter_string("([IP=\"^10.*\",min=\"0\",max=\"0\"])"); - int valid=0; - n=tree_from_filter_string(regex_string); - valid=evaluate_expresions (TV_Node,n); -// delete_node(n); - return valid; + btree_node *n = 0; +// n=tree_from_filter_string("([IP=\"^10.*\",min=\"0\",max=\"0\"])"); + int valid = 0; + n = tree_from_filter_string(regex_string); + valid = evaluate_expresions(TV_Node, n); +// delete_node(n); + return valid; } -void -on_host_alpha_change (GtkWidget *widget,gpointer user_data) +void on_host_alpha_change(GtkWidget * widget, gpointer user_data) { - glexpose(); + glexpose(); } -void local_zoom(topview* t) +void local_zoom(topview * t) { - int i; - double delx,dely,w,h,tempx,tempy; - w=view->mg.width; - h=view->mg.height; - for (i=1; i< t->Nodecount; i++) - { - if(is_point_in_rectangle(t->Nodes[i].x,t->Nodes[i].y,view->mg.x-view->mg.GLwidth,view->mg.y-view->mg.GLheight, - view->mg.GLwidth*2,view->mg.GLheight*2)) - { - delx=t->Nodes[i].x-view->mg.x; - dely=t->Nodes[i].y-view->mg.y; - tempx=view->mg.x+delx*view->mg.kts; - tempy=view->mg.y+dely*view->mg.kts; - if(is_point_in_rectangle((GLfloat)tempx,(GLfloat)tempy,view->mg.x-view->mg.GLwidth,view->mg.y-view->mg.GLheight, - view->mg.GLwidth*(GLfloat)2,view->mg.GLheight*(GLfloat)2)) - { - t->Nodes[i].distorted_x=view->mg.x+(GLfloat)delx*view->mg.kts; - t->Nodes[i].distorted_y=view->mg.y+(GLfloat)dely*view->mg.kts; - t->Nodes[i].zoom_factor=view->mg.kts; - } - else//get intersections and move nodes to edges of magnifier box - { - t->Nodes[i].distorted_x =t->Nodes[i].x; - t->Nodes[i].distorted_y =t->Nodes[i].y; - t->Nodes[i].zoom_factor=1; - } - - } - else - { - t->Nodes[i].distorted_x =t->Nodes[i].x; - t->Nodes[i].distorted_y =t->Nodes[i].y; - t->Nodes[i].zoom_factor=1; - } + int i; + double delx, dely, w, h, tempx, tempy; + w = view->mg.width; + h = view->mg.height; + for (i = 1; i < t->Nodecount; i++) { + if (is_point_in_rectangle + (t->Nodes[i].x, t->Nodes[i].y, view->mg.x - view->mg.GLwidth, + view->mg.y - view->mg.GLheight, view->mg.GLwidth * 2, + view->mg.GLheight * 2)) { + delx = t->Nodes[i].x - view->mg.x; + dely = t->Nodes[i].y - view->mg.y; + tempx = view->mg.x + delx * view->mg.kts; + tempy = view->mg.y + dely * view->mg.kts; + if (is_point_in_rectangle + ((GLfloat) tempx, (GLfloat) tempy, + view->mg.x - view->mg.GLwidth, + view->mg.y - view->mg.GLheight, + view->mg.GLwidth * (GLfloat) 2, + view->mg.GLheight * (GLfloat) 2)) { + t->Nodes[i].distorted_x = + view->mg.x + (GLfloat) delx *view->mg.kts; + t->Nodes[i].distorted_y = + view->mg.y + (GLfloat) dely *view->mg.kts; + t->Nodes[i].zoom_factor = view->mg.kts; + } else //get intersections and move nodes to edges of magnifier box + { + t->Nodes[i].distorted_x = t->Nodes[i].x; + t->Nodes[i].distorted_y = t->Nodes[i].y; + t->Nodes[i].zoom_factor = 1; + } + + } else { + t->Nodes[i].distorted_x = t->Nodes[i].x; + t->Nodes[i].distorted_y = t->Nodes[i].y; + t->Nodes[i].zoom_factor = 1; } + } } -void fisheye_polar(double x_focus, double y_focus,topview* t) +void fisheye_polar(double x_focus, double y_focus, topview * t) { - int i; - double distance, distorted_distance, ratio,range; - - range=0; - for (i=1; i< t->Nodecount; i++) - { - if(point_within_ellips_with_coords((float)x_focus,(float)y_focus,(float)view->fmg.R,(float)view->fmg.R,t->Nodes[i].x,t->Nodes[i].y)) - { - range = MAX(range,dist(t->Nodes[i].x,t->Nodes[i].y, x_focus, y_focus)); - } + int i; + double distance, distorted_distance, ratio, range; + + range = 0; + for (i = 1; i < t->Nodecount; i++) { + if (point_within_ellips_with_coords + ((float) x_focus, (float) y_focus, (float) view->fmg.R, + (float) view->fmg.R, t->Nodes[i].x, t->Nodes[i].y)) { + range = + MAX(range, + dist(t->Nodes[i].x, t->Nodes[i].y, x_focus, y_focus)); } - - for (i=1; i< t->Nodecount; i++) - { - - if(point_within_ellips_with_coords((float)x_focus,(float)y_focus,(float)view->fmg.R,(float)view->fmg.R,t->Nodes[i].x,t->Nodes[i].y)) - { - distance = dist(t->Nodes[i].x, t->Nodes[i].y, x_focus, y_focus); - distorted_distance = G(distance/range)*range; - if (distance!=0) { - ratio = distorted_distance/distance; - } - else { - ratio = 0; - } - t->Nodes[i].distorted_x = (float)x_focus +(t->Nodes[i].x-(float)x_focus)*(float)ratio; - t->Nodes[i].distorted_y = (float)y_focus + (t->Nodes[i].y-(float)y_focus)*(float)ratio; - t->Nodes[i].zoom_factor=(float)1*(float)distorted_distance/(float)distance; - } - else - { - t->Nodes[i].distorted_x =t->Nodes[i].x; - t->Nodes[i].distorted_y =t->Nodes[i].y; - t->Nodes[i].zoom_factor=1; - } - } + } + + for (i = 1; i < t->Nodecount; i++) { + + if (point_within_ellips_with_coords + ((float) x_focus, (float) y_focus, (float) view->fmg.R, + (float) view->fmg.R, t->Nodes[i].x, t->Nodes[i].y)) { + distance = + dist(t->Nodes[i].x, t->Nodes[i].y, x_focus, y_focus); + distorted_distance = G(distance / range) * range; + if (distance != 0) { + ratio = distorted_distance / distance; + } else { + ratio = 0; + } + t->Nodes[i].distorted_x = + (float) x_focus + (t->Nodes[i].x - + (float) x_focus) * (float) ratio; + t->Nodes[i].distorted_y = + (float) y_focus + (t->Nodes[i].y - + (float) y_focus) * (float) ratio; + t->Nodes[i].zoom_factor = + (float) 1 *(float) distorted_distance / (float) distance; + } else { + t->Nodes[i].distorted_x = t->Nodes[i].x; + t->Nodes[i].distorted_y = t->Nodes[i].y; + t->Nodes[i].zoom_factor = 1; + } + } } -void originate_distorded_coordinates(topview* t) +void originate_distorded_coordinates(topview * t) { - //sets original coordinates values to distorded coords. this happens when lieft mouse click is released in geometrical fisyehey mode - int i; - for (i=1; i< t->Nodecount; i++) - { - t->Nodes[i].distorted_x =t->Nodes[i].x; - t->Nodes[i].distorted_y =t->Nodes[i].y; - t->Nodes[i].zoom_factor=1; - } + //sets original coordinates values to distorded coords. this happens when lieft mouse click is released in geometrical fisyehey mode + int i; + for (i = 1; i < t->Nodecount; i++) { + t->Nodes[i].distorted_x = t->Nodes[i].x; + t->Nodes[i].distorted_y = t->Nodes[i].y; + t->Nodes[i].zoom_factor = 1; + } } @@ -838,94 +863,92 @@ void originate_distorded_coordinates(topview* t) double dist(double x1, double y1, double x2, double y2) { - return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); + return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); } double G(double x) { - // distortion function for fisheye display - return (view->fmg.fisheye_distortion_fac+1)*x/(view->fmg.fisheye_distortion_fac*x+1); + // distortion function for fisheye display + return (view->fmg.fisheye_distortion_fac + + 1) * x / (view->fmg.fisheye_distortion_fac * x + 1); } void test_callback() { } -void menu_click_control(void* p) +void menu_click_control(void *p) { - glCompSet* s; - int ind=0; - s=((glCompButton*)p)->parentset; - for (ind=0;ind < s->panelcount;ind++) + glCompSet *s; + int ind = 0; + s = ((glCompButton *) p)->parentset; + for (ind = 0; ind < s->panelcount; ind++) { + if (s->panels[ind]->data > 0) + glCompPanelHide(s->panels[ind]); //hide all panels + if (s->panels[ind]->data == 1) //control panel { - if (s->panels[ind]->data > 0) - glCompPanelHide(s->panels[ind]);//hide all panels - if (s->panels[ind]->data==1) //control panel - { - glCompPanelShow(s->panels[ind]); - } + glCompPanelShow(s->panels[ind]); } + } } -void menu_click_data(void* p) +void menu_click_data(void *p) { - glCompSet* s; - int ind=0; - s=((glCompButton*)p)->parentset; - for (ind=0;ind < s->panelcount;ind++) + glCompSet *s; + int ind = 0; + s = ((glCompButton *) p)->parentset; + for (ind = 0; ind < s->panelcount; ind++) { + if (s->panels[ind]->data > 0) + glCompPanelHide(s->panels[ind]); //hide all panels + if (s->panels[ind]->data == 2) //data panel { - if (s->panels[ind]->data > 0) - glCompPanelHide(s->panels[ind]);//hide all panels - if (s->panels[ind]->data==2) //data panel - { - glCompPanelShow(s->panels[ind]); - } + glCompPanelShow(s->panels[ind]); } + } } -void menu_click_hide(void* p) +void menu_click_hide(void *p) { - glCompSet* s; - int ind=0; - s=((glCompButton*)p)->parentset; - for (ind=0;ind < s->panelcount;ind++) - { - if (s->panels[ind]->data > 0) - glCompPanelHide(s->panels[ind]);//hide all panels - } + glCompSet *s; + int ind = 0; + s = ((glCompButton *) p)->parentset; + for (ind = 0; ind < s->panelcount; ind++) { + if (s->panels[ind]->data > 0) + glCompPanelHide(s->panels[ind]); //hide all panels + } } -void menu_click_pan(void* p) +void menu_click_pan(void *p) { - view->mouse.mouse_mode=MM_PAN; + view->mouse.mouse_mode = MM_PAN; } -void menu_click_zoom(void* p) +void menu_click_zoom(void *p) { - view->mouse.mouse_mode=MM_ZOOM; + view->mouse.mouse_mode = MM_ZOOM; } -void menu_click_fisheye_magnifier(void* p) +void menu_click_fisheye_magnifier(void *p) { - view->mouse.mouse_mode=MM_FISHEYE_MAGNIFIER; + view->mouse.mouse_mode = MM_FISHEYE_MAGNIFIER; } -void menu_click_zoom_minus(void* p) +void menu_click_zoom_minus(void *p) { - if((view->zoom - ZOOM_STEP) > MIN_ZOOM) - view->zoom=view->zoom-ZOOM_STEP; - else - view->zoom=MIN_ZOOM; + if ((view->zoom - ZOOM_STEP) > MIN_ZOOM) + view->zoom = view->zoom - ZOOM_STEP; + else + view->zoom = MIN_ZOOM; } -void menu_click_zoom_plus(void* p) +void menu_click_zoom_plus(void *p) { - if((view->zoom + ZOOM_STEP) < MAX_ZOOM) - view->zoom=view->zoom+ZOOM_STEP; - else - view->zoom=(float)MAX_ZOOM; + if ((view->zoom + ZOOM_STEP) < MAX_ZOOM) + view->zoom = view->zoom + ZOOM_STEP; + else + view->zoom = (float) MAX_ZOOM; } -void menu_click_alpha_plus(void* p) +void menu_click_alpha_plus(void *p) { - if((view->zoom + ZOOM_STEP) < MAX_ZOOM) - view->zoom=view->zoom+ZOOM_STEP; - else - view->zoom=(float)MAX_ZOOM; + if ((view->zoom + ZOOM_STEP) < MAX_ZOOM) + view->zoom = view->zoom + ZOOM_STEP; + else + view->zoom = (float) MAX_ZOOM; } @@ -938,124 +961,129 @@ void menu_click_alpha_plus(void* p) #endif -glCompSet* glcreate_gl_topview_menu() +glCompSet *glcreate_gl_topview_menu() { - glCompSet* s=malloc(sizeof(glCompSet)); - glCompPanel* p; - glCompButton* b; - glCompLabel* l; - s->panelcount=0; - s->panels='\0'; - s->buttoncount=0; - s->buttons='\0'; - s->labels='\0'; - s->labelcount=0; - /*panel data - 0 :small bottom - 1 :control - 2 :data - - - */ - - //small panel left bottom - p=glCompPanelNew(25,25,245,40); - p->data=0; - glCompSetAddPanel(s,p); - - b=glCompButtonNew(5,7,75,25,"CONTROL",'\0',0,0); - b->panel=p; - b->groupid=1; - b->customptr=view; - glCompSetAddButton(s,b); - b->callbackfunc=menu_click_control; - - b=glCompButtonNew(85,7,75,25,"DATA",'\0',0,0); - b->panel=p; - b->customptr=view; - b->groupid=1; - b->callbackfunc=menu_click_data; - glCompSetAddButton(s,b); - - - b=glCompButtonNew(165,7,75,25,"HIDE",'\0',0,0); - b->color.R=1; - b->customptr=view; - b->panel=p; - b->groupid=1; - b->callbackfunc=menu_click_hide; - glCompSetAddButton(s,b); - - //control panel - p=glCompPanelNew(25,75,165,200); - p->data=1; //control panel - glCompSetAddPanel(s,p); - - //view mode normal button - b=glCompButtonNew(5,7,75,25,"NORMAL",'\0',0,0); - b->color.R=0; - b->color.G=1; - b->color.B=(float)0.1; - b->customptr=view; - b->panel=p; - b->groupid=2; - glCompSetAddButton(s,b); - //view mode fisheye button - b=glCompButtonNew(85,7,75,25,"FISHEYE",'\0',0,0); - b->color.R=0; - b->color.G=1; - b->color.B=(float)0.1; - b->customptr=view; - b->panel=p; - b->groupid=2; - glCompSetAddButton(s,b); - //pan button - b=glCompButtonNew(5,120,72,72,"adasasds",SMYRNA_ICON_PAN,72,72); - b->groupid=3; - b->customptr=view; - b->panel=p; - b->callbackfunc=menu_click_pan; - glCompSetAddButton(s,b); - //zoom - b=glCompButtonNew(85,120,72,72,"adasasds",SMYRNA_ICON_ZOOM,72,72); - b->groupid=3; - b->customptr=view; - b->panel=p; - b->callbackfunc=menu_click_zoom; - glCompSetAddButton(s,b); - //zoom + - b=glCompButtonNew(85,82,36,36,"adasasds",SMYRNA_ICON_ZOOMPLUS,36,36); - b->groupid=0; - b->customptr=view; - b->panel=p; - b->callbackfunc=menu_click_zoom_plus; - glCompSetAddButton(s,b); - //zoom - - b=glCompButtonNew(121,82,36,36,"adasasds",SMYRNA_ICON_ZOOMMINUS,36,36); - b->groupid=0; - b->panel=p; - b->customptr=view; - b->callbackfunc=menu_click_zoom_minus; - glCompSetAddButton(s,b); - - b=glCompButtonNew(5,45,72,72,"adasasds",SMYRNA_ICON_FISHEYE,72,72); - b->groupid=3; - b->panel=p; - b->customptr=view; - b->callbackfunc=menu_click_fisheye_magnifier; - glCompSetAddButton(s,b); - //zoom percantage label - l=glCompLabelNew(100,45,24,"100"); - l->panel=p; - l->fontsizefactor=(float)0.4; - glCompSetAddLabel(s,l); - view->Topview->customptr=l; - l=glCompLabelNew(93,65,20,"zoom"); - l->panel=p; - l->fontsizefactor=(float)0.4; - glCompSetAddLabel(s,l); - - glCompPanelHide(p); + glCompSet *s = malloc(sizeof(glCompSet)); + glCompPanel *p; + glCompButton *b; + glCompLabel *l; + s->panelcount = 0; + s->panels = '\0'; + s->buttoncount = 0; + s->buttons = '\0'; + s->labels = '\0'; + s->labelcount = 0; + /*panel data + 0 :small bottom + 1 :control + 2 :data + + + */ + + //small panel left bottom + p = glCompPanelNew(25, 25, 245, 40); + p->data = 0; + glCompSetAddPanel(s, p); + + b = glCompButtonNew(5, 7, 75, 25, "CONTROL", '\0', 0, 0); + b->panel = p; + b->groupid = 1; + b->customptr = view; + glCompSetAddButton(s, b); + b->callbackfunc = menu_click_control; + + b = glCompButtonNew(85, 7, 75, 25, "DATA", '\0', 0, 0); + b->panel = p; + b->customptr = view; + b->groupid = 1; + b->callbackfunc = menu_click_data; + glCompSetAddButton(s, b); + + + b = glCompButtonNew(165, 7, 75, 25, "HIDE", '\0', 0, 0); + b->color.R = 1; + b->customptr = view; + b->panel = p; + b->groupid = 1; + b->callbackfunc = menu_click_hide; + glCompSetAddButton(s, b); + + //control panel + p = glCompPanelNew(25, 75, 165, 200); + p->data = 1; //control panel + glCompSetAddPanel(s, p); + + //view mode normal button + b = glCompButtonNew(5, 7, 75, 25, "NORMAL", '\0', 0, 0); + b->color.R = 0; + b->color.G = 1; + b->color.B = (float) 0.1; + b->customptr = view; + b->panel = p; + b->groupid = 2; + glCompSetAddButton(s, b); + //view mode fisheye button + b = glCompButtonNew(85, 7, 75, 25, "FISHEYE", '\0', 0, 0); + b->color.R = 0; + b->color.G = 1; + b->color.B = (float) 0.1; + b->customptr = view; + b->panel = p; + b->groupid = 2; + glCompSetAddButton(s, b); + //pan button + b = glCompButtonNew(5, 120, 72, 72, "adasasds", SMYRNA_ICON_PAN, 72, + 72); + b->groupid = 3; + b->customptr = view; + b->panel = p; + b->callbackfunc = menu_click_pan; + glCompSetAddButton(s, b); + //zoom + b = glCompButtonNew(85, 120, 72, 72, "adasasds", SMYRNA_ICON_ZOOM, 72, + 72); + b->groupid = 3; + b->customptr = view; + b->panel = p; + b->callbackfunc = menu_click_zoom; + glCompSetAddButton(s, b); + //zoom + + b = glCompButtonNew(85, 82, 36, 36, "adasasds", SMYRNA_ICON_ZOOMPLUS, + 36, 36); + b->groupid = 0; + b->customptr = view; + b->panel = p; + b->callbackfunc = menu_click_zoom_plus; + glCompSetAddButton(s, b); + //zoom - + b = glCompButtonNew(121, 82, 36, 36, "adasasds", SMYRNA_ICON_ZOOMMINUS, + 36, 36); + b->groupid = 0; + b->panel = p; + b->customptr = view; + b->callbackfunc = menu_click_zoom_minus; + glCompSetAddButton(s, b); + + b = glCompButtonNew(5, 45, 72, 72, "adasasds", SMYRNA_ICON_FISHEYE, 72, + 72); + b->groupid = 3; + b->panel = p; + b->customptr = view; + b->callbackfunc = menu_click_fisheye_magnifier; + glCompSetAddButton(s, b); + //zoom percantage label + l = glCompLabelNew(100, 45, 24, "100"); + l->panel = p; + l->fontsizefactor = (float) 0.4; + glCompSetAddLabel(s, l); + view->Topview->customptr = l; + l = glCompLabelNew(93, 65, 20, "zoom"); + l->panel = p; + l->fontsizefactor = (float) 0.4; + glCompSetAddLabel(s, l); + + glCompPanelHide(p); /* //Data Panel p=glCompPanelNew(25,75,165,400); @@ -1080,11 +1108,11 @@ glCompSet* glcreate_gl_topview_menu() glCompSetAddLabel(s,l);*/ - return s; + return s; } -void prepare_topological_fisheye(topview* t) +void prepare_topological_fisheye(topview * t) { /* To use: double* x_coords; // initial x coordinates @@ -1114,45 +1142,48 @@ void prepare_topological_fisheye(topview* t) When done: release (hierarchy); */ - double* x_coords=0; // initial x coordinates - double* y_coords=0; // initial y coordinates - focus_t* fs; - int ne; - int ind; - int closest_fine_node; - int cur_level=0; - hierparms_t parms; - vtx_data* graph = makeGraph (t, &ne); - t->h = makeHier(t->Nodecount, ne, graph, x_coords, y_coords); - freeGraph (graph); - fs = initFocus (t->Nodecount); // create focus set - - find_closest_active_node(t->h, 50.0, 50.0, &closest_fine_node); - fs->num_foci = 1; - fs->foci_nodes[0] = closest_fine_node; - fs->x_foci[0] = t->h->geom_graphs[cur_level][closest_fine_node].x_coord; - fs->y_foci[0] = t->h->geom_graphs[cur_level][closest_fine_node].y_coord; + double *x_coords = 0; // initial x coordinates + double *y_coords = 0; // initial y coordinates + focus_t *fs; + int ne; + int ind; + int closest_fine_node; + int cur_level = 0; + hierparms_t parms; + vtx_data *graph = makeGraph(t, &ne); + t->h = makeHier(t->Nodecount, ne, graph, x_coords, y_coords); + freeGraph(graph); + fs = initFocus(t->Nodecount); // create focus set + + find_closest_active_node(t->h, 50.0, 50.0, &closest_fine_node); + fs->num_foci = 1; + fs->foci_nodes[0] = closest_fine_node; + fs->x_foci[0] = + t->h->geom_graphs[cur_level][closest_fine_node].x_coord; + fs->y_foci[0] = + t->h->geom_graphs[cur_level][closest_fine_node].y_coord; + - set_active_levels(t->h, fs->foci_nodes, fs->num_foci); positionAllItems(t->h, fs, &parms); - //DEBUG - //show coordinates and active levels - for (ind ; ind < t->Nodecount;ind ++) - { - - printf ("original coords (%f,%f)\n",t->Nodes[ind].x,t->Nodes[ind].y); - printf ("local coords (%f,%f)\n",t->h->geom_graphs[cur_level][ind].local_x_coord,t->h->geom_graphs[cur_level][ind].local_y_coord); - printf ("physical coords (%f,%f)\n",t->h->geom_graphs[cur_level][ind].new_physical_x_coord,t->h->geom_graphs[cur_level][ind].new_physical_y_coord); - printf ("local coords (%f,%f)\n",t->h->geom_graphs[cur_level][ind].local_x_coord,t->h->geom_graphs[cur_level][ind].local_y_coord); - } - - - - -} + //DEBUG + //show coordinates and active levels + for (ind; ind < t->Nodecount; ind++) { + printf("original coords (%f,%f)\n", t->Nodes[ind].x, + t->Nodes[ind].y); + printf("local coords (%f,%f)\n", + t->h->geom_graphs[cur_level][ind].local_x_coord, + t->h->geom_graphs[cur_level][ind].local_y_coord); + printf("physical coords (%f,%f)\n", + t->h->geom_graphs[cur_level][ind].new_physical_x_coord, + t->h->geom_graphs[cur_level][ind].new_physical_y_coord); + printf("local coords (%f,%f)\n", + t->h->geom_graphs[cur_level][ind].local_x_coord, + t->h->geom_graphs[cur_level][ind].local_y_coord); + } +}