1 ! Copyright (C) 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: ui.backend ui.gadgets ui.gadgets.theme ui.gadgets.worlds
4 ui.render opengl opengl.gl kernel namespaces tuples colors ;
9 : <canvas> ( -- canvas )
10 canvas construct-gadget
11 dup black solid-interior ;
13 : find-gl-context ( gadget -- )
14 find-world world-handle select-gl-context ;
16 : delete-canvas-dlist ( canvas -- )
18 dup canvas-dlist [ delete-dlist ] when*
19 f swap set-canvas-dlist ;
21 : make-canvas-dlist ( canvas quot -- dlist )
22 over >r GL_COMPILE swap make-dlist dup r>
25 : cache-canvas-dlist ( canvas quot -- dlist )
27 [ 2nip ] [ drop make-canvas-dlist ] if ; inline
29 : draw-canvas ( canvas quot -- )
31 cache-canvas-dlist glCallList
32 ] with-translation ; inline
34 M: canvas ungraft* delete-canvas-dlist ;