Struct map_gui::tools::InputWaypoints

source ·
pub struct InputWaypoints {
    waypoints: Vec<Waypoint>,
    snap_to_main_endpts: FindClosest<TripEndpoint>,
    snap_to_road_endpts: FindClosest<LaneID>,
    max_waypts: Option<usize>,
}
Expand description

Click to add waypoints, drag them, see the list on a panel and delete them. The caller owns the Panel and the World, since there’s probably more stuff there too.

Fields§

§waypoints: Vec<Waypoint>§snap_to_main_endpts: FindClosest<TripEndpoint>§snap_to_road_endpts: FindClosest<LaneID>§max_waypts: Option<usize>

Implementations§

source§

impl InputWaypoints

source

pub fn new( app: &dyn AppLike, snap_to_lanes_for: Vec<PathConstraints> ) -> InputWaypoints

Allows any number of waypoints

source

pub fn new_max_2( app: &dyn AppLike, snap_to_lanes_for: Vec<PathConstraints> ) -> Self

Only allow drawing routes with 2 waypoints. If a route is loaded with more than that, it can be modified.

source

pub fn overwrite(&mut self, app: &dyn AppLike, waypoints: Vec<TripEndpoint>)

The caller should call rebuild_world after this

source

pub fn get_panel_widget(&self, ctx: &mut EventCtx<'_>) -> Widget

source

pub fn get_waypoints(&self) -> Vec<TripEndpoint>

source

pub fn len(&self) -> usize

source

pub fn event( &mut self, app: &dyn AppLike, panel_outcome: Outcome, world_outcome: WorldOutcome<WaypointID> ) -> bool

If the outcome from the panel or world isn’t used by the caller, pass it along here. When this returns true, something has changed, so the caller may want to update their view of the route and call get_panel_widget and rebuild_world again.

source

fn snap(&self, app: &dyn AppLike, cursor: Pt2D) -> Option<TripEndpoint>

source

pub fn get_waypoint_color(&self, idx: usize) -> Color

source

pub fn rebuild_world<T: ObjectID, F: Fn(WaypointID) -> T>( &self, ctx: &mut EventCtx<'_>, world: &mut World<T>, wrap_id: F, zorder: usize )

The caller is responsible for calling initialize_hover and rebuilt_during_drag.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

§

fn is_within(&self, b: &G2) -> bool