3 #include <math.h> |
3 #include <math.h> |
4 |
4 |
5 |
5 |
6 int GraphDisplayerCanvas::changeNodeRadius (std::string mapname, Graph::Node node) |
6 int GraphDisplayerCanvas::changeNodeRadius (std::string mapname, Graph::Node node) |
7 { |
7 { |
|
8 Graph::NodeMap<double> * actual_map; |
|
9 if(mapname=="Default") |
|
10 { |
|
11 actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_RADIUS]); |
|
12 } |
|
13 else |
|
14 { |
|
15 actual_map=(mapstorage.nodemap_storage)[mapname]; |
|
16 } |
|
17 |
8 if(node==INVALID) |
18 if(node==INVALID) |
9 { |
19 { |
10 for (NodeIt i(g); i!=INVALID; ++i) |
20 for (NodeIt i(g); i!=INVALID; ++i) |
11 { |
21 { |
12 int w=(int)(*(mapstorage.nodemap_storage)[mapname])[i]; |
22 int w=(int)(*actual_map)[i]; |
13 if(w>=0) |
23 if(w>=0) |
14 { |
24 { |
15 double x1, y1, x2, y2; |
25 double x1, y1, x2, y2; |
16 nodesmap[i]->get_bounds(x1, y1, x2, y2); |
26 x1=nodesmap[i]->property_x1().get_value(); |
|
27 x2=nodesmap[i]->property_x2().get_value(); |
|
28 y1=nodesmap[i]->property_y1().get_value(); |
|
29 y2=nodesmap[i]->property_y2().get_value(); |
17 nodesmap[i]->property_x1().set_value((x1+x2)/2-w); |
30 nodesmap[i]->property_x1().set_value((x1+x2)/2-w); |
18 nodesmap[i]->property_x2().set_value((x1+x2)/2+w); |
31 nodesmap[i]->property_x2().set_value((x1+x2)/2+w); |
19 nodesmap[i]->property_y1().set_value((y1+y2)/2-w); |
32 nodesmap[i]->property_y1().set_value((y1+y2)/2-w); |
20 nodesmap[i]->property_y2().set_value((y1+y2)/2+w); |
33 nodesmap[i]->property_y2().set_value((y1+y2)/2+w); |
21 } |
34 } |
22 } |
35 } |
23 } |
36 } |
24 else |
37 else |
25 { |
38 { |
26 int w=(int)(*(mapstorage.nodemap_storage)[mapname])[node]; |
39 //I think only new nodes use this case |
|
40 // int w=(int)(*actual_map)[node]; |
|
41 int w=(int)(node_property_defaults[N_RADIUS]); |
27 if(w>=0) |
42 if(w>=0) |
28 { |
43 { |
29 double x1, y1, x2, y2; |
44 double x1, y1, x2, y2; |
30 nodesmap[node]->get_bounds(x1, y1, x2, y2); |
45 x1=nodesmap[node]->property_x1().get_value(); |
|
46 x2=nodesmap[node]->property_x2().get_value(); |
|
47 y1=nodesmap[node]->property_y1().get_value(); |
|
48 y2=nodesmap[node]->property_y2().get_value(); |
31 nodesmap[node]->property_x1().set_value((x1+x2)/2-w); |
49 nodesmap[node]->property_x1().set_value((x1+x2)/2-w); |
32 nodesmap[node]->property_x2().set_value((x1+x2)/2+w); |
50 nodesmap[node]->property_x2().set_value((x1+x2)/2+w); |
33 nodesmap[node]->property_y1().set_value((y1+y2)/2-w); |
51 nodesmap[node]->property_y1().set_value((y1+y2)/2-w); |
34 nodesmap[node]->property_y2().set_value((y1+y2)/2+w); |
52 nodesmap[node]->property_y2().set_value((y1+y2)/2+w); |
35 } |
53 } |
42 |
60 |
43 //function maps the range of the maximum and |
61 //function maps the range of the maximum and |
44 //the minimum of the nodemap to the range of |
62 //the minimum of the nodemap to the range of |
45 //green in RGB |
63 //green in RGB |
46 |
64 |
|
65 Graph::NodeMap<double> * actual_map; |
|
66 if(mapname=="Default") |
|
67 { |
|
68 actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]); |
|
69 } |
|
70 else |
|
71 { |
|
72 actual_map=(mapstorage.nodemap_storage)[mapname]; |
|
73 } |
|
74 |
|
75 double max, min; |
|
76 |
|
77 if(mapname!="Default") |
|
78 { |
|
79 max=mapstorage.maxOfNodeMap(mapname); |
|
80 min=mapstorage.minOfNodeMap(mapname); |
|
81 } |
|
82 else |
|
83 { |
|
84 max=node_property_defaults[N_COLOR]; |
|
85 min=node_property_defaults[N_COLOR]; |
|
86 } |
|
87 |
|
88 |
47 if(node==INVALID) |
89 if(node==INVALID) |
48 { |
90 { |
49 |
91 |
50 for (NodeIt i(g); i!=INVALID; ++i) |
92 for (NodeIt i(g); i!=INVALID; ++i) |
51 { |
93 { |
52 double w=(*(mapstorage.nodemap_storage)[mapname])[i]; |
|
53 double max=mapstorage.maxOfNodeMap(mapname); |
|
54 double min=mapstorage.minOfNodeMap(mapname); |
|
55 |
|
56 //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl; |
|
57 Gdk::Color color; |
94 Gdk::Color color; |
|
95 |
|
96 double w=(*actual_map)[i]; |
|
97 |
58 if(max!=min) |
98 if(max!=min) |
59 { |
99 { |
60 color.set_rgb_p (0, 0, 100*(w-min)/(max-min)); |
100 color.set_rgb_p (0, 0, 100*(w-min)/(max-min)); |
61 } |
101 } |
62 else |
102 else |
94 |
132 |
95 //the number in the map will be written on the node |
133 //the number in the map will be written on the node |
96 //EXCEPT when the name of the map is Text, because |
134 //EXCEPT when the name of the map is Text, because |
97 //in that case empty string will be written, because |
135 //in that case empty string will be written, because |
98 //that is the deleter map |
136 //that is the deleter map |
99 //\todo isn't it a bit woodcutter? |
137 |
|
138 Graph::NodeMap<double> * actual_map; |
|
139 if(mapname=="Default") |
|
140 { |
|
141 actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]); |
|
142 } |
|
143 else |
|
144 { |
|
145 actual_map=(mapstorage.nodemap_storage)[mapname]; |
|
146 } |
100 |
147 |
101 if(node==INVALID) |
148 if(node==INVALID) |
102 { |
149 { |
103 for (NodeIt i(g); i!=INVALID; ++i) |
150 for (NodeIt i(g); i!=INVALID; ++i) |
104 { |
151 { |
105 if(mapname!=node_property_strings[N_TEXT]) |
152 if(mapname!="Default") |
106 { |
153 { |
107 double number=(*(mapstorage.nodemap_storage)[mapname])[i]; |
154 double number=(*actual_map)[i]; |
108 int length=1; |
155 int length=1; |
109 //if number is smaller than one, length would be negative, or invalid |
156 //if number is smaller than one, length would be negative, or invalid |
110 if(number>=1) |
157 if(number>=1) |
111 { |
158 { |
112 length=(int)(floor(log(number)/log(10)))+1; |
159 length=(int)(floor(log(number)/log(10)))+1; |