summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-05-28 11:55:17 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-05-28 11:55:17 +0000
commitd2a4ecd87009f2c301382847a9c7785467af6938 (patch)
tree9030304d76f00ea7423edadb2412fe17bad34383 /Gui
parent2eee0cefb01b149c86d2ca58df69c3f29c3af971 (diff)
downloadmpv-d2a4ecd87009f2c301382847a9c7785467af6938.tar.bz2
mpv-d2a4ecd87009f2c301382847a9c7785467af6938.tar.xz
fix text render chrash ...
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6219 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/app.c10
-rw-r--r--Gui/app.h2
-rw-r--r--Gui/interface.c4
-rw-r--r--Gui/interface.h2
-rw-r--r--Gui/mplayer/mplayer.c8
-rw-r--r--Gui/mplayer/mplayer.h2
-rw-r--r--Gui/mplayer/mw.h22
-rw-r--r--Gui/mplayer/play.c2
-rw-r--r--Gui/mplayer/play.h2
-rw-r--r--Gui/mplayer/widgets.c7
-rw-r--r--Gui/mplayer/widgets.h2
-rw-r--r--Gui/skin/font.c77
-rw-r--r--Gui/skin/font.h9
-rw-r--r--Gui/skin/skin.c15
14 files changed, 76 insertions, 88 deletions
diff --git a/Gui/app.c b/Gui/app.c
index 726eba5db8..75b686a604 100644
--- a/Gui/app.c
+++ b/Gui/app.c
@@ -97,21 +97,17 @@ int appFindMessage( unsigned char * str )
return -1;
}
-void appInit( int argc,char* argv[], char *envp[], void* disp )
+void appInit( void * disp )
{
skinDirInHome=get_path("Skin");
skinMPlayerDir=DATADIR "/Skin";
printf("SKIN dir 1: '%s'\n",skinDirInHome);
printf("SKIN dir 2: '%s'\n",skinMPlayerDir);
- if ( !skinName )
- {
- if ( ( skinName=(char *)calloc( 1,7 ) ) == NULL ) { mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[config] Not enough memory.\n" ); exit( 1 ); }
- strcpy( skinName,"default" );
- }
+ if ( !skinName ) skinName=strdup( "default" );
switch ( skinRead( skinName ) )
{
case -1: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinNotFound,skinName ); exit( 0 );
case -2: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinCfgReadError,skinName ); exit( 0 );
}
- mplInit( argc,argv,envp,disp ); // does gtk & ws initialization, create windows
+ mplInit( disp ); // does gtk & ws initialization, create windows
}
diff --git a/Gui/app.h b/Gui/app.h
index ab14d46b5a..b45773fa3d 100644
--- a/Gui/app.h
+++ b/Gui/app.h
@@ -77,7 +77,7 @@ extern char * skinDirInHome;
extern char * skinMPlayerDir;
extern char * skinName;
-extern void appInit( int argc,char* argv[], char *envp[], void* disp );
+extern void appInit( void * disp );
extern void appInitStruct( listItems * item );
extern void appClearItem( wItem * item );
extern void appCopy( listItems * item1,listItems * item2 );
diff --git a/Gui/interface.c b/Gui/interface.c
index c425664940..f0233cb023 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -21,10 +21,10 @@
guiInterface_t guiIntfStruct;
-void guiInit( int argc,char* argv[], char *envp[] )
+void guiInit( void )
{
memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) );
- appInit( argc,argv,envp,(void*)mDisplay );
+ appInit( (void*)mDisplay );
}
void guiDone( void )
diff --git a/Gui/interface.h b/Gui/interface.h
index 28c5d67000..08e57024ca 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -110,7 +110,7 @@ extern guiInterface_t guiIntfStruct;
extern char *get_path(char *filename);
-extern void guiInit( int argc,char* argv[], char *envp[] );
+extern void guiInit( void );
extern void guiDone( void );
extern void guiGetEvent( int type,char * arg );
extern void guiEventHandling( void );
diff --git a/Gui/mplayer/mplayer.c b/Gui/mplayer/mplayer.c
index 64ef18bca9..e1133dffc6 100644
--- a/Gui/mplayer/mplayer.c
+++ b/Gui/mplayer/mplayer.c
@@ -42,18 +42,18 @@ void mplTimerHandler( void )
if ( mplRedrawTimer == 0 ) mplEventHandling( evRedraw,0 );
}
-void mplInit( int argc,char* argv[], char *envp[], void* disp )
+void mplInit( void * disp )
{
int i;
// init fields of this struct to default values
- mplMPlayerInit( argc,argv,envp );
+ mplMPlayerInit();
// fork() a process which runs gtkThreadProc() [gtkPID]
- gtkInit( argc,argv,envp );
+ gtkInit();
// opens X display, checks for extensions (XShape, DGA etc)
- wsXInit(disp);
+ wsXInit( disp );
if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
{
diff --git a/Gui/mplayer/mplayer.h b/Gui/mplayer/mplayer.h
index 718895e8ed..23465bd24a 100644
--- a/Gui/mplayer/mplayer.h
+++ b/Gui/mplayer/mplayer.h
@@ -12,7 +12,7 @@ extern int mainVisible;
extern int mplMainAutoPlay;
extern int mplMiddleMenu;
-extern void mplInit( int argc,char* argv[], char *envp[], void* disp );
+extern void mplInit( void * disp );
extern void mplEventHandling( int msg,float param );
extern void mplTimerHandler( void );
diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h
index 0b51c2a408..4f0263e875 100644
--- a/Gui/mplayer/mw.h
+++ b/Gui/mplayer/mw.h
@@ -196,8 +196,6 @@ drawrenderedtext:
// XFlush( wsDisplay );
}
-#define IZE(x) printf("@@@ " x " @@@\n");
-
extern void exit_player(char* how);
extern int audio_id;
extern int dvdsub_id;
@@ -307,30 +305,14 @@ NoPause:
break;
case evPlayList:
- IZE("evPlayList");
mplMainRender=1;
gtkShow( evPlayList,NULL );
-#warning disabled old gtk code
-#if 0
- if ( gtkVisiblePlayList )
- {
- btnModify( evPlayList,btnReleased );
- gtkShMem->vs.window=evPlayList;
- gtkSendMessage( evHideWindow );
- gtkVisiblePlayList=0;
- }
- else
- {
- gtkSendMessage( evPlayList );
- btnModify( evPlayList,btnPressed );
- gtkVisiblePlayList=1;
- }
-#endif
break;
case evSkinBrowser: gtkShow( evSkinBrowser,skinName ); break;
case evAbout: gtkShow( evAbout,NULL ); break;
case evPreferences: gtkShow( evPreferences,NULL ); break;
+ case evEqualeaser: gtkMessageBox( GTK_MB_WARNING,"Sorry, this feature not implemented ..." ); break;
case evForward1min: mplRelSeek( 60 ); break;
case evBackward1min: mplRelSeek( -60 ); break;
@@ -395,12 +377,14 @@ NoPause:
mplRedrawTimer=mplRedrawTimerConst;
break;
// --- system events
+#ifdef MP_DEBUG
case evNone:
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[mw] event none received.\n" );
break;
default:
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[mw] unknown event received ( %d,%.2f ).\n",msg,param );
break;
+#endif
}
}
diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c
index be8c2205ad..bdeefd5a98 100644
--- a/Gui/mplayer/play.c
+++ b/Gui/mplayer/play.c
@@ -138,7 +138,7 @@ void mplState( void )
}
}
-void mplMPlayerInit( int argc,char* argv[], char *envp[] )
+void mplMPlayerInit( void )
{
guiIntfStruct.Balance=50.0f;
guiIntfStruct.StreamType=-1;
diff --git a/Gui/mplayer/play.h b/Gui/mplayer/play.h
index 3fa45a80e0..e5c8ebf3f1 100644
--- a/Gui/mplayer/play.h
+++ b/Gui/mplayer/play.h
@@ -6,7 +6,7 @@
#include "./mplayer.h"
-extern void mplMPlayerInit( int argc,char* argv[], char *envp[] );
+extern void mplMPlayerInit( void );
extern void mplStop();
extern void mplFullScreen( void );
diff --git a/Gui/mplayer/widgets.c b/Gui/mplayer/widgets.c
index 75ff8c4ed8..c2930978e2 100644
--- a/Gui/mplayer/widgets.c
+++ b/Gui/mplayer/widgets.c
@@ -48,11 +48,14 @@ int gtkInited = 0;
// --- init & close gtk
-void gtkInit( int argc,char* argv[], char *envp[] )
+void gtkInit( void )
{
+ int largc = 1;
+ char * largv[1] = { "asd" };
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[widget] init gtk ...\n" );
gtk_set_locale();
- gtk_init( &argc,&argv );
+// gtk_init( &argc,&argv );
+ gtk_init( 0,NULL );
// gdk_set_use_xshm( TRUE );
gtkInited=1;
diff --git a/Gui/mplayer/widgets.h b/Gui/mplayer/widgets.h
index 205e089ffb..e774426d00 100644
--- a/Gui/mplayer/widgets.h
+++ b/Gui/mplayer/widgets.h
@@ -37,7 +37,7 @@ extern char * sbMPlayerPrefixDir;
extern void widgetsCreate( void );
-extern void gtkInit( int argc,char* argv[], char *envp[] );
+extern void gtkInit( void );
extern void gtkDone( void );
extern int gtkFillSkinList( gchar * dir );
diff --git a/Gui/skin/font.c b/Gui/skin/font.c
index f5c44c8232..7db2d6ea30 100644
--- a/Gui/skin/font.c
+++ b/Gui/skin/font.c
@@ -12,22 +12,31 @@
int items;
-bmpFont * Fonts[25] = { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL };
+bmpFont * Fonts[26] = { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL };
int fntAddNewFont( char * name )
{
int id;
- for( id=0;id<25;id++ ) if ( !Fonts[id] ) break;
- if ( ( Fonts[id]=malloc( sizeof( bmpFont ) ) ) == NULL ) return -1;
+ int i;
+
+ for( id=0;id<26;id++ )
+ if ( !Fonts[id] ) break;
+
+ if ( id == 25 ) return -2;
+
+ if ( ( Fonts[id]=calloc( 1,sizeof( bmpFont ) ) ) == NULL ) return -1;
+
strcpy( Fonts[id]->name,name );
- memset( Fonts[id]->Fnt,-1,256 * sizeof( fntChar ) );
+ for ( i=0;i<256;i++ )
+ Fonts[id]->Fnt[i].x=Fonts[id]->Fnt[i].y=Fonts[id]->Fnt[i].sx=Fonts[id]->Fnt[i].sy=-1;
+
return id;
}
void fntFreeFont( void )
{
int i;
- for( i=0;i<25;i++ )
+ for( i=0;i < 25;i++ )
{
if ( Fonts[i] )
{
@@ -38,7 +47,7 @@ void fntFreeFont( void )
}
}
-int fntRead( char * path,char * fname,int id )
+int fntRead( char * path,char * fname )
{
FILE * f;
unsigned char tmp[512];
@@ -46,9 +55,14 @@ int fntRead( char * path,char * fname,int id )
unsigned char command[32];
unsigned char param[256];
int c,linenumber = 0;
+ int id = fntAddNewFont( fname );
+
+ if ( id < 0 ) return id;
strcpy( tmp,path ); strcat( tmp,fname ); strcat( tmp,".fnt" );
- if ( ( f=fopen( tmp,"rt" ) ) == NULL ) return -1;
+ if ( ( f=fopen( tmp,"rt" ) ) == NULL )
+ { free( Fonts[id] ); return -3; }
+
while ( !feof( f ) )
{
fgets( tmp,255,f ); linenumber++;
@@ -56,14 +70,10 @@ int fntRead( char * path,char * fname,int id )
c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
for ( c=0;c < (int)strlen( tmp );c++ )
- if ( tmp[c] == ';' )
- {
- tmp[c]=0;
- break;
- }
- if ( strlen( tmp ) == 0 ) continue;
+ if ( tmp[c] == ';' ) { tmp[c]=0; break; }
+ if ( !tmp[0] ) continue;
ptmp=strdelspacesbeforecommand( tmp );
- if ( strlen( ptmp ) == 0 ) continue;
+ if ( !tmp[0] ) continue;
ptmp=strswap( ptmp,'\t',' ' );
ptmp=strdelspaces( ptmp );
cutItem( ptmp,command,'=',0 ); cutItem( ptmp,param,'=',1 );
@@ -84,10 +94,11 @@ int fntRead( char * path,char * fname,int id )
{
strcpy( tmp,path ); strcat( tmp,param );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[font] font imagefile: %s\n",tmp );
- if ( skinBPRead( tmp,&Fonts[id]->Bitmap ) ) return -2;
+ if ( skinBPRead( tmp,&Fonts[id]->Bitmap ) ) return -4;
}
}
- }
+ }
+
return 0;
}
@@ -95,8 +106,8 @@ int fntFindID( char * name )
{
int i;
for ( i=0;i < 25;i++ )
- if ( Fonts[i] )
- if ( !strcmp( name,Fonts[i]->name ) ) return i;
+ if ( Fonts[i] )
+ if ( !strcmp( name,Fonts[i]->name ) ) return i;
return -1;
}
@@ -104,18 +115,25 @@ int fntTextWidth( int id,char * str )
{
int size = 0;
int i;
- if ( !Fonts[id] ) return 0;
- for ( i=0;i < (int)strlen( str );i++ )
- if ( Fonts[id]->Fnt[ (int)str[i] ].sx != -1 ) size+=Fonts[id]->Fnt[ (int)str[i] ].sx;
+
+ if ( ( !Fonts[id] )||( !str[0] ) ) return 0;
+
+ for ( i=0;i < (unsigned int)strlen( str );i++ )
+ size+=( Fonts[id]->Fnt[ (unsigned char)str[i] ].sx == -1? Fonts[id]->Fnt[ 32 ].sx : Fonts[id]->Fnt[ (unsigned char)str[i] ].sx );
return size;
}
int fntTextHeight( int id,char * str )
{
int max = 0,i;
- if ( !Fonts[id] ) return 0;
+
+ if ( ( !Fonts[id] )||( !str[0] ) ) return 0;
+
for ( i=0;i < (int)strlen( str );i++ )
- if ( Fonts[id]->Fnt[ (int)str[i] ].sy > max ) max=Fonts[id]->Fnt[ (int)str[i] ].sy;
+ {
+ int h = Fonts[id]->Fnt[ (unsigned char)str[i] ].sy;
+ if ( h > max ) max=h;
+ }
return max;
}
@@ -138,24 +156,21 @@ txSample * fntRender( int id,int px,int sx,char * fmt,... )
( !strlen( p ) )||
( !fntTextWidth( id,p ) )||
( (tmp=malloc( sizeof( txSample ) )) == NULL ) ) return NULL;
-
+
tmp->Width=fntTextWidth( id,p );
tmp->Height=fntTextHeight( id,p );
tmp->BPP=32;
tmp->ImageSize=tmp->Width * tmp->Height * 4;
if ( ( tmp->Image=malloc( tmp->ImageSize ) ) == NULL ) return NULL;
-
obuf=(uint32_t *)tmp->Image;
ibuf=(uint32_t *)Fonts[id]->Bitmap.Image;
for ( i=0;i < (int)strlen( p );i++ )
{
- char c = p[i];
- if ( Fonts[id]->Fnt[c].x == -1 ) c=32;
+ unsigned int c = (unsigned char)p[i];
+ if ( Fonts[id]->Fnt[c].sx == -1 ) c=32;
for ( oy=0,y=Fonts[id]->Fnt[c].y;y < Fonts[id]->Fnt[c].y + Fonts[id]->Fnt[c].sy; y++,oy++ )
- for ( ox=0,x=Fonts[id]->Fnt[c].x;x < Fonts[id]->Fnt[c].x + Fonts[id]->Fnt[c].sx; x++,ox++ )
- {
- obuf[ oy * tmp->Width + dx + ox ]=ibuf[ y * Fonts[id]->Bitmap.Width + x ];
- }
+ for ( ox=0,x=Fonts[id]->Fnt[c].x;x < Fonts[id]->Fnt[c].x + Fonts[id]->Fnt[c].sx; x++,ox++ )
+ obuf[ oy * tmp->Width + dx + ox ]=ibuf[ y * Fonts[id]->Bitmap.Width + x ];
dx+=Fonts[id]->Fnt[c].sx;
}
diff --git a/Gui/skin/font.h b/Gui/skin/font.h
index 0b082bf8a1..8effa4acf1 100644
--- a/Gui/skin/font.h
+++ b/Gui/skin/font.h
@@ -1,6 +1,6 @@
-#ifndef _MYFONT
-#define _MYFONT
+#ifndef _FONT_H
+#define _FONT_H
#include "../bitmap/bitmap.h"
@@ -17,15 +17,14 @@ typedef struct
char name[128];
} bmpFont;
-extern fntChar Fnt[256];
extern txSample Bitmap;
-extern bmpFont * Fonts[25];
+extern bmpFont * Fonts[26];
extern int fntAddNewFont( char * name );
extern void fntFreeFont( void );
extern int fntFindID( char * name );
-extern int fntRead( char * path,char * fname,int id );
+extern int fntRead( char * path,char * fname );
extern txSample * fntRender( int id,int px,int sx,char * fmt,... );
#endif
diff --git a/Gui/skin/skin.c b/Gui/skin/skin.c
index 9021bd9bd2..fc27cb3878 100644
--- a/Gui/skin/skin.c
+++ b/Gui/skin/skin.c
@@ -29,8 +29,6 @@ void ERRORMESSAGE( const char * format, ... )
va_start( ap,format );
vsnprintf( p,512,format,ap );
va_end( ap );
-// message( False,"[skin] error in skin config file on line %d: %s",linenumber,p );
-// message( False,MSGTR_SKIN_ERRORMESSAGE,linenumber,p );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_ERRORMESSAGE,linenumber,p );
}
@@ -414,21 +412,14 @@ int __font( char * in )
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
item->type=itFont;
- item->fontid=fntAddNewFont( name );
+ item->fontid=fntRead( path,name );
switch ( item->fontid )
{
case -1: ERRORMESSAGE( MSGTR_SKIN_FONT_NotEnoughtMemory ); return 1;
case -2: ERRORMESSAGE( MSGTR_SKIN_FONT_TooManyFontsDeclared ); return 1;
+ case -3: ERRORMESSAGE( MSGTR_SKIN_FONT_FontFileNotFound ); return 1;
+ case -4: ERRORMESSAGE( MSGTR_SKIN_FONT_FontImageNotFound ); return 1;
}
-
- mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",id,item->fontid );
-
- switch ( fntRead( path,name,item->fontid ) )
- {
- case -1: ERRORMESSAGE( MSGTR_SKIN_FONT_FontFileNotFound ); return 1;
- case -2: ERRORMESSAGE( MSGTR_SKIN_FONT_FontImageNotFound ); return 1;
- }
-
return 0;
}