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

📄 plugin.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
📖 第 1 页 / 共 2 页
字号:
		channelcnt = DMODE_STEREO;		md_mode |= DMODE_STEREO;	}	if ((mikmod_cfg.interpolation == 1))	{		md_mode |= DMODE_INTERP;	}	md_pansep = mikmod_cfg.def_pansep;	#if (LIBMIKMOD_VERSION > 0x30106)	MikMod_Init("");#else	MikMod_Init();#endif	if (!(mf = Player_Load(filename, cfg_maxchn, mikmod_cfg.hidden_patterns)))	{		mikmod_ip.set_info_text(_("Couldn't load mod"));		mikmod_going = 0;		return;	}	mf->extspd = cfg_extspd;	mf->panflag = cfg_panning;	mf->wrap = cfg_wrap;	mf->loop = cfg_loop;	mf->fadeout = mikmod_cfg.volumefadeout;	Player_Start(mf);		if (mf->volume > uservolume)		Player_SetVolume(uservolume);/* mods are in pattrens .. you need to be able to seek   back the forth from pattrens */	mikmod_ip.set_info(mf->songname, -1, ((mf->bpm * 1000)), md_mixfreq, channelcnt);	pthread_create(&decode_thread, NULL, play_loop, NULL);	return;}static void *play_loop(void *arg){	while (mikmod_going)	{		if (Player_Active())			drv_xmms.Update();		else		{			xmms_usleep(10000);		}	}	Player_Stop();		/* stop playing */	Player_Free(mf);	/* and free the module */	mikmod_going = 0;	MikMod_Exit();	pthread_exit(NULL);}static void configure(){	GtkWidget *notebook1, *vbox, *vbox1, *hbox1, *Resolution_Frame, *vbox4;	GSList *resolution_group = NULL, *vbox5_group = NULL;	GtkWidget *Channels_Frame, *vbox5, *Downsample_Frame, *vbox3;	GSList *sample_group = NULL;	GtkWidget *vbox6, *Quality_Label, *Options_Label;	GtkWidget *pansep_label, *pansep_hscale;	GtkWidget *bbox, *ok, *cancel;	if (!mikmod_conf_window)	{		mikmod_conf_window = gtk_window_new(GTK_WINDOW_DIALOG);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "mikmod_conf_window", mikmod_conf_window);		gtk_window_set_title(GTK_WINDOW(mikmod_conf_window), _("MikMod Configuration"));		gtk_window_set_policy(GTK_WINDOW(mikmod_conf_window), FALSE, FALSE, FALSE);		gtk_window_set_position(GTK_WINDOW(mikmod_conf_window), GTK_WIN_POS_MOUSE);		gtk_signal_connect(GTK_OBJECT(mikmod_conf_window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mikmod_conf_window);		gtk_container_border_width(GTK_CONTAINER(mikmod_conf_window), 10);		vbox = gtk_vbox_new(FALSE, 10);		gtk_container_add(GTK_CONTAINER(mikmod_conf_window), vbox);		notebook1 = gtk_notebook_new();		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "notebook1", notebook1);		gtk_widget_show(notebook1);		gtk_box_pack_start(GTK_BOX(vbox), notebook1, TRUE, TRUE, 0);		gtk_container_border_width(GTK_CONTAINER(notebook1), 3);		vbox1 = gtk_vbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "vbox1", vbox1);		gtk_widget_show(vbox1);		hbox1 = gtk_hbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "hbox1", hbox1);		gtk_widget_show(hbox1);		gtk_box_pack_start(GTK_BOX(vbox1), hbox1, TRUE, TRUE, 0);		Resolution_Frame = gtk_frame_new(_("Resolution:"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Resolution_Frame", Resolution_Frame);		gtk_widget_show(Resolution_Frame);		gtk_box_pack_start(GTK_BOX(hbox1), Resolution_Frame, TRUE, TRUE, 0);		gtk_container_set_border_width(GTK_CONTAINER(Resolution_Frame), 5);		vbox4 = gtk_vbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "vbox4", vbox4);		gtk_widget_show(vbox4);		gtk_container_add(GTK_CONTAINER(Resolution_Frame), vbox4);		Res_16 = gtk_radio_button_new_with_label(resolution_group, _("16 bit"));		resolution_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Res_16));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Res_16", Res_16);		gtk_widget_show(Res_16);		gtk_box_pack_start(GTK_BOX(vbox4), Res_16, TRUE, TRUE, 0);		if (mikmod_cfg.force8bit == 0)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Res_16), TRUE);		Res_8 = gtk_radio_button_new_with_label(resolution_group, _("8 bit"));		resolution_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Res_8));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Res_8", Res_8);		gtk_widget_show(Res_8);		gtk_box_pack_start(GTK_BOX(vbox4), Res_8, TRUE, TRUE, 0);		if (mikmod_cfg.force8bit == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Res_8), TRUE);		Channels_Frame = gtk_frame_new(_("Channels:"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Channels_Frame", Channels_Frame);		gtk_widget_show(Channels_Frame);		gtk_box_pack_start(GTK_BOX(hbox1), Channels_Frame, TRUE, TRUE, 0);		gtk_container_set_border_width(GTK_CONTAINER(Channels_Frame), 5);		vbox5 = gtk_vbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "vbox5", vbox5);		gtk_widget_show(vbox5);		gtk_container_add(GTK_CONTAINER(Channels_Frame), vbox5);		Chan_ST = gtk_radio_button_new_with_label(vbox5_group, _("Stereo"));		vbox5_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Chan_ST));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Chan_ST", Chan_ST);		gtk_widget_show(Chan_ST);		gtk_box_pack_start(GTK_BOX(vbox5), Chan_ST, TRUE, TRUE, 0);		if (mikmod_cfg.force_mono == 0)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Chan_ST), TRUE);		Chan_MO = gtk_radio_button_new_with_label(vbox5_group, _("Mono"));		vbox5_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Chan_MO));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Chan_MO", Chan_MO);		gtk_widget_show(Chan_MO);		gtk_box_pack_start(GTK_BOX(vbox5), Chan_MO, TRUE, TRUE, 0);		if (mikmod_cfg.force_mono == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Chan_MO), TRUE);		Downsample_Frame = gtk_frame_new(_("Downsample:"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Downsample_Frame", Downsample_Frame);		gtk_widget_show(Downsample_Frame);		gtk_box_pack_start(GTK_BOX(vbox1), Downsample_Frame, TRUE, TRUE, 0);		gtk_container_set_border_width(GTK_CONTAINER(Downsample_Frame), 5);		vbox3 = gtk_vbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "vbox3", vbox3);		gtk_widget_show(vbox3);		gtk_container_add(GTK_CONTAINER(Downsample_Frame), vbox3);		Sample_44 = gtk_radio_button_new_with_label(sample_group, _("1:1 (44 kHz)"));		sample_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Sample_44));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Sample_44", Sample_44);		gtk_widget_show(Sample_44);		gtk_box_pack_start(GTK_BOX(vbox3), Sample_44, TRUE, TRUE, 0);		if (mikmod_cfg.mixing_freq == SAMPLE_FREQ_44)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Sample_44), TRUE);		Sample_22 = gtk_radio_button_new_with_label(sample_group, _("1:2 (22 kHz)"));		sample_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Sample_22));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Sample_22", Sample_22);		gtk_widget_show(Sample_22);		gtk_box_pack_start(GTK_BOX(vbox3), Sample_22, TRUE, TRUE, 0);		if (mikmod_cfg.mixing_freq == SAMPLE_FREQ_22)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Sample_22), TRUE);		Sample_11 = gtk_radio_button_new_with_label(sample_group, _("1:4 (11 kHz)"));		sample_group = gtk_radio_button_group(GTK_RADIO_BUTTON(Sample_11));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Sample_11", Sample_11);		gtk_widget_show(Sample_11);		gtk_box_pack_start(GTK_BOX(vbox3), Sample_11, TRUE, TRUE, 0);		if (mikmod_cfg.mixing_freq == SAMPLE_FREQ_11)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Sample_11), TRUE);		vbox6 = gtk_vbox_new(FALSE, 0);		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "vbox6", vbox6);		gtk_widget_show(vbox6);		Curious_Check = gtk_check_button_new_with_label(_("Look for hidden patterns in modules "));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Curious_Check", Curious_Check);		gtk_widget_show(Curious_Check);		gtk_box_pack_start(GTK_BOX(vbox6), Curious_Check, TRUE, TRUE, 0);		if (mikmod_cfg.hidden_patterns == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Curious_Check), TRUE);		Surrond_Check = gtk_check_button_new_with_label(_("Use surround mixing"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Surround_Check", Surrond_Check);		gtk_widget_show(Surrond_Check);		gtk_box_pack_start(GTK_BOX(vbox6), Surrond_Check, TRUE, TRUE, 0);		if (mikmod_cfg.surround == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Surrond_Check), TRUE);		Fadeout_Check = gtk_check_button_new_with_label(_("Force volume fade at the end of the module"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Fadeout_Check", Fadeout_Check);		gtk_widget_show(Fadeout_Check);		gtk_box_pack_start(GTK_BOX(vbox6), Fadeout_Check, TRUE, TRUE, 0);		if (mikmod_cfg.volumefadeout == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Fadeout_Check), TRUE);		Interp_Check = gtk_check_button_new_with_label(_("Use interpolation"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Interp_Check", Interp_Check);		gtk_widget_show(Interp_Check);		gtk_box_pack_start(GTK_BOX(vbox6), Interp_Check, TRUE, TRUE, 0);		if (mikmod_cfg.interpolation == 1)			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Interp_Check), TRUE);		pansep_label = gtk_label_new(_("Default panning separation"));		gtk_widget_show(pansep_label);		gtk_box_pack_start(GTK_BOX(vbox6), pansep_label, TRUE, TRUE, 0);		pansep_adj = gtk_adjustment_new(mikmod_cfg.def_pansep, 0.0, 129.0, 1.0, 8.0, 1.0);		pansep_hscale = gtk_hscale_new(GTK_ADJUSTMENT(pansep_adj));		gtk_scale_set_digits(GTK_SCALE(pansep_hscale), 0);		gtk_scale_set_draw_value(GTK_SCALE(pansep_hscale), TRUE);		gtk_scale_set_value_pos(GTK_SCALE(pansep_hscale), GTK_POS_BOTTOM);		gtk_widget_show(pansep_hscale);		gtk_box_pack_start(GTK_BOX(vbox6), pansep_hscale, TRUE, TRUE, 0);		Quality_Label = gtk_label_new(_("Quality"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Quality_Label", Quality_Label);		gtk_widget_show(Quality_Label);		gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), vbox1, Quality_Label);		Options_Label = gtk_label_new(_("Options"));		gtk_object_set_data(GTK_OBJECT(mikmod_conf_window), "Options_Label", Options_Label);		gtk_widget_show(Options_Label);		gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), vbox6, Options_Label);		bbox = gtk_hbutton_box_new();		gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);		gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);		gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);		ok = gtk_button_new_with_label(_("Ok"));		gtk_signal_connect(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(config_ok), NULL);		GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT);		gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0);		gtk_widget_show(ok);		gtk_widget_grab_default(ok);		cancel = gtk_button_new_with_label(_("Cancel"));		gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(mikmod_conf_window));		GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);		gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);		gtk_widget_show(cancel);		gtk_widget_show(bbox);		gtk_widget_show(vbox);		gtk_widget_show(mikmod_conf_window);	}	else	{		gdk_window_raise(mikmod_conf_window->window);	}}static void config_ok(GtkWidget * widget, gpointer data){	ConfigFile *cfg;	gchar *filename;	if (GTK_TOGGLE_BUTTON(Res_8)->active)		mikmod_cfg.force8bit = 1;	else		mikmod_cfg.force8bit = 0;	if (GTK_TOGGLE_BUTTON(Chan_MO)->active)		mikmod_cfg.force_mono = 1;	else		mikmod_cfg.force_mono = 0;	if (GTK_TOGGLE_BUTTON(Sample_22)->active)		mikmod_cfg.mixing_freq = SAMPLE_FREQ_22;	else if (GTK_TOGGLE_BUTTON(Sample_11)->active)		mikmod_cfg.mixing_freq = SAMPLE_FREQ_11;	else		mikmod_cfg.mixing_freq = SAMPLE_FREQ_44;	mikmod_cfg.hidden_patterns = GTK_TOGGLE_BUTTON(Curious_Check)->active;	mikmod_cfg.surround = GTK_TOGGLE_BUTTON(Surrond_Check)->active;	mikmod_cfg.volumefadeout = GTK_TOGGLE_BUTTON(Fadeout_Check)->active;	mikmod_cfg.interpolation = GTK_TOGGLE_BUTTON(Interp_Check)->active;	mikmod_cfg.def_pansep = (guchar)GTK_ADJUSTMENT(pansep_adj)->value;	md_pansep = mikmod_cfg.def_pansep;	filename = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);	cfg = xmms_cfg_open_file(filename);	if (!cfg)		cfg = xmms_cfg_new();	xmms_cfg_write_int(cfg, "MIKMOD", "mixing_freq", mikmod_cfg.mixing_freq);	xmms_cfg_write_int(cfg, "MIKMOD", "volumefadeout", mikmod_cfg.volumefadeout);	xmms_cfg_write_int(cfg, "MIKMOD", "surround", mikmod_cfg.surround);	xmms_cfg_write_int(cfg, "MIKMOD", "force8bit", mikmod_cfg.force8bit);	xmms_cfg_write_int(cfg, "MIKMOD", "hidden_patterns", mikmod_cfg.hidden_patterns);	xmms_cfg_write_int(cfg, "MIKMOD", "force_mono", mikmod_cfg.force_mono);	xmms_cfg_write_int(cfg, "MIKMOD", "interpolation", mikmod_cfg.interpolation);	xmms_cfg_write_int(cfg, "MIKMOD", "panning_separation", mikmod_cfg.def_pansep);	xmms_cfg_write_file(cfg, filename);	xmms_cfg_free(cfg);	g_free(filename);	gtk_widget_destroy(mikmod_conf_window);}InputPlugin mikmod_ip ={	NULL,	NULL,	NULL, /* Description */	init,	aboutbox,	configure,	is_our_file,	NULL,	play_file,	stop,	mod_pause,	seek,	NULL,	get_time,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	get_song_info,	NULL,			/* file_info_box */	NULL};

⌨️ 快捷键说明

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