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

📄 xskin_i.c

📁 MIDI解码程序(用VC编写)
💻 C
📖 第 1 页 / 共 2 页
字号:
	  i=min*60+sec;	  if ( fremain==1 ) {	    sec =total_time-i;	    min =sec/60;	    sec-=min*60;	  }	  if ( i != last_current_time ) {	    ts_putnum( MIN_H_X, MIN_H_Y, min/10 );	    ts_putnum( MIN_L_X, MIN_L_Y, min%10 );	    ts_putnum( SEC_H_X, SEC_H_Y, sec/10 );	    ts_putnum( SEC_L_X, SEC_L_Y, sec%10 );	    p=100*i/total_time;	    play_val=ts_pos( OFF, -p );	    last_current_time=i;	    if ( last_current_time - last_puttext_time == 3 ) { /* 3 sec */	      sprintf( tmp, "%s [%02d:%02d]",		       file_name, total_time/60, total_time%60 );	      ts_puttext( MESSAGE_X, MESSAGE_Y, tmp );	    }	  }	}      break;      case 'L': /* lylics/message */	ts_puttext( MESSAGE_X, MESSAGE_Y, local_buf+2 );	last_puttext_time=last_current_time;	break;      case 'F': /* filename */	strncpy( file_name, local_buf+2, 1023 );	file_name[1023]=0;	break;      case 'O': /* off the play button */	fplay=0;	ts_play(OFF);	ts_spectrum(fspe, NULL); /* erase spectrums */	break;      case 'V': /* master volume */	master_volume=atoi( local_buf+2 );	p=100*((master_volume<200)?master_volume:200)/200; /* max:200% */	vol_val=ts_volume( OFF, -p );	break;      case 'Q': /* quit */	z=1;	break;      case 'W': /* wave form */	ts_spectrum(fspe, speana_buf);	break;      default:	break;      }    }    if ( XPending( xskin_d )==0 ) continue;    XNextEvent( xskin_d, &e );    switch ( e.type ) {      /*    case KeyPress:      z=0;      break;      */       case Expose:      repaint();      break;    case EnterNotify:      {	Cursor cs;	ts_titlebar(ON);	cs = XCreateFontCursor( xskin_d, XC_top_left_arrow );	XDefineCursor( xskin_d, xskin_w, cs );      }      break;    case LeaveNotify:      ts_titlebar(OFF);      XUndefineCursor( xskin_d, xskin_w );      break;    case MotionNotify:      while( XCheckMaskEvent( xskin_d, Button1MotionMask, &e ) ) {	XNextEvent( xskin_d, &e );      }      x = e.xbutton.x;      y = e.xbutton.y;      switch( pr ) {		/*      case TS_POS:	play_val=ts_pos( ON, x );break;	*/      case TS_VOLUME:	vol_val=ts_volume( ON, x );	i=master_volume;	master_volume=200*vol_val/100;	sprintf( local_buf, "V %d", master_volume-i );	xskin_pipe_write( local_buf );	sprintf( tmp, " volume: %d%%", vol_val );	ts_puttext( MESSAGE_X, MESSAGE_Y, tmp );	last_puttext_time=last_current_time;	break;	/*      case TS_PAN:	pan_val=ts_pan( ON, x );break;	*/	      default:	if ( x != last_window_x || y != last_window_y ) {	  window_x += x-last_window_x;	  window_y += y-last_window_y;	  XMoveWindow( xskin_d, xskin_w,		       window_x, window_y );	}	break;      }      break;    case ButtonPress:      x = e.xbutton.x;      y = e.xbutton.y;      last_window_x=x;      last_window_y=y;             if ( ISIN( x, y,EXITBUTTON_DX,EXITBUTTON_DY,			EXITBUTTON_W,EXITBUTTON_H ) ) {        ts_exitbutton(ON);pr=TS_EXITBUTTON;      } else if ( ISIN( x, y, PREV_DX, PREV_DY, PREV_W, PREV_H ) ) {	ts_prev(ON);pr=TS_PREV;      } else if ( ISIN( x, y, PLAY_DX, PLAY_DY, PLAY_W, PLAY_H ) ) {	ts_play(ON);pr=TS_PLAY;      } else if ( ISIN( x, y, PAUSE_DX, PAUSE_DY, PAUSE_W, PAUSE_H ) ) {	ts_pause(ON);pr=TS_PAUSE;      } else if ( ISIN( x, y, STOP_DX, STOP_DY, STOP_W, STOP_H ) ) {	ts_stop(ON);pr=TS_STOP;      } else if ( ISIN( x, y, NEXT_DX, NEXT_DY, NEXT_W, NEXT_H ) ) {	ts_next(ON);pr=TS_NEXT;      } else if ( ISIN( x, y, EJECT_DX, EJECT_DY, EJECT_W, EJECT_H ) ) {	ts_eject(ON);pr=TS_EJECT;      } else if ( ISIN( x, y,164, 89, 47, 15 ) ) {  /* shuffle */	if ( fshuf==0 ) {	  ts_shuf(OFFON);pr=TS_SHUFON;	} else { 	  ts_shuf(ONOFF);pr=TS_SHUFOFF;	}      } else if ( ISIN( x, y,210, 89, 28, 15 ) ) {  /* repeat */	if ( frep==0 ) {	  ts_rep(OFFON);pr=TS_REPON;	} else {	  ts_rep(ONOFF);pr=TS_REPOFF;	}      } else if ( ISIN( x, y,219, 58, 23, 12 ) ) {  /* equalizer */	if ( fequ==0 ) {	  ts_equ(OFFON);pr=TS_EQUON;	} else {	  ts_equ(ONOFF);pr=TS_EQUOFF;	}      } else if ( ISIN( x, y,242, 58, 23, 12 ) ) {  /* playlist */	if ( fpll==0 ) {	  ts_plist(OFFON);pr=TS_PLISTON;	} else {	  ts_plist(ONOFF);pr=TS_PLISTOFF;	}      } else if ( ISIN( x, y, MENUBUTTON_DX, MENUBUTTON_DY,			MENUBUTTON_W, MENUBUTTON_H ) ) {	ts_menubutton(ON);pr=TS_MENUBUTTON;      } else if ( ISIN( x, y, ICONBUTTON_DX, ICONBUTTON_DY,			ICONBUTTON_W, ICONBUTTON_H ) ) {	ts_iconbutton(ON);pr=TS_ICONBUTTON;      } else if ( ISIN( x, y, MINIBUTTON_DX, MINIBUTTON_DY,			MINIBUTTON_W, MINIBUTTON_H ) ) {	ts_minibutton(ON);pr=TS_MINIBUTTON;	/*      }	else if ( ISIN( x, y,POS_MIN_DX+(POS_MAX_DX-POS_MIN_DX)*play_val/100,			POS_DY, POS_W, POS_H ) ) {	ts_pos( ON, -play_val );pr=TS_POS;	*/      } else if ( ISIN( x, y,VOL_MIN_DX+(VOL_MAX_DX-VOL_MIN_DX)*vol_val/100,			VOL_DY, VOL_W, VOL_H ) ) {	ts_volume( ON, -vol_val );pr=TS_VOLUME;	sprintf( tmp, " volume: %d%%", vol_val );	ts_puttext( MESSAGE_X, MESSAGE_Y, tmp );	last_puttext_time=last_current_time;	/*      } else if ( ISIN( x, y,PAN_MIN_DX+(PAN_MAX_DX-PAN_MIN_DX)*pan_val/100,			PAN_DY, PAN_W, PAN_H ) ) {	ts_pan( ON, -pan_val );pr=TS_PAN;	*/      } else if ( ISIN( x, y, MIN_H_X, MIN_H_Y,			SEC_L_X+NUM_W-MIN_H_X, NUM_H ) ) {	int min,sec;	fremain=(fremain==0)?1:0;	sec=(fremain==0)?last_current_time:total_time-last_current_time;	min =sec/60;	sec-=min*60;	ts_putnum( MIN_H_X, MIN_H_Y, min/10 );	ts_putnum( MIN_L_X, MIN_L_Y, min%10 );	ts_putnum( SEC_H_X, SEC_H_Y, sec/10 );	ts_putnum( SEC_L_X, SEC_L_Y, sec%10 );      } else if ( ISIN( x, y, SPE_SX, SPE_SY, SPE_W, SPE_H ) ) {	pr=TS_SPECTRUM;      } else {	XRaiseWindow( xskin_d, xskin_w );      }	     break;      case ButtonRelease:      last_window_x = -1;      last_window_y = -1;      switch( pr ) {      case TS_EXITBUTTON:	ts_exitbutton(OFF);	xskin_pipe_write("Q");	z=0;break;      case TS_PREV:	ts_prev(OFF);	ts_spectrum( fspe, NULL );	xskin_pipe_write("B");	break;      case TS_PLAY:	xskin_pipe_write("P");	fplay=1;	pauseOff();	ts_play(OFF);ts_pause(OFF);	ts_pstate( PSTATE_PLAY );	break;      case TS_PAUSE:	ts_pause(OFF);	if ( fplay ==1 ) {	  if ( fpause==0 ) {	    ts_pstate( PSTATE_PAUSE );	    ts_spectrum( fspe, NULL );	    pauseOn();	  } else {	    ts_pstate( PSTATE_PLAY );	    pauseOff();	  }	}	break;      case TS_STOP:	pauseOff();	fplay=0;	ts_pause(OFF);ts_play(OFF);ts_stop(OFF);	ts_pstate( PSTATE_STOP );	ts_spectrum( fspe, NULL );	xskin_pipe_write("S");	break;      case TS_NEXT:	ts_next(OFF);	ts_spectrum( fspe, NULL );	xskin_pipe_write("N");	break;      case TS_EJECT:	ts_eject(OFF);break;      case TS_SHUFON:	ts_shuf(ON);fshuf=1;	fplay=1;	pauseOff();	ts_pstate( PSTATE_PLAY );	xskin_pipe_write("D 1");	break;      case TS_SHUFOFF:	ts_shuf(OFF);fshuf=0;	fplay=0;	pauseOff();	ts_pstate( PSTATE_STOP );	ts_spectrum( fspe, NULL );	xskin_pipe_write("D 2");	break;      case TS_REPON:	ts_rep(ON);frep=1;	xskin_pipe_write("R 1");	break;      case TS_REPOFF:	ts_rep(OFF);frep=0;	xskin_pipe_write("R 0");	break;      case TS_EQUON:	ts_equ(ON);fequ=1;break;      case TS_EQUOFF:	ts_equ(OFF);fequ=0;break;      case TS_PLISTON:	ts_plist(ON);fpll=1;break;      case TS_PLISTOFF:	ts_plist(OFF);fpll=0;break;      case TS_MENUBUTTON:	ts_menubutton(OFF);break;      case TS_ICONBUTTON:	ts_iconbutton(OFF);break;      case TS_MINIBUTTON:	ts_minibutton(OFF);break;	/*      case TS_POS:	ts_pos( OFF, -play_val );break;	*/      case TS_VOLUME:	ts_volume( OFF, -vol_val );break;	/*      case TS_PAN:	ts_pan( OFF, -pan_val );break;	*/      case TS_SPECTRUM:#ifdef SUPPORT_SOUNDSPEC	fspe = (fspe+1)%3;	if ( fspe==1 ) xskin_pipe_write("W");      /* on */	else if ( fspe==0 ) {	  xskin_pipe_write("W"); /* off */	  ts_spectrum(0,speana_buf);	}#endif /* SUPPORT_SOUNDSPEC */	break;      default:	break;      }      pr=-1;      break;    default:      break;    }  }  return;}static int load_skins( void ) {  char **files;  char *tmp[2];  int nfiles;  int i,pixmaps;  char *p,*p0;  char *skin_name;  int width, height;  skin_name = getenv( "TIMIDITY_SKIN" );  if ( skin_name == NULL ) {    skin_name = getenv( "timidity_skin" );    if ( skin_name == NULL ) {#ifdef	DEFAULT_SKIN      skin_name = DEFAULT_SKIN;#else      fprintf(stderr, "Undefined environment `timidity_skin'\n");      return -1;#endif    }  }  tmp[0]=skin_name;  files=tmp;  nfiles=1;  files = expand_file_archives( files, &nfiles );  pixmaps=0;  xskin_loadviscolor( xskin_d, xskin_w, NULL );  for ( i=0 ; i<nfiles ; i++ ) {    /*printf("%s\n",files[i]);fflush(stdout);*/    p0=strrchr( files[i], '#' );    if ( p0==NULL ) p0=files[i];    else p0++;    p=strrchr( p0, PATH_SEP );    if ( p==NULL ) p=p0;    else p++;           if ( strcasecmp( p, "viscolor.txt" )==0 ) {	     xskin_loadviscolor( xskin_d, xskin_w, files[i] );    } else if ( strcasecmp( p, "main.bmp" )==0 ) {      xskin_back = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "titlebar.bmp" )==0 ) {      xskin_titlebar = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "playpaus.bmp" )==0 ) {      xskin_playpaus = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "cbuttons.bmp" )==0 ) {      xskin_cbuttons = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "monoster.bmp" )==0 ) {      xskin_monoster = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "posbar.bmp" )==0 ) {      xskin_posbar = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "shufrep.bmp" )==0 ) {      xskin_shufrep = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "text.bmp" )==0 ) {      xskin_text = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "volume.bmp" )==0 ) {      xskin_volume = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else if ( strcasecmp( p, "numbers.bmp" )==0 ) {      xskin_numbers = 	xskin_loadBMP( xskin_d, xskin_w, files[i], &width, &height );      pixmaps++;    } else {      width=1;    }    if ( width<0 ) return -1;  }  if(files != tmp)      free(files);  if ( pixmaps<10 ) {    fprintf(stderr, "some of bmp file might be missed.\n");    return -1;  }  return 0;}static void repaint( void ) {  char tmp[64];  int min,sec;  /* static values */  XClearWindow( xskin_d, xskin_w );  ts_titlebar(OFF);  ts_prev(OFF);  ts_play(OFF);  ts_pause(OFF);  ts_stop(OFF);  ts_next(OFF);  ts_eject(OFF);  if ( (play_mode->encoding & PE_MONO)==0 ) {    ts_mono(OFF);    ts_stereo(ON);  } else {    ts_mono(ON);    ts_stereo(OFF);  }  ts_pan(OFF,-50);  ts_puttext( BITRATE_X, BITRATE_Y, "---" ); /* bit-rate */    sprintf( tmp, "%d", (int)play_mode->rate/1000 );  ts_puttext( SAMPLE_X,  SAMPLE_Y,  tmp  ); /* sample-rate */  /* volatile values */  if ( fshuf==0 ) ts_shuf(OFF);  else ts_shuf(ON);  if ( frep==0 ) ts_rep(OFF);  else ts_rep(ON);  if ( fequ==0 ) ts_equ(OFF);  else ts_equ(ON);  if ( fpll==0 ) ts_plist(OFF);  else ts_plist(ON);  if ( fplay==1 ) {    if ( fpause==0 ) ts_pstate( PSTATE_PLAY );    else  ts_pstate( PSTATE_PAUSE );  } else ts_pstate( PSTATE_STOP );  ts_volume( OFF, -vol_val );  ts_pos( OFF, -play_val );  ts_puttext( MESSAGE_X, MESSAGE_Y, last_text );  if ( fremain==0 ) {    sec=last_current_time;  } else {    sec=total_time-last_current_time;  }  min =sec/60;  sec-=min*60;  ts_putnum( MIN_H_X, MIN_H_Y, min/10 );  ts_putnum( MIN_L_X, MIN_L_Y, min%10 );  ts_putnum( SEC_H_X, SEC_H_Y, sec/10 );  ts_putnum( SEC_L_X, SEC_L_Y, sec%10 );  XFlush(xskin_d);  return;}/* signal handler calls are ported from xmasl    and thanks to takawata@shidahara1.planet.kobe-u.ac.jp */void delete_shm( void ) {   if ( speana_buf != NULL ) {    shmdt( (char *)speana_buf );    shmctl( shmid, IPC_RMID, 0 );  }  return;}static const int signals[]={SIGHUP,SIGINT,SIGQUIT,SIGILL,SIGABRT,SIGFPE,			    SIGBUS,SIGSEGV,SIGPIPE,SIGALRM,SIGTERM,0};void install_sighandler( void ) {  int i;  for ( i=0 ; signals[i]!=0 ; i++ ) {    signal( signals[i], signal_vector );  }}void signal_vector( int sig ) {  delete_shm();  XUnmapWindow( xskin_d, xskin_w );  XFlush(xskin_d);  XDestroyWindow( xskin_d, xskin_w );  XCloseDisplay( xskin_d );  exit (0);}

⌨️ 快捷键说明

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