2005-03-10 17:57:22 -05:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
IN: gadgets
|
2005-06-29 19:40:44 -04:00
|
|
|
USING: errors generic hashtables kernel lists math matrices
|
|
|
|
namespaces sdl vectors ;
|
2005-03-10 17:57:22 -05:00
|
|
|
|
|
|
|
! A border lays out its children on top of each other, all with
|
|
|
|
! a 5-pixel padding.
|
|
|
|
TUPLE: border size ;
|
|
|
|
|
|
|
|
C: border ( child delegate size -- border )
|
|
|
|
[ set-border-size ] keep
|
|
|
|
[ set-delegate ] keep
|
|
|
|
[ over [ add-gadget ] [ 2drop ] ifte ] keep ;
|
|
|
|
|
|
|
|
: empty-border ( child -- border )
|
|
|
|
<empty-gadget> 5 <border> ;
|
|
|
|
|
|
|
|
: line-border ( child -- border )
|
2005-03-22 21:20:58 -05:00
|
|
|
0 0 0 0 <etched-rect> <gadget> 5 <border> ;
|
2005-03-10 17:57:22 -05:00
|
|
|
|
|
|
|
: filled-border ( child -- border )
|
2005-06-23 03:15:44 -04:00
|
|
|
<plain-gadget> 5 <border> ;
|
2005-03-10 17:57:22 -05:00
|
|
|
|
|
|
|
: gadget-child gadget-children car ;
|
|
|
|
|
|
|
|
: layout-border-x/y ( border -- )
|
|
|
|
dup border-size dup rot gadget-child move-gadget ;
|
|
|
|
|
|
|
|
: layout-border-w/h ( border -- )
|
|
|
|
[ border-size 2 * ] keep
|
|
|
|
[ shape-w over - ] keep
|
|
|
|
[ shape-h rot - ] keep
|
|
|
|
gadget-child resize-gadget ;
|
|
|
|
|
2005-06-28 23:50:23 -04:00
|
|
|
M: border pref-dim ( border -- dim )
|
2005-06-29 19:40:44 -04:00
|
|
|
[ border-size dup dup 3vector 2 v*n ] keep
|
|
|
|
gadget-child pref-dim v+ ;
|
2005-03-10 17:57:22 -05:00
|
|
|
|
|
|
|
M: border layout* ( border -- )
|
|
|
|
dup layout-border-x/y layout-border-w/h ;
|