]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/pens/solid/solid.factor
Switch to https urls
[factor.git] / basis / ui / pens / solid / solid.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors colors kernel math opengl ui.pens
4 ui.pens.caching ;
5 IN: ui.pens.solid
6
7 TUPLE: solid < caching-pen color interior-vertices boundary-vertices ;
8
9 : <solid> ( color -- solid ) solid new swap >>color ;
10
11 M: solid recompute-pen
12     swap dim>>
13     [ [ { 0 0 } ] dip (fill-rect-vertices) >>interior-vertices ]
14     [ [ { 0 0 } ] dip (rect-vertices) >>boundary-vertices ]
15     bi drop ;
16
17 <PRIVATE
18
19 : (solid) ( gadget pen -- )
20     [ compute-pen ] [ color>> gl-color ] bi ;
21
22 PRIVATE>
23
24 M: solid draw-interior
25     [ (solid) ] [ interior-vertices>> gl-vertex-pointer ] bi
26     (gl-fill-rect) ;
27
28 M: solid draw-boundary
29     [ (solid) ] [ boundary-vertices>> gl-vertex-pointer ] bi
30     (gl-rect) ;
31
32 M: solid pen-background
33     nip color>> dup alpha>> 1 number= [ drop transparent ] unless ;