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

📄 equalizer.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
📖 第 1 页 / 共 4 页
字号:
	xmms_cfg_write_file(cfgfile, filename);	xmms_cfg_free(cfgfile);	g_free(filename);}static gboolean equalizerwin_load_preset(GList * list, gchar * name){	EqualizerPreset *preset;	gint i;	if ((preset = equalizerwin_find_preset(list, name)) != NULL)	{		eqslider_set_position(equalizerwin_preamp, preset->preamp);		for (i = 0; i < 10; i++)			eqslider_set_position(equalizerwin_bands[i], preset->bands[i]);		equalizerwin_eq_changed();		return TRUE;	}	return FALSE;}static GList *equalizerwin_save_preset(GList * list, gchar * name, gchar * fname){	gint i;	EqualizerPreset *preset;	if (!(preset = equalizerwin_find_preset(list, name)))	{		preset = g_malloc(sizeof (EqualizerPreset));		preset->name = g_strdup(name);		list = g_list_append(list, preset);	}	preset->preamp = eqslider_get_position(equalizerwin_preamp);	for (i = 0; i < 10; i++)		preset->bands[i] = eqslider_get_position(equalizerwin_bands[i]);	equalizerwin_write_preset_file(list, fname);	return list;}static GList *equalizerwin_delete_preset(GList * list, gchar * name, gchar * fname){	EqualizerPreset *preset;	GList *node;	if ((preset = equalizerwin_find_preset(list, name)) && (node = g_list_find(list, preset)))	{		list = g_list_remove_link(list, node);		g_free(preset->name);		g_free(preset);		g_list_free_1(node);		equalizerwin_write_preset_file(list, fname);	}	return list;}static GList *equalizerwin_import_winamp_eqf(FILE *file){	gchar header[31];	gchar tmp[257];	gchar bands[11];	gint i=0;	GList *list = NULL;	EqualizerPreset *preset;	fread(header, 1, 31, file);	if (!strncmp(header, "Winamp EQ library file v1.1", 27))	{		while (fread(tmp, 1, 257, file)) {			preset = g_malloc(sizeof (EqualizerPreset));			fread(bands, 1, 11, file);			preset->name = g_strdup(tmp);			preset->preamp =  20.0 - ((bands[10] * 40.0) / 64);			for (i = 0; i < 10; i++)				preset->bands[i] = 20.0 - ((bands[i] * 40.0) / 64);			list = g_list_prepend(list, preset);		}        }	list = g_list_reverse(list);	return list;}static void equalizerwin_read_winamp_eqf(FILE *file){	gchar header[31];	guchar bands[11];	gint i;		fread(header, 1, 31, file);	if (!strncmp(header, "Winamp EQ library file v1.1", 27))	{		if (fseek(file, 257, SEEK_CUR) == -1)	/* Skip name */			return;		if (fread(bands, 1, 11, file) != 11)			return;		eqslider_set_position(equalizerwin_preamp, 20.0 - ((bands[10] * 40.0) / 63.0));		for (i = 0; i < 10; i++)			eqslider_set_position(equalizerwin_bands[i], 20.0 - ((bands[i] * 40.0) / 64.0));	}	equalizerwin_eq_changed();}static void equalizerwin_read_xmms_preset(ConfigFile *cfgfile){	gfloat val;	gint i;		if (xmms_cfg_read_float(cfgfile, "Equalizer preset", "Preamp", &val))		eqslider_set_position(equalizerwin_preamp, val);	for (i = 0; i < 10; i++)	{		gchar tmp[7];		sprintf(tmp, "Band%d", i);		if (xmms_cfg_read_float(cfgfile, "Equalizer preset", tmp, &val))			eqslider_set_position(equalizerwin_bands[i], val);	}	equalizerwin_eq_changed();}static void equalizerwin_save_ok(GtkWidget * widget, gpointer data){	gchar *text;	text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_entry));	if (strlen(text) != 0)		equalizer_presets = equalizerwin_save_preset(equalizer_presets, text, "eq.preset");	gtk_widget_destroy(equalizerwin_save_window);}static void equalizerwin_save_select(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer data){	gchar *text;	gtk_clist_get_text(clist, row, 0, &text);	gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_entry), text);	if (event->type == GDK_2BUTTON_PRESS)		equalizerwin_save_ok(NULL, NULL);}static void equalizerwin_load_ok(GtkWidget * widget, gpointer data){	gchar *text;	GtkCList *clist = GTK_CLIST(data);	if (clist && clist->selection)	{		gtk_clist_get_text(clist, GPOINTER_TO_INT(clist->selection->data), 0, &text);		equalizerwin_load_preset(equalizer_presets, text);	}	gtk_widget_destroy(equalizerwin_load_window);}static void equalizerwin_load_select(GtkCList * widget, gint row, gint column, GdkEventButton * event, gpointer data){	if (event->type == GDK_2BUTTON_PRESS)		equalizerwin_load_ok(NULL, widget);}static void equalizerwin_delete_delete(GtkWidget * widget, gpointer data){	gchar *text;	GList *list, *next;	GtkCList *clist = GTK_CLIST(data);	g_return_if_fail(clist != NULL);	list = clist->selection;	gtk_clist_freeze(clist);	while (list)	{		next = g_list_next(list);		gtk_clist_get_text(clist, GPOINTER_TO_INT(list->data), 0, &text);		equalizer_presets = equalizerwin_delete_preset(equalizer_presets,							       text, "eq.preset");		gtk_clist_remove(clist, GPOINTER_TO_INT(list->data));		list = next;	}	gtk_clist_thaw(clist);}static void equalizerwin_save_auto_ok(GtkWidget * widget, gpointer data){	gchar *text;	text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_auto_entry));	if (strlen(text) != 0)		equalizer_auto_presets = equalizerwin_save_preset(equalizer_auto_presets, text, "eq.auto_preset");	gtk_widget_destroy(equalizerwin_save_auto_window);}static void equalizerwin_save_auto_select(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer data){	gchar *text;	gtk_clist_get_text(clist, row, 0, &text);	gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), text);	if (event->type == GDK_2BUTTON_PRESS)		equalizerwin_save_auto_ok(NULL, NULL);}static void equalizerwin_load_auto_ok(GtkWidget * widget, gpointer data){	gchar *text;	GtkCList *clist = GTK_CLIST(data);	if (clist && clist->selection)	{		gtk_clist_get_text(clist, GPOINTER_TO_INT(clist->selection->data), 0, &text);		equalizerwin_load_preset(equalizer_auto_presets, text);	}	gtk_widget_destroy(equalizerwin_load_auto_window);}static void equalizerwin_load_auto_select(GtkWidget * widget, gint row, gint column, GdkEventButton * event, gpointer data){	if (event->type == GDK_2BUTTON_PRESS)		equalizerwin_load_auto_ok(NULL, widget);}static void equalizerwin_delete_auto_delete(GtkWidget * widget, gpointer data){	gchar *text;	GList *list, *next;	GtkCList *clist = GTK_CLIST(data);	g_return_if_fail(clist != NULL);	list = clist->selection;	gtk_clist_freeze(clist);	while (list)	{		next = g_list_next(list);		gtk_clist_get_text(clist, GPOINTER_TO_INT(list->data), 0, &text);		equalizer_auto_presets = equalizerwin_delete_preset(equalizer_auto_presets, text, "eq.auto_preset");		gtk_clist_remove(clist, GPOINTER_TO_INT(list->data));		list = next;	}	gtk_clist_thaw(clist);}static void equalizerwin_load_filesel_ok(GtkWidget * w, GtkFileSelection * filesel){	gchar *filename;	ConfigFile *cfgfile;	if (util_filebrowser_is_dir(filesel))		return;	filename = gtk_file_selection_get_filename(filesel);	if ((cfgfile = xmms_cfg_open_file(filename)) != NULL)	{		equalizerwin_read_xmms_preset(cfgfile);	        xmms_cfg_free(cfgfile);	}	gtk_widget_destroy(GTK_WIDGET(filesel));}static void equalizerwin_import_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel){	gchar *filename;	FILE *file;	if (util_filebrowser_is_dir(filesel))		return;	filename = gtk_file_selection_get_filename(filesel);	if ((file = fopen(filename, "rb")) != NULL)	{		equalizer_presets = g_list_concat(equalizer_presets,				    equalizerwin_import_winamp_eqf(file));		equalizerwin_write_preset_file(equalizer_presets, "eq.preset");	}	gtk_widget_destroy(GTK_WIDGET(filesel));}static void equalizerwin_load_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel){	gchar *filename;	FILE *file;	if (util_filebrowser_is_dir(filesel))		return;	filename = gtk_file_selection_get_filename(filesel);	if ((file = fopen(filename, "rb")) != NULL)		equalizerwin_read_winamp_eqf(file);	gtk_widget_destroy(GTK_WIDGET(filesel));}static void equalizerwin_save_filesel_ok(GtkWidget * w, GtkFileSelection * filesel){	gchar *filename;	ConfigFile *cfgfile;	gint i;	if (util_filebrowser_is_dir(filesel))		return;	filename = gtk_file_selection_get_filename(filesel);	cfgfile = xmms_cfg_new();	xmms_cfg_write_float(cfgfile, "Equalizer preset", "Preamp", eqslider_get_position(equalizerwin_preamp));	for (i = 0; i < 10; i++)	{		gchar tmp[7];		sprintf(tmp, "Band%d", i);		xmms_cfg_write_float(cfgfile, "Equalizer preset", tmp,				     eqslider_get_position(equalizerwin_bands[i]));	}	xmms_cfg_write_file(cfgfile, filename);	xmms_cfg_free(cfgfile);	gtk_widget_destroy(GTK_WIDGET(filesel));}static void equalizerwin_save_winamp_filesel_ok(GtkWidget * w, GtkFileSelection * filesel){	gchar *filename, name[257];	FILE *file;	gint i;	guchar bands[11];	if (util_filebrowser_is_dir(filesel))		return;	filename = gtk_file_selection_get_filename(filesel);	if ((file = fopen(filename, "wb")) != NULL)	{		fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file);		memset(name, 0, 257);		strcpy(name, "Entry1");		fwrite(name, 1, 257, file);		for (i = 0; i < 10; i++)			bands[i] = 63 - (((eqslider_get_position(equalizerwin_bands[i]) + 20) * 63) / 40);		bands[10] = 63 - (((eqslider_get_position(equalizerwin_preamp) + 20) * 63) / 40);		fwrite(bands, 1, 11, file);		fclose(file);	}	gtk_widget_destroy(GTK_WIDGET(filesel));}static gint equalizerwin_list_sort_func(GtkCList * clist, gconstpointer ptr1, gconstpointer ptr2){	GtkCListRow *row1 = (GtkCListRow *) ptr1;	GtkCListRow *row2 = (GtkCListRow *) ptr2;	return strcasecmp(GTK_CELL_TEXT(row1->cell[clist->sort_column])->text, GTK_CELL_TEXT(row2->cell[clist->sort_column])->text);}static GtkWidget *equalizerwin_create_list_window(GList * preset_list,						  gchar * title,						  GtkWidget ** window,						  GtkSelectionMode sel_mode,						  GtkWidget ** entry,						  gchar * btn1_caption,						  gchar * btn2_caption,						  GtkSignalFunc btn1_func,						  GtkSignalFunc select_row_func){	GtkWidget *vbox, *scrolled_window, *bbox, *btn1, *btn2, *clist;	char *preset_text[1];	GList *node;	*window = gtk_window_new(GTK_WINDOW_DIALOG);	gtk_signal_connect(GTK_OBJECT(*window), "destroy",			   GTK_SIGNAL_FUNC(gtk_widget_destroyed), window);	gtk_window_set_transient_for(GTK_WINDOW(*window), GTK_WINDOW(equalizerwin));	gtk_window_set_position(GTK_WINDOW(*window), GTK_WIN_POS_MOUSE);	gtk_window_set_title(GTK_WINDOW(*window), title);		gtk_widget_set_usize(*window, 350, 300);	gtk_container_set_border_width(GTK_CONTAINER(*window), 10);	vbox = gtk_vbox_new(FALSE, 10);	gtk_container_add(GTK_CONTAINER(*window), vbox);	scrolled_window = gtk_scrolled_window_new(NULL, NULL);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),				       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);	preset_text[0] = _("Presets");	clist = gtk_clist_new_with_titles(1, preset_text);	if (select_row_func)		gtk_signal_connect(GTK_OBJECT(clist), "select_row",				   GTK_SIGNAL_FUNC(select_row_func), NULL);	gtk_clist_column_titles_passive(GTK_CLIST(clist));	gtk_clist_set_selection_mode(GTK_CLIST(clist), sel_mode);	node = preset_list;	while (node)	{

⌨️ 快捷键说明

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