use crate::{
ActiveRouteTransition, AnimationHandle, AnimationRegistration, AnimationTargetId,
RouteTransitionRegistration,
};
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ActiveRouteScreenTransition<R>
where
R: Copy + Eq,
{
route: ActiveRouteTransition<R>,
route_target: AnimationTargetId,
outgoing_target: AnimationTargetId,
outgoing_handle: AnimationHandle,
incoming_target: AnimationTargetId,
incoming_handle: AnimationHandle,
}
impl<R> ActiveRouteScreenTransition<R>
where
R: Copy + Eq,
{
pub(crate) const fn new(
route: ActiveRouteTransition<R>,
route_target: AnimationTargetId,
targets: RouteScreenTargets,
outgoing_handle: AnimationHandle,
incoming_handle: AnimationHandle,
) -> Self {
Self {
route,
route_target,
outgoing_target: targets.outgoing(),
outgoing_handle,
incoming_target: targets.incoming(),
incoming_handle,
}
}
#[must_use]
pub const fn route(&self) -> &ActiveRouteTransition<R> {
&self.route
}
#[must_use]
pub const fn route_target(&self) -> AnimationTargetId {
self.route_target
}
#[must_use]
pub const fn outgoing_target(&self) -> AnimationTargetId {
self.outgoing_target
}
#[must_use]
pub const fn outgoing_handle(&self) -> AnimationHandle {
self.outgoing_handle
}
#[must_use]
pub const fn incoming_target(&self) -> AnimationTargetId {
self.incoming_target
}
#[must_use]
pub const fn incoming_handle(&self) -> AnimationHandle {
self.incoming_handle
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct RouteScreenTargets {
outgoing: AnimationTargetId,
incoming: AnimationTargetId,
}
impl RouteScreenTargets {
#[must_use]
pub const fn new(outgoing: AnimationTargetId, incoming: AnimationTargetId) -> Self {
Self { outgoing, incoming }
}
#[must_use]
pub const fn outgoing(&self) -> AnimationTargetId {
self.outgoing
}
#[must_use]
pub const fn incoming(&self) -> AnimationTargetId {
self.incoming
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct RouteScreenTransitionRegistration<R>
where
R: Copy + Eq,
{
route: RouteTransitionRegistration<R>,
outgoing: AnimationRegistration,
incoming: AnimationRegistration,
replaced: Option<ActiveRouteScreenTransition<R>>,
}
impl<R> RouteScreenTransitionRegistration<R>
where
R: Copy + Eq,
{
pub(crate) const fn new(
route: RouteTransitionRegistration<R>,
outgoing: AnimationRegistration,
incoming: AnimationRegistration,
replaced: Option<ActiveRouteScreenTransition<R>>,
) -> Self {
Self {
route,
outgoing,
incoming,
replaced,
}
}
#[must_use]
pub const fn route(&self) -> &RouteTransitionRegistration<R> {
&self.route
}
#[must_use]
pub const fn outgoing(&self) -> &AnimationRegistration {
&self.outgoing
}
#[must_use]
pub const fn incoming(&self) -> &AnimationRegistration {
&self.incoming
}
#[must_use]
pub const fn replaced(&self) -> Option<&ActiveRouteScreenTransition<R>> {
self.replaced.as_ref()
}
}