Description:
Add colors and handle multiple series.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r613:61f03cc25d87 -

@@ -33,13 +33,28
33 33
34 34 public static Dictionary<string, IEnumerable<double>> data_sets = new Dictionary<string, IEnumerable<double>>();
35 35
36 public static Dictionary<String, bool> data_sets_show = new List<string>()
36 public static Dictionary<string, bool> data_sets_show = new List<string>()
37 37 .Concat(money_series)
38 38 .Concat(tree_series)
39 39 .Select(e => (e, false))
40 40 .ToDictionary(t => t.Item1, t=> t.Item2);
41 41
42 public static void DrawLine(ImDrawListPtr draw_list, Num.Vector2[] points) {
42
43 public static uint[] colors = {0xFF000000, 0xFFFF0000, 0xFF00FF00, 0xFF0000FF,
44 0xFF999999, 0xFFAA0000, 0xFF00AA00, 0xFF0000AA, 0xFF000000
45
46
47
48 };
49
50 public static Dictionary<string, uint> data_sets_color = new List<string>()
51 .Concat(money_series)
52 .Concat(tree_series)
53 .Zip(colors)
54 .ToDictionary(t => t.Item1, t => t.Item2);
55
56
57 public static void DrawLine(ImDrawListPtr draw_list, Num.Vector2[] points, uint col) {
43 58
44 59 var p = Num.Vector2.Zero;// ImGui.GetCursorScreenPos();
45 60
@@ -52,7 +67,7
52 67 }
53 68
54 69 // uint col = 0b_1111_1111_1111_0000;
55 uint col = 0xFF000000;
70 // uint col = 0xFF000000;
56 71
57 72 draw_list.AddPolyline(ref points[0], points.Length, col, ImDrawFlags.RoundCornersDefault, 1.0f);
58 73
@@ -204,23 +219,40
204 219
205 220 var draw_list = ImGui.GetWindowDrawList();
206 221
222 var domain_min = int.MaxValue;
223 var domain_max = int.MinValue;
224 foreach (var key in keys)
225 {
207 226
208 var range = new Num.Vector2(200, 0);
227 if (data_sets_show[key] && data_sets[key].Count() > 0)
228 {
229 domain_min = Math.Min(domain_min, (int)data_sets[key].Min());
230 domain_max = Math.Max(domain_max, (int)data_sets[key].Max());
231 }
232
233
234 }
209 235
210 foreach (var key in keys) {
211 var show = data_sets_show[key];
212 var data = data_sets[key];
213 var domain = new Num.Vector2((int)data.Min(), (int)data.Max());
214 // var data_array = datasets[key].Select((p) => Scale(domain, range, (int)p) ).Select((p,i) => new Num.Vector2(i*10, (int)p)).ToArray();
215 if (data.Count() > 0 && show)
216 {
236 var padding = 10;
237
238 var range = new Num.Vector2(200 - padding, 0 + padding);
239 var domain = new Num.Vector2(domain_min, domain_max);
240
241 foreach (var key in keys)
242 {
243 var show = data_sets_show[key];
244 var data = data_sets[key];
245 // var domain = new Num.Vector2((int)data.Min(), (int)data.Max());
246 // var data_array = datasets[key].Select((p) => Scale(domain, range, (int)p) ).Select((p,i) => new Num.Vector2(i*10, (int)p)).ToArray();
247 if (data.Count() > 0 && show)
248 {
217 249 // Logging.Spy(range);
218 250 // Logging.Spy(domain);
219 251 IEnumerable<int> data_array = data_sets[key].Select((p) => Scale(domain, range, (int)p));
220 var data_array2 = data_array.Select((p, i) => new Num.Vector2(i * 10, p)).ToArray();
221 DrawLine(draw_list, data_array2);
222 }
252 var data_array2 = data_array.Select((p, i) => new Num.Vector2(i * 10 + padding, p)).ToArray();
253 DrawLine(draw_list, data_array2, data_sets_color[key]);
223 254 }
255 }
224 256
225 257 ImGui.Dummy(new Num.Vector2(200, 200));
226 258
You need to be logged in to leave comments. Login now