Re: [Vala] Clutter actor class in Vala (newb)



Have you tried the clutter sample code from the vala site?
https://live.gnome.org/Vala/ClutterSamples
 


Am Dienstag, den 09.04.2013, 16:37 +0200 schrieb Donn:
Greetings, hope this is the right list for getting help.

I'm fiddling with Vala and am interested in Clutter + Cairo. (I come 
from Python, so this whole gObject and C world is very scary.)

Below's the short code I am trying to get working. I wanted to create an 
Actor class and then add it to the stage - just to get into the swing of 
this thing.
  I am working from the Clutter docs (which is C) and just hacking 
across to Vala (using the Vala docs). It's tough going.

Can anyone help me get this code to draw the custom actor? Right now 
it's just drawing nothing. (The clutter.rectangle in red does work.)

--code--

/*

Working from the sample code at:
https://developer.gnome.org/clutter/stable/ClutterCanvas.html

*/

public class AnActor : Clutter.Actor {

      public Clutter.Canvas canvas;

      public AnActor() {
              canvas = new Clutter.Canvas();
              canvas.set_size(300,300);

              //Kosher???
              this.set_content( canvas );
      
              //Connect to the draw signal.
              canvas.draw.connect(drawme);
      }

      private bool drawme( Cairo.Context ctx, int w, int h) {
              stdout.printf("Just to test this ran at all: %d\n", w);

              ctx.scale(w,h);
              ctx.set_source_rgb(0,0,0);

              //Rect doesn't draw.
              //ctx.rectangle(0,0,200,200);
              //ctx.fill();

              //paint doesn't draw.
              ctx.paint();

              return true;
      }
}



int main(string [] args) {
     // Start clutter.
     var result = Clutter.init(ref args);
     if (result != Clutter.InitError.SUCCESS) {
         stderr.printf("Error: %s\n", result.to_string());
         return 1;
     }

      var stage = Clutter.Stage.get_default();
      stage.destroy.connect(Clutter.main_quit);

      //Make my custom Actor:
      var a = new AnActor();

      //This is dodgy:
      stage.add_child(a);
              
              
      //This works:
      var r1 = new Clutter.Rectangle();
      r1.width = 50;
      r1.height = 50;
      r1.color = Clutter.Color.from_string("rgb(255, 0, 0)");
      stage.add_child(r1);

      a.canvas.invalidate();
      
      stage.show_all();

      Clutter.main();
      return 0;
}


Compile with:
$ valac --pkg clutter-1.0 clutter_canvas.vala

--ends--




Thanks,
\d




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