AG_Box — agar box
    container widget
#include <agar/core.h>
#include <agar/gui.h>
 
AG_Box is a general-purpose container
    widget which aligns and packs its widgets either horizontally or vertically
    based on their size requisitions and adds spacing and padding. Overflowing
    widgets are clipped.
Widgets with AG_WIDGET_HFILL expand
    horizontally to fill remaining space. Widgets with
    AG_WIDGET_VFILL expand vertically to fill remaining
    space.
Horizontal boxes allow only up to 1 widget with
    AG_WIDGET_HFILL (and any number with
    AG_WIDGET_VFILL).
Vertical boxes allow only up to 1 widget with
    AG_WIDGET_VFILL (and any number with
    AG_WIDGET_HFILL).
AG_Box *
  
  AG_BoxNew(AG_Widget
    *parent, enum ag_box_type
    type, Uint
  flags);
  
  AG_Box *
  
  AG_BoxNewHoriz(AG_Widget
    *parent, Uint
    flags);
  
  AG_Box *
  
  AG_BoxNewVert(AG_Widget
    *parent, Uint
    flags);
  
  void
  
  AG_BoxSetLabel(AG_Box
    *box, const char
    *format, ...);
  
  void
  
  AG_BoxSetLabelS(AG_Box
    *box, const char
    *text);
  
  void
  
  AG_BoxSizeHint(AG_Box
    *box, int width,
    int height);
  
  void
  
  AG_BoxSetHomogenous(AG_Box
    *box, int
    homogenous);
  
  void
  
  AG_BoxSetDepth(AG_Box
    *box, int
  depth);
  
  void
  
  AG_BoxSetHorizAlign(AG_Box
    *box, enum ag_box_align
    align);
  
  void
  
  AG_BoxSetVertAlign(AG_Box
    *box, enum ag_box_align
    align);
AG_BoxNew()
    allocates, initializes, and attaches a new AG_Box
    container. type can be
    AG_BOX_HORIZ for horizontal packing
    AG_BOX_VERT for vertical packing. Acceptable
    flags include:
  - AG_BOX_HOMOGENOUS
 
  - Divide space into equal parts.
 
  - AG_BOX_SHADING
 
  - Show 3D-style shading even if no "background-color".
 
  - AG_BOX_HFILL
 
  - Expand horizontally in parent container.
 
  - AG_BOX_VFILL
 
  - Expand vertically in parent container.
 
  - AG_BOX_EXPAND
 
  - Shorthand for 
AG_BOX_HFILL |
      AG_BOX_VFILL. 
  - AG_BOX_NO_SPACING
 
  - Set "padding" and "spacing" style attributes to
      "0".
 
The
    AG_BoxNewHoriz()
    and AG_BoxNewVert() variants are equivalent to
    setting AG_BOX_HORIZ and
    AG_BOX_VERT.
AG_BoxSetStyle()
    selects an alternate background and border style:
  AG_BOX_STYLE_NONE 
  - No background.
 
  AG_BOX_STYLE_BOX 
  - Raised box & border.
 
  AG_BOX_STYLE_WELL 
  - 3D well & border (the default).
 
  AG_BOX_STYLE_PLAIN 
  - Filled rectangle.
 
Visible background styles use the style attributes
    "background-color", "low-color" and
    "high-color".
AG_BoxSetLabel()
    arranges for a text label to be displayed over the container. If an argument
    of NULL is passed, the label is removed.
AG_BoxSizeHint()
    sets a specific size requisition in pixels (-1 = auto). The default is
    determined by the size requisition of attached widgets.
AG_BoxSetHomogenous()
    sets or clears the AG_BOX_HOMOGENOUS flag, which
    controls whether available space is divided evenly between widgets.
AG_BoxSetDepth()
    sets the depth of the shading for
  AG_BOX_SHADING.
AG_BoxSetHorizAlign()
    and AG_BoxSetVertAlign() specify the horizontal or
    vertical alignment of widgets. Horizontal alignment can be
    AG_BOX_LEFT (default),
    AG_BOX_CENTER or
    AG_BOX_RIGHT. Vertical alignment can be
    AG_BOX_TOP (default),
    AG_BOX_CENTER or
    AG_BOX_BOTTOM.
The AG_Box widget does not generate any
    event.
For the AG_Box object:
  - enum ag_box_style style
 
  - Background style (see 
AG_BoxSetStyle()). 
The following code fragment packs two columns of buttons:
AG_Window *win;
AG_Box *boxHoriz, *boxCol[2];
int i;
win = AG_WindowNew(0);
boxHoriz = AG_BoxNewVert(win, 0);
boxCol[0] = AG_BoxNewHoriz(boxHoriz, 0);
boxCol[1] = AG_BoxNewHoriz(boxHoriz, 0);
for (i = 0; i < 5; i++)
	AG_ButtonNew(boxCol[0], 0, "In column 1");
for (i = 0; i < 5; i++)
	AG_ButtonNew(boxCol[1], 0, "In column 2");
AG_WindowShow(win);
 
The AG_Box widget first appeared in Agar
    1.0. In Agar 1.6.0, the AG_BoxSetPadding() and
    AG_BoxSetSpacing() functions were deprecated in
    favor of the generic "padding" and "spacing" style
    attributes.