64 lines
1.6 KiB
Elixir
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
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|