factor/basis/ui/gadgets/canvas/canvas.factor

29 lines
870 B
Factor
Raw Normal View History

2009-03-07 02:22:21 -05:00
! Copyright (C) 2007, 2009 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
2009-03-07 02:22:21 -05:00
USING: ui.backend ui.gadgets ui.gadgets.worlds ui.pens.solid opengl
opengl.gl kernel namespaces classes.tuple colors colors.constants
accessors ;
2007-09-20 18:09:08 -04:00
IN: ui.gadgets.canvas
TUPLE: canvas < gadget dlist ;
2007-09-20 18:09:08 -04:00
2008-08-27 17:24:04 -04:00
: new-canvas ( class -- canvas )
2009-03-07 02:22:21 -05:00
new COLOR: 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 ]
2008-11-25 17:26:17 -05:00
[ [ [ delete-dlist ] when* f ] change-dlist drop ] bi ;
2007-09-20 18:09:08 -04:00
: make-canvas-dlist ( canvas quot -- dlist )
2008-09-02 22:21:37 -04:00
[ drop ] [ GL_COMPILE swap make-dlist ] 2bi
[ >>dlist drop ] keep ; inline
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 -- )
2009-03-07 02:22:21 -05:00
cache-canvas-dlist glCallList ; inline
2007-09-20 18:09:08 -04:00
M: canvas ungraft* delete-canvas-dlist ;