1. Images and Canvases
1.1. Create moustache.vala
Copy/paste this into a file called moustache.vala:
using Clutter;
void
main(string[] args)
{
Clutter.init(ref args);
// note: the Clutter.Texture API is deprecrated, but the API that
// replaced it is very cumbersome, so we just stick with
// Clutter.Texture
var linus = new Texture.from_file("Linus_Torvalds.jpeg");
int width, height;
linus.get_base_size(out width, out height);
var stage = new Stage() {
width = width,
height = height};
stage.add_child(linus);
var canvas = new Canvas() {
width = width,
height = height };
canvas.draw.connect((cr, width, height) => {
cr.set_line_width(10);
cr.set_source_rgba(0, 0, 0, 1);
cr.move_to(310, 355);
cr.line_to(260, 340);
cr.stroke();
cr.move_to(310, 355);
cr.line_to(350, 345);
cr.stroke();
return true;
});
var canvasActor = new Actor() {
x = 0,
y = 0,
width = width,
height = height,
content = canvas };
stage.add_child(canvasActor);
canvas.invalidate();
stage.show();
stage.destroy.connect(Clutter.main_quit);
Clutter.main();
}