annotate Gui/skin/font.c @ 17588:79081ba52e00

Move the v{Y,C}CoeffsBank vectors into the SwsContext, filling them in just once when the scaler is initialized, instead of building them and freeing them over and over. This gives massive performance improvements. patch by Alan Curry, pacman*at*TheWorld*dot*com
author diego
date Sat, 11 Feb 2006 14:16:10 +0000
parents 0e1471d9da74
children 6a08d0dabca8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
2 #include <stdlib.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
3 #include <stdio.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
4 #include <stdarg.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
5 #include <string.h>
6166
82f770634c5b inttypes gui patch from Bjrn Sandell <biorn@dce.chalmers.se>
pontscho
parents: 6159
diff changeset
6 #include <inttypes.h>
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
7
17144
0e1471d9da74 Unify include paths, -I.. is in CFLAGS.
diego
parents: 12646
diff changeset
8 #include "app.h"
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
9 #include "skin.h"
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
10 #include "font.h"
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
11 #include "cut.h"
17144
0e1471d9da74 Unify include paths, -I.. is in CFLAGS.
diego
parents: 12646
diff changeset
12 #include "../mp_msg.h"
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
13
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
14 int items;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
15
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
16 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 };
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
17
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
18 int fntAddNewFont( char * name )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
19 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
20 int id;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
21 int i;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
22
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
23 for( id=0;id<26;id++ )
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
24 if ( !Fonts[id] ) break;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
25
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
26 if ( id == 25 ) return -2;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
27
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
28 if ( ( Fonts[id]=calloc( 1,sizeof( bmpFont ) ) ) == NULL ) return -1;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
29
12646
9a495bdc3a1e string handling security fixes
diego
parents: 9625
diff changeset
30 strlcpy( Fonts[id]->name,name,128 ); // FIXME: as defined in font.h
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
31 for ( i=0;i<256;i++ )
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
32 Fonts[id]->Fnt[i].x=Fonts[id]->Fnt[i].y=Fonts[id]->Fnt[i].sx=Fonts[id]->Fnt[i].sy=-1;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
33
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
34 return id;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
35 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
36
1829
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
37 void fntFreeFont( void )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
38 {
1829
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
39 int i;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
40 for( i=0;i < 25;i++ )
1829
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
41 {
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
42 if ( Fonts[i] )
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
43 {
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
44 if ( Fonts[i]->Bitmap.Image ) free( Fonts[i]->Bitmap.Image );
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
45 free( Fonts[i] );
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
46 Fonts[i]=NULL;
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
47 }
a4156c8cdd57 add font free func.
pontscho
parents: 1693
diff changeset
48 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
49 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
50
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
51 int fntRead( char * path,char * fname )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
52 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
53 FILE * f;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
54 unsigned char tmp[512];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
55 unsigned char * ptmp;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
56 unsigned char command[32];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
57 unsigned char param[256];
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
58 int c,linenumber = 0;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
59 int id = fntAddNewFont( fname );
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
60
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
61 if ( id < 0 ) return id;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
62
12646
9a495bdc3a1e string handling security fixes
diego
parents: 9625
diff changeset
63 strlcpy( tmp,path,sizeof( tmp ) );
9a495bdc3a1e string handling security fixes
diego
parents: 9625
diff changeset
64 strlcat( tmp,fname,sizeof( tmp ) ); strlcat( tmp,".fnt",sizeof( tmp ) );
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
65 if ( ( f=fopen( tmp,"rt" ) ) == NULL )
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
66 { free( Fonts[id] ); return -3; }
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
67
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
68 while ( !feof( f ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
69 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
70 fgets( tmp,255,f ); linenumber++;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
71
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
72 c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
73 c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
74 for ( c=0;c < (int)strlen( tmp );c++ )
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
75 if ( tmp[c] == ';' ) { tmp[c]=0; break; }
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
76 if ( !tmp[0] ) continue;
8973
0a665389cf2b - add playbar
pontscho
parents: 8883
diff changeset
77 ptmp=trimleft( tmp );
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
78 if ( !tmp[0] ) continue;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
79 ptmp=strswap( ptmp,'\t',' ' );
8973
0a665389cf2b - add playbar
pontscho
parents: 8883
diff changeset
80 ptmp=trim( ptmp );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
81 cutItem( ptmp,command,'=',0 ); cutItem( ptmp,param,'=',1 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
82 if ( command[0] == '"' )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
83 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
84 int i;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
85 cutItem( command,command,'"',1 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
86 i=(int)command[0];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
87 cutItem( param,tmp,',',0 ); Fonts[id]->Fnt[i].x=atoi( tmp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
88 cutItem( param,tmp,',',1 ); Fonts[id]->Fnt[i].y=atoi( tmp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
89 cutItem( param,tmp,',',2 ); Fonts[id]->Fnt[i].sx=atoi( tmp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
90 cutItem( param,tmp,',',3 ); Fonts[id]->Fnt[i].sy=atoi( tmp );
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
91 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[font] char: '%s' params: %d,%d %dx%d\n",command,Fonts[id]->Fnt[i].x,Fonts[id]->Fnt[i].y,Fonts[id]->Fnt[i].sx,Fonts[id]->Fnt[i].sy );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
92 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
93 else
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
94 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
95 if ( !strcmp( command,"image" ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
96 {
12646
9a495bdc3a1e string handling security fixes
diego
parents: 9625
diff changeset
97 strlcpy( tmp,path,sizeof( tmp ) ); strlcat( tmp,param,sizeof( tmp ) );
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
98 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[font] font imagefile: %s\n",tmp );
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
99 if ( skinBPRead( tmp,&Fonts[id]->Bitmap ) ) return -4;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
100 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
101 }
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
102 }
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
103
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
104 return 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
105 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
106
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
107 int fntFindID( char * name )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
108 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
109 int i;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
110 for ( i=0;i < 25;i++ )
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
111 if ( Fonts[i] )
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
112 if ( !strcmp( name,Fonts[i]->name ) ) return i;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
113 return -1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
114 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
115
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
116 int fntTextWidth( int id,char * str )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
117 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
118 int size = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
119 int i;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
120
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
121 if ( ( !Fonts[id] )||( !str[0] ) ) return 0;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
122
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
123 for ( i=0;i < (int)strlen( str );i++ )
7353
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
124 {
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
125 unsigned char c = (unsigned char)str[i];
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
126 if ( Fonts[id]->Fnt[c].sx == -1 ) c = ' ';
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
127 size+= Fonts[id]->Fnt[ c ].sx;
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
128 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
129 return size;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
130 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
131
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
132 int fntTextHeight( int id,char * str )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
133 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
134 int max = 0,i;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
135
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
136 if ( ( !Fonts[id] )||( !str[0] ) ) return 0;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
137
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
138 for ( i=0;i < (int)strlen( str );i++ )
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
139 {
7353
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
140 int h;
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
141 unsigned char c = (unsigned char)str[i];
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
142 if ( Fonts[id]->Fnt[c].sx == -1 ) c = ' ';
0cb951ac0133 Use the character substitution code from fntRender() / fntTextWidth()
jkeil
parents: 6218
diff changeset
143 h = Fonts[id]->Fnt[c].sy;
6218
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
144 if ( h > max ) max=h;
8cfddba867b4 fix text render chrash ...
pontscho
parents: 6166
diff changeset
145 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
146 return max;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
147 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
148
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
149 txSample * fntRender( wItem * item,int px,char * fmt,... )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
150 {
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
151 txSample * tmp = NULL;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
152 va_list ap;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
153 unsigned char p[512];
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
154 unsigned int c;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
155 int i, dx = 0, s, tw, fbw, iw, id, ofs;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
156 int x,y,fh,fw,fyc,yc;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
157 uint32_t * ibuf;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
158 uint32_t * obuf;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
159
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
160 va_start( ap,fmt );
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
161 vsnprintf( p,512,fmt,ap );
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
162 va_end( ap );
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
163
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
164 iw=item->width;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
165 id=item->fontid;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
166
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
167 if ( ( !item )||
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
168 ( !Fonts[id] )||
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
169 ( !p[0] )||
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
170 ( !fntTextWidth( id,p ) ) ) return NULL;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
171
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
172 tw=fntTextWidth( id,p );
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
173 fbw=Fonts[id]->Bitmap.Width;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
174
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
175 if ( item->Bitmap.Image == NULL )
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
176 {
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
177 item->Bitmap.Height=item->height=fntTextHeight( id,p );
9625
bc24dd70c6e2 many 10l for me ...
pontscho
parents: 8978
diff changeset
178 item->Bitmap.Width=item->width=iw;
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
179 item->Bitmap.ImageSize=item->height * iw * 4;
8978
pontscho
parents: 8973
diff changeset
180 if ( !item->Bitmap.ImageSize ) return NULL;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
181 item->Bitmap.BPP=32;
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
182 item->Bitmap.Image=malloc( item->Bitmap.ImageSize );
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
183 }
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
184
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
185 obuf=(uint32_t *)item->Bitmap.Image;
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
186 ibuf=(uint32_t *)Fonts[id]->Bitmap.Image;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
187
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
188 for ( i=0;i < item->Bitmap.ImageSize / 4;i++ ) obuf[i]=0xff00ff;
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
189
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
190 if ( tw <= iw )
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
191 {
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
192 switch ( item->align )
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
193 {
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
194 default:
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
195 case fntAlignLeft: dx=0; break;
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
196 case fntAlignCenter: dx=( iw - fntTextWidth( id,p ) ) / 2; break;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
197 case fntAlignRight: dx=iw - fntTextWidth( id,p ); break;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
198 }
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
199
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
200 } else dx+=px;
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
201
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
202 ofs=dx;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
203
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 1907
diff changeset
204 for ( i=0;i < (int)strlen( p );i++ )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
205 {
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
206 c=(unsigned int)p[i];
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
207 fw=Fonts[id]->Fnt[c].sx;
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
208
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
209 if ( fw == -1 ) { c=32; fw=Fonts[id]->Fnt[c].sx; }
8864
b8c271750450 - sync with x11_common
pontscho
parents: 7353
diff changeset
210
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
211 fh=Fonts[id]->Fnt[c].sy;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
212 fyc=Fonts[id]->Fnt[c].y * fbw + Fonts[id]->Fnt[c].x;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
213 yc=dx;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
214
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
215 if ( dx >= 0 )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
216 for ( y=0;y < fh;y++ )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
217 {
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
218 for ( x=0; x < fw;x++ )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
219 if ( dx + x >= 0 && dx + x < iw ) obuf[yc + x]=ibuf[ fyc + x ];
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
220 fyc+=fbw;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
221 yc+=iw;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
222 }
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
223 dx+=fw;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
224 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
225
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
226 if ( ofs > 0 && tw > item->width )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
227 {
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
228 dx=ofs;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
229 for ( i=(int)strlen( p );i > 0;i-- )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
230 {
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
231 c=(unsigned int)p[i];
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
232 fw=Fonts[id]->Fnt[c].sx;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
233
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
234 if ( fw == -1 ) { c=32; fw=Fonts[id]->Fnt[c].sx; }
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
235
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
236 fh=Fonts[id]->Fnt[c].sy;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
237 fyc=Fonts[id]->Fnt[c].y * fbw + Fonts[id]->Fnt[c].x;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
238
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
239 dx-=fw; yc=dx;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
240 if ( dx >= 0 )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
241 for ( y=0;y < fh;y++ )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
242 {
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
243 for ( x=fw - 1;x >= 0;x-- )
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
244 if ( dx + x >= 0 && dx + x < iw ) obuf[yc + x]=ibuf[fyc + x];
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
245 fyc+=fbw;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
246 yc+=iw;
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
247 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
248 }
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
249 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
250
8883
d6d999a9fc41 - new font render finished
pontscho
parents: 8864
diff changeset
251 return &item->Bitmap;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
252 }