mirror of https://github.com/mpv-player/mpv
248 lines
8.1 KiB
C
248 lines
8.1 KiB
C
|
|
// ----------------------------------------------------------------------------------------------
|
|
// AutoSpace Window System for Linux/Win32 v0.61
|
|
// Writed by pontscho / fresh!mindworkz
|
|
// ----------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __MY_WS
|
|
#define __MY_WS
|
|
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xutil.h>
|
|
#include <X11/keysym.h>
|
|
#include <X11/Xatom.h>
|
|
#include <X11/extensions/XShm.h>
|
|
#include <X11/extensions/dpms.h>
|
|
|
|
#define wsKeyReleased 0
|
|
#define wsKeyPressed 1
|
|
|
|
#define wsShift (1L<<0)
|
|
#define wsLock (1L<<1)
|
|
#define wsCtrl (1L<<2)
|
|
#define wsAlt (1L<<3)
|
|
|
|
#define wsPLMouseButton 1
|
|
#define wsPMMouseButton 2
|
|
#define wsPRMouseButton 3
|
|
#define wsP4MouseButton 4
|
|
#define wsP5MouseButton 5
|
|
#define wsRLMouseButton 1 + 128
|
|
#define wsRMMouseButton 2 + 128
|
|
#define wsRRMouseButton 3 + 128
|
|
#define wsR4MouseButton 4 + 128
|
|
#define wsR5MouseButton 5 + 128
|
|
#define wsEnterWindow 253
|
|
#define wsLeaveWindow 254
|
|
#define wsMoveMouse 255
|
|
|
|
#define wsShowMouseCursor 1
|
|
#define wsMouse 1
|
|
#define wsHideMouseCursor 0
|
|
#define wsNoMouse 0
|
|
#define wsHandleMouseButton 2
|
|
#define wsHandleMouseMove 4
|
|
|
|
#define wsHideFrame 0
|
|
#define wsNoFrame 0
|
|
#define wsShowFrame 1
|
|
#define wsFrame 1
|
|
#define wsMaxSize 2
|
|
#define wsMinSize 4
|
|
#define wsShowWindow 8
|
|
#define wsHideWindow 16
|
|
#define wsOverredirect 32
|
|
|
|
#define wsNoBorder 0
|
|
|
|
#define wsSysName "AutoSpace Window System LiTe"
|
|
|
|
#define wsRGB32 1
|
|
#define wsBGR32 2
|
|
#define wsRGB24 3
|
|
#define wsBGR24 4
|
|
#define wsRGB16 5
|
|
#define wsBGR16 6
|
|
#define wsRGB15 7
|
|
#define wsBGR15 8
|
|
|
|
#define wsWindowVisible 1
|
|
#define wsWindowPartialVisible 2
|
|
#define wsWindowNotVisible 4
|
|
#define wsWindowMapped 8
|
|
#define wsWindowUnmapped 16
|
|
#define wsWindowFocusIn 32
|
|
#define wsWindowFocusOut 64
|
|
#define wsWindowExpose 128
|
|
#define wsWindowRolled 256
|
|
|
|
#define wsNone 0
|
|
#define wsMapped 1
|
|
#define wsFocused 2
|
|
#define wsVisible 3
|
|
#define wsNotVisible 4
|
|
#define wsPVisible 5
|
|
#define wsRolled 6
|
|
|
|
#define wsParamDisplay Display *dpy,Window w
|
|
|
|
typedef void (*wsTReDraw)( wsParamDisplay );
|
|
typedef void (*wsTReSize)( unsigned int X,unsigned int Y,unsigned int width,unsigned int height );
|
|
typedef void (*wsTIdle)( void );
|
|
typedef void (*wsTKeyHandler)( int State,int Type,int Key );
|
|
typedef void (*wsTMouseHandler)( int Button,int X,int Y,int RX,int RY );
|
|
typedef void (*wsRemoteHandler)( char * str );
|
|
|
|
typedef struct
|
|
{
|
|
Window WindowID;
|
|
Window Parent;
|
|
int X,Y,Width,Height;
|
|
int OldX,OldY,OldWidth,OldHeight;
|
|
int MaxX,MaxY;
|
|
int isFullScreen;
|
|
int BorderWidth;
|
|
int Property;
|
|
unsigned char * bImage;
|
|
XImage * xImage;
|
|
Pixmap Mask;
|
|
int Decorations;
|
|
|
|
int State;
|
|
int Visible;
|
|
int Mapped;
|
|
int Focused;
|
|
int Rolled;
|
|
|
|
wsTReDraw ReDraw;
|
|
wsTReSize ReSize;
|
|
wsTIdle Idle;
|
|
wsTKeyHandler KeyHandler;
|
|
wsTMouseHandler MouseHandler;
|
|
wsRemoteHandler RemoteHandler;
|
|
|
|
int Alt;
|
|
int Shift;
|
|
int Control;
|
|
int NumLock;
|
|
int CapsLock;
|
|
// --- Misc -------------------------------------------------------------------------------------
|
|
|
|
Atom AtomDeleteWindow;
|
|
Atom AtomTakeFocus;
|
|
Atom AtomRolle;
|
|
Atom AtomProtocols;
|
|
Atom AtomsProtocols[3];
|
|
Atom AtomLeaderClient;
|
|
Atom AtomRemote;
|
|
Atom AtomWMSizeHint;
|
|
Atom AtomWMNormalHint;
|
|
|
|
XShmSegmentInfo Shminfo;
|
|
unsigned char * ImageData;
|
|
unsigned short int * ImageDataw;
|
|
unsigned int * ImageDatadw;
|
|
GC wGC;
|
|
XGCValues wGCV;
|
|
unsigned long WindowMask;
|
|
XVisualInfo VisualInfo;
|
|
XWindowAttributes Attribs;
|
|
XSetWindowAttributes WindowAttrib;
|
|
XSizeHints SizeHint;
|
|
XWMHints WMHints;
|
|
|
|
XFontStruct * Font;
|
|
int FontHeight;
|
|
|
|
Cursor wsCursor;
|
|
char wsCursorData[1];
|
|
Pixmap wsCursorPixmap;
|
|
int wsMouseEventType;
|
|
XColor wsColor;
|
|
} wsTWindow;
|
|
|
|
extern int wsMaxX;
|
|
extern int wsMaxY;
|
|
|
|
extern Display * wsDisplay;
|
|
extern int wsScreen;
|
|
extern Window wsRootWin;
|
|
|
|
extern unsigned char * wsImageData;
|
|
|
|
extern XEvent wsEvent;
|
|
|
|
extern int wsDepthOnScreen;
|
|
extern int wsRedMask;
|
|
extern int wsGreenMask;
|
|
extern int wsBlueMask;
|
|
|
|
extern int wsUseXShm;
|
|
extern int wsUseDGA;
|
|
|
|
// ----------------------------------------------------------------------------------------------
|
|
// wsKeyTable
|
|
// ----------------------------------------------------------------------------------------------
|
|
extern unsigned long wsKeyTable[512];
|
|
|
|
extern void wsXDone( void );
|
|
extern void wsXInit( void* disp );
|
|
|
|
extern int wsGetDepthOnScreen( void );
|
|
|
|
extern void wsDoExit( void );
|
|
extern void wsMainLoop( void );
|
|
|
|
// ----------------------------------------------------------------------------------------------
|
|
// wsCrateWindow: create a new window on the screen.
|
|
// X,Y : window position
|
|
// wX,hY : window size
|
|
// bW : window frame size
|
|
// cV : mouse cursor visible
|
|
// D : "decoration", visible titlebar, etc ...
|
|
// ----------------------------------------------------------------------------------------------
|
|
extern void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,unsigned char D,char * label );
|
|
extern void wsDestroyWindow( wsTWindow * win );
|
|
extern void wsMoveWindow( wsTWindow * win,int b,int x, int y );
|
|
extern void wsResizeWindow( wsTWindow * win,int sx, int sy );
|
|
extern void wsIconify( wsTWindow win );
|
|
extern void wsMoveTopWindow( wsTWindow * win );
|
|
extern void wsSetBackground( wsTWindow * win,int color );
|
|
extern void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b );
|
|
extern void wsSetBackgroundRGB( wsTWindow * win,int r,int g,int b );
|
|
#define wsClearWindow( win ); XClearWindow( wsDisplay,win.WindowID );
|
|
extern void wsSetTitle( wsTWindow * win,char * name );
|
|
extern void wsVisibleWindow( wsTWindow * win,int show );
|
|
extern void wsWindowDecoration( wsTWindow * win,long d );
|
|
extern void wsFullScreen( wsTWindow * win );
|
|
extern void wsPostRedisplay( wsTWindow * win );
|
|
extern void wsSetShape( wsTWindow * win,char * data );
|
|
|
|
// ----------------------------------------------------------------------------------------------
|
|
// Draw string at x,y with fc ( foreground color ) and bc ( background color ).
|
|
// ----------------------------------------------------------------------------------------------
|
|
extern void wsDrawString( wsTWindow win,int x,int y,char * str,int fc,int bc );
|
|
extern int wsTextWidth( wsTWindow win,char * str );
|
|
|
|
// ----------------------------------------------------------------------------------------------
|
|
// Show / hide mouse cursor.
|
|
// ----------------------------------------------------------------------------------------------
|
|
extern void wsVisibleMouse( wsTWindow * win,int m );
|
|
extern void wsSetMousePosition( wsTWindow * win,int x, int y );
|
|
|
|
// ----------------------------------------------------------------------------------------------
|
|
// Image handling
|
|
// ----------------------------------------------------------------------------------------------
|
|
extern void wsCreateImage( wsTWindow * win,int Width,int Height );
|
|
extern void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size );
|
|
extern void wsPutImage( wsTWindow * win );
|
|
extern void wsResizeImage( wsTWindow * win,int Width,int Height );
|
|
extern void wsDestroyImage( wsTWindow * win );
|
|
extern int wsGetOutMask( void );
|
|
|
|
extern void wsScreenSaverOn( Display *mDisplay );
|
|
extern void wsScreenSaverOff( Display * mDisplay );
|
|
|
|
#endif
|
|
|