Re: [Vala] Status of clutter bindings



Spencer, Matthew wrote:
Hi Guys
 
Not sure if this should be posted here or to the clutter lists, but I'll
try here first :)
 
I am trying to create a clutter app using vala and am having a few
issues.  The biggest one seems to be with the clutter-json bindings.
How mature are these supposed to be, because the simplest application is
failing to compile, and looking at the vapi files I would have to agree.
 
I would like to modify the generated vapi files to make this work,
however at the top is an 'autogenerated' warning, but I cannot find
anywhere in the vala build that will allow me to recreate these bindings
(there also seems to be nothing in the 1.0.8 source release of clutter).

Yes, it seems that 'clutter-1.0.vapi' was accidentally included without
the metadata information an in a very raw state without any tweaking.

Ali Sabil (asabil) has started a launchpad project as a new beginning for
Clutter bindings, this time with metadata:
http://bazaar.launchpad.net/~asabil/+junk/clutter-vala-1.0/files

At the same time I was assembling a patch with lots of fixes for the raw
'clutter-1.0.vapi' without knowing about his project:
https://bugzilla.gnome.org/show_bug.cgi?id=598778

What needs to be done now is to merge this patch into his project, but in
the form of metadata. I wanted to do that but I didn't find enough time
during the last weeks. Of course, any help is appreciated.

I have attached a Vala port of a little demo program that would work with
my patch.


Best regards,

Frederik
using Clutter;

class ClutterDemo {

        private Stage stage;
        private Rectangle[] rectangles;

        const string[] colors = {
                "blanched almond",
                "OldLace",
                "MistyRose",
                "White",
                "LavenderBlush",
                "CornflowerBlue",
                "chartreuse",
                "chocolate",
                "light coral",
                "medium violet red",
                "LemonChiffon2",
                "RosyBrown3"
        };

        public ClutterDemo () {
                stage = Stage.get_default ();

                rectangles = new Rectangle[colors.length];
                stage.hide.connect (Clutter.main_quit);

                create_rectangles ();

                stage.color = Color () { alpha = 255 };
                stage.show_all ();
        }

        private void create_rectangles () {
                for (int i = 0; i < colors.length; i++) {
                        var r = new Rectangle ();

                        r.width = r.height = stage.height / colors.length;
                        r.color = Color.from_string (colors[i]);
                        r.anchor_gravity = Gravity.CENTER;
                        r.y = i * r.height + r.height / 2;

                        stage.add_actor (r);

                        rectangles[i] = r;
                }
        }

        public void start () {
                var animations = new Animation[rectangles.length];
                for (int i = 0; i < rectangles.length; i++) {
                        animations[i] = rectangles[i].animate (
                                                  AnimationMode.LINEAR, 5000,
                                                  "x", stage.width / 2,
                                                  "rotation-angle-z", 500.0);
                        animations[i].timeline.start ();
                }
                animations[animations.length - 1].timeline.completed.connect (() => {
                        var text = new Text.full ("Bitstream Vera Sans 40",
                                                  "Congratulations!",
                                                  Color.from_string ("white"));

                        text.set_anchor_point_from_gravity (Gravity.CENTER);
                        text.x = stage.width / 2;
                        text.y = -text.height;  // Off-stage
                        stage.add_actor (text);
                        text.show ();
                        var text_anim = text.animate (AnimationMode.EASE_OUT_BOUNCE, 3000,
                                                      "y", stage.height / 2);
                        text_anim.timeline.start ();

                        for (int i = 0; i < rectangles.length; i++) {
                                animations[i] = rectangles[i].animate (
                                        AnimationMode.EASE_OUT_BOUNCE, 3000,
                                        "x", Random.next_double () * stage.width,
                                        "y", Random.next_double () * stage.height / 2
                                                                   + stage.height / 2,
                                        "rotation-angle-z", rectangles[i].rotation_angle_z,
                                        "opacity", 0.0);

                                animations[i].timeline.start ();
                        }
                });
        }
}

void main (string[] args) {
        Clutter.init (ref args);
        var demo = new ClutterDemo ();
        demo.start ();
        Clutter.main ();
}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]