Mercurial > mplayer.hg
annotate Gui/wm/ws.h @ 20671:66f2db668910
Always respect w and h params to mpcodecs_config_vo over
sh->disp_w and sh->disp_h, otherwise it will break when the
resolution changes mid-stream, like in
http://samples.mplayerhq.hu/MPEG2/res_change_ffmpeg_aspect.ts
author | reimar |
---|---|
date | Sun, 05 Nov 2006 12:10:44 +0000 |
parents | 3047f69e3d74 |
children |
rev | line source |
---|---|
1693 | 1 |
2 // ---------------------------------------------------------------------------------------------- | |
3 // AutoSpace Window System for Linux/Win32 v0.61 | |
4 // Writed by pontscho / fresh!mindworkz | |
5 // ---------------------------------------------------------------------------------------------- | |
6 | |
7 #ifndef __MY_WS | |
8 #define __MY_WS | |
9 | |
10 #include <X11/Xlib.h> | |
11 #include <X11/Xutil.h> | |
12 #include <X11/keysym.h> | |
13 #include <X11/Xatom.h> | |
14 #include <X11/extensions/XShm.h> | |
4679 | 15 #ifdef HAVE_XDPMS |
1693 | 16 #include <X11/extensions/dpms.h> |
4679 | 17 #endif |
1693 | 18 |
19 #define wsKeyReleased 0 | |
20 #define wsKeyPressed 1 | |
21 | |
22 #define wsShift (1L<<0) | |
23 #define wsLock (1L<<1) | |
24 #define wsCtrl (1L<<2) | |
25 #define wsAlt (1L<<3) | |
26 | |
27 #define wsPLMouseButton 1 | |
28 #define wsPMMouseButton 2 | |
29 #define wsPRMouseButton 3 | |
2851
b64fa5d25142
add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents:
2082
diff
changeset
|
30 #define wsP4MouseButton 4 |
b64fa5d25142
add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents:
2082
diff
changeset
|
31 #define wsP5MouseButton 5 |
20102 | 32 #define wsRLMouseButton (1 + 128) |
33 #define wsRMMouseButton (2 + 128) | |
34 #define wsRRMouseButton (3 + 128) | |
35 #define wsR4MouseButton (4 + 128) | |
36 #define wsR5MouseButton (5 + 128) | |
1693 | 37 #define wsEnterWindow 253 |
38 #define wsLeaveWindow 254 | |
39 #define wsMoveMouse 255 | |
40 | |
41 #define wsShowMouseCursor 1 | |
42 #define wsMouse 1 | |
43 #define wsHideMouseCursor 0 | |
44 #define wsNoMouse 0 | |
45 #define wsHandleMouseButton 2 | |
46 #define wsHandleMouseMove 4 | |
47 | |
48 #define wsHideFrame 0 | |
49 #define wsNoFrame 0 | |
50 #define wsShowFrame 1 | |
51 #define wsFrame 1 | |
52 #define wsMaxSize 2 | |
53 #define wsMinSize 4 | |
54 #define wsShowWindow 8 | |
55 #define wsHideWindow 16 | |
56 #define wsOverredirect 32 | |
57 | |
58 #define wsNoBorder 0 | |
59 | |
60 #define wsSysName "AutoSpace Window System LiTe" | |
61 | |
62 #define wsRGB32 1 | |
63 #define wsBGR32 2 | |
64 #define wsRGB24 3 | |
65 #define wsBGR24 4 | |
66 #define wsRGB16 5 | |
67 #define wsBGR16 6 | |
68 #define wsRGB15 7 | |
69 #define wsBGR15 8 | |
70 | |
71 #define wsWindowVisible 1 | |
72 #define wsWindowPartialVisible 2 | |
73 #define wsWindowNotVisible 4 | |
74 #define wsWindowMapped 8 | |
75 #define wsWindowUnmapped 16 | |
76 #define wsWindowFocusIn 32 | |
77 #define wsWindowFocusOut 64 | |
78 #define wsWindowExpose 128 | |
79 #define wsWindowRolled 256 | |
5919 | 80 #define wsWindowClosed 512 |
1693 | 81 |
82 #define wsNone 0 | |
83 #define wsMapped 1 | |
84 #define wsFocused 2 | |
85 #define wsVisible 3 | |
86 #define wsNotVisible 4 | |
87 #define wsPVisible 5 | |
88 #define wsRolled 6 | |
89 | |
6089 | 90 #define wsWMUnknown 0 |
91 #define wsWMNetWM 1 | |
92 #define wsWMKDE 2 | |
93 #define wsWMIceWM 3 | |
94 #define wsWMWMaker 4 | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5919
diff
changeset
|
95 |
8058 | 96 typedef void (*wsTReDraw)( void ); |
1693 | 97 typedef void (*wsTReSize)( unsigned int X,unsigned int Y,unsigned int width,unsigned int height ); |
98 typedef void (*wsTIdle)( void ); | |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6146
diff
changeset
|
99 typedef void (*wsTKeyHandler)( int KeyCode,int Type,int Key ); |
1693 | 100 typedef void (*wsTMouseHandler)( int Button,int X,int Y,int RX,int RY ); |
6967
0fa27966ac47
add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents:
6794
diff
changeset
|
101 typedef void (*wsTDNDHandler)( int num,char ** str ); |
1693 | 102 |
103 typedef struct | |
104 { | |
105 Window WindowID; | |
106 Window Parent; | |
107 int X,Y,Width,Height; | |
108 int OldX,OldY,OldWidth,OldHeight; | |
109 int MaxX,MaxY; | |
110 int isFullScreen; | |
111 int BorderWidth; | |
112 int Property; | |
113 unsigned char * bImage; | |
114 XImage * xImage; | |
115 Pixmap Mask; | |
116 int Decorations; | |
117 | |
118 int State; | |
119 int Visible; | |
120 int Mapped; | |
121 int Focused; | |
122 int Rolled; | |
123 | |
124 wsTReDraw ReDraw; | |
125 wsTReSize ReSize; | |
126 wsTIdle Idle; | |
127 wsTKeyHandler KeyHandler; | |
128 wsTMouseHandler MouseHandler; | |
6967
0fa27966ac47
add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents:
6794
diff
changeset
|
129 wsTDNDHandler DandDHandler; |
1693 | 130 |
131 int Alt; | |
132 int Shift; | |
133 int Control; | |
134 int NumLock; | |
135 int CapsLock; | |
136 // --- Misc ------------------------------------------------------------------------------------- | |
137 | |
138 Atom AtomDeleteWindow; | |
139 Atom AtomTakeFocus; | |
140 Atom AtomRolle; | |
141 Atom AtomProtocols; | |
142 Atom AtomsProtocols[3]; | |
143 Atom AtomLeaderClient; | |
144 Atom AtomRemote; | |
2851
b64fa5d25142
add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents:
2082
diff
changeset
|
145 Atom AtomWMSizeHint; |
b64fa5d25142
add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents:
2082
diff
changeset
|
146 Atom AtomWMNormalHint; |
1693 | 147 |
148 XShmSegmentInfo Shminfo; | |
149 unsigned char * ImageData; | |
150 unsigned short int * ImageDataw; | |
151 unsigned int * ImageDatadw; | |
152 GC wGC; | |
153 XGCValues wGCV; | |
154 unsigned long WindowMask; | |
155 XVisualInfo VisualInfo; | |
156 XSetWindowAttributes WindowAttrib; | |
157 XSizeHints SizeHint; | |
158 XWMHints WMHints; | |
159 | |
160 XFontStruct * Font; | |
161 int FontHeight; | |
162 | |
163 Cursor wsCursor; | |
164 char wsCursorData[1]; | |
165 Pixmap wsCursorPixmap; | |
166 int wsMouseEventType; | |
167 XColor wsColor; | |
168 } wsTWindow; | |
169 | |
4465 | 170 extern int wsMaxX; |
171 extern int wsMaxY; | |
10194 | 172 extern int wsOrgX; |
173 extern int wsOrgY; | |
1693 | 174 |
175 extern Display * wsDisplay; | |
176 extern int wsScreen; | |
177 extern Window wsRootWin; | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5919
diff
changeset
|
178 extern int wsLayer; |
1693 | 179 |
180 extern unsigned char * wsImageData; | |
181 | |
182 extern XEvent wsEvent; | |
183 | |
184 extern int wsDepthOnScreen; | |
185 extern int wsRedMask; | |
186 extern int wsGreenMask; | |
187 extern int wsBlueMask; | |
188 | |
189 extern int wsUseXShm; | |
190 extern int wsUseDGA; | |
191 | |
192 // ---------------------------------------------------------------------------------------------- | |
193 // wsKeyTable | |
194 // ---------------------------------------------------------------------------------------------- | |
195 extern unsigned long wsKeyTable[512]; | |
196 | |
197 extern void wsXDone( void ); | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
198 extern void wsXInit( void* disp ); |
1693 | 199 |
200 extern int wsGetDepthOnScreen( void ); | |
201 | |
202 extern void wsDoExit( void ); | |
203 extern void wsMainLoop( void ); | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4679
diff
changeset
|
204 extern Bool wsEvents( Display * display,XEvent * Event,XPointer arg ); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4679
diff
changeset
|
205 extern void wsHandleEvents( void ); |
1693 | 206 |
207 // ---------------------------------------------------------------------------------------------- | |
208 // wsCrateWindow: create a new window on the screen. | |
209 // X,Y : window position | |
210 // wX,hY : window size | |
211 // bW : window frame size | |
212 // cV : mouse cursor visible | |
213 // D : "decoration", visible titlebar, etc ... | |
214 // ---------------------------------------------------------------------------------------------- | |
215 extern void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,unsigned char D,char * label ); | |
216 extern void wsDestroyWindow( wsTWindow * win ); | |
2854 | 217 extern void wsMoveWindow( wsTWindow * win,int b,int x, int y ); |
1693 | 218 extern void wsResizeWindow( wsTWindow * win,int sx, int sy ); |
219 extern void wsIconify( wsTWindow win ); | |
6146 | 220 extern void wsMoveTopWindow( Display * wsDisplay,Window win ); |
1693 | 221 extern void wsSetBackground( wsTWindow * win,int color ); |
1814 | 222 extern void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b ); |
1693 | 223 extern void wsSetBackgroundRGB( wsTWindow * win,int r,int g,int b ); |
6794 | 224 #define wsClearWindow( win ) XClearWindow( wsDisplay,win.WindowID ) |
1693 | 225 extern void wsSetTitle( wsTWindow * win,char * name ); |
226 extern void wsVisibleWindow( wsTWindow * win,int show ); | |
227 extern void wsWindowDecoration( wsTWindow * win,long d ); | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5919
diff
changeset
|
228 extern void wsSetLayer( Display * wsDisplay,Window win, int layer ); |
1693 | 229 extern void wsFullScreen( wsTWindow * win ); |
230 extern void wsPostRedisplay( wsTWindow * win ); | |
231 extern void wsSetShape( wsTWindow * win,char * data ); | |
6651 | 232 extern void wsSetIcon( Display * dsp,Window win,Pixmap icon,Pixmap mask ); |
1693 | 233 |
234 // ---------------------------------------------------------------------------------------------- | |
235 // Draw string at x,y with fc ( foreground color ) and bc ( background color ). | |
236 // ---------------------------------------------------------------------------------------------- | |
237 extern void wsDrawString( wsTWindow win,int x,int y,char * str,int fc,int bc ); | |
238 extern int wsTextWidth( wsTWindow win,char * str ); | |
239 | |
240 // ---------------------------------------------------------------------------------------------- | |
241 // Show / hide mouse cursor. | |
242 // ---------------------------------------------------------------------------------------------- | |
243 extern void wsVisibleMouse( wsTWindow * win,int m ); | |
244 extern void wsSetMousePosition( wsTWindow * win,int x, int y ); | |
245 | |
246 // ---------------------------------------------------------------------------------------------- | |
247 // Image handling | |
248 // ---------------------------------------------------------------------------------------------- | |
1858
88a88d0a3f94
fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents:
1853
diff
changeset
|
249 extern void wsCreateImage( wsTWindow * win,int Width,int Height ); |
1693 | 250 extern void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size ); |
251 extern void wsPutImage( wsTWindow * win ); | |
1858
88a88d0a3f94
fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents:
1853
diff
changeset
|
252 extern void wsResizeImage( wsTWindow * win,int Width,int Height ); |
1693 | 253 extern void wsDestroyImage( wsTWindow * win ); |
254 extern int wsGetOutMask( void ); | |
255 | |
256 extern void wsScreenSaverOn( Display *mDisplay ); | |
257 extern void wsScreenSaverOff( Display * mDisplay ); | |
258 | |
8957
36a5cdca733b
bunkus: Encapsulated arguments to #define in ( ... ) so that the #defines can be safely used like functions: mydef(flag ? val1 : val2)
mosu
parents:
8864
diff
changeset
|
259 #define wgIsRect( X,Y,tX,tY,bX,bY ) ( ( (X) > (tX) )&&( (Y) > (tY) )&&( (X) < (bX) )&&( (Y) < (bY) ) ) |
8052 | 260 |
2082 | 261 #endif |
262 |