1 ! Copyright (C) 2007, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: ui.backend ui.gadgets ui.gadgets.worlds ui.pens.solid
5 opengl opengl.gl kernel namespaces classes.tuple colors
10 TUPLE: canvas < gadget dlist ;
12 : new-canvas ( class -- canvas )
13 new COLOR: black <solid> >>interior ; inline
15 : delete-canvas-dlist ( canvas -- )
17 [ [ [ delete-dlist ] when* f ] change-dlist drop ] bi ;
19 : make-canvas-dlist ( canvas quot -- dlist )
20 [ drop ] [ GL_COMPILE swap make-dlist ] 2bi
21 [ >>dlist drop ] keep ; inline
23 : cache-canvas-dlist ( canvas quot -- dlist )
25 [ 2nip ] [ drop make-canvas-dlist ] if ; inline
27 : draw-canvas ( canvas quot -- )
28 cache-canvas-dlist glCallList ; inline
30 M: canvas ungraft* delete-canvas-dlist ;