1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors colors arrays kernel sequences math byte-arrays
4 namespaces grouping fry cap graphics.bitmap
5 ui.gadgets ui.gadgets.packs ui.gadgets.borders ui.gadgets.grids
6 ui.gadgets.grid-lines ui.gadgets.labels ui.gadgets.buttons
7 ui.render ui opengl opengl.gl ;
12 M: line-test draw-interior
13 2drop { 0 0 } { 0 10 } gl-line ;
15 : <line-gadget> ( -- gadget )
20 : message-window ( text -- )
21 <label> "Message" open-window ;
25 : twiddle ( bytes -- bytes )
26 #! On Windows, white is { 253 253 253 } ?
29 : stride ( bitmap -- n ) width>> 3 * ;
31 : bitmap= ( bitmap1 bitmap2 -- ? )
33 [ [ array>> ] [ stride 4 align ] bi group ] [ stride ] bi
34 '[ _ head twiddle ] map
37 : check-rendering ( gadget -- )
39 [ render-output set-global ]
41 "resource:extra/ui/render/test/reference.bmp" load-bitmap
42 bitmap= "is perfect" "needs work" ?
43 "Your UI rendering " prepend
47 TUPLE: take-screenshot { first-time? initial: t } ;
49 M: take-screenshot draw-boundary
56 : <ui-render-test> ( -- gadget )
58 take-screenshot new >>boundary
60 black <solid> >>interior
64 gray <solid> >>boundary
67 red <solid> >>boundary
69 <line-gadget> <line-gadget> <line-gadget> 3array
70 <line-gadget> <line-gadget> <line-gadget> 3array
71 <line-gadget> <line-gadget> <line-gadget> 3array
74 blue <grid-lines> >>boundary
78 black <checkmark-paint> >>interior
79 black <solid> >>boundary
83 : ui-render-test ( -- )
84 <ui-render-test> "Test" open-window ;