void elevator_system_drawer::draw_getting_on(Wt::WPainter& painter, Wt::WRectF const& rc) { auto const floor = get_current_floor(); Direction const dir = m_sys.m_state.direction; auto count = m_sys.m_transitions.num_got_on; auto rc_floor = floor_rect(floor, rc); auto rc_q_corridor = queue_corridor_rect(dir, rc_floor); auto rc_q = queue_rect( count, QueueSide::Right, rc_q_corridor ); auto walked = WalkingSpeed * m_stage_step * m_pix_multiplier; rc_q = Wt::WRectF( rc_q.left() + walked, rc_q.top(), rc_q.width(), rc_q.height() ); painter.save(); Wt::WPainterPath clip_path; clip_path.addRect( rc_q_corridor.left(), rc_q_corridor.top(), rc_q_corridor.width() + get_door_gap_width(SizeFormat::Pixels), rc_q_corridor.height() ); painter.setClipping(true); painter.setClipPath(clip_path); draw_queue(count, painter, rc_q); painter.restore(); }