macro_rules! layout {
($context:expr, $view:expr, left_to_left_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, left_to_right_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, right_to_left_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, top_to_bottom_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, bottom_to_top_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, top_to_top_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, bottom_to_bottom_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, right_to_right_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, right_to_right_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, right_to_left_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, bottom_to_bottom_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, bottom_to_top_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, left_to_left_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, left_to_right_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, top_to_top_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerh_to_centerh_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerh_to_left_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerh_to_right_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerv_to_centerv_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerv_to_top_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, centerv_to_bottom_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, left_to_centerh_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, right_to_centerh_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, left_to_centerh_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, right_to_centerh_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, top_to_centerv_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, bottom_to_centerv_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, top_to_centerv_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, bottom_to_centerv_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, top_to_bottom_of $pivot:expr $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, fill_width $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, fill_height $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_left $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_top $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_right $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_bottom $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_left $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_top $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_right $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_bottom $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_centerh $(, $offset:expr)?) => { ... };
($context:expr, $view:expr, align_centerv $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_centerh $(, $offset:expr)?) => { ... };
($context:expr, grow $view:expr, align_centerv $(, $offset:expr)?) => { ... };
($context:expr, centerh $view:expr, between $first:expr, $second:expr $(, $offset:expr)?) => { ... };
($context:expr, centerv $view:expr, between $first:expr, $second:expr $(, $offset:expr)?) => { ... };
}Expand description
Position and size a view relative to the parent or another view
§Format
layout!(context, [command] view, alignment [pivot_view],[second_pivot_view][, offset]);
Views must impl PixelView and to use grow they must also impl LayoutView
offset replaces the default offset from context (if it was set)
§Usage
ⓘ
let mut view1 = Button::new(...);
let mut view2 = Button::new(...);
let context = LayoutContext::new(Rect::new((0,0), (200,200)));
layout!(context, view1, left_to_left_of view2);§Examples
Move a button below another with some spacing
ⓘ
let button1 = Button::new(...);
let button2 = Button::new(...);
let context = LayoutContext::new(...);
layout!(context, button2, top_to_bottom_of button1, px(8));Move a button to the edge of the screen and grow it’s right side to match another view
ⓘ
let button1 = Button::new(...);
let button2 = Button::new(...);
let context = LayoutContext::new(...);
layout!(context, button2, align_left);
layout!(context, grow button1, right_to_right_of button1);§Command
grow- Moves the edge of the view, but not the position
§Alignment
View
left_to_left_of- Makes view.x = pivot_view.xtop_to_top_of- Makes view.y = pivot_view.yright_to_right_of- Makes view.x = pivot_view.right - view.widthbottom_to_bottom_of- Makes view.y = pivot_view.bottom - view.heightleft_to_right_of- Makes view.x = pivot_view.x + pivot_view.widthright_to_left_of- Makes view.x = pivot_view.x - view.widthtop_to_bottom_of- Makes view.y = pivot_view.bottombottom_to_top_of- Makes view.y = pivot_view.y - view.heightcenterh_to_centerh_of- Makes view.center.x = pivot_view.center.x (grownot supported)centerv_to_centerv_of- Makes view.center.y = pivot_view.center.y (grownot supported)centerv_to_top_of- Makes view.center.y = pivot_view.y (grownot supported)centerv_to_bottom_of- Makes view.center.y = pivot_view.bottom (grownot supported)centerh_to_left_of- Makes view.center.x = pivot_view.left (grownot supported)centerh_to_right_of- Makes view.center.x = pivot_view.right (grownot supported)left_to_centerh_of- Makes view.x = pivot_view.center.xright_to_centerh_of- Makes view.x = pivot_view.center.x - view.widthtop_to_centerv_of- Makes view.y = pivot_view.center.ybottom_to_centerv_of- Makes view.y = pivot_view.center.y - view.heightcenter_between_horz- Make view.center.x = pivot_view.right midpoint second_pivot_view.leftcenter_between_vert- Make view.center.y = pivot_view.bottom midpoint second_pivot_view.top
Parent
fill_width- Set x to context.left, width to context.width (growonly)fill_height- Set y to context.top, height to context.height (growonly)align_left- Set x to context.leftalign_right- Set x to (context.right - view.width)align_top- Set y to context.topalign_bottom- Set y to (context.bottom - view.height)align_centerh- Set x to context.center.x (when usinggrowmoves view.left or view.right instead)align_centerv- Set y to context.center.y (when usinggrowmoves view.top or view.bottom instead)