factor/basis/ui/gadgets/debug/debug.factor

51 lines
1.4 KiB
Factor
Raw Normal View History

! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2009-02-28 21:32:51 -05:00
USING: accessors arrays colors.constants combinators kernel
opengl sequences ui ui.baseline-alignment ui.gadgets
ui.gadgets.buttons ui.gadgets.labels ui.pens ui.render ui.text ;
IN: ui.gadgets.debug
TUPLE: baseline-gadget < gadget baseline cap-height ;
M: baseline-gadget baseline baseline>> ;
M: baseline-gadget cap-height cap-height>> ;
: <baseline-gadget> ( baseline cap-height dim -- gadget )
baseline-gadget new
swap >>dim
swap >>cap-height
swap >>baseline ;
! An intentionally broken gadget -- used to test UI error handling,
! make sure that one bad gadget doesn't bring the whole system down
: <bad-button> ( -- button )
"Click me if you dare"
[ "Haha" throw ]
2009-02-14 20:50:22 -05:00
<border-button> ;
TUPLE: bad-gadget < gadget ;
M: bad-gadget draw-gadget* "Lulz" throw ;
M: bad-gadget pref-dim* drop { 100 100 } ;
: <bad-gadget> ( -- gadget ) bad-gadget new ;
: bad-gadget-test ( -- )
<bad-button> "Test 1" open-window
<bad-gadget> "Test 2" open-window ;
2009-02-28 21:32:51 -05:00
SINGLETON: metrics-paint
M: metrics-paint draw-boundary
drop
COLOR: red gl-color
[ dim>> ] [ >label< line-metrics ] bi
[ [ first ] [ ascent>> ] bi* [ nip 0 swap 2array ] [ 2array ] 2bi gl-line ]
[ drop gl-rect ]
2bi ;
: <metrics-gadget> ( text font -- gadget )
[ <label> ] dip >>font metrics-paint >>boundary ;