#[macro_export]
macro_rules! box_end {
(
in: $arg_surface : expr // Eg: in: surface,
$(,)* /* Optional trailing comma https://stackoverflow.com/a/43143459/2085356. */
) => {
$arg_surface.box_end()?;
};
}
#[macro_export]
macro_rules! box_start {
(
in: $arg_surface : expr, // Eg: in: surface,
id: $arg_id : expr, // Eg: 0,
dir: $arg_dir : expr, // Eg: Direction::Horizontal,
requested_size_percent: $arg_requested_size_percent : expr, // Eg: (50, 100).try_into()?,
styles: [$($args:tt)*] $(,)*
) => {
$arg_surface.box_start(box_props! {
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
maybe_styles: get_styles! { @from: $arg_surface.stylesheet, [$($args)*] }
})?
};
}
#[macro_export]
macro_rules! box_props {
(
id: $arg_id : expr, // Eg: 0,
dir: $arg_dir : expr, // Eg: Direction::Horizontal,
requested_size_percent: $arg_requested_size_percent : expr, // Eg: (50, 100).try_into()?,
maybe_styles: $arg_styles: expr $(,)*
) => {
FlexBoxProps {
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
maybe_styles: $arg_styles,
}
};
(
id: $arg_id : expr, dir: $arg_dir : expr, requested_size_percent: $arg_requested_size_percent : expr, maybe_styles: [$($args:tt)*] $(,)*
) => {
FlexBoxProps {
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
maybe_styles: Some(vec![$($args)*]),
}
};
(
id: $arg_id : expr, dir: $arg_dir : expr, requested_size_percent: $arg_requested_size_percent : expr, $(,)*
) => {
FlexBoxProps {
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
maybe_styles: None,
}
};
}
#[deprecated]
#[macro_export]
macro_rules! box_start_with_component {
(
in: $arg_surface : expr, // Eg: in: surface,
id: $arg_id : expr, // Eg: 0,
dir: $arg_dir : expr, // Eg: Direction::Horizontal,
requested_size_percent: $arg_requested_size_percent : expr, // Eg: (50, 100).try_into()?,
styles: [$($args:tt)*], render: {$($tail:tt)*} ) => {
box_start! {
in: $arg_surface,
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
styles: [$($args)*]
};
render_component_in_surface! {
in: $arg_surface,
component_id: $arg_id,
$($tail)*
};
$arg_surface.box_end()?;
};
}
#[deprecated]
#[macro_export]
macro_rules! box_start_with_surface_renderer {
(
in: $arg_surface : expr, // Eg: in: surface,
surface_renderer: $arg_renderer : expr, // Eg: surface_renderer: two_col_layout,
id: $arg_id : expr, // Eg: 0,
dir: $arg_dir : expr, // Eg: Direction::Horizontal,
requested_size_percent: $arg_requested_size_percent : expr, // Eg: (50, 100).try_into()?,
styles: [$($args_styles:tt)*], state: $arg_state : expr, shared_store: $arg_shared_store : expr, shared_global_data: $arg_shared_global_data : expr, window_size: $arg_window_size : expr ) => {
box_start! {
in: $arg_surface,
id: $arg_id,
dir: $arg_dir,
requested_size_percent: $arg_requested_size_percent,
styles: [$($args_styles)*]
};
$arg_renderer
.render_in_surface(
GlobalScopeArgs {
shared_global_data: $arg_shared_global_data,
shared_store: $arg_shared_store,
state: $arg_state,
window_size: $arg_window_size
},
$arg_surface)
.await?;
$arg_surface.box_end()?;
};
}