eumandy/eugtk/examples/test70.ex
2016-11-25 00:33:18 -07:00

64 lines
1.6 KiB
Elixir

-------------------------------------------------------------------------
--# Drawing text with Cairo;
-- seldom worth the trouble, unless you need to add
-- images under/over or intermixed with the text.
-------------------------------------------------------------------------
include GtkEngine.e
include GtkCairo.e
include std/math.e
constant fnt = create(PangoFontDescription,"Serif 10")
constant win = create(GtkWindow,
"title=`Drawing Text with Cairo`,position=1,border_width=10,$destroy=Quit")
constant panel = create(GtkBox)
add(win,panel)
constant screen = create(GtkDrawingArea)
add(panel,screen)
show_all(win)
connect(panel,"draw","Paint")
main()
----------------------------------------------------------
global function Paint(atom ctl, atom event, atom data)
----------------------------------------------------------
atom dwin = get(screen,"window")
atom cr = create(GdkCairo_t,dwin)
set(cr,{ -- draw a strange shape;
{"source rgb",0,0,#ff},
{"move to",2,2},
{"arc",80,80,60,60, 2.0 * math:PI}, -- create shape
{"source rgba",0.6, 0.0, 0.8, 0.3}, -- partially translucent color
{"fill_preserve"}, -- fill shape with color, save shape
{"color","blue"},
{"line width",2}, -- outline
{"stroke"}, -- draw outline around saved shape
{"color","black"},
{"move to",5,5}, -- starting point for text
$})
atom layout = create(PangoLayout,cr)
set(layout,{ -- draw text;
{"font description",fnt},
{"text",LGPL,-1},
{"show layout",cr}})
object dim = get(layout,"pixel size") -- get width & height of text
set(screen,"size request",dim[1],dim[2]) -- adjust to accomodate text
set(cr,"destroy")
return 1
end function