Mercurial > mplayer.hg
annotate Gui/app.c @ 22259:cb409839a110
Correct implementation of text spacing.
author | eugeni |
---|---|
date | Mon, 19 Feb 2007 18:01:49 +0000 |
parents | 308495b6d611 |
children |
rev | line source |
---|---|
8043 | 1 |
1693 | 2 |
3 #include <stdlib.h> | |
4 #include <stdio.h> | |
5 #include <string.h> | |
6 | |
17144 | 7 #include "config.h" |
8 #include "mp_msg.h" | |
9 #include "help_mp.h" | |
3586 | 10 |
1693 | 11 #include "app.h" |
12 #include "wm/wskeys.h" | |
13 #include "skin/skin.h" | |
21227
308495b6d611
Rename Gui/mplayer/mplayer.h to gmplayer.h, another file named mplayer.h
diego
parents:
18889
diff
changeset
|
14 #include "mplayer/gmplayer.h" |
4979 | 15 #include "interface.h" |
1693 | 16 |
8043 | 17 evName evNames[] = |
18 { | |
19 { evNone, "evNone" }, | |
20 { evPlay, "evPlay" }, | |
21 { evStop, "evStop" }, | |
22 { evPause, "evPause" }, | |
23 { evPrev, "evPrev" }, | |
24 { evNext, "evNext" }, | |
25 { evLoad, "evLoad" }, | |
26 { evEqualizer, "evEqualizer" }, | |
27 { evEqualizer, "evEqualeaser" }, | |
28 { evPlayList, "evPlaylist" }, | |
29 { evExit, "evExit" }, | |
30 { evIconify, "evIconify" }, | |
31 { evIncBalance, "evIncBalance" }, | |
32 { evDecBalance, "evDecBalance" }, | |
33 { evFullScreen, "evFullScreen" }, | |
34 { evFName, "evFName" }, | |
35 { evMovieTime, "evMovieTime" }, | |
36 { evAbout, "evAbout" }, | |
37 { evLoadPlay, "evLoadPlay" }, | |
38 { evPreferences, "evPreferences" }, | |
39 { evSkinBrowser, "evSkinBrowser" }, | |
40 { evBackward10sec, "evBackward10sec" }, | |
41 { evForward10sec, "evForward10sec" }, | |
42 { evBackward1min, "evBackward1min" }, | |
43 { evForward1min, "evForward1min" }, | |
44 { evBackward10min, "evBackward10min" }, | |
45 { evForward10min, "evForward10min" }, | |
46 { evIncVolume, "evIncVolume" }, | |
47 { evDecVolume, "evDecVolume" }, | |
48 { evMute, "evMute" }, | |
49 { evIncAudioBufDelay, "evIncAudioBufDelay" }, | |
50 { evDecAudioBufDelay, "evDecAudioBufDelay" }, | |
51 { evPlaySwitchToPause, "evPlaySwitchToPause" }, | |
52 { evPauseSwitchToPlay, "evPauseSwitchToPlay" }, | |
14589 | 53 { evNormalSize, "evHalfSize" }, |
8043 | 54 { evNormalSize, "evNormalSize" }, |
55 { evDoubleSize, "evDoubleSize" }, | |
56 { evSetMoviePosition, "evSetMoviePosition" }, | |
57 { evSetVolume, "evSetVolume" }, | |
58 { evSetBalance, "evSetBalance" }, | |
59 { evHelp, "evHelp" }, | |
60 { evLoadSubtitle, "evLoadSubtitle" }, | |
61 { evPlayDVD, "evPlayDVD" }, | |
62 { evPlayVCD, "evPlayVCD" }, | |
63 { evSetURL, "evSetURL" }, | |
64 { evLoadAudioFile, "evLoadAudioFile" }, | |
65 { evDropSubtitle, "evDropSubtitle" }, | |
9040
2a0619fd84f0
- add new entry's to hungarian skin howto (please Gabu translate)
pontscho
parents:
8973
diff
changeset
|
66 { evSetAspect, "evSetAspect" } |
8043 | 67 }; |
68 | |
69 int evBoxs = sizeof( evNames ) / sizeof( evName ); | |
70 | |
71 // --- | |
72 | |
18889
e60c8c7399d2
get_path as const, patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
17974
diff
changeset
|
73 extern char *get_path(const char *); |
7092
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
6218
diff
changeset
|
74 |
1693 | 75 listItems appMPlayer; |
76 | |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
77 /* FIXME: Eventually remove the obsolete directory names. */ |
1693 | 78 char * skinDirInHome=NULL; |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
79 char * skinDirInHome_obsolete=NULL; |
1693 | 80 char * skinMPlayerDir=NULL; |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
81 char * skinMPlayerDir_obsolete=NULL; |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1823
diff
changeset
|
82 char * skinName = NULL; |
1693 | 83 |
84 void appClearItem( wItem * item ) | |
85 { | |
86 item->type=0; | |
87 // --- | |
88 item->x=0; item->y=0; item->width=0; item->height=0; | |
89 // --- | |
90 item->px=0; item->py=0; item->psx=0; item->psy=0; | |
91 // --- | |
92 item->msg=0; item->msg2=0; | |
4979 | 93 item->pressed=btnReleased; |
1693 | 94 item->tmp=0; |
95 item->key=0; item->key2=0; | |
96 item->Bitmap.Width=0; item->Bitmap.Height=0; item->Bitmap.BPP=0; item->Bitmap.ImageSize=0; | |
4979 | 97 if ( item->Bitmap.Image ) free( item->Bitmap.Image ); |
98 item->Bitmap.Image=NULL; | |
1693 | 99 // --- |
100 item->fontid=0; | |
101 if ( item->label ) free( item->label ); item->label=NULL; | |
102 item->event=0; | |
103 } | |
104 | |
105 void appCopy( listItems * dest,listItems * source ) | |
106 { | |
107 dest->NumberOfItems=source->NumberOfItems; | |
108 memcpy( &dest->Items,&source->Items,128 * sizeof( wItem ) ); | |
109 | |
110 dest->NumberOfMenuItems=source->NumberOfMenuItems; | |
111 memcpy( &dest->MenuItems,&source->MenuItems,32 * sizeof( wItem ) ); | |
112 | |
113 memcpy( &dest->main,&source->main,sizeof( wItem ) ); | |
114 memcpy( &dest->sub,&source->sub,sizeof( wItem ) ); | |
115 memcpy( &dest->menuBase,&source->menuBase,sizeof( wItem ) ); | |
116 memcpy( &dest->menuSelected,&source->menuSelected,sizeof( wItem ) ); | |
117 } | |
118 | |
119 void appInitStruct( listItems * item ) | |
120 { | |
121 int i; | |
122 for ( i=0;i<item->NumberOfItems;i++ ) | |
123 appClearItem( &item->Items[i] ); | |
124 for ( i=0;i<item->NumberOfMenuItems;i++ ) | |
125 appClearItem( &item->MenuItems[i] ); | |
9625 | 126 for ( i=0;i<item->NumberOfBarItems;i++ ) |
127 appClearItem( &item->barItems[i] ); | |
1693 | 128 |
129 item->NumberOfItems=-1; | |
9625 | 130 memset( item->Items,0,256 * sizeof( wItem ) ); |
1693 | 131 item->NumberOfMenuItems=-1; |
9625 | 132 memset( item->MenuItems,0,64 * sizeof( wItem ) ); |
133 item->NumberOfBarItems=-1; | |
134 memset( item->barItems,0,256 * sizeof( wItem ) ); | |
1693 | 135 |
136 appClearItem( &item->main ); | |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1823
diff
changeset
|
137 item->mainDecoration=0; |
1693 | 138 appClearItem( &item->sub ); |
9625 | 139 item->sub.width=0; item->sub.height=0; |
1823 | 140 item->sub.x=-1; item->sub.y=-1; |
1693 | 141 appClearItem( &item->menuBase ); |
142 appClearItem( &item->menuSelected ); | |
8973 | 143 item->sub.R=item->sub.G=item->sub.B=0; |
144 item->bar.R=item->bar.G=item->bar.B=0; | |
145 item->main.R=item->main.G=item->main.B=0; | |
8949 | 146 item->barIsPresent=0; |
147 item->menuIsPresent=0; | |
1693 | 148 } |
149 | |
150 int appFindKey( unsigned char * name ) | |
151 { | |
152 int i; | |
153 for ( i=0;i<wsKeyNumber;i++ ) | |
154 if ( !strcmp( wsKeyNames[i].name,name ) ) return wsKeyNames[i].code; | |
155 return -1; | |
156 } | |
157 | |
158 int appFindMessage( unsigned char * str ) | |
159 { | |
160 int i; | |
161 for ( i=0;i<evBoxs;i++ ) | |
162 if ( !strcmp( evNames[i].name,str ) ) return evNames[i].msg; | |
163 return -1; | |
164 } | |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
165 |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
166 void btnModify( int event,float state ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
167 { |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
168 int j; |
8973 | 169 for ( j=0;j < appMPlayer.NumberOfItems + 1;j++ ) |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
170 if ( appMPlayer.Items[j].msg == event ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
171 { |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
172 switch ( appMPlayer.Items[j].type ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
173 { |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
174 case itButton: |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
175 appMPlayer.Items[j].pressed=(int)state; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
176 appMPlayer.Items[j].tmp=(int)state; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
177 break; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
178 case itPotmeter: |
8973 | 179 case itVPotmeter: |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
180 case itHPotmeter: |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
181 if ( state < 0.0f ) state=0.0f; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
182 if ( state > 100.f ) state=100.0f; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
183 appMPlayer.Items[j].value=state; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
184 break; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
185 } |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
186 } |
8973 | 187 |
188 for ( j=0;j < appMPlayer.NumberOfBarItems + 1;j++ ) | |
189 if ( appMPlayer.barItems[j].msg == event ) | |
190 { | |
191 switch ( appMPlayer.barItems[j].type ) | |
192 { | |
193 case itButton: | |
194 appMPlayer.barItems[j].pressed=(int)state; | |
195 appMPlayer.barItems[j].tmp=(int)state; | |
196 break; | |
197 case itPotmeter: | |
198 case itVPotmeter: | |
199 case itHPotmeter: | |
200 if ( state < 0.0f ) state=0.0f; | |
201 if ( state > 100.f ) state=100.0f; | |
202 appMPlayer.barItems[j].value=state; | |
203 break; | |
204 } | |
205 } | |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
206 } |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
207 |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
208 float btnGetValue( int event ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
209 { |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
210 int j; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
211 for ( j=0;j<appMPlayer.NumberOfItems + 1;j++ ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
212 if ( appMPlayer.Items[j].msg == event ) return appMPlayer.Items[j].value; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
213 return 0; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
214 } |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
215 |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
216 void btnSet( int event,int set ) |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
217 { |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
218 int j; |
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
219 for ( j=0;j<appMPlayer.NumberOfItems + 1;j++ ) |
9202 | 220 if ( appMPlayer.Items[j].msg == event ) |
221 { appMPlayer.Items[j].pressed=set; appMPlayer.barItems[j].tmp=0; } | |
222 for ( j=0;j<appMPlayer.NumberOfBarItems + 1;j++ ) | |
223 if ( appMPlayer.barItems[j].msg == event ) | |
224 { appMPlayer.barItems[j].pressed=set; appMPlayer.barItems[j].tmp=0; } | |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8043
diff
changeset
|
225 } |