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

📄 skin.c

📁 uclinux下mplayer的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "cut.h"#include "font.h"#include "app.h"#include "../config.h"#include "../mp_msg.h"#include "../help_mp.h"#include "mplayer/widgets.h"#include "libavutil/avstring.h"//#define MSGL_DBG2 MSGL_STATUSlistItems     * skinAppMPlayer = &appMPlayer;// ---static int             linenumber;static unsigned char   path[512],fn[512];static listItems     * defList = NULL;static unsigned char   window_name[32] = "";static wItem         * currSection = NULL;static int           * currSubItem = NULL;static wItem         * currSubItems = NULL;#include <stdarg.h>void ERRORMESSAGE( const char * format, ... ){ char      p[512]; char      tmp[512]; va_list   ap; va_start( ap,format ); vsnprintf( p,512,format,ap ); va_end( ap ); mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_ERRORMESSAGE,linenumber,p ); snprintf( tmp,512,MSGTR_SKIN_ERRORMESSAGE,linenumber,p ); gtkMessageBox( GTK_MB_FATAL,tmp );}#define CHECKDEFLIST( str ) \{ \ if ( defList == NULL ) \  { \   mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING1,linenumber,str ); \   return 1; \  } \}#define CHECKWINLIST( str ) \{ \ if ( !window_name[0] ) \  { \   mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING2,linenumber,str ); \   return 1; \  } \}#define CHECK( name ) \{ \ if ( !strcmp( window_name,name ) ) \  { \   mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING3,linenumber,name ); \   return 1; \  } \}static char * strlower( char * in ){ int i; for( i=0;i<(int)strlen( in );i++ ) in[i]=( in[i] >= 'A' ? ( in[i] <= 'Z' ?  in[i]+='A' : in[i] ) : in[i] ); return in;}int skinBPRead( char * fname, txSample * bf ){ int i=bpRead( fname,bf ); switch ( i )  {   case -1: ERRORMESSAGE( MSGTR_SKIN_BITMAP_16bit,fname ); break;   case -2: ERRORMESSAGE( MSGTR_SKIN_BITMAP_FileNotFound,fname ); break;   case -3: ERRORMESSAGE( MSGTR_SKIN_BITMAP_BMPReadError,fname ); break;   case -4: ERRORMESSAGE( MSGTR_SKIN_BITMAP_TGAReadError,fname ); break;   case -5: ERRORMESSAGE( MSGTR_SKIN_BITMAP_PNGReadError,fname ); break;   case -6: ERRORMESSAGE( MSGTR_SKIN_BITMAP_RLENotSupported,fname ); break;   case -7: ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownFileType,fname ); break;   case -8: ERRORMESSAGE( MSGTR_SKIN_BITMAP_ConversionError,fname ); break;  } return i;}int cmd_section( char * in ){ strlower( in ); defList=NULL; if ( !strcmp( in,"movieplayer" ) ) defList=skinAppMPlayer; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] sectionname: %s\n",in ); return 0;}int cmd_end( char * in ){ if ( strlen( window_name ) ) { window_name[0]=0; currSection=NULL; currSubItem=NULL; currSubItems=NULL; }  else defList=NULL; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] end section\n" ); return 0;}int cmd_window( char * in ){ CHECKDEFLIST( "window" ); av_strlcpy( window_name,strlower( in ),sizeof( window_name ) ); if ( !strncmp( in,"main",4 ) ) { currSection=&skinAppMPlayer->main; currSubItem=&skinAppMPlayer->NumberOfItems; currSubItems=skinAppMPlayer->Items; }  else if ( !strncmp( in,"sub",3 ) ) currSection=&skinAppMPlayer->sub;   else if ( !strncmp( in,"playbar",7 ) ) { currSection=&skinAppMPlayer->bar; currSubItem=&skinAppMPlayer->NumberOfBarItems; currSubItems=skinAppMPlayer->barItems; }    else if ( !strncmp( in,"menu",4 ) ) { currSection=&skinAppMPlayer->menuBase; currSubItem=&skinAppMPlayer->NumberOfMenuItems; currSubItems=skinAppMPlayer->MenuItems; }     else ERRORMESSAGE( MSGTR_UNKNOWNWINDOWTYPE ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window: %s\n",window_name ); return 0;}int cmd_base( char * in ){ unsigned char fname[512]; unsigned char tmp[512]; int           x,y; int           sx=0,sy=0; CHECKDEFLIST( "base" ); CHECKWINLIST( "base" ); cutItem( in,fname,',',0 ); x=cutItemToInt( in,',',1 ); y=cutItemToInt( in,',',2 ); sx=cutItemToInt( in,',',3 ); sy=cutItemToInt( in,',',4 ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] base: %s x: %d y: %d ( %dx%d )\n",fname,x,y,sx,sy ); if ( !strcmp( window_name,"main" ) )  {   defList->main.x=x;   defList->main.y=y;   defList->main.type=itBase;   av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));    if ( skinBPRead( tmp,&defList->main.Bitmap ) ) return 1;   defList->main.width=defList->main.Bitmap.Width;   defList->main.height=defList->main.Bitmap.Height;#ifdef HAVE_XSHAPE    Convert32to1( &defList->main.Bitmap,&defList->main.Mask,0x00ff00ff );    mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  mask: %dx%d\n",defList->main.Mask.Width,defList->main.Mask.Height );#else    defList->main.Mask.Image=NULL;#endif   mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  width: %d height: %d\n",defList->main.width,defList->main.height );  } if ( !strcmp( window_name,"sub" ) )  {   defList->sub.type=itBase;   av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));    if ( skinBPRead( tmp,&defList->sub.Bitmap ) ) return 1;   defList->sub.x=x;   defList->sub.y=y;   defList->sub.width=defList->sub.Bitmap.Width;   defList->sub.height=defList->sub.Bitmap.Height;   if ( sx && sy )    {     defList->sub.width=sx;     defList->sub.height=sy;    }   mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  %d,%d %dx%d\n",defList->sub.x,defList->sub.y,defList->sub.width,defList->sub.height );  } if ( !strcmp( window_name,"menu" ) )  {   defList->menuIsPresent=1;   defList->menuBase.type=itBase;   av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));    if ( skinBPRead( tmp,&defList->menuBase.Bitmap ) ) return 1;   defList->menuBase.width=defList->menuBase.Bitmap.Width;   defList->menuBase.height=defList->menuBase.Bitmap.Height;#ifdef HAVE_XSHAPE    Convert32to1( &defList->menuBase.Bitmap,&defList->menuBase.Mask,0x00ff00ff );    mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  mask: %dx%d\n",defList->menuBase.Mask.Width,defList->menuBase.Mask.Height );#else    defList->menuBase.Mask.Image=NULL;#endif   mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  width: %d height: %d\n",defList->menuBase.width,defList->menuBase.height );  } if ( !strcmp( window_name,"playbar" ) )  {   defList->barIsPresent=1;   defList->bar.x=x;   defList->bar.y=y;   defList->bar.type=itBase;   av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));    if ( skinBPRead( tmp,&defList->bar.Bitmap ) ) return 1;   defList->bar.width=defList->bar.Bitmap.Width;   defList->bar.height=defList->bar.Bitmap.Height;#ifdef HAVE_XSHAPE    Convert32to1( &defList->bar.Bitmap,&defList->bar.Mask,0x00ff00ff );    mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  mask: %dx%d\n",defList->bar.Mask.Width,defList->bar.Mask.Height );#else    defList->bar.Mask.Image=NULL;#endif   mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  width: %d height: %d\n",defList->bar.width,defList->bar.height );  } return 0;}int cmd_background( char * in ){ CHECKDEFLIST( "background" ); CHECKWINLIST( "background" ); CHECK( "menu" ); CHECK( "main" );  currSection->R=cutItemToInt( in,',',0 ); currSection->G=cutItemToInt( in,',',1 ); currSection->B=cutItemToInt( in,',',2 ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin]  background color is #%x%x%x.\n",currSection->R,currSection->G,currSection->B );  return 0;}int cmd_button( char * in ){ unsigned char   fname[512]; unsigned char   tmp[512]; int             x,y,sx,sy; char            msg[32]; CHECKDEFLIST( "button" ); CHECKWINLIST( "button" ); CHECK( "sub" ); CHECK( "menu" );   cutItem( in,fname,',',0 ); x=cutItemToInt( in,',',1 ); y=cutItemToInt( in,',',2 ); sx=cutItemToInt( in,',',3 ); sy=cutItemToInt( in,',',4 ); cutItem( in,msg,',',5 ); (*currSubItem)++; currSubItems[ *currSubItem ].type=itButton; currSubItems[ *currSubItem ].x=x; currSubItems[ *currSubItem ].y=y; currSubItems[ *currSubItem ].width=sx; currSubItems[ *currSubItem ].height=sy; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] button: fname: %s\n",fname ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy ); if ( ( currSubItems[ *currSubItem ].msg=appFindMessage( msg ) ) == -1 )   { ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,msg ); return 0; } currSubItems[ *currSubItem ].pressed=btnReleased; if ( currSubItems[ *currSubItem ].msg == evPauseSwitchToPlay ) currSubItems[ *currSubItem ].pressed=btnDisabled; currSubItems[ *currSubItem ].tmp=1; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  message: %d\n",currSubItems[ *currSubItem ].msg ); currSubItems[ *currSubItem ].Bitmap.Image=NULL; if ( strcmp( fname,"NULL" ) )  {   av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));    if ( skinBPRead( tmp,&currSubItems[ *currSubItem ].Bitmap ) ) return 1;  } return 0;}int cmd_selected( char * in ){ unsigned char   fname[512]; unsigned char   tmp[512]; CHECKDEFLIST( "selected" ); CHECKWINLIST( "selected" ); CHECK( "main" ); CHECK( "sub" ); CHECK( "playbar" ); cutItem( in,fname,',',0 ); defList->menuSelected.type=itBase; av_strlcpy(tmp, path, sizeof( tmp )); av_strlcat(tmp, fname, sizeof( tmp ));  mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] selected: %s\n",fname ); if ( skinBPRead( tmp,&defList->menuSelected.Bitmap ) ) return 1; defList->menuSelected.width=defList->menuSelected.Bitmap.Width; defList->menuSelected.height=defList->menuSelected.Bitmap.Height; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  width: %d height: %d\n",defList->menuSelected.width,defList->menuSelected.height ); return 0;}int cmd_menu( char * in ){ // menu = number,x,y,sx,sy,msg int             x,y,sx,sy,msg; unsigned char   tmp[64]; CHECKDEFLIST( "menu" ); CHECKWINLIST( "menu" ); CHECK( "main" ); CHECK( "sub" ); CHECK( "playbar" );  x=cutItemToInt( in,',',0 ); y=cutItemToInt( in,',',1 ); sx=cutItemToInt( in,',',2 ); sy=cutItemToInt( in,',',3 ); cutItem( in,tmp,',',4 ); msg=appFindMessage( tmp ); defList->NumberOfMenuItems++; defList->MenuItems[ defList->NumberOfMenuItems ].x=x; defList->MenuItems[ defList->NumberOfMenuItems ].y=y; defList->MenuItems[ defList->NumberOfMenuItems ].width=sx; defList->MenuItems[ defList->NumberOfMenuItems ].height=sy; mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] menuitem: %d\n",defList->NumberOfMenuItems ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy ); if ( ( defList->MenuItems[ defList->NumberOfMenuItems ].msg=msg ) == -1 )  ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,tmp ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  message: %d\n",defList->Items[ defList->NumberOfItems ].msg ); defList->MenuItems[ defList->NumberOfMenuItems ].Bitmap.Image=NULL; return 0;}int cmd_hpotmeter( char * in ){ // hpotmeter=buttonbitmaps,sx,sy,phasebitmaps,phases,default value,x,y,sx,sy,msg int             x,y,psx,psy,ph,sx,sy,msg,d; unsigned char   tmp[512]; unsigned char   pfname[512]; unsigned char   phfname[512]; wItem         * item; CHECKDEFLIST( "hpotmeter" ); CHECKWINLIST( "hpotmeter" ); CHECK( "sub" ); CHECK( "menu" ); cutItem( in,pfname,',',0 ); psx=cutItemToInt( in,',',1 ); psy=cutItemToInt( in,',',2 ); cutItem( in,phfname,',',3 ); ph=cutItemToInt( in,',',4 ); d=cutItemToInt( in,',',5 ); x=cutItemToInt( in,',',6 ); y=cutItemToInt( in,',',7 ); sx=cutItemToInt( in,',',8 ); sy=cutItemToInt( in,',',9 ); cutItem( in,tmp,',',10 ); msg=appFindMessage( tmp ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] h/v potmeter: pointer filename: '%s'\n",pfname ); mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin]  pointer size is %dx%d\n",psx,psy );

⌨️ 快捷键说明

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