@@ -47,7 +47,7 @@ class GraphComponent extends FlameGame
47
47
graph = convertor.convertGraph (data);
48
48
graph.vertexes = graph.vertexes.toSet ().toList ()
49
49
..sort ((key1, key2) => key1.degree - key2.degree > 0 ? - 1 : 1 );
50
-
50
+ setDefaultVertexColor ();
51
51
for (var edge in graph.edges) {
52
52
var ec = EdgeComponent (edge, graph, context)..scaleNotifier = scale;
53
53
edge.cpn = ec;
@@ -59,9 +59,19 @@ class GraphComponent extends FlameGame
59
59
vertex.cpn = vc;
60
60
add (vc);
61
61
}
62
+
63
+ createLegend ();
62
64
options.graphStyle.graphColor (graph);
63
65
}
64
66
67
+ setDefaultVertexColor () {
68
+ var tagColorByIndex = options.graphStyle.tagColorByIndex;
69
+ var needCount = graph.allTags.length - tagColorByIndex.length;
70
+ for (var i = 0 ; i < needCount; i++ ) {
71
+ tagColorByIndex.add (options.graphStyle.defaultColor ()[0 ]);
72
+ }
73
+ }
74
+
65
75
updateViewport (x, y) {
66
76
camera.viewport = FixedResolutionViewport (Vector2 (x, y));
67
77
}
@@ -102,4 +112,24 @@ class GraphComponent extends FlameGame
102
112
algorithm.onZoomEdge (edge, pointLocation! , delta);
103
113
}
104
114
}
115
+
116
+ void createLegend () {
117
+ for (var i = 0 ; i < graph.allTags.length; i++ ) {
118
+ var tag = graph.allTags[i];
119
+
120
+ add (
121
+ RectangleComponent .fromRect (
122
+ Rect .fromLTWH (
123
+ 40 ,
124
+ 50.0 + 30 * i,
125
+ 30 ,
126
+ 18 ,
127
+ ),
128
+ paint: Paint ()
129
+ ..color = options.graphStyle.colorByTag (tag, graph.allTags)! ),
130
+ );
131
+
132
+ add (TextComponent (text: tag, position: Vector2 (40 + 40 , 44.0 + 30 * i)));
133
+ }
134
+ }
105
135
}
0 commit comments