mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-11-28 12:12:00 +03:00
draw signal diagram on the right side of the screen
This commit is contained in:
parent
ed318f0c9e
commit
a0fefc377f
@ -211,19 +211,19 @@ pub fn draw_signal_diagram(
|
||||
.map(|l| ctx.canvas.text_dims(l).0)
|
||||
.max_by_key(|w| NotNaN::new(*w).unwrap())
|
||||
.unwrap();
|
||||
let total_screen_width = (intersection_width * zoom) + label_length + 10.0;
|
||||
let x1_screen = ctx.canvas.window_width - total_screen_width;
|
||||
|
||||
let old_ctx = g.fork_screenspace();
|
||||
g.draw_polygon(
|
||||
ctx.cs
|
||||
.get_def("signal editor panel", Color::BLACK.alpha(0.95)),
|
||||
&Polygon::rectangle_topleft(
|
||||
Pt2D::new(10.0, TOP_MENU_HEIGHT + 10.0),
|
||||
(intersection_width * zoom) + label_length,
|
||||
Pt2D::new(x1_screen, TOP_MENU_HEIGHT + 10.0),
|
||||
total_screen_width,
|
||||
(padding + intersection_height) * (cycles.len() as f64) * zoom,
|
||||
),
|
||||
);
|
||||
// TODO Padding and offsets all a bit off. Abstractions are a bit awkward. Want to
|
||||
// center a map-space thing inside a screen-space box.
|
||||
g.draw_polygon(
|
||||
ctx.cs.get_def(
|
||||
"current cycle in signal editor panel",
|
||||
@ -231,19 +231,20 @@ pub fn draw_signal_diagram(
|
||||
),
|
||||
&Polygon::rectangle_topleft(
|
||||
Pt2D::new(
|
||||
10.0,
|
||||
x1_screen,
|
||||
10.0 + TOP_MENU_HEIGHT
|
||||
+ (padding + intersection_height) * (current_cycle as f64) * zoom,
|
||||
),
|
||||
(intersection_width * zoom) + label_length,
|
||||
total_screen_width,
|
||||
(padding + intersection_height) * zoom,
|
||||
),
|
||||
);
|
||||
|
||||
for (idx, (txt, cycle)) in labels.into_iter().zip(cycles.iter()).enumerate() {
|
||||
// TODO API for "make this map pt be this screen pt"
|
||||
g.fork(
|
||||
Pt2D::new(
|
||||
top_left.x(),
|
||||
top_left.x() - (x1_screen / zoom),
|
||||
top_left.y() - intersection_height * (idx as f64) - padding * ((idx as f64) + 1.0),
|
||||
),
|
||||
zoom,
|
||||
@ -254,7 +255,7 @@ pub fn draw_signal_diagram(
|
||||
g,
|
||||
txt,
|
||||
ScreenPt::new(
|
||||
10.0 + (intersection_width * zoom),
|
||||
x1_screen + 10.0 + (intersection_width * zoom),
|
||||
10.0 + TOP_MENU_HEIGHT + (padding + intersection_height) * (idx as f64) * zoom,
|
||||
),
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user