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

📄 xwaves.c

📁 speech signal process tools
💻 C
📖 第 1 页 / 共 3 页
字号:
		Version, registry_name);  xv_set(daddy, XV_LABEL, frame_label, NULL);  (void) exv_attach_icon(daddy, ERL_NOBORD_ICON, "xwaves", TRANSPARENT);  control_panel = xv_create(daddy, PANEL,			    XV_X,		    0,			    XV_Y,		    0,			    XV_WIDTH,		    WIN_EXTEND_TO_EDGE,			    XV_HEIGHT,		    WIN_EXTEND_TO_EDGE,			    OPENWIN_SHOW_BORDERS,   FALSE,			    0);  window_wash(control_panel);    pause_item = xv_create(control_panel, PANEL_BUTTON,			 PANEL_LABEL_STRING,	"PAUSE",			 PANEL_NOTIFY_PROC,	pause_proc,			 XV_X,			206,			 XV_Y,			16,/* 			 XV_HELP_DATA,		"xwaves:pause_item", */			 XV_WIDTH,		57,			 XV_HEIGHT,		19,			 0);  resume_item = xv_create(control_panel, PANEL_BUTTON,			  PANEL_LABEL_STRING, "CONTINUE",			  PANEL_NOTIFY_PROC, resume_proc,			  XV_X, 310,			  XV_Y, 16,			  XV_HELP_DATA, "xwaves:resume_item",			  XV_WIDTH, 83,			  XV_HEIGHT, 25,			  0);  newFile_item = xv_create(control_panel, PANEL_TEXT,			   XV_HELP_DATA, "xwaves:newFile_item",			   XV_X, 12,			   XV_Y, 52,			   XV_WIDTH, 306,			   XV_HEIGHT, 15,			   PANEL_VALUE_X, 94,			   PANEL_VALUE_Y, 52,			   PANEL_LAYOUT, PANEL_HORIZONTAL,			   PANEL_VALUE_DISPLAY_LENGTH, 29,			   PANEL_VALUE_STORED_LENGTH, 120,			   PANEL_READ_ONLY, FALSE,			   PANEL_LABEL_STRING, "INPUT file:",			   PANEL_VALUE, inputname,			   PANEL_NOTIFY_PROC, newText_proc,			   0);  outputFile_item = xv_create( control_panel, PANEL_TEXT,			      XV_HELP_DATA, "xwaves:outputFile_item",			      XV_X, 344,			      XV_Y, 52,			      XV_WIDTH, 297,			      XV_HEIGHT, 15,			      PANEL_LABEL_STRING, "OUTPUT file:",			      PANEL_VALUE_X, 441,			      PANEL_VALUE_Y, 52,			      PANEL_LAYOUT, PANEL_HORIZONTAL,			      PANEL_VALUE_DISPLAY_LENGTH, 25,			      PANEL_VALUE_STORED_LENGTH, 120,			      PANEL_READ_ONLY, FALSE,			      PANEL_VALUE, outputname,			      PANEL_NOTIFY_PROC, newText_proc,			      PANEL_EVENT_PROC, show_output_proc,			      0);  newObj_item = xv_create( control_panel, PANEL_TEXT,			  XV_HELP_DATA, "wtest:newObj_item",			  XV_X, 12,			  XV_Y, 20,			  XV_WIDTH, 170,			  XV_HEIGHT, 15,			  PANEL_LABEL_STRING, "OBJECT name:",			  PANEL_VALUE_X, 118,			  PANEL_VALUE_Y, 20,			  PANEL_LAYOUT, PANEL_HORIZONTAL,			  PANEL_VALUE_DISPLAY_LENGTH, 8,			  PANEL_VALUE_STORED_LENGTH, 80,			  PANEL_READ_ONLY, FALSE,			  PANEL_VALUE, objectname,			  0);  attach_panel = add_attach_choices(control_panel, 344, 80, attachments);  overlay_item = xv_create(control_panel, PANEL_TEXT,			   XV_HELP_DATA, "xwaves:overlay_item",			   XV_X, 12,			   XV_Y, 80,			   XV_WIDTH, 316,			   XV_HEIGHT, 15,			   PANEL_LABEL_STRING, "Overlay name:",			   PANEL_VALUE_X, 120,			   PANEL_VALUE_Y, 80,			   PANEL_LAYOUT, PANEL_HORIZONTAL,			   PANEL_VALUE_DISPLAY_LENGTH, 26,			   PANEL_VALUE_STORED_LENGTH, 120,			   PANEL_READ_ONLY, FALSE,			   PANEL_NOTIFY_PROC, newText_proc,			   PANEL_VALUE, overlayname,			   0);/*  help_item = xv_create(control_panel, PANEL_BUTTON,			XV_HELP_DATA,		"xwaves:help_item",			XV_X,			382,			XV_Y,			16,			XV_WIDTH,		51,			XV_HEIGHT,		19,			PANEL_LABEL_STRING,	"HELP!",			XV_KEY_DATA,			    EXVK_HELP_NAME,	FIND_WAVES_LIB(NULL,							      "xwaves.help"),			XV_KEY_DATA,			    EXVK_HELP_TITLE,	"xwaves help",			PANEL_NOTIFY_PROC,	exv_get_help,			0);*/  help_item = xv_create(control_panel, PANEL_BUTTON,			XV_HELP_DATA,		"xwaves:man_help_item",			XV_X,			451,			XV_Y,			16,			XV_WIDTH,		119,			XV_HEIGHT,		25,			PANEL_LABEL_STRING,	"xwaves MANUAL",			XV_KEY_DATA,			    EXVK_HELP_NAME,	FIND_WAVES_LIB(NULL,							      "xwaves.man"),			XV_KEY_DATA,			    EXVK_HELP_TITLE,	"xwaves manual page",			PANEL_NOTIFY_PROC,	exv_get_help,			0);  quit_item = xv_create(control_panel, PANEL_BUTTON,			XV_HELP_DATA,		"xwaves:quit_item",			XV_X,			588,			XV_Y,			16,			XV_WIDTH,		52,			XV_HEIGHT,		25,			PANEL_LABEL_STRING,	"QUIT!",			PANEL_NOTIFY_PROC,	quit_proc,			0);  newControl_item = xv_create(control_panel, PANEL_TEXT,			      XV_HELP_DATA, "xwaves:newControl_item",			      XV_X, 12,			      XV_Y, 108,			      XV_WIDTH, 631,			      XV_HEIGHT, 15,			      PANEL_VALUE_X, 163,			      PANEL_VALUE_Y, 108,			      PANEL_LAYOUT, PANEL_HORIZONTAL,			      PANEL_VALUE_DISPLAY_LENGTH, 60,			      PANEL_VALUE_STORED_LENGTH, 200,			      PANEL_READ_ONLY, FALSE,			      PANEL_NOTIFY_PROC, newText_proc,			      PANEL_LABEL_STRING, "COMMAND (or @file):",			      PANEL_VALUE, commandname,			      0);  init_print_setup_window();  identify_visual();  /*    change to hard wire in waves as the initial object name */  if((program.name = savestring("waves"))) {    program.methods = &bmeth1;    window_fit(control_panel);    window_fit(daddy);    /* Process funcname before init_file; otherwise, if init_file starts       an attachment, funcname gets set as a side effect, and the attachment       gets started twice. */    if(*funcname)	start_external_function(funcname);    if(server_mode)      (void)meth_enable_server(NULL,NULL);        if(*init_file && strcmp(init_file, "/dev/null")) {      char *act_init_file = malloc(MAXPATHLEN);      if (FIND_WAVES_COMMAND(act_init_file,init_file)) {	strcpy(commandname, "@");	strcat(commandname, act_init_file);	panel_set_value(newControl_item, commandname);	command_proc(newControl_item, EVENT_NULL);      } else  {	sprintf(notice_msg, "Cannot find init_file %s", init_file);        show_notice(0,notice_msg);      }      free(act_init_file);    }    if(ac > optind + 50) ac = optind + 50;   /* some protection against	*/					    /* too many windows...	*/    for(i = optind; i < ac; i++) 	if((av[i][0] == '-') && !av[i][1]) {	    strcpy(commandname, "@stdin");	    panel_set_value(newControl_item, commandname);	    command_proc(newControl_item, EVENT_NULL);	    break;	} else {	    char *cmd_file = FIND_WAVES_COMMAND(NULL, av[i]);	    if(cmd_file && is_a_command_file(cmd_file)) {	      strcpy(commandname, "@");	      strcat(commandname, cmd_file);	      panel_set_value(newControl_item, commandname);	      command_proc(newControl_item, EVENT_NULL);	    } else {	      strcpy(inputname, av[i]);	      (void)apply_waves_input_path(inputname, inputname);	      panel_set_value(newFile_item, inputname);	      create_new_signal_view(inputname);	    }	if(cmd_file)	    free(cmd_file);        }    if (ctlwin_iconized) {      xv_set(daddy, FRAME_CLOSED, TRUE, 0);     }    window_main_loop(daddy);  } else {    printf("Problems initializing main program object\n");#ifndef NO_LIC    lm_quit();#endif    exit(-1);  }}/*************************************************************************/void doub_proc(item, event)     Panel_item item;     Event *event;{  double val;  #define PNZ_VAL(x) (x = (val > 0.0)? val : x)  sscanf((char*)panel_get_value(item),"%lf", &val);  }/*********************************************************************/voidrescale_it(c, w, h)    Canvas  c;    int	    w, h;{  View *v;  if (debug_level)  {      Frame frame;      Xv_Window pw;      fprintf(stderr, "rescale_it(c, %d, %d)\n", w, h);      pw = canvas_paint_window(c);      fprintf(stderr, "Paint window has XV_WIDTH %d,  XV_HEIGHT %d.\n",	  (int) xv_get(pw, XV_WIDTH), (int) xv_get(pw, XV_HEIGHT));      fprintf(stderr, "Canvas has XV_WIDTH %d,  XV_HEIGHT %d.\n",	  (int) xv_get(c, XV_WIDTH), (int) xv_get(c, XV_HEIGHT));      frame = (Frame) xv_get(c, XV_OWNER);      fprintf(stderr, "Frame has XV_WIDTH %d,  XV_HEIGHT %d.\n",	  (int) xv_get(frame, XV_WIDTH), (int) xv_get(frame, XV_HEIGHT));  }  if (w && (v = (View*)xv_get(c, WIN_CLIENT_DATA))) {    *(v->x_scale) *= ((double) (v->width - *v->x_offset))/(w - *v->x_offset);    v->width = w;    v->height = h;  }}/*********************************************************************/View *create_new_signal_view(name)    char *name;{  static Frame    frame, sfr;  Canvas          canvas;  Scrollbar       scrollbar;  Xv_Cursor       cursor;  Rect            *rec;  char            head[100];  Signal          *sig, *get_any_signal();  Object          *ob;  int             fd;  extern int cmap_depth;  double          dur;  View            *v;  int             width, height;  Object *find_object();  S_bar *new_scrollbar();  char *remove_ext();  extern Visual   *visual_ptr;  if (debug_level)     (void) fprintf(stderr, "create_new_signal_view: function entered\n");  /* get object name (if any) *//*  objectname[0] = '\0';		/* re-init name string */  sscanf((char *)panel_get_value(newObj_item),"%s",objectname);  if (!objectname[0]) {		/* defaults filename - extension */    strncpy(objectname,remove_ext(name),99);    panel_set_value(newObj_item,objectname);  }  if((sig = get_any_signal(expand_name(NULL,name),ref_start,ref_size,NULL))) {    close_sig_file(sig);	/* to conserve open file numbers */    if(!(ob = find_object(objectname))) {      if(!(ob = new_object(objectname, sig))) {	show_notice(1,"Cannot create a new object in create_new_signal_view");	return(NULL);      }      link_new_object(ob);    } else      link_new_signal(ob,sig);    strcpy(inputname,name);    /* check for special types */    if ((sig->type & SPECIAL_SIGNALS) == SIG_SPECTROGRAM) {      return((View*)new_spect_display(sig));    }    width = (new_width > 0) ? new_width : def_w_width;    height = (new_height > 0) ? new_height : def_w_height;    if (debug_level)      fprintf(stderr, "Creating frame with XV_WIDTH %d,  XV_HEIGHT %d.\n",	      width, height);    if(do_color)      frame = xv_create(XV_NULL, FRAME,			XV_VISUAL,	        visual_ptr,			XV_WIDTH,		width + 2*FRAME_MARGIN,			XV_HEIGHT,		height + FRAME_HEADER			+ FRAME_MARGIN,			FRAME_INHERIT_COLORS,	FALSE,			XV_SHOW,		FALSE,			FRAME_NO_CONFIRM,	TRUE,			XV_X,			next_x,			XV_Y,			next_y,			0);    else      frame = xv_create(XV_NULL, FRAME,			XV_WIDTH,		width + 2*FRAME_MARGIN,			XV_HEIGHT,		height + FRAME_HEADER			+ FRAME_MARGIN,			XV_LABEL,		head,			XV_SHOW,		FALSE,			FRAME_INHERIT_COLORS,	TRUE,			FRAME_NO_CONFIRM,	TRUE,			XV_X,			next_x,			XV_Y,			next_y,			0);    if(!window_check_return(frame)) return(NULL);    next_x += w_x_incr;    next_y += w_y_incr;    if((next_y+def_w_height) > SCREEN_HEIGHT) {      next_y = 120;      next_x = 10;    }    canvas = xv_create(frame, CANVAS,		       CANVAS_RETAINED, FALSE, 		       CANVAS_FIXED_IMAGE, FALSE,/*			WIN_DEPTH,              cmap_depth, */		       CANVAS_AUTO_SHRINK, TRUE,		       CANVAS_AUTO_EXPAND, TRUE,		       OPENWIN_NO_MARGIN,	TRUE,		       XV_WIDTH,		WIN_EXTEND_TO_EDGE,		       XV_HEIGHT,		WIN_EXTEND_TO_EDGE,		       WIN_MENU, wave_menu,		       XV_KEY_DATA,	menu_item_key,		         find_operator(wave_get_ops(),"play between marks"),		       CANVAS_CMS_REPAINT, FALSE,		       CANVAS_PAINTWINDOW_ATTRS,			XV_VISUAL,	        visual_ptr,			WIN_DEPTH,              cmap_depth,		       0,		       CANVAS_NO_CLIPPING,	TRUE,		       0);    xv_set(canvas_paint_window(canvas),	   WIN_CONSUME_EVENTS,	   LOC_DRAG,	   WIN_IN_TRANSIT_EVENTS,	   WIN_MOUSE_BUTTONS,	   LOC_MOVE,	   LOC_WINEXIT,	   LOC_WINENTER,	   KBD_USE,	   KBD_DONE,	   WIN_ASCII_EVENTS,	   0,	   WIN_EVENT_PROC, doit,	   WIN_BIT_GRAVITY, ForgetGravity,	   0);    if(!window_check_return(canvas )) {      dt_xv_destroy_safe(16,frame);      return(NULL);    }    cmap(canvas);    /* kill_signal_view wasn't getting called when interposed on canvas, so     * interpose on frame.  But function has to be able to find canvas to     * get its WIN_CLIENT_DATA.     */    notify_interpose_destroy_func(frame, kill_signal_view);    xv_set(frame, WIN_CLIENT_DATA, (caddr_t) canvas, 0);    if((v = setup_view(sig, canvas))) {      v->next = sig->views;      sig->views = v;      update_window_titles(sig);      xv_set(canvas,	     WIN_CLIENT_DATA,	sig->views,	     /* Don't set repaint and resize procs in original xv_create		since xv_create might call the repaint proc prematurely. */	     CANVAS_REPAINT_PROC,	repaint,	     CANVAS_RESIZE_PROC,	rescale_it,	     0);      (void) exv_attach_icon(frame, SINE_ICON, basename(name), TRANSPARENT);      xv_set(frame, XV_SHOW, TRUE, 0);      sig->views->scrollbar = new_scrollbar(sig->views);      return(v);    } else      show_notice(1, "Cannot setup signal views in create_new_signal_view");  } else {    sprintf(notice_msg,"Cannot open file %s in create_new_signal_view",name);    show_notice(1,notice_msg);

⌨️ 快捷键说明

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