⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tubesock.c

📁 GTK SWF Player. GNOME Applications and a mozilla plugin. Other things included is a library for read
💻 C
字号:
/* * Copyright (c) 2002, Bob Doan * *---------------------------------------------------------------------- * This file is part of tubesock - the GTK/GNOME swf player. * *  tubesock is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  tubesock is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with tubesock; if not, write to the Free Software *  Foundation, Inc.: *      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *---------------------------------------------------------------------- */#include <tubesock.h>/* Obligatory basic callback */static void get_a_file( GtkWidget *w, gpointer data ) {	GtkWidget *filesel = gtk_file_selection_new("FIND A SWF FILE");	//char *filename;	//filename = gtk_file_selection_get_filename(((GtkFileSelection *)(filesel)));	gtk_widget_show (filesel);}static GtkItemFactoryEntry menu_items[] = {	{ "/_File",         NULL,         NULL, 0, "<Branch>" },	{ "/File/_Open",    "<control>O", get_a_file, 0, NULL },	{ "/File/sep1",     NULL,         NULL, 0, "<Separator>" },	{ "/File/Quit",     "<control>Q", gtk_main_quit, 0, NULL },	{ "/_Player",      NULL,         NULL, 0, "<Branch>" },	{ "/Player/Play",  NULL,         NULL, 0, NULL },	{ "/Player/Stop",  NULL,         NULL, 0, NULL },	{ "/_Help",         NULL,         NULL, 0, "<LastBranch>" },	{ "/_Help/About",   NULL,         NULL, 0, NULL },};void get_main_menu( GtkWidget  *window, GtkWidget **menubar ) {	GtkItemFactory *item_factory;	GtkAccelGroup *accel_group;	gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);	accel_group = gtk_accel_group_new ();	item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>", 				   	 accel_group);	gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, NULL);	gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);	if (menubar)	 *menubar = gtk_item_factory_get_widget (item_factory, "<main>");}//gpointer    (*GThreadFunc)                  (gpointer data);//gboolean    (*GtkFunction)                  (gpointer data);gboolean run_wrapper(gpointer data) {	static struct swf_element *e=NULL;	struct tubesock *ts = data;	gulong frames_per_second = (1000000 / (double)ts->swf->header.framerate);	static GTimer* watch = NULL;	if(e != NULL && e->type == SWF_TYPE_SHOWFRAME) {		if(watch == NULL) {			watch = g_timer_new();			g_timer_start (watch);		} else { //Every other time but the first.....			gulong micro;			g_timer_stop(watch);			g_timer_elapsed (watch, &micro);			if(micro < frames_per_second)				usleep(frames_per_second - micro);			g_timer_reset(watch);			g_timer_start(watch);		}	}	e = swf_gui_run(ts, e);	if(e == NULL)		return 0;	else				return 1;}int main( int argc, char *argv[] ) {	struct swf_file *swf;	struct tubesock *ts;	GdkColor color;	GtkWidget *window;	GtkWidget *main_vbox;	GtkWidget *menubar;	GtkWidget *toolbar;	GtkWidget *close_button;	GtkWidget *next_button;	GtkWidget *play_button;	GtkWidget *stop_button;//	GThread* thread;//	GError *error; 	if(argc != 2) {		printf("Syntax: %s filename\n", argv[0]);		return 1;	}	swf = swf_new(argv[1]);	swf_read(swf);	gtk_init (&argc, &argv);	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);	gtk_widget_show (window);	g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);	gtk_window_set_title (GTK_WINDOW (window), "Tubesock - GTK/GNOME SWF player");	gtk_widget_set_size_request (GTK_WIDGET (window), SWF_TO_PIXEL(swf->header.framesize.max_x), SWF_TO_PIXEL(swf->header.framesize.max_y)+30);  	main_vbox = gtk_vbox_new (FALSE, 1);	gtk_widget_set_size_request (GTK_WIDGET (main_vbox), SWF_TO_PIXEL(swf->header.framesize.max_x), SWF_TO_PIXEL(swf->header.framesize.max_y)+30);	gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1);	gtk_container_add (GTK_CONTAINER (window), main_vbox);	gtk_widget_show (main_vbox);	get_main_menu (window, &menubar);	gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0);	toolbar = gtk_toolbar_new( );	gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL);	gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH);	gtk_container_set_border_width (GTK_CONTAINER (toolbar), 0);	gtk_container_add (GTK_CONTAINER (main_vbox), toolbar);	gtk_toolbar_append_space (GTK_TOOLBAR (toolbar)); 	gtk_box_pack_end (GTK_BOX (main_vbox), toolbar, TRUE, TRUE, 0);	gtk_widget_show(toolbar);	gtk_widget_show (menubar);	close_button = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "Close", "Closes this app",  "Private", NULL, GTK_SIGNAL_FUNC (gtk_main_quit), NULL);	gtk_widget_show(close_button);	next_button = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "Next", "Next Frame",  "Private", NULL, GTK_SIGNAL_FUNC (gtk_main_quit), NULL);	gtk_widget_show(next_button);	play_button = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "Play", "Play",  "Private", NULL, GTK_SIGNAL_FUNC (gtk_main_quit), NULL);	gtk_widget_show(play_button);	stop_button = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "Stop", "Stop DAMIT!",  "Private", NULL, GTK_SIGNAL_FUNC (gtk_main_quit), NULL);	gtk_widget_show(stop_button);	ts = swf_gui_init(swf, window, main_vbox);	gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1);//DEFAULT TO WHITE FOR NOW!!	color.red = 0xFFFF;	color.blue = 0xFFFF;	color.green = 0xFFFF;	gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &color);//	if (!g_thread_supported ()) g_thread_init (NULL);//		thread =  g_thread_create(run_wrapper, ts, 0, &error);	//	swf_gui_run(ts);	gtk_idle_add (run_wrapper, ts);	gtk_main ();	printf("\a\a\a\a");	//swf_free(swf);  	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -