added eugtk examples
This commit is contained in:
93
eugtk/examples/test61.ex
Normal file
93
eugtk/examples/test61.ex
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
--# Simple Cairo graphics
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
include GtkEngine.e
|
||||
include GtkCairo.e
|
||||
|
||||
include std/mathcons.e
|
||||
|
||||
atom surf = create(CairoImageSurface,"./thumbnails/MorningRain.png")
|
||||
|
||||
constant win = create(GtkWindow,
|
||||
"icon=applications-graphics,resizable=FALSE,position=1,$destroy=Quit")
|
||||
|
||||
constant box = create(GtkBox,HORIZONTAL)
|
||||
|
||||
-- redraw whenever necessary. if you don't do this, other windows will destroy
|
||||
-- contents of this window when they overlay it:
|
||||
connect(box,"draw","Paint")
|
||||
|
||||
constant screen = create(GtkDrawingArea,"size request=400x300")
|
||||
add(box,screen)
|
||||
add(win,box)
|
||||
|
||||
show_all(win)
|
||||
constant dwin = get(screen,"window")
|
||||
main()
|
||||
|
||||
---------------------------------------------------------
|
||||
global function Paint(atom ctl, atom event)
|
||||
---------------------------------------------------------
|
||||
atom cr = create(GdkCairo_t,dwin) -- new cairo_t
|
||||
|
||||
---- background image;
|
||||
set(cr,{
|
||||
{"source surface",surf,1,1},
|
||||
{"paint"},
|
||||
|
||||
---- text;
|
||||
{"color","black"},
|
||||
{"move to",10,30},
|
||||
{"font size",30},
|
||||
{"show text","Drawing Primitives"},
|
||||
|
||||
---- text;
|
||||
{"color","red"},
|
||||
{"move to",200,200},
|
||||
{"font size",20},
|
||||
{"show text","Hello World!"},
|
||||
|
||||
---- triangle;
|
||||
{"color","yellow"},
|
||||
{"line width",2},
|
||||
{"move to",100,100},
|
||||
{"line to",200,200},
|
||||
{"line to",200,100},
|
||||
{"line to",100,100},
|
||||
{"stroke"},
|
||||
|
||||
---- rectangle blue;
|
||||
{"source rgba",0,0,#FF,0.4}, -- alternate way to set color and alpha;
|
||||
{"rectangle",80,80,40,50},
|
||||
{"fill preserve"},
|
||||
|
||||
---- add white outline;
|
||||
{"source rgb",#FF,#FF,#FF}, -- alternate way to set color;
|
||||
{"line width",2},
|
||||
{"stroke"}})
|
||||
|
||||
---- the arc or circle 0 or starting point is at 90 degrees or 3 o'clock;
|
||||
---- I find it easier to think in terms of N,S,E,W, with north at 0/360
|
||||
---- therefore this simple conversion code;
|
||||
|
||||
atom degree = math:TWOPI/360
|
||||
atom north = -degree*90
|
||||
atom east = north + (degree*90)
|
||||
atom south = east + (degree*90)
|
||||
atom west = south + (degree*90)
|
||||
|
||||
set(cr,{
|
||||
{"source rgba",0,#FF,0,0.4}, -- semi-transparent green circle;
|
||||
{"line width",2},
|
||||
{"arc",200,200,55,north,degree*360}, -- 'from due north to north + 360 degrees'
|
||||
{"fill"},
|
||||
|
||||
{"destroy"}}) -- important!
|
||||
|
||||
return 1
|
||||
end function
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user