2007-09-20 18:09:08 -04:00
|
|
|
! Copyright (C) 2007 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2007-11-04 21:24:22 -05:00
|
|
|
USING: ui.backend ui.gadgets ui.gadgets.theme ui.gadgets.lib
|
|
|
|
ui.gadgets.worlds ui.render opengl opengl.gl kernel namespaces
|
2008-09-02 14:02:38 -04:00
|
|
|
classes.tuple colors accessors ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: ui.gadgets.canvas
|
|
|
|
|
2008-07-10 21:32:17 -04:00
|
|
|
TUPLE: canvas < gadget dlist ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-08-27 17:24:04 -04:00
|
|
|
: new-canvas ( class -- canvas )
|
|
|
|
new-gadget black solid-interior ; inline
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: delete-canvas-dlist ( canvas -- )
|
2008-09-02 14:02:38 -04:00
|
|
|
[ find-gl-context ]
|
|
|
|
[ dlist>> [ delete-dlist ] when* ]
|
|
|
|
[ f >>dlist drop ] tri ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: make-canvas-dlist ( canvas quot -- dlist )
|
2008-09-02 14:02:38 -04:00
|
|
|
[ GL_COMPILE ] dip make-dlist
|
|
|
|
[ >>dlist drop ] keep ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: cache-canvas-dlist ( canvas quot -- dlist )
|
2008-09-02 14:02:38 -04:00
|
|
|
over dlist>> dup
|
2007-09-20 18:09:08 -04:00
|
|
|
[ 2nip ] [ drop make-canvas-dlist ] if ; inline
|
|
|
|
|
|
|
|
: draw-canvas ( canvas quot -- )
|
|
|
|
origin get [
|
|
|
|
cache-canvas-dlist glCallList
|
|
|
|
] with-translation ; inline
|
|
|
|
|
|
|
|
M: canvas ungraft* delete-canvas-dlist ;
|