示例#1
0
文件: opt-show.c 项目: UIKit0/toys
static void
transition_completed_cb (OptTransition   *trans,
			 gpointer         data)
{
  OptShow        *show = (OptShow *)data;
  OptSlide       *from;
  OptShowPrivate *priv;
  ClutterActor *stage;

  priv = show->priv;

  from = opt_transition_get_from (trans);
  stage = clutter_stage_get_default();

  /* Remove as to free up resources. */

  clutter_actor_hide_all (CLUTTER_ACTOR(from));
  clutter_container_remove_actor (CLUTTER_CONTAINER(stage),
                                  CLUTTER_ACTOR(from));


  /* Reset any tranforms to be safe */
  clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_X_AXIS, 0, 0, 0, 0);
  clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_Y_AXIS, 0, 0, 0, 0);
  clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_Z_AXIS, 0, 0, 0, 0);

  /* If needed, update the position */
  if (priv->position_label_visible)
    opt_show_update_position_label (show);
  
  /* Disconnect the handler */
  g_signal_handler_disconnect (trans, priv->trans_signal_id);
  priv->trans_signal_id = 0;
}
示例#2
0
static void
st_table_hide_all (ClutterActor *table)
{
  GList *l, *children;

  clutter_actor_hide (table);

  children = st_container_get_children_list (ST_CONTAINER (table));
  for (l = children; l; l = l->next)
    clutter_actor_hide_all (CLUTTER_ACTOR (l->data));
}
示例#3
0
文件: foofone.c 项目: UIKit0/toys
int
main (int argc, char *argv[])
{
  ClutterActor    *stage;
  ClutterColor     stage_color = { 0x0, 0x0, 0x0, 0xff };

  App             *app;

  clutter_init (&argc, &argv);

  ALPHA_SINE = clutter_alpha_register_func (alpha_sine_func, NULL);
  clutter_interval_register_progress_func (G_TYPE_BOOLEAN, boolean_progress);

  app = g_new0(App, 1);

  stage = clutter_stage_get_default ();
  clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
  clutter_actor_set_size (stage, CSW, CSH);

  make_ui (app);

  clutter_group_add (CLUTTER_GROUP(stage), app->screen_dial);
  clutter_group_add (CLUTTER_GROUP(stage), app->screen_dialpad);

  clutter_actor_hide_all (app->screen_dial);
  clutter_actor_show_all (stage);

  g_signal_connect (stage, 
		    "event",
		    G_CALLBACK (on_input),
		    app);

  printf("\n..Press '*' to dial..\n\n");

  clutter_main ();

  return 0;
}
示例#4
0
IO_METHOD(IoClutterActor, hideAll) {
  clutter_actor_hide_all(IOCACTOR(self));
  return self;
}
示例#5
0
文件: opt-show.c 项目: UIKit0/toys
gboolean
opt_show_export (OptShow *self, const char *path, GError **error)
{
#define HTML "<html><head><title>Slide %i</title></head>\n"       \
             "<body><p><center><img src=\"%s\"></center></p>\n"   \
             "<p><center><strong>%s%s</strong></center></p>\n"    \
             "</body></html>"

  GList          *slide;
  OptShowPrivate *priv;
  ClutterActor   *stage;
  gint            i = 0;

  priv = self->priv;

  stage = clutter_stage_get_default();

  g_object_set (stage, "offscreen", TRUE, NULL);

  clutter_actor_show_all (stage);

  slide = priv->slides;

  while (slide)
    {
      ClutterActor *e;
      guchar       *data;
      GdkPixbuf    *pixb = NULL;
      gchar         name[32];
      gchar        *filename = NULL;
      gchar         html[2048], html_next[512], html_prev[512];

      e = CLUTTER_ACTOR(slide->data);

      clutter_container_add_actor (CLUTTER_CONTAINER(stage), e);
      clutter_actor_show_all (stage);
      clutter_actor_show_all (e);

      // clutter_redraw (CLUTTER_STAGE (stage));
      
      data = clutter_stage_read_pixels (CLUTTER_STAGE(stage),
				        0,
				        0,
				        clutter_actor_get_width (stage),
				        clutter_actor_get_height (stage));
      if (!data)
	{
	  g_warning("Failed to grab pixels from stage");
	  return FALSE;
	}

      pixb = gdk_pixbuf_new_from_data (data, GDK_COLORSPACE_RGB, TRUE, 8,
                                       clutter_actor_get_width (stage),
                                       clutter_actor_get_height (stage),
                                       clutter_actor_get_width (stage) * 4,
                                       free_data,
                                       NULL);

      g_snprintf (name, 32, "slide-%02i.png", i);

      filename = g_build_filename(path, name, NULL);

      if (!gdk_pixbuf_save (pixb, filename, "png", error, 
			    "compression", "9", /* Really compress */
			    NULL))
	{
	  if (filename) g_free (filename);
          g_object_unref (pixb);
	  return FALSE;
	}

      html_next[0] = html_prev[0] = '\0';
      
      if (i > 0)
	snprintf(html_prev, 512, 
		 "<a href=\"slide-%02i.html\">Prev</a> |", i-1);

      if (slide->next)
	snprintf(html_next, 512, 
		 " <a href=\"slide-%02i.html\">Next</a>", i+1);

      g_snprintf(html, 2048, HTML, i, name, html_prev, html_next);
      g_snprintf(name, 32, "slide-%02i.html", i);
      g_free (filename);

      filename = g_build_filename(path, name, NULL);

      g_file_set_contents (filename, html, -1, NULL);

      g_print ("wrote '%s'\n", filename);

      clutter_actor_hide_all (e);
      clutter_group_remove (CLUTTER_GROUP(stage), e);

      if (filename) g_free (filename);
      slide = slide->next;
      i++;

      g_object_unref (pixb);
    }

  return TRUE;
}
示例#6
0
文件: opt-show.c 项目: UIKit0/toys
void
opt_show_step (OptShow *self, gint step)
{
  OptSlide       *from, *to;
  OptShowPrivate *priv;
  OptTransition  *trans;
  ClutterActor *stage;

  priv = self->priv;

  /* transition already running */
  if (priv->trans_signal_id != 0)
    return;

  stage = clutter_stage_get_default();

  from = g_list_nth_data (priv->slides, priv->current_slide_num);
  to   = g_list_nth_data (priv->slides, priv->current_slide_num + step);

  if (from == NULL)
    from = priv->slides->data;
  
  /* Nowhere to go */
  if (to == NULL)
    return;

  /* Add next slide to stage */
  clutter_group_add (CLUTTER_GROUP(stage), CLUTTER_ACTOR(to));

  trans = opt_slide_get_transition ( step < 0 ? to : from);

  /* 
   * Make sure any textures are loaded before the transitions is started .
  */
  clutter_container_foreach (CLUTTER_CONTAINER (to), 
                             (ClutterCallback)clutter_actor_realize,
                             NULL);

  if (trans != NULL)
    {
      if (step < 0)
	opt_transition_set_direction (trans, OPT_TRANSITION_BACKWARD);
      else
	opt_transition_set_direction (trans, OPT_TRANSITION_FORWARD);

      /* Set up transition and start it */
      opt_transition_set_to (trans, to);
      opt_transition_set_from (trans, from);

      priv->trans_signal_id 
	= g_signal_connect (trans,
			    "completed",  
			    G_CALLBACK (transition_completed_cb), 
			    self);

      /* lower it out of view */
      clutter_actor_lower_bottom (CLUTTER_ACTOR(to));

      clutter_timeline_start (CLUTTER_TIMELINE(trans));
    }
  else
    {
      /* No transition just hide current slide*/
      clutter_group_remove (CLUTTER_GROUP(stage), CLUTTER_ACTOR(from));
      clutter_actor_hide_all (CLUTTER_ACTOR(from));
    }
  
  /* Advance */
    priv->current_slide_num += step;

  priv->current_slide_num = 
      CLAMP(priv->current_slide_num, 0, priv->num_slides-1);

  if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (priv->menu)))
      opt_menu_popdown (priv->menu);
  
  opt_menu_set_current_slide (priv->menu, priv->current_slide_num);
}