GNOME Seed で Clutter を使ってみる

Clutter とは、OpenGLを使って3次元効果を演出するライブラリだそうです。
適当に、 http://www.tuxradar.com/content/clutter-beginners-tutorial あたりを使って作ってみました。
色の違う四角を回転させながら重ねるだけのサンプルです。

#! /usr/bin/env seed

const NUM_RECT = 12;
const color_step = 255 / NUM_RECT;
const rotate_step = 360 / NUM_RECT;

const Clutter = imports.gi.Clutter;

Clutter.init (Seed.argv);

var stage_color = new Clutter.Color.c_new (0, 0, 0, 255);
var stage = new Clutter.Stage();
stage.set_size (200,200);
stage.set_color (stage_color);

var rect_colors = new Array(NUM_RECT);
for (var i = 0; i < NUM_RECT; i++) {
	rect_colors[i] = new Clutter.Color.c_new (color_step * i, 255 - color_step * i, 0, 128);
}
var rects = new Array(NUM_RECT);
for (var i = 0; i < NUM_RECT; i++) {
	rects[i] = new Clutter.Rectangle.with_color (rect_colors[i]);
	rects[i].width = 100;
	rects[i].height = 50;
	rects[i].set_position (100, 100);
	rects[i].set_rotation (Clutter.RotateAxis.Z_AXIS, rotate_step * i, 0, 0, 0);
	stage.add_actor(rects[i]);
	rects[i].show();
}

stage.show();
Clutter.main();

Clutter.main_quit()を使ってないので、実行したらCtrl+Cで終了する必要があります。

プログラムは、Clutter.init()で初期化して、stageというClutter.Stageオブジェクトを作り、その上にrects配列に格納した色と回転を加えたClutter.Rectangleオブジェクトを重ね描きしているだけです。

おそらく、GTypeを使ってClutterRectagleを継承したクラスを作り、オブジェクトを生成したほうが楽だと思います。