static void astro_appview_init (AstroAppview *appview) { AstroAppviewPrivate *priv; priv = appview->priv = ASTRO_APPVIEW_GET_PRIVATE (appview); priv->active = 0; priv->apps = NULL; priv->move_time = clutter_timeline_new_for_duration (300); priv->move_temp = clutter_effect_template_new (priv->move_time, clutter_sine_inc_func); priv->show_time = clutter_timeline_new_for_duration (600); priv->show_temp = clutter_effect_template_new (priv->show_time, clutter_sine_inc_func); priv->hide_time = clutter_timeline_new_for_duration (300); priv->hide_temp = clutter_effect_template_new (priv->hide_time, clutter_sine_inc_func); }
static GObject * gb_player_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { GObject * obj; GbPlayerClass * klass; GObjectClass * parent_class; GbPlayer * self; klass = GB_PLAYER_CLASS (g_type_class_peek (GB_TYPE_PLAYER)); parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = GB_PLAYER (obj); GbPlayerPrivate *p = GB_PLAYER_GET_PRIVATE(self); p->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); p->stage_widget = gtk_clutter_embed_new (); gtk_widget_set_size_request (p->stage_widget, 640, 480); g_signal_connect (p->window, "delete-event", G_CALLBACK(gtk_main_quit), NULL); p->filechooser = gtk_file_chooser_dialog_new ("Choose the media file", GTK_WINDOW(p->window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_container_add (GTK_CONTAINER(p->window), p->stage_widget); p->stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED(p->stage_widget)); p->play = gdk_pixbuf_new_from_file(IMG_PATH "/start.svg", NULL); p->backward = gdk_pixbuf_new_from_file(IMG_PATH "/backward.svg", NULL); p->forward = gdk_pixbuf_new_from_file(IMG_PATH "/forward.svg", NULL); p->stop = gdk_pixbuf_new_from_file(IMG_PATH "/stop.svg", NULL); p->pause = gdk_pixbuf_new_from_file(IMG_PATH "/pause.svg", NULL); p->fullscreen = gdk_pixbuf_new_from_file(IMG_PATH "/fullscreen.svg", NULL); p->unfullscreen = gdk_pixbuf_new_from_file(IMG_PATH "/unfullscreen.svg", NULL); p->open_file = gdk_pixbuf_new_from_file(IMG_PATH "/openfile.svg", NULL); p->bgpixbuf = gdk_pixbuf_new_from_file(IMG_PATH "/background.svg", NULL); p->bglogo = gdk_pixbuf_new_from_file(IMG_PATH "/logo.svg", NULL); p->time = 0; p->controls_visible = TRUE; p->last_second = -1; p->filename = NULL; p->playing = FALSE; p->player = gst_element_factory_make ("playbin", "player"); p->show_hide_timeline = clutter_timeline_new_for_duration (1000); g_signal_connect(p->show_hide_timeline, "completed", G_CALLBACK(on_timeline_completed), (gpointer) self); /* p->playback_timeline = clutter_timeline_new_for_duration (1000); */ /* g_signal_connect(p->playback_timeline, "new-frame", */ /* G_CALLBACK(playback_cb), */ /* (gpointer) self); */ /* clutter_timeline_set_loop(p->playback_timeline, TRUE); */ /* clutter_timeline_start(p->playback_timeline); */ _gb_player_setup_widgets (self); _gb_player_connect_signals (self); // TODO: conectar o sinal de mouse move no stage nas areas dos controles pra poder mostrar ou esconder os controles }
int main (int argc, char *argv[]) { ClutterActor *stage, *actor; ClutterContainer *container; ClutterColor stage_color = { 0xcc, 0xcc, 0xcc, 0xff }; ClutterColor rect_color = { 0, 0, 0, 0xdd }; clutter_init (&argc, &argv); timeline = clutter_timeline_new_for_duration (5000); clutter_timeline_set_loop (timeline, TRUE); tmpl = clutter_effect_template_new (timeline, CLUTTER_ALPHA_RAMP_INC); stage = clutter_stage_get_default (); container = CLUTTER_CONTAINER (stage); g_signal_connect (stage, "button-press-event", G_CALLBACK (clutter_main_quit), NULL); clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); clutter_stage_set_use_fog (CLUTTER_STAGE (stage), TRUE); clutter_actor_set_size (stage, 800, 600); clutter_actor_show_all (stage); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 50, 10); clutter_effect_fade (tmpl, actor, 0x22, NULL, NULL); clutter_actor_show (actor); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 750, 70); clutter_effect_depth (tmpl, actor, -500, NULL, NULL); clutter_actor_show (actor); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 50, 140); clutter_effect_move (tmpl, actor, 750, 140, NULL, NULL); clutter_actor_show (actor); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 750, 210); { ClutterKnot knots[2]; knots[0].x = 750; knots[0].y = 210; knots[1].x = 350; knots[1].y = 210; clutter_effect_path (tmpl, actor, knots, 2, NULL, NULL); } clutter_actor_show (actor); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 50, 280); clutter_actor_set_anchor_point_from_gravity (actor, CLUTTER_GRAVITY_CENTER); clutter_effect_scale (tmpl, actor, 2.0, 2.0, NULL, NULL); clutter_actor_show (actor); actor = clutter_rectangle_new_with_color (&rect_color); clutter_container_add_actor (container, actor); clutter_actor_set_size (actor, 50, 50); clutter_actor_set_position (actor, 750, 350); clutter_effect_rotate (tmpl, actor, CLUTTER_Z_AXIS, 180.0, 25, 25, 0, CLUTTER_ROTATE_CW, NULL, NULL); clutter_actor_show (actor); clutter_main (); g_object_unref (tmpl); g_object_unref (timeline); return EXIT_SUCCESS; }
static void astro_contact_row_init (AstroContactRow *row) { AstroContactRowPrivate *priv; ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; gchar *font = NULL; GdkPixbuf *pixbuf; priv = row->priv = ASTRO_CONTACT_ROW_GET_PRIVATE (row); priv->name = NULL; priv->icon = NULL; priv->active = FALSE; /* The background texture */ if (!GDK_IS_PIXBUF (bg_pixbuf)) bg_pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR"/applet_bg.png", NULL); if (!CLUTTER_IS_ACTOR (bg_texture)) { bg_texture = clutter_texture_new_from_pixbuf (bg_pixbuf); clutter_actor_show (bg_texture); } priv->bg = tidy_texture_frame_new (CLUTTER_TEXTURE (bg_texture), 15, 15, 15, 15); clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->bg); clutter_actor_set_position (priv->bg, 0, 0); clutter_actor_set_size (priv->bg, CSW()*0.5, ROW_HEIGHT); clutter_actor_set_opacity (priv->bg, 0); /* The icon */ priv->texture = clutter_texture_new (); clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->texture); clutter_actor_set_position (priv->texture, PADDING, PADDING); clutter_actor_set_size (priv->texture, ICON_SIZE, ICON_SIZE); /* The label */ font = g_strdup_printf ("Sans %d", (gint)(ROW_HEIGHT * 0.3)); priv->label = clutter_label_new_full (font, " ", &white); clutter_label_set_line_wrap (CLUTTER_LABEL (priv->label), FALSE); clutter_actor_set_width (priv->label, CSW()/2); clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->label); clutter_actor_set_position (priv->label, (PADDING*2) + ICON_SIZE, ROW_HEIGHT /2); g_free (font); /* Contact bar */ pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR"/contact-bar.svg", -1, ROW_HEIGHT-(PADDING*4), TRUE, NULL); priv->bar = clutter_texture_new_from_pixbuf (pixbuf); clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->bar); clutter_actor_set_position (priv->bar, (PADDING*2) + ICON_SIZE, ROW_HEIGHT + PADDING); clutter_actor_set_opacity (priv->bar, 0); /* Timelines */ priv->active_time = clutter_timeline_new_for_duration (200); priv->active_temp = clutter_effect_template_new (priv->active_time, clutter_sine_inc_func); priv->bar_time = clutter_timeline_new_for_duration (600); priv->bar_temp = clutter_effect_template_new (priv->bar_time, clutter_sine_inc_func); priv->active_time = clutter_timeline_new_for_duration (800); priv->alpha = clutter_alpha_new_full (priv->active_time, clutter_sine_inc_func, NULL, NULL); priv->behave = astro_behave_new (priv->alpha, (AstroBehaveAlphaFunc)_resize_alpha, row); clutter_actor_show_all (CLUTTER_ACTOR (row)); }