ClutterActor を使う

Clutter の ClutterActor を使うサンプル。単純にClutteStageの (100,100) の位置に (100,100) の大きさの Actor を CLUTTER_COLOR_RED で塗りつぶして表示します。
Makefile は、http://d.hatena.ne.jp/fut_nis/20120927/1348728462 を参照してください。
はじめは C のサンプルです。

#include <clutter/clutter.h>

int
main (int argc, char *argv[])
{
    ClutterStage *stage;
    ClutterActor *actor;
    
    if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
        return 1;
    stage = (ClutterStage*) clutter_stage_new ();
    g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);

    actor = clutter_actor_new ();
    clutter_actor_set_background_color (actor, clutter_color_get_static (CLUTTER_COLOR_RED));
    clutter_actor_set_size (actor, 100, 100);
    clutter_actor_set_position (actor, 100, 100);

    clutter_actor_add_child ((ClutterActor*) stage, actor);
    clutter_actor_show ((ClutterActor*) stage);
    clutter_main ();
    return 0;
}

背景色は、clutter_actor_set_background_color() で指定しています。ClutterStaticColor 列挙子 を使うと簡単です。clutter_color_get_static() で ClutterColor オブジェクトにしています。
大きさは、clutter_actor_set_size() で指定。位置は clutter_actor_set_position() で指定しています。位置は、ClutterContainer の相対位置になるようです。
ClutterStage に ClutterActor を追加するために、 clutter_actor_add_child() を使用しています。以前は、 clutter_container_add() を使用していたのですが、 1.10 以降は、clutter_actor_add_child() が推奨されています。

次は、 GJS のサンプルです。

#! /usr/bin/env gjs
const Clutter = imports.gi.Clutter;

Clutter.init(null);
let stage = new Clutter.Stage();
stage.connect('destroy', Clutter.main_quit);

let actor = new Clutter.Actor();
actor.set_background_color(Clutter.Color.get_static (Clutter.StaticColor.RED));
actor.set_size(100, 100);
actor.set_position(100, 100);

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

説明は不要ですね。