
Clutter in D test 1
By: a guest on
Jun 2nd, 2011 | syntax:
D | size: 2.06 KB | hits: 84 | expires: Never
module test2;
import std.stdio;
import std.string,
std.conv;
import gtkc.gobject,
gtkc.gobjecttypes;
import ccb.SharedLibrary;
enum ClutterInitError {
SUCCESS = 1,
UNKNOWN = 0,
THREADS = -1,
BACKEND = -2,
INTERNAL = -3
}
struct ClutterActor { uint flags; }
struct ClutterStage {}
struct ClutterContainer {}
struct ClutterColor { ubyte red, green, blue, alpha; }
char* cstring(string s) { return cast(char*)toStringz(s); }
void main(string[] args)
{
auto clutter = new SharedLibrary("libclutter-glx-1.0.so", RTLD_NOW | RTLD_GLOBAL);
auto clutter_init = clutter.getSymbol!(ClutterInitError function(int*, char***))("clutter_init");
auto clutter_main = clutter.getSymbol!(void function())("clutter_main");
auto clutter_main_quit = clutter.getSymbol!(void function())("clutter_main_quit");
auto clutter_stage_get_default = clutter.getSymbol!(ClutterActor* function())("clutter_stage_get_default");
auto clutter_actor_set_size = clutter.getSymbol!(void function(ClutterActor*, float, float))("clutter_actor_set_size");
auto clutter_actor_show_all = clutter.getSymbol!(void function(ClutterActor*))("clutter_actor_show_all");
auto clutter_text_new_full = clutter.getSymbol!(ClutterActor* function(char*, char*, ClutterColor*))("clutter_text_new_full");
auto clutter_container_add_actor = clutter.getSymbol!(void function(ClutterContainer*, ClutterActor*))("clutter_container_add_actor");
auto err = clutter_init(null, null);
writeln(to!string(err));
if (err != ClutterInitError.SUCCESS)
return;
ClutterActor* stage;
ClutterActor* textbox;
ClutterColor txtColor = { 0, 0, 100, 255};
stage = clutter_stage_get_default();
clutter_actor_set_size(stage, 400, 400);
textbox = clutter_text_new_full(cstring("Sans 24"), cstring("Hello, world"), &txtColor);
clutter_container_add_actor(cast(ClutterContainer*)stage, textbox);
clutter_actor_show_all(stage);
g_signal_connect_object(stage, cstring("key-press-event"),
cast(GCallback)clutter_main_quit, null, cast(GConnectFlags)0);
clutter_main();
}