summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Andrieu <oandrieu@gmail.com>2006-11-13 18:46:55 +0000
committerHezekiah M. Carty <hcarty@atmos.umd.edu>2009-06-18 14:01:47 -0400
commit97fa99d6bc1939a961a1f7660c0ade1f6a7fc29e (patch)
treeb16e2e5f76205aa77957691948eda62fe6b8c1f4
parent7bb5641a396cb618399c2dcae304051ad952d86b (diff)
update the cube.ml example to use cairo_lablgtk instead of gtkcairo.
-rw-r--r--test/Makefile7
-rw-r--r--test/cube.ml33
2 files changed, 21 insertions, 19 deletions
diff --git a/test/Makefile b/test/Makefile
index bc43bbc..67822b1 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -3,10 +3,7 @@ include ../config.make
TARGETS = basket kapow
ifdef LABLGTKDIR
-TARGETS += text demo spline knockout font
-ifdef GTKCAIRO_CFLAGS
-TARGETS += cube
-endif
+TARGETS += text demo spline knockout font cube
endif
ifdef LIBSVG_CAIRO_CFLAGS
TARGETS += svg2png
@@ -30,7 +27,7 @@ demo : demo.ml
$(OCAMLOPT) -w s -o $@ -I ../src -I $(LABLGTKDIR) lablgtk.cmxa cairo.cmxa cairo_lablgtk.cmxa gtkInit.cmx $^
cube : cube.ml
- $(OCAMLOPT) -w s -o $@ -I ../src -I $(LABLGTKDIR) lablgtk.cmxa cairo.cmxa gtkcairo.cmxa gtkInit.cmx $^
+ $(OCAMLOPT) -o $@ -I ../src -I $(LABLGTKDIR) lablgtk.cmxa cairo.cmxa cairo_lablgtk.cmxa gtkInit.cmx $^
spline : spline.ml
$(OCAMLOPT) -w s -o $@ -I ../src -I $(LABLGTKDIR) lablgtk.cmxa cairo.cmxa cairo_lablgtk.cmxa gtkInit.cmx $^
diff --git a/test/cube.ml b/test/cube.ml
index b1c4117..2f87383 100644
--- a/test/cube.ml
+++ b/test/cube.ml
@@ -11,23 +11,28 @@ let animate_frame_delay = 40
let rotate_max = 8. *. atan 1.
let initial_size = 200
-let redraw w range cr =
+let get_cairo w =
+ Cairo_lablgtk.create w#misc#window
+
+let redraw w range _ =
+ let cr = get_cairo w in
let { Gtk.width = width ; Gtk.height = height } =
w#misc#allocation in
let box_size = float (width + height) /. 6. in
Cairo.save cr ; begin
- Cairo.default_matrix cr ;
+ Cairo.identity_matrix cr ;
let off = float width /. 2. in
Cairo.translate cr off off ;
Cairo.rotate cr range#adjustment#value ;
Cairo.rectangle cr (~-. box_size) (~-. box_size) box_size box_size ;
- Cairo.set_rgb_color cr 1. 0. 0. ;
+ Cairo.set_source_rgb cr 1. 0. 0. ;
Cairo.fill cr end ;
- Cairo.restore cr
+ Cairo.restore cr ;
+ true
-let slider_changed cr () =
- cr#queue_draw
+let slider_changed w () =
+ GtkBase.Widget.queue_draw w#as_widget
let animate_step range () =
let nv = range#adjustment#value +. animate_rotate_step in
@@ -47,11 +52,9 @@ let animate_toggled button range =
timeout := None
| _ -> ()
-
-
let main =
let w = GWindow.window ~title:"GtkCairo Demo" () in
- w#connect#destroy GMain.quit ;
+ ignore (w#connect#destroy GMain.quit) ;
let b = GPack.vbox ~spacing:6 ~border_width:12
~packing:w#add () in
@@ -59,7 +62,7 @@ let main =
let f = GBin.frame ~shadow_type:`IN
~packing:(b#pack ~expand:true ~fill:true) () in
- let cairo = Cairo_gtkcairo.cairo
+ let area = GMisc.drawing_area
~width:initial_size ~height:initial_size
~packing:f#add () in
let slider = GRange.scale `HORIZONTAL
@@ -70,10 +73,12 @@ let main =
let button = GButton.check_button ~label:"Animate"
~packing:b#pack () in
- cairo#connect#paint (redraw cairo slider) ;
- slider#connect#value_changed
- (slider_changed cairo) ;
- button#connect#toggled (animate_toggled button slider) ;
+ ignore (area#event#connect#expose
+ (redraw area slider)) ;
+ ignore (slider#connect#value_changed
+ (slider_changed area)) ;
+ ignore (button#connect#toggled
+ (animate_toggled button slider)) ;
w#show () ;
GMain.main ()