Skip to content

Commit

Permalink
Add an icon in the LTN tool to show schools. [rebuild] [release]
Browse files Browse the repository at this point in the history
And also fix parking lot color when coloring cells as areas.
  • Loading branch information
dabreegster committed Aug 5, 2022
1 parent e4842d9 commit 13949f5
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 15 deletions.
1 change: 1 addition & 0 deletions apps/ltn/src/browse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ impl State<App> for BrowseNeighbourhoods {
self.draw_boundary_roads.draw(g);
self.labels.draw(g);
app.session.draw_all_filters.draw(g);
app.session.draw_poi_icons.draw(g);
}
}

Expand Down
6 changes: 6 additions & 0 deletions apps/ltn/src/connectivity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,11 @@ impl State<App> for Viewer {
app.draw_map.draw_all_buildings = draw_all_buildings;
app.draw_map.draw_all_building_outlines = draw_all_building_outlines;

let (parking_lots, draw_all_unzoomed_parking_lots) =
DrawMap::regenerate_parking_lots(ctx, &app.map, &app.cs, &app.opts);
app.draw_map.parking_lots = parking_lots;
app.draw_map.draw_all_unzoomed_parking_lots = draw_all_unzoomed_parking_lots;

let (edit, draw_top_layer, draw_under_roads_layer, _, highlight_cell) =
setup_editing(ctx, app, &self.neighbourhood);
self.edit = edit;
Expand Down Expand Up @@ -264,6 +269,7 @@ impl State<App> for Viewer {
self.left_panel.draw(g);
self.neighbourhood.labels.draw(g);
app.session.draw_all_filters.draw(g);
app.session.draw_poi_icons.draw(g);

if self.left_panel.currently_hovering() == Some(&"warning".to_string()) {
g.redraw(&self.show_error);
Expand Down
1 change: 1 addition & 0 deletions apps/ltn/src/impact/ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,7 @@ impl State<App> for ChangedRoutes {
self.panel.draw(g);
g.redraw(&self.draw_paths);
app.session.draw_all_filters.draw(g);
app.session.draw_poi_icons.draw(g);
}
}

Expand Down
25 changes: 23 additions & 2 deletions apps/ltn/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use structopt::StructOpt;
use abstio::MapName;
use abstutil::Timer;
use map_gui::tools::DrawSimpleRoadLabels;
use map_model::RoutingParams;
use widgetry::{EventCtx, GfxCtx, Settings};
use map_model::{AmenityType, RoutingParams};
use widgetry::{Color, Drawable, EventCtx, GeomBatch, GfxCtx, RewriteColor, Settings};

pub use browse::BrowseNeighbourhoods;
use filters::Toggle3Zoomed;
Expand Down Expand Up @@ -84,6 +84,7 @@ fn run(mut settings: Settings) {
modal_filters: ModalFilters::default(),
routing_params_before_changes: RoutingParams::default(),
draw_all_road_labels: None,
draw_poi_icons: Drawable::empty(ctx),

alt_proposals: save::AltProposals::new(),
draw_all_filters: Toggle3Zoomed::empty(ctx),
Expand Down Expand Up @@ -211,6 +212,7 @@ pub struct Session {
// pathfinder. (https://github.com/a-b-street/abstreet/issues/852 would make this more clear)
pub routing_params_before_changes: RoutingParams,
pub draw_all_road_labels: Option<DrawSimpleRoadLabels>,
pub draw_poi_icons: Drawable,

pub alt_proposals: save::AltProposals,
pub draw_all_filters: Toggle3Zoomed,
Expand Down Expand Up @@ -268,4 +270,23 @@ pub fn clear_current_proposal(ctx: &mut EventCtx, app: &mut App, timer: &mut Tim
app.session.partitioning = Partitioning::seed_using_heuristics(app, timer);
app.session.draw_all_filters = app.session.modal_filters.draw(ctx, &app.map);
app.session.draw_all_road_labels = None;
app.session.draw_poi_icons = render_poi_icons(ctx, app);
}

fn render_poi_icons(ctx: &EventCtx, app: &App) -> Drawable {
let mut batch = GeomBatch::new();
let school = GeomBatch::load_svg(ctx, "system/assets/map/school.svg")
.scale(0.2)
.color(RewriteColor::ChangeAll(Color::WHITE));

for b in app.map.all_buildings() {
if b.amenities.iter().any(|a| {
let at = AmenityType::categorize(&a.amenity_type);
at == Some(AmenityType::School) || at == Some(AmenityType::University)
}) {
batch.append(school.clone().centered_on(b.polygon.polylabel()));
}
}

ctx.upload(batch)
}
3 changes: 2 additions & 1 deletion apps/ltn/src/route_planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,8 +336,9 @@ impl State<App> for RoutePlanner {

self.world.draw(g);
self.draw_routes.draw(g);
app.session.draw_all_filters.draw(g);
app.session.draw_all_road_labels.as_ref().unwrap().draw(g);
app.session.draw_all_filters.draw(g);
app.session.draw_poi_icons.draw(g);
}
}

Expand Down
1 change: 1 addition & 0 deletions data/system/assets/map/school.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions map_gui/src/colors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,8 @@ impl ColorScheme {
fn classic_ltn() -> Self {
let mut cs = Self::ltn();
cs.scheme = ColorSchemeChoice::ClassicLTN;
// The colors of cells will show through these, de-emphasizing them
cs.parking_lot = Color::BLACK.alpha(0.2);
cs.residential_building = Color::BLACK.alpha(0.3);
cs.commercial_building = Color::BLACK.alpha(0.5);
cs
Expand Down
34 changes: 22 additions & 12 deletions map_gui/src/render/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,8 @@ impl DrawMap {
DrawMap::regenerate_buildings(ctx, map, cs, opts, timer);

timer.start("make DrawParkingLot");
let mut parking_lots: Vec<DrawParkingLot> = Vec::new();
let mut all_unzoomed_parking_lots = GeomBatch::new();
for pl in map.all_parking_lots() {
parking_lots.push(DrawParkingLot::new(
ctx,
pl,
cs,
opts,
&mut all_unzoomed_parking_lots,
));
}
let draw_all_unzoomed_parking_lots = all_unzoomed_parking_lots.upload(ctx);
let (parking_lots, draw_all_unzoomed_parking_lots) =
DrawMap::regenerate_parking_lots(ctx, map, cs, opts);
timer.stop("make DrawParkingLot");

timer.start_iter("make DrawTransitStop", map.all_transit_stops().len());
Expand Down Expand Up @@ -199,6 +189,26 @@ impl DrawMap {
(buildings, draw_all_buildings, draw_all_building_outlines)
}

pub fn regenerate_parking_lots(
ctx: &EventCtx,
map: &Map,
cs: &ColorScheme,
opts: &Options,
) -> (Vec<DrawParkingLot>, Drawable) {
let mut parking_lots: Vec<DrawParkingLot> = Vec::new();
let mut all_unzoomed_parking_lots = GeomBatch::new();
for pl in map.all_parking_lots() {
parking_lots.push(DrawParkingLot::new(
ctx,
pl,
cs,
opts,
&mut all_unzoomed_parking_lots,
));
}
(parking_lots, all_unzoomed_parking_lots.upload(ctx))
}

pub fn regenerate_unzoomed_layer(
ctx: &EventCtx,
map: &Map,
Expand Down

0 comments on commit 13949f5

Please sign in to comment.