refactor cairo-demo a bit
parent
c3ef25f81c
commit
ea851e3a32
|
@ -7,17 +7,16 @@
|
|||
|
||||
|
||||
USING: cairo.ffi math math.constants byte-arrays kernel ui ui.render
|
||||
ui.gadgets opengl.gl accessors ;
|
||||
combinators ui.gadgets opengl.gl accessors ;
|
||||
|
||||
IN: cairo-demo
|
||||
|
||||
|
||||
: make-image-array ( -- array )
|
||||
384 256 4 * * <byte-array> ;
|
||||
384 256 4 * * <byte-array> ;
|
||||
|
||||
: convert-array-to-surface ( array -- cairo_surface_t )
|
||||
CAIRO_FORMAT_ARGB32 384 256 over 4 *
|
||||
cairo_image_surface_create_for_data ;
|
||||
CAIRO_FORMAT_ARGB32 384 256 over 4 *
|
||||
cairo_image_surface_create_for_data ;
|
||||
|
||||
|
||||
TUPLE: cairo-demo-gadget < gadget image-array cairo-t ;
|
||||
|
@ -33,41 +32,52 @@ M: cairo-demo-gadget draw-gadget* ( gadget -- )
|
|||
convert-array-to-surface ;
|
||||
|
||||
: init-cairo ( gadget -- cairo_t )
|
||||
create-surface cairo_create ;
|
||||
create-surface cairo_create ;
|
||||
|
||||
M: cairo-demo-gadget pref-dim* drop { 384 256 0 } ;
|
||||
|
||||
ERROR: no-cairo-t ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: draw-hello-world ( gadget -- )
|
||||
cairo-t>>
|
||||
dup "Sans" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_BOLD cairo_select_font_face
|
||||
dup 90.0 cairo_set_font_size
|
||||
dup 10.0 135.0 cairo_move_to
|
||||
dup "Hello" cairo_show_text
|
||||
dup 70.0 165.0 cairo_move_to
|
||||
dup "World" cairo_text_path
|
||||
dup 0.5 0.5 1 cairo_set_source_rgb
|
||||
dup cairo_fill_preserve
|
||||
dup 0 0 0 cairo_set_source_rgb
|
||||
dup 2.56 cairo_set_line_width
|
||||
dup cairo_stroke
|
||||
dup 1 0.2 0.2 0.6 cairo_set_source_rgba
|
||||
dup 10.0 135.0 5.12 0 pi 2 * cairo_arc
|
||||
dup cairo_close_path
|
||||
dup 70.0 165.0 5.12 0 pi 2 * cairo_arc
|
||||
cairo_fill ;
|
||||
cairo-t>> [ no-cairo-t ] unless*
|
||||
{
|
||||
[
|
||||
"Sans" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_BOLD
|
||||
cairo_select_font_face
|
||||
]
|
||||
[ 90.0 cairo_set_font_size ]
|
||||
[ 10.0 135.0 cairo_move_to ]
|
||||
[ "Hello" cairo_show_text ]
|
||||
[ 70.0 165.0 cairo_move_to ]
|
||||
[ "World" cairo_text_path ]
|
||||
[ 0.5 0.5 1 cairo_set_source_rgb ]
|
||||
[ cairo_fill_preserve ]
|
||||
[ 0 0 0 cairo_set_source_rgb ]
|
||||
[ 2.56 cairo_set_line_width ]
|
||||
[ cairo_stroke ]
|
||||
[ 1 0.2 0.2 0.6 cairo_set_source_rgba ]
|
||||
[ 10.0 135.0 5.12 0 pi 2 * cairo_arc ]
|
||||
[ cairo_close_path ]
|
||||
[ 70.0 165.0 5.12 0 pi 2 * cairo_arc ]
|
||||
[ cairo_fill ]
|
||||
} cleave ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
M: cairo-demo-gadget graft* ( gadget -- )
|
||||
dup dup init-cairo swap (>>cairo-t) draw-hello-world ;
|
||||
dup dup init-cairo swap (>>cairo-t) draw-hello-world ;
|
||||
|
||||
M: cairo-demo-gadget ungraft* ( gadget -- )
|
||||
cairo-t>> cairo_destroy ;
|
||||
cairo-t>> cairo_destroy ;
|
||||
|
||||
: <cairo-demo-gadget> ( -- gadget )
|
||||
cairo-demo-gadget new-gadget ;
|
||||
cairo-demo-gadget new-gadget ;
|
||||
|
||||
: run ( -- )
|
||||
[
|
||||
[
|
||||
<cairo-demo-gadget> "Hello World from Factor!" open-window
|
||||
] with-ui ;
|
||||
] with-ui ;
|
||||
|
||||
MAIN: run
|
||||
|
|
Loading…
Reference in New Issue