1 ! Copyright (C) 2008, 2009 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 colors.constants ;
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 dup [ [ height>> ] [ stride ] bi * ] [ array>> length ] bi = [
34 [ [ array>> ] [ stride 4 align ] bi group ] [ stride ] bi
35 '[ _ head twiddle ] map
39 : check-rendering ( gadget -- )
41 [ render-output set-global ]
43 "resource:extra/ui/render/test/reference.bmp" load-bitmap
44 bitmap= "is perfect" "needs work" ?
45 "Your UI rendering " prepend
49 TUPLE: take-screenshot { first-time? initial: t } ;
51 M: take-screenshot draw-boundary
58 : <ui-render-test> ( -- gadget )
60 take-screenshot new >>boundary
62 COLOR: black <solid> >>interior
64 { 1 1 } <border> add-gadget
66 COLOR: gray <solid> >>boundary
69 COLOR: red <solid> >>boundary
71 <line-gadget> <line-gadget> <line-gadget> 3array
72 <line-gadget> <line-gadget> <line-gadget> 3array
73 <line-gadget> <line-gadget> <line-gadget> 3array
76 COLOR: blue <grid-lines> >>boundary
80 COLOR: black <checkmark-paint> >>interior
81 COLOR: black <solid> >>boundary
85 : ui-render-test ( -- )
86 <ui-render-test> "Test" open-window ;