Mercurial > mplayer.hg
annotate Gui/skin/skin.c @ 8305:4c23944315d6
- add R¸«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
- fix one 10l bug
author | pontscho |
---|---|
date | Thu, 28 Nov 2002 19:01:50 +0000 |
parents | 72700fefd3dc |
children | c6a1a5b6ba25 |
rev | line source |
---|---|
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
1 |
1693 | 2 #include <stdio.h> |
3 #include <stdlib.h> | |
4 #include <string.h> | |
5 | |
6 #include "cut.h" | |
7 #include "font.h" | |
8 #include "../app.h" | |
3586 | 9 |
1693 | 10 #include "../../config.h" |
3586 | 11 #include "../../mp_msg.h" |
1884 | 12 #include "../../help_mp.h" |
8305
4c23944315d6
- add R¸«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
pontscho
parents:
8280
diff
changeset
|
13 #include "../mplayer/widgets.h" |
1693 | 14 |
15 listItems * skinAppMPlayer = &appMPlayer; | |
16 | |
17 int linenumber; | |
18 | |
19 unsigned char path[512],fn[512]; | |
20 | |
21 listItems * defList = NULL; | |
22 unsigned char winList[32] = ""; | |
23 | |
24 #include <stdarg.h> | |
25 | |
26 void ERRORMESSAGE( const char * format, ... ) | |
27 { | |
28 char p[512]; | |
8305
4c23944315d6
- add R¸«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
pontscho
parents:
8280
diff
changeset
|
29 char tmp[512]; |
1693 | 30 va_list ap; |
31 va_start( ap,format ); | |
32 vsnprintf( p,512,format,ap ); | |
33 va_end( ap ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
34 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_ERRORMESSAGE,linenumber,p ); |
8305
4c23944315d6
- add R¸«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
pontscho
parents:
8280
diff
changeset
|
35 snprintf( tmp,512,MSGTR_SKIN_ERRORMESSAGE,linenumber,p ); |
4c23944315d6
- add R¸«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
pontscho
parents:
8280
diff
changeset
|
36 gtkMessageBox( GTK_MB_FATAL,tmp ); |
1693 | 37 } |
38 | |
1884 | 39 #define CHECKDEFLIST( str ) \ |
40 { \ | |
41 if ( defList == NULL ) \ | |
42 { \ | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
43 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING1,linenumber,str ); \ |
1884 | 44 return 1; \ |
45 } \ | |
46 } | |
47 | |
48 #define CHECKWINLIST( str ) \ | |
49 { \ | |
50 if ( !strlen( winList ) ) \ | |
51 { \ | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
52 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING2,linenumber,str ); \ |
1884 | 53 return 1; \ |
54 } \ | |
55 } | |
1693 | 56 |
57 char * strlower( char * in ) | |
58 { | |
59 int i; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
60 for( i=0;i<(int)strlen( in );i++ ) in[i]=( in[i] >= 'A' ? ( in[i] <= 'Z' ? in[i]+='A' : in[i] ) : in[i] ); |
1693 | 61 return in; |
62 } | |
63 | |
64 int skinBPRead( char * fname, txSample * bf ) | |
65 { | |
66 int i=bpRead( fname,bf ); | |
67 switch ( i ) | |
68 { | |
1884 | 69 case -1: ERRORMESSAGE( MSGTR_SKIN_BITMAP_16bit,fname ); break; |
70 case -2: ERRORMESSAGE( MSGTR_SKIN_BITMAP_FileNotFound,fname ); break; | |
71 case -3: ERRORMESSAGE( MSGTR_SKIN_BITMAP_BMPReadError,fname ); break; | |
72 case -4: ERRORMESSAGE( MSGTR_SKIN_BITMAP_TGAReadError,fname ); break; | |
73 case -5: ERRORMESSAGE( MSGTR_SKIN_BITMAP_PNGReadError,fname ); break; | |
74 case -6: ERRORMESSAGE( MSGTR_SKIN_BITMAP_RLENotSupported,fname ); break; | |
75 case -7: ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownFileType,fname ); break; | |
76 case -8: ERRORMESSAGE( MSGTR_SKIN_BITMAP_ConvertError,fname ); break; | |
1693 | 77 } |
78 return i; | |
79 } | |
80 | |
6625 | 81 int cmd_section( char * in ) |
1693 | 82 { |
83 strlower( in ); | |
84 defList=NULL; | |
85 if ( !strcmp( in,"movieplayer" ) ) defList=skinAppMPlayer; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
86 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] sectionname: %s\n",in ); |
1693 | 87 return 0; |
88 } | |
89 | |
6625 | 90 int cmd_end( char * in ) |
1693 | 91 { |
92 if ( strlen( winList ) ) winList[0]=0; | |
93 else defList=NULL; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
94 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] end section\n" ); |
1693 | 95 return 0; |
96 } | |
97 | |
6625 | 98 int cmd_window( char * in ) |
1693 | 99 { |
100 CHECKDEFLIST( "window" ); | |
101 | |
102 strlower( in ); | |
103 strcpy( winList,in ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
104 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window: %s\n",winList ); |
1693 | 105 return 0; |
106 } | |
107 | |
6625 | 108 int cmd_base( char * in ) |
1693 | 109 { |
110 unsigned char fname[512]; | |
111 unsigned char tmp[512]; | |
112 int x,y; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
113 int sx=0,sy=0; |
1693 | 114 |
115 CHECKDEFLIST( "base" ); | |
116 CHECKWINLIST( "base" ); | |
117 | |
118 cutItem( in,fname,',',0 ); | |
1852 | 119 x=cutItemToInt( in,',',1 ); |
120 y=cutItemToInt( in,',',2 ); | |
3080 | 121 sx=cutItemToInt( in,',',3 ); |
122 sy=cutItemToInt( in,',',4 ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
123 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] base: %s x: %d y: %d ( %dx%d )\n",fname,x,y,sx,sy ); |
1693 | 124 if ( !strcmp( winList,"main" ) ) |
125 { | |
126 defList->main.x=x; | |
127 defList->main.y=y; | |
128 defList->main.type=itBase; | |
129 strcpy( tmp,path ); strcat( tmp,fname ); | |
130 if ( skinBPRead( tmp,&defList->main.Bitmap ) ) return 1; | |
131 defList->main.width=defList->main.Bitmap.Width; | |
132 defList->main.height=defList->main.Bitmap.Height; | |
133 #ifdef HAVE_XSHAPE | |
2717 | 134 Convert32to1( &defList->main.Bitmap,&defList->main.Mask,0x00ff00ff ); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
135 #if 0 |
2717 | 136 { |
137 if ( defList->main.Mask.Image != NULL ) | |
138 { | |
139 txSample d; | |
140 Convert1to32( &defList->main.Mask,&d ); | |
141 tgaWriteTexture( "debug.tga",&d ); | |
142 } | |
1693 | 143 } |
2781 | 144 #endif |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
145 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] mask: %dx%d\n",defList->main.Mask.Width,defList->main.Mask.Height ); |
1693 | 146 #else |
147 defList->main.Mask.Image=NULL; | |
148 #endif | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
149 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->main.width,defList->main.height ); |
1693 | 150 } |
151 if ( !strcmp( winList,"sub" ) ) | |
152 { | |
153 defList->sub.type=itBase; | |
154 strcpy( tmp,path ); strcat( tmp,fname ); | |
155 if ( skinBPRead( tmp,&defList->sub.Bitmap ) ) return 1; | |
2025
0653e90b3118
some bug fix, and sub window render speed up.. 10l kola ? :)
pontscho
parents:
1884
diff
changeset
|
156 defList->sub.x=x; |
0653e90b3118
some bug fix, and sub window render speed up.. 10l kola ? :)
pontscho
parents:
1884
diff
changeset
|
157 defList->sub.y=y; |
1693 | 158 defList->sub.width=defList->sub.Bitmap.Width; |
159 defList->sub.height=defList->sub.Bitmap.Height; | |
3080 | 160 if ( sx && sy ) |
161 { | |
162 defList->sub.width=sx; | |
163 defList->sub.height=sy; | |
164 } | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
165 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] %d,%d %dx%d\n",defList->sub.x,defList->sub.y,defList->sub.width,defList->sub.height ); |
1693 | 166 } |
167 if ( !strcmp( winList,"menu" ) ) | |
168 { | |
169 defList->menuBase.type=itBase; | |
170 strcpy( tmp,path ); strcat( tmp,fname ); | |
171 if ( skinBPRead( tmp,&defList->menuBase.Bitmap ) ) return 1; | |
172 defList->menuBase.width=defList->menuBase.Bitmap.Width; | |
173 defList->menuBase.height=defList->menuBase.Bitmap.Height; | |
6221 | 174 #ifdef HAVE_XSHAPE |
175 Convert32to1( &defList->menuBase.Bitmap,&defList->menuBase.Mask,0x00ff00ff ); | |
176 #if 0 | |
177 { | |
178 if ( defList->menuBase.Mask.Image != NULL ) | |
179 { | |
180 txSample d; | |
181 Convert1to32( &defList->menuBase.Mask,&d ); | |
182 tgaWriteTexture( "debug.tga",&d ); | |
183 } | |
184 } | |
185 #endif | |
186 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] mask: %dx%d\n",defList->menuBase.Mask.Width,defList->menuBase.Mask.Height ); | |
187 #else | |
188 defList->menuBase.Mask.Image=NULL; | |
189 #endif | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
190 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->menuBase.width,defList->menuBase.height ); |
1693 | 191 } |
192 return 0; | |
193 } | |
194 | |
6625 | 195 int cmd_background( char * in ) |
1693 | 196 { |
197 CHECKDEFLIST( "background" ); | |
198 CHECKWINLIST( "background" ); | |
199 | |
200 if ( !strcmp( winList,"sub" ) ) | |
201 { | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
202 defList->subR=cutItemToInt( in,',',0 ); |
1852 | 203 defList->subG=cutItemToInt( in,',',1 ); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
204 defList->subB=cutItemToInt( in,',',2 ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
205 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] subwindow background color is #%x%x%x.\n",defList->subR,defList->subG,defList->subB ); |
1693 | 206 } |
207 return 0; | |
208 } | |
209 | |
6625 | 210 int cmd_button( char * in ) |
1693 | 211 { |
212 unsigned char fname[512]; | |
213 unsigned char tmp[512]; | |
214 int x,y,sx,sy; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
215 char msg[32]; |
1693 | 216 |
217 CHECKDEFLIST( "button" ); | |
218 CHECKWINLIST( "button" ); | |
219 | |
220 cutItem( in,fname,',',0 ); | |
1852 | 221 x=cutItemToInt( in,',',1 ); |
222 y=cutItemToInt( in,',',2 ); | |
223 sx=cutItemToInt( in,',',3 ); | |
224 sy=cutItemToInt( in,',',4 ); | |
1693 | 225 cutItem( in,msg,',',5 ); |
226 | |
227 defList->NumberOfItems++; | |
228 defList->Items[ defList->NumberOfItems ].type=itButton; | |
229 defList->Items[ defList->NumberOfItems ].x=x; | |
230 defList->Items[ defList->NumberOfItems ].y=y; | |
231 defList->Items[ defList->NumberOfItems ].width=sx; | |
232 defList->Items[ defList->NumberOfItems ].height=sy; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
233 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] button: fname: %s\n",fname ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
234 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy ); |
1693 | 235 |
236 if ( ( defList->Items[ defList->NumberOfItems ].msg=appFindMessage( msg ) ) == -1 ) | |
1884 | 237 { ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,msg ); return 1; } |
1693 | 238 defList->Items[ defList->NumberOfItems ].pressed=btnReleased; |
239 if ( defList->Items[ defList->NumberOfItems ].msg == evPauseSwitchToPlay ) defList->Items[ defList->NumberOfItems ].pressed=btnDisabled; | |
240 defList->Items[ defList->NumberOfItems ].tmp=1; | |
241 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
242 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",defList->Items[ defList->NumberOfItems ].msg ); |
1693 | 243 |
244 defList->Items[ defList->NumberOfItems ].Bitmap.Image=NULL; | |
245 if ( strcmp( fname,"NULL" ) ) | |
246 { | |
247 strcpy( tmp,path ); strcat( tmp,fname ); | |
248 if ( skinBPRead( tmp,&defList->Items[ defList->NumberOfItems ].Bitmap ) ) return 1; | |
249 } | |
250 return 0; | |
251 } | |
252 | |
6625 | 253 int cmd_selected( char * in ) |
1693 | 254 { |
255 unsigned char fname[512]; | |
256 unsigned char tmp[512]; | |
257 | |
258 CHECKDEFLIST( "selected" ); | |
259 CHECKWINLIST( "selected" ); | |
260 | |
261 cutItem( in,fname,',',0 ); | |
262 defList->menuSelected.type=itBase; | |
263 strcpy( tmp,path ); strcat( tmp,fname ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
264 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] selected: %s\n",fname ); |
1693 | 265 if ( skinBPRead( tmp,&defList->menuSelected.Bitmap ) ) return 1; |
266 defList->menuSelected.width=defList->menuSelected.Bitmap.Width; | |
267 defList->menuSelected.height=defList->menuSelected.Bitmap.Height; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
268 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->menuSelected.width,defList->menuSelected.height ); |
1693 | 269 return 0; |
270 } | |
271 | |
6625 | 272 int cmd_menu( char * in ) |
1693 | 273 { // menu = number,x,y,sx,sy,msg |
274 int x,y,sx,sy,msg; | |
275 unsigned char tmp[64]; | |
276 | |
277 CHECKDEFLIST( "menu" ); | |
278 CHECKWINLIST( "menu" ); | |
279 | |
1852 | 280 x=cutItemToInt( in,',',0 ); |
281 y=cutItemToInt( in,',',1 ); | |
282 sx=cutItemToInt( in,',',2 ); | |
283 sy=cutItemToInt( in,',',3 ); | |
1693 | 284 cutItem( in,tmp,',',4 ); msg=appFindMessage( tmp ); |
285 | |
286 defList->NumberOfMenuItems++; | |
287 defList->MenuItems[ defList->NumberOfMenuItems ].x=x; | |
288 defList->MenuItems[ defList->NumberOfMenuItems ].y=y; | |
289 defList->MenuItems[ defList->NumberOfMenuItems ].width=sx; | |
290 defList->MenuItems[ defList->NumberOfMenuItems ].height=sy; | |
291 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
292 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] menuitem: %d\n",defList->NumberOfMenuItems ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
293 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy ); |
1693 | 294 |
295 if ( ( defList->MenuItems[ defList->NumberOfMenuItems ].msg=msg ) == -1 ) | |
1884 | 296 ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,tmp ); |
1693 | 297 |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
298 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",defList->Items[ defList->NumberOfItems ].msg ); |
1693 | 299 |
300 defList->MenuItems[ defList->NumberOfMenuItems ].Bitmap.Image=NULL; | |
301 return 0; | |
302 } | |
303 | |
6625 | 304 int cmd_hpotmeter( char * in ) |
1693 | 305 { // hpotmeter=buttonbitmaps,sx,sy,phasebitmaps,phases,default value,x,y,sx,sy,msg |
306 int x,y,psx,psy,ph,sx,sy,msg,d; | |
307 unsigned char tmp[512]; | |
308 unsigned char pfname[512]; | |
309 unsigned char phfname[512]; | |
310 wItem * item; | |
311 | |
312 CHECKDEFLIST( "hpotmeter" ); | |
313 CHECKWINLIST( "hpotmeter" ); | |
314 | |
315 cutItem( in,pfname,',',0 ); | |
1852 | 316 psx=cutItemToInt( in,',',1 ); |
317 psy=cutItemToInt( in,',',2 ); | |
1693 | 318 cutItem( in,phfname,',',3 ); |
1852 | 319 ph=cutItemToInt( in,',',4 ); |
320 d=cutItemToInt( in,',',5 ); | |
321 x=cutItemToInt( in,',',6 ); | |
322 y=cutItemToInt( in,',',7 ); | |
323 sx=cutItemToInt( in,',',8 ); | |
324 sy=cutItemToInt( in,',',9 ); | |
1693 | 325 cutItem( in,tmp,',',10 ); msg=appFindMessage( tmp ); |
326 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
327 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] hpotmeter: pointer filename: '%s'\n",pfname ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
328 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pointer size is %dx%d\n",psx,psy ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
329 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] phasebitmaps filename: '%s'\n",phfname ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
330 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] position: %d,%d %dx%d\n",x,y,sx,sy ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
331 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] default value: %d\n",d ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
332 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",msg ); |
1693 | 333 |
334 defList->NumberOfItems++; | |
335 item=&defList->Items[ defList->NumberOfItems ]; | |
336 item->type=itHPotmeter; | |
337 item->x=x; item->y=y; item->width=sx; item->height=sy; | |
338 item->phases=ph; | |
339 item->psx=psx; item->psy=psy; | |
340 item->msg=msg; | |
341 item->value=(float)d; | |
342 item->pressed=btnReleased; | |
343 | |
344 item->Bitmap.Image=NULL; | |
345 if ( strcmp( phfname,"NULL" ) ) | |
346 { | |
347 strcpy( tmp,path ); strcat( tmp,phfname ); | |
348 if ( skinBPRead( tmp,&item->Bitmap ) ) return 1; | |
349 } | |
350 | |
351 item->Mask.Image=NULL; | |
352 if ( strcmp( pfname,"NULL" ) ) | |
353 { | |
354 strcpy( tmp,path ); strcat( tmp,pfname ); | |
355 if ( skinBPRead( tmp,&item->Mask ) ) return 1; | |
356 } | |
357 | |
358 return 0; | |
359 } | |
360 | |
6625 | 361 int cmd_potmeter( char * in ) |
1693 | 362 { // potmeter=phasebitmaps,phases,default value,x,y,sx,sy,msg |
363 int x,y,ph,sx,sy,msg,d; | |
364 unsigned char tmp[512]; | |
365 unsigned char phfname[512]; | |
366 wItem * item; | |
367 | |
368 CHECKDEFLIST( "potmeter" ); | |
369 CHECKWINLIST( "potmeter" ); | |
370 | |
371 cutItem( in,phfname,',',0 ); | |
1852 | 372 ph=cutItemToInt( in,',',1 ); |
373 d=cutItemToInt( in,',',2 ); | |
374 x=cutItemToInt( in,',',3 ); | |
375 y=cutItemToInt( in,',',4 ); | |
376 sx=cutItemToInt( in,',',5 ); | |
377 sy=cutItemToInt( in,',',6 ); | |
1693 | 378 cutItem( in,tmp,',',7 ); msg=appFindMessage( tmp ); |
379 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
380 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] potmeter: phases filename: '%s'\n",phfname ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
381 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] position: %d,%d %dx%d\n",x,y,sx,sy ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
382 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] phases: %d\n",ph ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
383 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] default value: %d\n",d ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
384 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",msg ); |
1693 | 385 |
386 defList->NumberOfItems++; | |
387 item=&defList->Items[ defList->NumberOfItems ]; | |
388 item->type=itPotmeter; | |
389 item->x=x; item->y=y; | |
390 item->width=sx; item->height=sy; | |
391 item->phases=ph; | |
392 item->msg=msg; | |
393 item->value=(float)d; | |
394 | |
395 item->Bitmap.Image=NULL; | |
396 if ( strcmp( phfname,"NULL" ) ) | |
397 { | |
398 strcpy( tmp,path ); strcat( tmp,phfname ); | |
399 if ( skinBPRead( tmp,&item->Bitmap ) ) return 1; | |
400 } | |
401 return 0; | |
402 } | |
403 | |
6625 | 404 int cmd_font( char * in ) |
1693 | 405 { // font=fontname,fontid |
406 char name[512]; | |
407 char id[512]; | |
408 wItem * item; | |
409 | |
410 CHECKDEFLIST( "font" ); | |
411 CHECKWINLIST( "font" ); | |
412 | |
413 cutItem( in,name,',',0 ); | |
414 cutItem( in,id,',',1 ); | |
415 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
416 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] font\n" ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
417 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] name: %s\n",name ); |
1693 | 418 |
419 defList->NumberOfItems++; | |
420 item=&defList->Items[ defList->NumberOfItems ]; | |
421 item->type=itFont; | |
6218 | 422 item->fontid=fntRead( path,name ); |
1693 | 423 switch ( item->fontid ) |
424 { | |
1884 | 425 case -1: ERRORMESSAGE( MSGTR_SKIN_FONT_NotEnoughtMemory ); return 1; |
426 case -2: ERRORMESSAGE( MSGTR_SKIN_FONT_TooManyFontsDeclared ); return 1; | |
6218 | 427 case -3: ERRORMESSAGE( MSGTR_SKIN_FONT_FontFileNotFound ); return 1; |
428 case -4: ERRORMESSAGE( MSGTR_SKIN_FONT_FontImageNotFound ); return 1; | |
1693 | 429 } |
430 return 0; | |
431 } | |
432 | |
6625 | 433 int cmd_slabel( char * in ) |
1693 | 434 { |
435 char tmp[512]; | |
436 char sid[63]; | |
437 int x,y,id; | |
438 wItem * item; | |
439 | |
440 CHECKDEFLIST( "slabel" ); | |
441 CHECKWINLIST( "slabel" ); | |
442 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
443 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] slabel\n" ); |
1693 | 444 |
1852 | 445 x=cutItemToInt( in,',',0 ); |
446 y=cutItemToInt( in,',',1 ); | |
1693 | 447 cutItem( in,sid,',',2 ); id=fntFindID( sid ); |
1884 | 448 if ( id < 0 ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NonExistentFontID,sid ); return 1; } |
1693 | 449 cutItem( in,tmp,',',3 ); cutItem( tmp,tmp,'"',1 ); |
450 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
451 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pos: %d,%d\n",x,y ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
452 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",sid,id ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
453 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] str: '%s'\n",tmp ); |
1693 | 454 |
455 defList->NumberOfItems++; | |
456 item=&defList->Items[ defList->NumberOfItems ]; | |
457 item->type=itSLabel; | |
458 item->fontid=id; | |
459 item->x=x; item->y=y; | |
460 item->width=-1; item->height=-1; | |
1884 | 461 if ( ( item->label=malloc( strlen( tmp ) + 1 ) ) == NULL ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NotEnoughtMemory ); return 1; } |
1693 | 462 strcpy( item->label,tmp ); |
463 | |
464 return 0; | |
465 } | |
466 | |
6625 | 467 int cmd_dlabel( char * in ) |
1693 | 468 { // dlabel=x,y,sx,align,fontid,string ... |
469 char tmp[512]; | |
470 char sid[63]; | |
471 int x,y,sx,id,a; | |
472 wItem * item; | |
473 | |
474 CHECKDEFLIST( "dlabel" ); | |
475 CHECKWINLIST( "dlabel" ); | |
476 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
477 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] dlabel\n" ); |
1693 | 478 |
1852 | 479 x=cutItemToInt( in,',',0 ); |
480 y=cutItemToInt( in,',',1 ); | |
481 sx=cutItemToInt( in,',',2 ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
482 a=cutItemToInt( in,',',3 ); |
1693 | 483 cutItem( in,sid,',',4 ); id=fntFindID( sid ); |
1884 | 484 if ( id < 0 ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NonExistentFontID,sid ); return 1; } |
1693 | 485 cutItem( in,tmp,',',5 ); cutItem( tmp,tmp,'"',1 ); |
486 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
487 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pos: %d,%d width: %d align: %d\n",x,y,sx,a ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
488 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",sid,id ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
489 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] str: '%s'\n",tmp ); |
1693 | 490 |
491 defList->NumberOfItems++; | |
492 item=&defList->Items[ defList->NumberOfItems ]; | |
493 item->type=itDLabel; | |
494 item->fontid=id; item->align=a; | |
495 item->x=x; item->y=y; | |
496 item->width=sx; item->height=-1; | |
1884 | 497 if ( ( item->label=malloc( strlen( tmp ) + 1 ) ) == NULL ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NotEnoughtMemory ); return 1; } |
1693 | 498 strcpy( item->label,tmp ); |
499 | |
500 return 0; | |
501 } | |
502 | |
6625 | 503 int cmd_decoration( char * in ) |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
504 { |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
505 char tmp[512]; |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
506 |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
507 CHECKDEFLIST( "decoration" ); |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
508 CHECKWINLIST( "decoration" ); |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
509 |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
510 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window decoration is %s\n",in ); |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
511 cutItem( in,tmp,',',0 ); |
1884 | 512 if ( strcmp( tmp,"enable" )&&strcmp( tmp,"disable" ) ) { ERRORMESSAGE( MSGTR_SKIN_UnknownParameter,tmp ); return 1; } |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
513 if ( strcmp( tmp,"enable" ) ) defList->mainDecoration=0; |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
514 else defList->mainDecoration=1; |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
515 |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
516 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window decoration is %s\n",(defList->mainDecoration?"enabled":"disabled") ); |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
517 return 0; |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
518 } |
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1852
diff
changeset
|
519 |
1693 | 520 typedef struct |
521 { | |
522 char * name; | |
523 int (*func)( char * in ); | |
524 } _item; | |
525 | |
526 _item skinItem[] = | |
527 { | |
6625 | 528 { "section", cmd_section }, |
529 { "end", cmd_end }, | |
530 { "window", cmd_window }, | |
531 { "base", cmd_base }, | |
532 { "button", cmd_button }, | |
533 { "selected", cmd_selected }, | |
534 { "background", cmd_background }, | |
535 { "hpotmeter", cmd_hpotmeter }, | |
536 { "potmeter", cmd_potmeter }, | |
537 { "font", cmd_font }, | |
538 { "slabel", cmd_slabel }, | |
539 { "dlabel", cmd_dlabel }, | |
540 { "decoration", cmd_decoration }, | |
541 { "menu", cmd_menu } | |
1693 | 542 }; |
543 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
544 #define ITEMS (int)( sizeof( skinItem )/sizeof( _item ) ) |
1693 | 545 |
546 char * strdelspacesbeforecommand( char * in ) | |
547 { | |
548 int c = 0; | |
549 char * out; | |
550 if ( strlen( in ) == 0 ) return NULL; | |
551 while ( in[c] == ' ' ) c++; | |
552 if ( c != 0 ) | |
553 { | |
554 out=malloc( strlen( in ) - c + 1 ); | |
555 memcpy( out,&in[c],strlen( in ) - c + 1 ); | |
556 } | |
557 else out=in; | |
558 return out; | |
559 } | |
560 | |
561 char * strswap( char * in,char what,char whereof ) | |
562 { | |
563 int i; | |
564 if ( strlen( in ) == 0 ) return NULL; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
565 for ( i=0;i<(int)strlen( in );i++ ) |
1693 | 566 if ( in[i] == what ) in[i]=whereof; |
567 return in; | |
568 } | |
569 | |
570 char * strdelspaces( char * in ) | |
571 { | |
572 int c = 0,i = 0,id = 0; | |
573 if ( strlen( in ) == 0 ) return NULL; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
574 while ( c != (int)strlen( in ) ) |
1693 | 575 { |
576 if ( in[c] == '"' ) id=!id; | |
577 if ( ( in[c] == ' ' )&&( !id ) ) | |
578 { | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
579 for ( i=0;i<(int)strlen( in ) - c; i++ ) in[c+i]=in[c+i+1]; |
1693 | 580 continue; |
581 } | |
582 c++; | |
583 } | |
584 return in; | |
585 } | |
586 | |
587 FILE * skinFile; | |
588 | |
589 void setname( char * item1, char * item2 ) | |
590 { strcpy( fn,item1 ); strcat( fn,"/" ); strcat( fn,item2 ); strcpy( path,fn ); strcat( path,"/" ); strcat( fn,"/skin" ); } | |
591 | |
592 int skinRead( char * dname ) | |
593 { | |
594 unsigned char tmp[255]; | |
595 unsigned char * ptmp; | |
596 unsigned char command[32]; | |
597 unsigned char param[256]; | |
598 int c,i; | |
599 | |
6568
297d43688572
Check for skin in user's .mplayer first so he can override systemwide skin.
atmos4
parents:
6221
diff
changeset
|
600 setname( skinDirInHome,dname ); |
1693 | 601 if ( ( skinFile = fopen( fn,"rt" ) ) == NULL ) |
602 { | |
6568
297d43688572
Check for skin in user's .mplayer first so he can override systemwide skin.
atmos4
parents:
6221
diff
changeset
|
603 setname( skinMPlayerDir,dname ); |
1693 | 604 if ( ( skinFile = fopen( fn,"rt" ) ) == NULL ) |
605 { | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
606 mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[skin] file ( %s ) not found.\n",fn ); |
1693 | 607 return -1; |
608 } | |
609 } | |
610 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
3586
diff
changeset
|
611 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] file: %s\n",fn ); |
1693 | 612 |
5690 | 613 appInitStruct( skinAppMPlayer ); |
1693 | 614 |
615 linenumber=0; | |
616 while ( !feof( skinFile ) ) | |
617 { | |
618 fgets( tmp,255,skinFile ); linenumber++; | |
619 | |
620 c=tmp[ strlen( tmp ) - 1 ]; if ( c == '\n' || c == '\r' ) tmp[ strlen( tmp ) - 1 ]=0; | |
621 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:
3586
diff
changeset
|
622 for ( c=0;c<(int)strlen( tmp );c++ ) |
1693 | 623 if ( tmp[c] == ';' ) |
624 { | |
625 tmp[c]=0; | |
626 break; | |
627 } | |
628 if ( strlen( tmp ) == 0 ) continue; | |
629 ptmp=strdelspacesbeforecommand( tmp ); | |
630 if ( strlen( ptmp ) == 0 ) continue; | |
631 ptmp=strswap( ptmp,'\t',' ' ); | |
632 ptmp=strdelspaces( ptmp ); | |
633 | |
634 cutItem( ptmp,command,'=',0 ); cutItem( ptmp,param,'=',1 ); | |
635 strlower( command ); | |
636 for( i=0;i<ITEMS;i++ ) | |
637 if ( !strcmp( command,skinItem[i].name ) ) | |
638 if ( skinItem[i].func( param ) ) return -2; | |
639 } | |
640 return 0; | |
641 } |