X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Flablgtk%2Flablgtk_20001129-0.1.0%2Fexamples%2Fimage.ml;fp=helm%2FDEVEL%2Flablgtk%2Flablgtk_20001129-0.1.0%2Fexamples%2Fimage.ml;h=faf82cf4464c88f6bbd817ce9fdf27f0ed53c4e0;hb=7aa91a2cd4497f68ebf5b9dd85b5f2c791f738a1;hp=0000000000000000000000000000000000000000;hpb=044a71416237d8e2b575678b5f49b8c9380ca409;p=helm.git diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml new file mode 100644 index 000000000..faf82cf44 --- /dev/null +++ b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml @@ -0,0 +1,67 @@ +(* $Id$ *) + +open GMain +open Gdk + +(* load image *) +let buf = String.create (256*256*3) +let ic = open_in_bin "image256x256.rgb" +let _ = + really_input ic ~buf:buf ~pos:0 ~len:(256*256*3); + close_in ic + +let rgb_at x y = + let offset = (y * 256 + x) * 3 in + (int_of_char buf.[offset ], + int_of_char buf.[offset+1], + int_of_char buf.[offset+2]) + +(* let id = Thread.create GtkThread.main () *) + +(* Choose a visual appropriate for RGB *) +let _ = + Gdk.Rgb.init (); + GtkBase.Widget.set_default_visual (Gdk.Rgb.get_visual ()); + GtkBase.Widget.set_default_colormap (Gdk.Rgb.get_cmap ()) + +(* We need show: true because of the need of visual *) +let window = GWindow.window ~show:true ~width: 256 ~height: 256 () + +let visual = window#misc#visual + +let color_create = Truecolor.color_creator visual + +let w = window#misc#window +let drawing = new GDraw.drawable w + +let _ = + window#connect#destroy ~callback:Main.quit; + + let image = + Image.create ~kind: `FASTEST ~visual: visual ~width: 256 ~height: 256 + in + + let draw () = + for x = 0 to 255 do + for y = 0 to 255 do + let r,g,b = rgb_at x y in + Image.put_pixel image ~x: x ~y: y + ~pixel: (color_create ~red: (r * 256) ~green: (g * 256) ~blue: (b * 256)) + done + done + in + + let display () = + drawing#image image ~xsrc:0 ~ysrc:0 ~xdest:0 ~ydest:0 ~width:256 ~height:256 + in + + draw (); + + window#event#connect#after#expose ~callback: + begin fun _ -> + display (); false + end; + (* Thread.join id *) + + window#show (); + Main.main ()