mirror of https://github.com/PCSX2/pcsx2.git
357 lines
13 KiB
C
357 lines
13 KiB
C
/*
|
|
* Xlib compatibility
|
|
*/
|
|
|
|
#ifndef _DUMMY_XLIBH_
|
|
#define _DUMMY_XLIBH_
|
|
|
|
/* Move away the typedef in XtoNX.h */
|
|
#define XFontStruct XFontStruct1
|
|
#include <XtoNX.h>
|
|
#undef XFontStruct
|
|
#undef XCharStruct
|
|
|
|
/* Data types */
|
|
|
|
typedef GR_PALETTE* Colormap;
|
|
typedef GR_DRAW_ID Drawable ;
|
|
typedef int Status;
|
|
typedef unsigned long VisualID;
|
|
typedef int Bool;
|
|
typedef long XID;
|
|
typedef GR_SCANCODE KeySym;
|
|
typedef GR_EVENT_KEYSTROKE XKeyEvent;
|
|
typedef struct {
|
|
GR_FONT_INFO info;
|
|
GR_FONT_ID fid;
|
|
} XFontStruct;
|
|
typedef struct {
|
|
short lbearing; /* origin to left edge of raster */
|
|
short rbearing; /* origin to right edge of raster */
|
|
short width; /* advance to next char's origin */
|
|
short ascent; /* baseline to top edge of raster */
|
|
short descent; /* baseline to bottom edge of raster */
|
|
unsigned short attributes; /* per char flags (not predefined) */
|
|
} XCharStruct;
|
|
|
|
/* Configure window value mask bits */
|
|
#define CWX (1<<0)
|
|
#define CWY (1<<1)
|
|
#define CWWidth (1<<2)
|
|
#define CWHeight (1<<3)
|
|
#define CWBorderWidth (1<<4)
|
|
#define CWSibling (1<<5)
|
|
#define CWStackMode (1<<6)
|
|
|
|
/* Values */
|
|
|
|
typedef struct {
|
|
int x, y;
|
|
int width, height;
|
|
int border_width;
|
|
Window sibling;
|
|
int stack_mode;
|
|
} XWindowChanges;
|
|
|
|
/* typedef unsigned long Time; */
|
|
|
|
#define Success 0
|
|
#define GrabSuccess Success
|
|
#define GrabNotViewable (Success+1)
|
|
#define InputOutput 1
|
|
#define InputOnly 2
|
|
#define IsUnmapped 0
|
|
#define IsUnviewable 1
|
|
#define IsViewable 2
|
|
/* Is this right? */
|
|
#define PropertyChangeMask GR_EVENT_MASK_SELECTION_CHANGED
|
|
#define GraphicsExpose GR_EVENT_TYPE_EXPOSURE
|
|
#define GraphicsExposeMask GR_EVENT_MASK_EXPOSURE
|
|
#define ColormapChangeMask 0
|
|
#define FillSolid 0
|
|
#define LineSolid 0
|
|
#define LineOnOffDash 0
|
|
#define CapNotLast 0
|
|
#define CapRound 0
|
|
#define CapProjecting 0
|
|
#define CapButt 0
|
|
#define JoinRound 0
|
|
#define JoinBevel 0
|
|
#define JoinMiter 0
|
|
#define IncludeInferiors 0
|
|
#define ClipByChildren 0
|
|
#define DoRed 0
|
|
#define DoGreen 0
|
|
#define DoBlue 0
|
|
#define NoEventMask GR_EVENT_MASK_NONE
|
|
#define RevertToParent 0
|
|
#define CurrentTime 0
|
|
#define GrabModeAsync 0
|
|
|
|
#define GXcopy GR_MODE_COPY
|
|
#define GXclear GR_MODE_CLEAR
|
|
#ifndef GXxor
|
|
#define GXxor GR_MODE_OR
|
|
#endif
|
|
#define GXinvert GR_MODE_INVERT
|
|
#define GXorReverse GR_MODE_ORREVERSE
|
|
#define GXandReverse GR_MODE_ANDREVERSE
|
|
#define GXand GR_MODE_AND
|
|
#define GXor GR_MODE_OR
|
|
#define GXandInverted GR_MODE_ANDINVERTED
|
|
#define GXnoop GR_MODE_NOOP
|
|
#define GXnor GR_MODE_NOR
|
|
#define GXequiv GR_MODE_EQUIV
|
|
#define GXcopyInverted GR_MODE_COPYINVERTED
|
|
#define GXorInverted GR_MODE_ORINVERTED
|
|
#define GXnand GR_MODE_NAND
|
|
#define GXset GR_MODE_SET
|
|
|
|
#define XSynchronize(display,sync)
|
|
#define XDefaultRootWindow(d) GR_ROOT_WINDOW_ID
|
|
#define RootWindowOfScreen(s) GR_ROOT_WINDOW_ID
|
|
#define XFreePixmap(d, p) GrDestroyWindow(p)
|
|
#define XFreeCursor(d, c) GrDestroyCursor(c)
|
|
#define XFreeGC(d, gc) GrDestroyGC(gc)
|
|
#define XSetBackground(d, gc, c) GrSetGCBackground(gc, c)
|
|
#define DefaultVisual(d, s) (NULL)
|
|
#define DefaultColormap(d, s) DefaultColormapOfScreen(NULL)
|
|
#define DefaultScreenOfDisplay(d) 0
|
|
#define XSetFillStyle(d, gc, s) wxNoop()
|
|
#define XSetLineAttributes(d, gc, a, b, c, e) wxNoop()
|
|
#define XSetClipMask(d, gc, m) wxNoop()
|
|
#define XSetTSOrigin(d, gc, x, y) wxNoop()
|
|
#define XFillArc(d, w, gc, x, y, rx, ry, a1, a2) GrArcAngle(w, gc, x, y, rx, ry, a1, a2, GR_PIE)
|
|
#define XDrawArc(d, w, gc, x, y, rx, ry, a1, a2) GrArcAngle(w, gc, x, y, rx, ry, a1, a2, GR_ARC)
|
|
#define XDrawPoint(d, w, gc, x, y) GrPoint(w, gc, x, y)
|
|
#define XFillPolygon(d, w, gc, p, n, s, m) GrFillPoly(w, gc, n, p)
|
|
#define XDrawRectangle(d, w, gc, x, y, width, height) GrRect(w, gc, x, y, width, height)
|
|
#define XSetClipOrigin(d, gc, x, y) GrSetGCClipOrigin(gc, x, y)
|
|
#define XSetRegion(d, gc, r) GrSetGCRegion(gc, r)
|
|
#define XSetTile(d, gc, p) wxNoop()
|
|
#define XSetStipple(d, gc, p) wxNoop()
|
|
#define XSetSubwindowMode(d, gc, mode) wxNoop()
|
|
#define XFreeColormap(d, cmap) wxNoop()
|
|
#define XSetTransientForHint(d, w, p) wxNoop()
|
|
#define XUnionRegion(sr1,sr2,r) GrUnionRegion(r,sr1,sr2)
|
|
#define XIntersectRegion(sr1,sr2,r) GrIntersectRegion(r,sr1,sr2)
|
|
#define XEqualRegion(r1, r2) GrEqualRegion(r1, r2)
|
|
#define XEmptyRegion(r) GrEmptyRegion(r)
|
|
#define XOffsetRegion(r, x, y) GrOffsetRegion(r, x, y)
|
|
#define XClipBox(r, rect) GrGetRegionBox(r, rect)
|
|
#define XPointInRegion(r, x, y) GrPointInRegion(r, x, y)
|
|
#define XXorRegion(sr1, sr2, r) GrXorRegion(r, sr1, sr2)
|
|
/* TODO: Cannot find equivalent for this. */
|
|
#define XIconifyWindow(d, w, s) 0
|
|
#define XCreateWindowWithColor(d,p,x,y,w,h,bw,depth,cl,vis,backColor,foreColor) \
|
|
GrNewWindow(p,x,y,w,h,bw,backColor,foreColor)
|
|
#define XLookupString(event, buf, len, sym, status) (*sym = (event)->scancode)
|
|
#define XBell(a, b) GrBell()
|
|
#define DisplayWidthMM(d, s) 100
|
|
#define DisplayHeightMM(d, s) 100
|
|
|
|
/* These defines are wrongly defined in XtoNX.h, IMHO,
|
|
* since they reference a static global.
|
|
* Redefined as functions, below.
|
|
*/
|
|
|
|
#undef DisplayWidth
|
|
#undef DisplayHeight
|
|
#undef DefaultDepth
|
|
|
|
/*
|
|
* Data structure used by color operations
|
|
*/
|
|
typedef struct {
|
|
unsigned long pixel;
|
|
unsigned short red, green, blue;
|
|
char flags; /* do_red, do_green, do_blue */
|
|
char pad;
|
|
} XColor;
|
|
|
|
typedef struct {
|
|
int type;
|
|
Display *display; /* Display the event was read from */
|
|
XID resourceid; /* resource id */
|
|
unsigned long serial; /* serial number of failed request */
|
|
unsigned char error_code; /* error code of failed request */
|
|
unsigned char request_code; /* Major op-code of failed request */
|
|
unsigned char minor_code; /* Minor op-code of failed request */
|
|
} XErrorEvent;
|
|
|
|
/*
|
|
* Visual structure; contains information about colormapping possible.
|
|
*/
|
|
typedef struct {
|
|
void *ext_data; /* hook for extension to hang data */
|
|
VisualID visualid; /* visual id of this visual */
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
|
int c_class; /* C++ class of screen (monochrome, etc.) */
|
|
#else
|
|
int class; /* class of screen (monochrome, etc.) */
|
|
#endif
|
|
unsigned long red_mask, green_mask, blue_mask; /* mask values */
|
|
int bits_per_rgb; /* log base 2 of distinct color values */
|
|
int map_entries; /* color map entries */
|
|
} Visual;
|
|
|
|
/*
|
|
* Depth structure; contains information for each possible depth.
|
|
*/
|
|
typedef struct {
|
|
int depth; /* this depth (Z) of the depth */
|
|
int nvisuals; /* number of Visual types at this depth */
|
|
Visual *visuals; /* list of visuals possible at this depth */
|
|
} Depth;
|
|
|
|
/*
|
|
* Information about the screen. The contents of this structure are
|
|
* implementation dependent. A Screen should be treated as opaque
|
|
* by application code.
|
|
*/
|
|
|
|
struct _XDisplay; /* Forward declare before use for C++ */
|
|
|
|
typedef struct {
|
|
void *ext_data; /* hook for extension to hang data */
|
|
struct _XDisplay *display;/* back pointer to display structure */
|
|
Window root; /* Root window id. */
|
|
int width, height; /* width and height of screen */
|
|
int mwidth, mheight; /* width and height of in millimeters */
|
|
int ndepths; /* number of depths possible */
|
|
Depth *depths; /* list of allowable depths on the screen */
|
|
int root_depth; /* bits per pixel */
|
|
Visual *root_visual; /* root visual */
|
|
GC default_gc; /* GC for the root root visual */
|
|
Colormap cmap; /* default color map */
|
|
unsigned long white_pixel;
|
|
unsigned long black_pixel; /* White and Black pixel values */
|
|
int max_maps, min_maps; /* max and min color maps */
|
|
int backing_store; /* Never, WhenMapped, Always */
|
|
Bool save_unders;
|
|
long root_input_mask; /* initial root input mask */
|
|
} Screen;
|
|
|
|
|
|
typedef struct {
|
|
int x, y; /* location of window */
|
|
int width, height; /* width and height of window */
|
|
int border_width; /* border width of window */
|
|
int depth; /* depth of window */
|
|
Visual *visual; /* the associated visual structure */
|
|
Window root; /* root of screen containing window */
|
|
int _class; /* InputOutput, InputOnly*/
|
|
int bit_gravity; /* one of the bit gravity values */
|
|
int win_gravity; /* one of the window gravity values */
|
|
int backing_store; /* NotUseful, WhenMapped, Always */
|
|
unsigned long backing_planes;/* planes to be preserved if possible */
|
|
unsigned long backing_pixel;/* value to be used when restoring planes */
|
|
Bool save_under; /* boolean, should bits under be saved? */
|
|
Colormap colormap; /* color map to be associated with window */
|
|
Bool map_installed; /* boolean, is color map currently installed*/
|
|
int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
|
|
long all_event_masks; /* set of events all people have interest in*/
|
|
long your_event_mask; /* my event mask */
|
|
long do_not_propagate_mask;/* set of events that should not propagate */
|
|
Bool override_redirect; /* boolean value for override-redirect */
|
|
Screen *screen; /* back pointer to correct screen */
|
|
} XWindowAttributes;
|
|
|
|
typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
|
|
Display* /* display */,
|
|
XErrorEvent* /* error_event */
|
|
);
|
|
|
|
/* events*/
|
|
|
|
/* What should this be? */
|
|
#if 0
|
|
#ifndef ResizeRequest
|
|
#define ResizeRequest ??
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef MotionNotify
|
|
#define MotionNotify GR_EVENT_TYPE_MOUSE_POSITION
|
|
#define PointerMotionMask GR_EVENT_MASK_MOUSE_POSITION
|
|
#endif
|
|
|
|
#define ButtonMotionMask GR_EVENT_MASK_MOUSE_POSITION
|
|
#define KeymapStateMask 0
|
|
#define StructureNotifyMask GR_EVENT_MASK_UPDATE
|
|
|
|
#ifdef ConfigureNotify
|
|
/* XtoNX.h gets it wrong */
|
|
#undef ConfigureNotify
|
|
#endif
|
|
#define ConfigureNotify GR_EVENT_TYPE_UPDATE
|
|
|
|
#ifndef FocusIn
|
|
#define FocusIn GR_EVENT_TYPE_FOCUS_IN
|
|
#define FocusOut GR_EVENT_TYPE_FOCUS_OUT
|
|
#define FocusChangeMask GR_EVENT_MASK_FOCUS_IN|GR_EVENT_MASK_FOCUS_OUT
|
|
#endif
|
|
|
|
/* Fuunctions */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
Display *XOpenDisplay(char *name);
|
|
Colormap DefaultColormapOfScreen(Screen* /* screen */) ;
|
|
int XSetGraphicsExposures( Display* /* display */, GC /* gc */, Bool /* graphics_exposures */) ;
|
|
int XWarpPointer( Display* /* display */, Window /* srcW */, Window /* destW */,
|
|
int /* srcX */, int /* srcY */,
|
|
unsigned int /* srcWidth */,
|
|
unsigned int /* srcHeight */,
|
|
int destX, int destY);
|
|
int XSetInputFocus(Display* /* display */, Window focus, int /* revert_to */, Time /* time */) ;
|
|
int XGetInputFocus(Display* /* display */, Window* /* focus_return */, int* /* revert_to_return */) ;
|
|
int XGrabPointer(Display* /* display */, Window /* grab_window */,
|
|
Bool /* owner_events */, unsigned int /* event_mask */,
|
|
int /* pointer_mode */, int /* keyboard_mode */,
|
|
Window /* confine_to */, Cursor /* cursor */, Time /* time */) ;
|
|
int XUngrabPointer(Display* /* display */, Time /* time */) ;
|
|
int XCopyArea(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
|
int src_x, int src_y, unsigned int width, unsigned int height,
|
|
int dest_x, int dest_y) ;
|
|
int XCopyPlane(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
|
int src_x, int src_y, unsigned int width, unsigned int height,
|
|
int dest_x, int dest_y, unsigned long /* plane */) ;
|
|
|
|
XErrorHandler XSetErrorHandler (XErrorHandler /* handler */);
|
|
Screen *XScreenOfDisplay(Display* /* display */,
|
|
int /* screen_number */);
|
|
int DisplayWidth(Display* /* display */, int /* screen */);
|
|
int DisplayHeight(Display* /* display */, int /* screen */);
|
|
int DefaultDepth(Display* /* display */, int /* screen */);
|
|
int XAllocColor(Display* /* display */, Colormap /* cmap */,
|
|
XColor* color);
|
|
int XParseColor(Display* display, Colormap cmap,
|
|
const char* cname, XColor* color);
|
|
int XDrawLine(Display* display, Window win, GC gc,
|
|
int x1, int y1, int x2, int y2);
|
|
int XTextExtents( XFontStruct* font, char* s, int len, int* direction,
|
|
int* ascent, int* descent2, XCharStruct* overall);
|
|
int XPending(Display *d);
|
|
XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec);
|
|
int XFreeFont(Display* display, XFontStruct* fontStruct);
|
|
int XQueryColor(Display* display, Colormap cmap, XColor* color);
|
|
Status XGetWindowAttributes(Display* display, Window w,
|
|
XWindowAttributes* window_attributes);
|
|
|
|
int XConfigureWindow(Display* display, Window w, int mask, XWindowChanges* changes);
|
|
int XTranslateCoordinates(Display* display, Window srcWindow, Window destWindow, int srcX, int srcY, int* destX, int* destY, Window* childReturn);
|
|
|
|
void wxNoop();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define XMaxRequestSize(display) 16384
|
|
|
|
#endif
|
|
/* _DUMMY_XLIBH_ */
|