Browse thread
[ANN]Amthing - a multi-threaded GUI library
- Satoshi Ogasawara
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Satoshi Ogasawara <ogasawara@i...> |
| Subject: | [ANN]Amthing - a multi-threaded GUI library |
Hello list,
I'm please to announce the first public release of Amthing, a multi-threaded
GUI library for OCaml.
Features are:
- Multi-threaded design using Concurrent ML style message passing.
- Time-line animation and functional reactive sprite system.
- X11 Binding.
- 2D vector rendering by cairo.
Here's a "Hello world" example of Amthing.
open Ccell
open Event
open Amthing.Util.Persavatives
module W = Amthing.Core.Window ( Amthing.XWindow )
module K = Amthing.KeyCode
module E = Amthing.WinEvent
module S = Amthing.Sprite
module C = Amthing.Component
let wh = W.make (Amthing.XWindow.default_parameter ())
let tc = lazy (W.make_text_context wh)
let _ =
W.resize wh {| x = 0; y = 0; w = 200; h = 200 |};
let hello =
new S.label !$tc "hello world!"
+> S.set (`X 55.)
+> S.set (`Y 90.)
+> S.set (`Color Amthing.Color.blue)
+> C.make
in
W.add_visible wh hello;
W.set_title wh "amthing hello world!";
W.show wh;
let main_loop () =
match select [ Bcast.receive (W.event wh) ] with
`KEY_PRESS input when E.key_code input = Some K._q ->
W.close wh;
exit 0
| #E.t -> ()
in
forever main_loop ()
you can clone the repository from OCamlForge subversion :
svn checkout svn://svn.forge.ocamlcore.org/svnroot/amthing
or view souce code on the web.
http://forge.ocamlcore.org/plugins/scmsvn/viewcvs.php/trunk/?root=amthing
have fun,
---
Ogasawara Satoshi
| - Email: ogasawara@itpl.co.jp