1 USING: cairo ui.render kernel opengl.gl opengl
2 math byte-arrays ui.gadgets accessors arrays
7 TUPLE: cairo-gadget width height quot ;
8 : <cairo-gadget> ( width height quot -- cairo-gadget )
9 cairo-gadget construct-gadget
14 : with-surface ( surface quot -- )
15 >r dup cairo_create dup r> call
16 cairo_destroy cairo_surface_destroy ;
18 : cairo>bytes ( width height quot -- byte-array )
20 [ * nip <byte-array> dup CAIRO_FORMAT_ARGB32 ]
21 [ cairo_image_surface_create_for_data ] 3bi
24 M: cairo-gadget draw-gadget* ( gadget -- )
28 [ width>> ] [ height>> ] [ quot>> ] tri
29 [ drop GL_RGBA GL_UNSIGNED_BYTE ] [ cairo>bytes ] 3bi
33 M: cairo-gadget pref-dim* ( gadget -- rect )
34 [ width>> ] [ height>> ] bi 2array ;