hegyi@27: #include hegyi@27: #include hegyi@27: #include hegyi@27: hegyi@27: hegyi@28: int GraphDisplayerCanvas::changeEdgeWidth (std::string mapname, Graph::Edge edge) hegyi@27: { hegyi@31: Graph::EdgeMap * actual_map; hegyi@31: if(mapname=="Default") hegyi@31: { hegyi@31: actual_map=new Graph::EdgeMap(g,edge_property_defaults[E_WIDTH]); hegyi@31: } hegyi@31: else hegyi@31: { hegyi@31: actual_map=(mapstorage.edgemap_storage)[mapname]; hegyi@31: } hegyi@31: hegyi@28: if(edge==INVALID) hegyi@27: { hegyi@28: for (EdgeIt i(g); i!=INVALID; ++i) hegyi@28: { hegyi@31: int w=(int)(*actual_map)[i]; hegyi@28: if(w>=0) hegyi@28: { hegyi@28: edgesmap[i]->property_width_pixels().set_value(w); hegyi@28: } hegyi@28: } hegyi@28: } hegyi@28: else hegyi@28: { hegyi@31: int w=(int)(*actual_map)[edge]; hegyi@27: if(w>=0) hegyi@27: { hegyi@28: edgesmap[edge]->property_width_pixels().set_value(w); hegyi@27: } hegyi@27: } hegyi@27: return 0; hegyi@27: }; hegyi@27: hegyi@28: int GraphDisplayerCanvas::changeEdgeColor (std::string mapname, Graph::Edge edge) hegyi@27: { hegyi@27: hegyi@27: //function maps the range of the maximum and hegyi@27: //the minimum of the nodemap to the range of hegyi@27: //green in RGB hegyi@31: Graph::EdgeMap * actual_map; hegyi@31: if(mapname=="Default") hegyi@31: { hegyi@31: actual_map=new Graph::EdgeMap(g,edge_property_defaults[E_COLOR]); hegyi@31: } hegyi@31: else hegyi@31: { hegyi@31: actual_map=(mapstorage.edgemap_storage)[mapname]; hegyi@31: } hegyi@31: hegyi@31: double max, min; hegyi@31: hegyi@31: if(mapname!="Default") hegyi@31: { hegyi@31: max=mapstorage.maxOfEdgeMap(mapname); hegyi@31: min=mapstorage.minOfEdgeMap(mapname); hegyi@31: } hegyi@31: else hegyi@31: { hegyi@31: max=edge_property_defaults[E_COLOR]; hegyi@31: min=edge_property_defaults[E_COLOR]; hegyi@31: } hegyi@31: hegyi@28: if(edge==INVALID) hegyi@28: { hegyi@28: for (EdgeIt i(g); i!=INVALID; ++i) hegyi@28: { hegyi@31: double w=(*actual_map)[i]; hegyi@31: hegyi@28: Gdk::Color color; hegyi@28: if(max!=min) hegyi@28: { hegyi@28: color.set_rgb_p (0, 100*(w-min)/(max-min), 0); hegyi@28: } hegyi@28: else hegyi@28: { hegyi@28: color.set_rgb_p (0, 100, 0); hegyi@28: } hegyi@28: edgesmap[i]->property_fill_color_gdk().set_value(color); hegyi@28: } hegyi@28: } hegyi@28: else hegyi@27: { hegyi@28: Gdk::Color color; hegyi@31: hegyi@31: double w=(*actual_map)[edge]; hegyi@31: hegyi@28: if(max!=min) hegyi@28: { hegyi@28: color.set_rgb_p (0, 100*(w-min)/(max-min), 0); hegyi@28: } hegyi@28: else hegyi@28: { hegyi@28: color.set_rgb_p (0, 100, 0); hegyi@28: } hegyi@28: hegyi@28: edgesmap[edge]->property_fill_color_gdk().set_value(color); hegyi@27: } hegyi@27: return 0; hegyi@27: }; hegyi@27: hegyi@28: int GraphDisplayerCanvas::changeEdgeText (std::string mapname, Graph::Edge edge) hegyi@27: { hegyi@27: //the number in the map will be written on the edge hegyi@40: //EXCEPT when the name of the map is Default, because hegyi@27: //in that case empty string will be written, because hegyi@27: //that is the deleter map hegyi@27: hegyi@28: if(edge==INVALID) hegyi@27: { hegyi@28: for (EdgeIt i(g); i!=INVALID; ++i) hegyi@27: { hegyi@31: if(mapname!="Default") hegyi@28: { hegyi@35: edgemap_to_edit=mapname; hegyi@28: double number=(*(mapstorage.edgemap_storage)[mapname])[i]; hegyi@44: // int length=1; hegyi@44: // //if number is smaller than one, length would be negative, or invalid hegyi@44: // if(number>=1) hegyi@44: // { hegyi@44: // length=(int)(floor(log(number)/log(10)))+1; hegyi@44: // } hegyi@44: // int maxpos=(int)(pow(10,length-1)); hegyi@44: // int strl=length+1+RANGE; hegyi@44: // char * str=new char[strl]; hegyi@44: // str[length]='.'; hegyi@44: // str[strl]='\0'; hegyi@28: hegyi@44: // for(int j=0;jALMOST_ONE) hegyi@44: // { hegyi@44: // number=round(number); hegyi@44: // } hegyi@44: // int digit=(int)(number/maxpos); hegyi@44: // str[j]=(digit+'0'); hegyi@44: // number-=digit*maxpos; hegyi@44: // number*=10; hegyi@44: // } hegyi@44: // } hegyi@44: // edgetextmap[i]->property_text().set_value(str); hegyi@44: hegyi@44: std::ostringstream ostr; hegyi@44: ostr << number; hegyi@44: hegyi@44: edgetextmap[i]->property_text().set_value(ostr.str()); hegyi@28: } hegyi@28: else hegyi@28: { hegyi@35: edgemap_to_edit=""; hegyi@28: edgetextmap[i]->property_text().set_value(""); hegyi@28: } hegyi@28: } hegyi@28: hegyi@28: } hegyi@28: else hegyi@28: { hegyi@31: if(mapname!="Default") hegyi@28: { hegyi@28: double number=(*(mapstorage.edgemap_storage)[mapname])[edge]; hegyi@27: int length=1; hegyi@27: //if number is smaller than one, length would be negative, or invalid hegyi@27: if(number>=1) hegyi@27: { hegyi@27: length=(int)(floor(log(number)/log(10)))+1; hegyi@27: } hegyi@27: int maxpos=(int)(pow(10,length-1)); hegyi@27: int strl=length+1+RANGE; hegyi@27: char * str=new char[strl]; hegyi@27: str[length]='.'; hegyi@27: str[strl]='\0'; hegyi@27: hegyi@27: for(int j=0;jALMOST_ONE) hegyi@36: { hegyi@36: number=round(number); hegyi@36: } hegyi@27: int digit=(int)(number/maxpos); hegyi@27: str[j]=(digit+'0'); hegyi@27: number-=digit*maxpos; hegyi@27: number*=10; hegyi@27: } hegyi@27: } hegyi@27: hegyi@28: edgetextmap[edge]->property_text().set_value(str); hegyi@27: } hegyi@27: else hegyi@27: { hegyi@28: edgetextmap[edge]->property_text().set_value(""); hegyi@27: } hegyi@28: hegyi@27: } hegyi@28: hegyi@27: return 0; hegyi@28: hegyi@27: };