Exemple #1
0
bool canvas_t::set_background(const std::string &filename)
{
  canvas_goocanvas *gcanvas = static_cast<canvas_goocanvas *>(this);

  GooCanvasItem *gr = gcanvas->group[CANVAS_GROUP_BG];
  int n = goo_canvas_item_get_n_children(gr);
  if(n > 0) {
    assert_cmpnum(n, 1);
    goo_canvas_item_remove_child(gr, 0);
  }

  if(filename.empty())
    return false;

  gcanvas->bg.pix.reset(gdk_pixbuf_new_from_file(filename.c_str(), nullptr));
  if(!gcanvas->bg.pix)
    return false;

  float width = gdk_pixbuf_get_width(gcanvas->bg.pix.get());
  float height = gdk_pixbuf_get_height(gcanvas->bg.pix.get());

  /* calculate required scale factor */
  gcanvas->bg.scale.x = (gcanvas->bounds.max.x - gcanvas->bounds.min.x) / width;
  gcanvas->bg.scale.y = (gcanvas->bounds.max.y - gcanvas->bounds.min.y) / height;

  GooCanvasItem *bg = goo_canvas_image_new(gr, gcanvas->bg.pix.get(),
                                          gcanvas->bounds.min.x / gcanvas->bg.scale.x - width / 2.0f,
                                          gcanvas->bounds.min.y / gcanvas->bg.scale.y - height / 2.0f,
                                          nullptr);
  goo_canvas_item_scale(bg, gcanvas->bg.scale.x, gcanvas->bg.scale.y);

  return true;
}
Exemple #2
0
static gint
goo_canvas_item_accessible_get_n_children (AtkObject *accessible)
{
  GooCanvasItem *item;
  GObject *object;

  g_return_val_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (accessible), 0);

  object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible));
  if (object == NULL)
    return 0;

  item = GOO_CANVAS_ITEM (object);

  return goo_canvas_item_get_n_children (item);
}
Exemple #3
0
/*
 * This does the moves of the game items on the play canvas
 *
 */
static gint planegame_move_items (GtkWidget *widget, gpointer data)
{
    int i;

    /* Check collision with each cloud */
    for(i = 0;
            i < goo_canvas_item_get_n_children(clouds_rootitem);
            i++)
        planegame_cloud_colision(goo_canvas_item_get_child(clouds_rootitem,
                                 i));

    /* move the plane */
    planegame_move_plane(planeitem);
    planemove_id = g_timeout_add (speed,
                                  (GtkFunction) planegame_move_items, NULL);

    return(FALSE);
}