
struct pos_t
  left dd ?
  top  dd ?
ends

struct size_t
  width  dd ?
  height dd ?
ends

struct box_t
  pos  pos_t
  size size_t
ends

struct ptr_array_t
  pointers dd ?
  count    dd ?
ends

struct class_t
  _	dd ?
  name	dd ?
  vftbl dd ?
ends

struct widget_t
  class    dd ?
  box	   box_t
  min_size size_t
  flags    dd ?
  parent   dd ?
ends

struct widget_vftbl_t
  calc_min_size dd ?
  paint_widget	dd ?
ends

struct container_t
  _	   widget_t
  children ptr_array_t
ends

struct container_vftbl_t
  _ widget_vftbl_t
ends

LAYOUT_HMINIMAL = 0
LAYOUT_VMINIMAL = 0
LAYOUT_MINIMAL	       = LAYOUT_HMINIMAL or LAYOUT_VMINIMAL
LAYOUT_HEXPAND	= 1
LAYOUT_VEXPAND	= 2
LAYOUT_EXPAND	       = LAYOUT_HEXPAND or LAYOUT_VEXPAND

struct layout_t
  _	    container_t
  sizings   ptr_array_t
  sizing    dd ?
ends

struct layout_vftbl_t
  _		  container_vftbl_t
  add_widget	  dd ?
  arrange_widgets dd ?
ends
