Description:
Fix tick marks. Use the range (rather than the domain) so the ticks are spaced appropriately. Also sets an arbitrary range if the full range is 0 (if the series is always at the same value) so that the line actually appears.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r646:096a00964e8c -

@@ -50,23 +50,23
50 50 .Zip(colors, (first, second) => (first, second))
51 51 .ToDictionary(t => t.Item1, t => t.Item2);
52 52
53 public static void DrawLinearAxis(ImDrawListPtr draw_list, Num.Vector2 range, bool vertical, int points, Num.Vector2 position) {
53 public static void DrawLinearAxis(ImDrawListPtr draw_list, Num.Vector2 range, bool vertical, int points, Num.Vector2 starting_position) {
54 54 //See DrawLinearLabels for explanation
55 55 var tick_spacing = (int)Math.Abs((range.Y - range.X) / (points - 1));
56 56 var tick_length = 5;
57 57 var tick_adjust = vertical ? new Num.Vector2(tick_length, 0) : new Num.Vector2(0, tick_length);
58 58
59 var tick_position = position;
59 var tick_position = starting_position;
60 60
61 61 for(int i = 0; i < points; i++) {
62 draw_list.AddLine(tick_position, Num.Vector2.Add(tick_position, tick_adjust), (uint)ImGuiColor.LIGHTGREY, 1.0f);
62 draw_list.AddLine(tick_position, Num.Vector2.Add(tick_position, tick_adjust), (uint)ImGuiColor.DARKGREY, 1.0f);
63 63
64 64 if (vertical) {
65 tick_position = new Num.Vector2(position.X, position.Y + ((i + 1) * tick_spacing));
65 tick_position = new Num.Vector2(starting_position.X, starting_position.Y + ((i + 1) * tick_spacing));
66 66 }
67 67 else {
68 68 //We increment one, otherwise the first tick is
69 tick_position = new Num.Vector2(position.X + ((i + 1) * tick_spacing), position.Y);
69 tick_position = new Num.Vector2(starting_position.X + ((i + 1) * tick_spacing), starting_position.Y);
70 70 }
71 71 }
72 72 }
@@ -209,7 +209,7
209 209 }
210 210 }
211 211
212 var domain = new Num.Vector2(domain_min, domain_max);
212 var domain = (domain_min != domain_max) ? new Num.Vector2(domain_min, domain_max) : new Num.Vector2(domain_min-100, domain_max+100) ;
213 213 var range = new Num.Vector2(200 - padding, 0 + padding);
214 214
215 215 //Zero
@@ -239,7 +239,7
239 239 }
240 240 }
241 241
242 DrawLinearAxis(draw_list, domain /*new Num.Vector2(0, 200)*/, true, 11, Num.Vector2.Add(c, new Num.Vector2(padding, padding)));
242 DrawLinearAxis(draw_list, range /*new Num.Vector2(0, 200)*/, true, 11, Num.Vector2.Add(c, new Num.Vector2(padding, padding)));
243 243 DrawLinearLabels(font, draw_list, domain, range /*new Num.Vector2(0, 200)*/, true, 11, c);
244 244 DrawLinearAxis(draw_list, new Num.Vector2(0, 350), false, 12, Num.Vector2.Add(c, new Num.Vector2(padding, 200 - padding)));
245 245
You need to be logged in to leave comments. Login now