1 ! Copyright (C) 2005, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays generic kernel math namespaces sequences words
4 splitting math.vectors ui.gadgets.grids ui.gadgets ;
7 ! A frame arranges gadgets in a 3x3 grid, where the center
8 ! gadgets gets left-over space.
11 : <frame-grid> 9 [ drop <gadget> ] map 3 group ;
24 : <frame> ( -- frame )
26 <frame-grid> <grid> over set-gadget-delegate ;
28 : (fill-center) ( vec n -- )
29 over first pick third v+ [v-] 1 rot set-nth ;
31 : fill-center ( horiz vert dim -- )
32 tuck (fill-center) (fill-center) ;
36 [ rot rect-dim fill-center ] 3keep
39 : make-frame ( quot -- frame )
40 <frame> make-gadget ; inline
42 : build-frame ( tuple quot -- tuple )
43 <frame> build-gadget ; inline
45 : frame, ( gadget i j -- )
46 \ make-gadget get -rot grid-add ;