GooCanvas
Apr 29, 2013 17:54:40 GMT 1
Post by alexfish on Apr 29, 2013 17:54:40 GMT 1
Hi All .
Have been looking at GooCanvas , this is a short demo of a GooCanvas Animation
Requires libgoocavas
So may need to Install libgoocanvas-dev
Mod if want
Have Fun
Alex
link to GooCanvas Docs
developer.gnome.org/goocanvas/unstable/
Have been looking at GooCanvas , this is a short demo of a GooCanvas Animation
Requires libgoocavas
So may need to Install libgoocanvas-dev
Mod if want
' @ GooCanvas Animation Demo1
' @ alexfish BaCon ConVerter Forums
'--------------------------------------------------
'@ Click Start , click on moving canvas widget to score
INCLUDE hug.bac
HUGOPTIONS("NOSCALING")
Goo$="libgoocanvas.so"
'@ bits required for GooCanvas demo
IMPORT "goo_canvas_new" FROM Goo$ TYPE long
IMPORT "goo_canvas_rect_new(long,double,double,double,double,...)" FROM Goo$ TYPE long
IMPORT "goo_canvas_get_root_item(long)" FROM Goo$ TYPE long
IMPORT "goo_canvas_set_bounds(long,double,double,double,double)" FROM Goo$ TYPE void
IMPORT "goo_canvas_widget_new(long,long,double,double,double,double,...)" FROM Goo$ TYPE long
IMPORT "goo_canvas_item_animate(long,double,double,double,double,int,int,int,int)" FROM Goo$ TYPE void
IMPORT "goo_canvas_item_set_child_properties(long,long,...)" FROM Goo$ TYPE void
'@ setting for animation
GOO_CANVAS_ANIMATE_FREEZE = 0
GOO_CANVAS_ANIMATE_RESET = 1
GOO_CANVAS_ANIMATE_RESTART = 2
GOO_CANVAS_ANIMATE_BOUNCE = 3
'@ global score
score=0
'@ set up GooCavas using HUG type format
FUNCTION GooCanvas(int hug_xsize, int hug_ysize)
LOCAL canvas ,root
canvas = goo_canvas_new()
goo_canvas_set_bounds(canvas,0,0,hug_xsize,hug_ysize)
IF HUG_WIDGET_SHOW THEN gtk_widget_show_all(canvas)
hug_widget_image(STR$(canvas)) = canvas
hug_widget_xsize(STR$(canvas)) = hug_xsize
hug_widget_ysize(STR$(canvas)) = hug_ysize
hug_widget_signal(STR$(canvas)) = 4
hug_widget_s_widget(STR$(canvas)) = canvas
hug_widget_type$(STR$(canvas)) = "canvas"
RETURN canvas
END FUNCTION
'@ this is a callback to the Canvas item rectangle score
SUB rect_click()
PRINT "Rectangle Clicked"
INCR score
TEXT(entry,STR$(score))
END SUB
SUB animate
goo_canvas_item_animate(rect_item,500,300,2,360,TRUE,1000,5,GOO_CANVAS_ANIMATE_BOUNCE)
/* '@ this is the structure
goo_canvas_item_animate (GooCanvasItem *item,
gdouble x,
gdouble y,
gdouble scale,
gdouble degrees,
gboolean absolute,
gint duration,
gint step_time,
GooCanvasAnimateType type
*/
'@ try setting the values + use @ setting for animation
'-------------------------------------------------------------------------
END SUB
'@ set up a normal hug window
win=WINDOW("test",600,400)
'@ add a GooCanvas Widget
Canvas1= GooCanvas(600,400)
ATTACH (win,Canvas1,0,0)
'@ get the Root of the GooCanvas
Root_Canvas1= goo_canvas_get_root_item(Canvas1)
rect_item = goo_canvas_rect_new (Root_Canvas1, 5, 5, 50, 50, "can-focus",1,"line-width", 2.0,"radius-x", 6.0, "radius-y", 6.0,"fill-color", "brown","stroke-color", "gray",0)
'@ set a callback to the canvas rect_item score
g_signal_connect_data(rect_item, "button-press-event", rect_click, 0, 0, 0)
'@ Add some hug widgets to the canvas
'@ make a hug entry
entry=ENTRY("Score",100,30)
'@ add the ENTRY widget to the canvas
canvas_entry=goo_canvas_widget_new(Root_Canvas1,entry,120,360,-1,-1,0,0)
but1=BUTTON("Start",100,30)
'@ set callback to animate the rectangle
CALLBACK(but1, animate)
canvas_but=goo_canvas_widget_new(Root_Canvas1,but1,10,360,100,30,0,0)
DISPLAY
Have Fun
Alex
link to GooCanvas Docs
developer.gnome.org/goocanvas/unstable/