Advertisement
eagleoneraptor

Trying to draw a circled image

Jul 22nd, 2014
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Clutter = imports.gi.Clutter;
  2. const Cairo = imports.cairo;
  3. const Gdk = imports.gi.Gdk;
  4. const GdkPixbuf = imports.gi.GdkPixbuf;
  5.  
  6. function loadIcon(path, size) {
  7.     try {
  8.         return GdkPixbuf.Pixbuf.new_from_file_at_scale(path, 300, 300, false);
  9.     } catch(e) {
  10.         log("Failed to load pixbuf: " + e);
  11.         return null;
  12.     }
  13. }
  14.  
  15. function draw(canvas, cr, width, height) {
  16.     cr.save();
  17.     cr.setOperator(Cairo.Operator.CLEAR);
  18.     cr.paint();
  19.     cr.restore();
  20.  
  21.     cr.scale(width, height);
  22.     cr.arc(0.5, 0.5, 0.5, 0, Math.PI * 2);
  23.     cr.setOperator(Cairo.Operator.OVER);
  24.     Gdk.cairo_set_source_pixbuf(cr, loadIcon('/home/me/myimage.jpg', 300), 0, 0);
  25.     cr.fill();
  26.  
  27.     return true;
  28. }
  29.  
  30. function main() {
  31.     Clutter.init(null);
  32.  
  33.     let stage = new Clutter.Stage();
  34.     stage.set_title("Circled image");
  35.  
  36.     let color = new Clutter.Color({ red: 255,
  37.                                     green: 0,
  38.                                     blue: 0,
  39.                                     alpha: 0 });
  40.     stage.set_background_color(color);
  41.     stage.set_size(300, 300);
  42.  
  43.     let canvas = new Clutter.Canvas();
  44.     canvas.set_size(stage.width, stage.height);
  45.  
  46.     let actor = new Clutter.Actor();
  47.     actor.set_content(canvas);
  48.     actor.set_size(stage.width, stage.height);
  49.     stage.add_child(actor);
  50.  
  51.     canvas.connect("draw", draw);
  52.     canvas.invalidate();
  53.  
  54.     stage.connect("destroy", Clutter.main_quit);
  55.     stage.show_all();
  56.  
  57.     Clutter.main();
  58. };
  59.  
  60. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement