2005-07-16 09:57:45 -07:00
|
|
|
/*
|
2007-01-13 11:14:29 -08:00
|
|
|
* Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various contributors
|
2011-06-06 15:14:56 -07:00
|
|
|
* Copyright (C) 2004-2011 Kim Woelders
|
2005-07-16 09:57:45 -07:00
|
|
|
*
|
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
* of this software and associated documentation files (the "Software"), to
|
|
|
|
* deal in the Software without restriction, including without limitation the
|
|
|
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
|
|
* sell copies of the Software, and to permit persons to whom the Software is
|
|
|
|
* furnished to do so, subject to the following conditions:
|
|
|
|
*
|
|
|
|
* The above copyright notice and this permission notice shall be included in
|
|
|
|
* all copies of the Software, its documentation and marketing & publicity
|
|
|
|
* materials, and acknowledgment shall be given in the documentation, materials
|
|
|
|
* and software packages that this Software was used.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
|
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
*/
|
|
|
|
#ifndef _XWIN_H_
|
|
|
|
#define _XWIN_H_
|
|
|
|
|
2008-03-24 01:57:50 -07:00
|
|
|
#include <X11/Xlib.h>
|
2008-03-29 03:48:45 -07:00
|
|
|
#include "util.h"
|
2008-03-30 05:13:16 -07:00
|
|
|
#include "xtypes.h"
|
2008-03-29 10:18:58 -07:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
char *name;
|
|
|
|
int screens;
|
|
|
|
int screen;
|
|
|
|
unsigned int pixel_black;
|
|
|
|
unsigned int pixel_white;
|
|
|
|
|
|
|
|
Win rroot; /* Real root window */
|
|
|
|
Win vroot; /* Virtual root window */
|
|
|
|
|
|
|
|
int server_grabbed;
|
|
|
|
|
|
|
|
unsigned char last_error_code;
|
|
|
|
} EDisplay;
|
|
|
|
|
|
|
|
__EXPORT__ extern EDisplay Dpy;
|
2010-03-01 12:53:14 -08:00
|
|
|
__EXPORT__ extern Display *disp;
|
2008-03-29 10:18:58 -07:00
|
|
|
|
|
|
|
#define RROOT Dpy.rroot
|
|
|
|
#define VROOT Dpy.vroot
|
|
|
|
|
|
|
|
void EXInit(void);
|
2008-03-29 03:48:45 -07:00
|
|
|
|
|
|
|
int EDisplayOpen(const char *dstr, int scr);
|
2006-06-01 13:18:40 -07:00
|
|
|
void EDisplayClose(void);
|
|
|
|
void EDisplayDisconnect(void);
|
2010-07-29 13:39:25 -07:00
|
|
|
|
|
|
|
typedef void (EXErrorHandler) (const XErrorEvent *);
|
|
|
|
typedef void (EXIOErrorHandler) (void);
|
|
|
|
void EDisplaySetErrorHandlers(EXErrorHandler * error,
|
|
|
|
EXIOErrorHandler * fatal);
|
2006-06-01 13:18:40 -07:00
|
|
|
|
|
|
|
void EGrabServer(void);
|
|
|
|
void EUngrabServer(void);
|
|
|
|
int EServerIsGrabbed(void);
|
|
|
|
void EFlush(void);
|
2008-02-13 13:31:29 -08:00
|
|
|
|
|
|
|
#define ESYNC_MAIN 0x0001
|
|
|
|
#define ESYNC_DESKS 0x0002
|
|
|
|
#define ESYNC_MENUS 0x0004
|
|
|
|
#define ESYNC_MOVRES 0x0008
|
|
|
|
#define ESYNC_FOCUS 0x0010
|
|
|
|
#define ESYNC_TLOOP 0x0040
|
|
|
|
#define ESYNC_SLIDEOUT 0x0080
|
|
|
|
#define ESYNC_STARTUP 0x0100
|
|
|
|
void ESync(unsigned int mask);
|
2006-06-01 13:18:40 -07:00
|
|
|
|
|
|
|
int EVisualIsARGB(Visual * vis);
|
|
|
|
Visual *EVisualFindARGB(void);
|
|
|
|
|
|
|
|
Time EGetTimestamp(void);
|
|
|
|
|
2006-09-08 16:13:57 -07:00
|
|
|
typedef void (EventCallbackFunc) (Win win, XEvent * ev, void *prm);
|
|
|
|
|
2008-03-23 04:54:24 -07:00
|
|
|
typedef struct {
|
2006-09-08 16:13:57 -07:00
|
|
|
EventCallbackFunc *func;
|
|
|
|
void *prm;
|
|
|
|
} EventCallbackItem;
|
|
|
|
|
2008-03-23 04:54:24 -07:00
|
|
|
typedef struct {
|
2006-09-08 16:13:57 -07:00
|
|
|
int num;
|
|
|
|
EventCallbackItem *lst;
|
|
|
|
} EventCallbackList;
|
|
|
|
|
2008-03-23 04:54:24 -07:00
|
|
|
struct _xwin {
|
2006-09-08 16:13:57 -07:00
|
|
|
struct _xwin *next;
|
|
|
|
struct _xwin *prev;
|
|
|
|
EventCallbackList cbl;
|
|
|
|
Window xwin;
|
|
|
|
Win parent;
|
|
|
|
int x, y, w, h;
|
2007-05-20 01:08:59 -07:00
|
|
|
short depth;
|
|
|
|
unsigned short bw;
|
|
|
|
char argb;
|
2006-09-08 16:13:57 -07:00
|
|
|
char mapped;
|
|
|
|
char in_use;
|
|
|
|
signed char do_del;
|
|
|
|
char attached;
|
2007-05-25 15:40:47 -07:00
|
|
|
signed char bg_owned; /* bgpmap "owned" by Win */
|
2006-09-08 16:13:57 -07:00
|
|
|
int num_rect;
|
|
|
|
int ord;
|
|
|
|
XRectangle *rects;
|
|
|
|
Visual *visual;
|
|
|
|
Colormap cmap;
|
|
|
|
Pixmap bgpmap;
|
|
|
|
unsigned int bgcol;
|
2009-12-26 02:35:42 -08:00
|
|
|
#if USE_XI2
|
|
|
|
unsigned int event_mask;
|
|
|
|
#endif
|
2006-09-08 16:13:57 -07:00
|
|
|
};
|
|
|
|
|
2006-04-29 12:39:21 -07:00
|
|
|
Win ELookupXwin(Window xwin);
|
|
|
|
|
2006-09-08 16:13:57 -07:00
|
|
|
#define WinGetXwin(win) ((win)->xwin)
|
2007-05-25 15:40:47 -07:00
|
|
|
#define WinGetPmap(win) ((win)->bgpmap)
|
2006-09-08 16:13:57 -07:00
|
|
|
#define WinGetX(win) ((win)->x)
|
|
|
|
#define WinGetY(win) ((win)->y)
|
|
|
|
#define WinGetW(win) ((win)->w)
|
|
|
|
#define WinGetH(win) ((win)->h)
|
|
|
|
#define WinGetBorderWidth(win) ((win)->bw)
|
|
|
|
#define WinGetDepth(win) ((win)->depth)
|
|
|
|
#define WinGetVisual(win) ((win)->visual)
|
|
|
|
#define WinGetCmap(win) ((win)->cmap)
|
2010-04-11 04:43:00 -07:00
|
|
|
#define WinGetNumRect(win) ((win)->num_rect)
|
2009-09-20 01:16:00 -07:00
|
|
|
#define WinIsMapped(win) ((win)->mapped != 0)
|
2007-12-15 09:10:47 -08:00
|
|
|
#define WinIsShaped(win) ((win)->num_rect != 0)
|
2006-05-07 08:08:01 -07:00
|
|
|
|
|
|
|
Win ECreateWinFromXwin(Window xwin);
|
|
|
|
void EDestroyWin(Win win);
|
2006-04-29 12:39:21 -07:00
|
|
|
|
2006-05-21 05:09:14 -07:00
|
|
|
Win ERegisterWindow(Window xwin, XWindowAttributes * pxwa);
|
2006-04-29 12:39:21 -07:00
|
|
|
void EUnregisterWindow(Win win);
|
|
|
|
void EUnregisterXwin(Window xwin);
|
2009-07-27 09:46:54 -07:00
|
|
|
void EventCallbackRegister(Win win, EventCallbackFunc * func,
|
|
|
|
void *prm);
|
|
|
|
void EventCallbackUnregister(Win win, EventCallbackFunc * func,
|
2005-07-16 09:57:45 -07:00
|
|
|
void *prm);
|
2006-04-29 12:39:21 -07:00
|
|
|
void EventCallbacksProcess(Win win, XEvent * ev);
|
2005-07-16 09:57:45 -07:00
|
|
|
|
2006-04-29 12:39:21 -07:00
|
|
|
Win ECreateWindow(Win parent, int x, int y, int w, int h,
|
2005-07-16 09:57:45 -07:00
|
|
|
int saveunder);
|
2006-06-03 07:11:34 -07:00
|
|
|
Win ECreateArgbWindow(Win parent, int x, int y, int w, int h,
|
|
|
|
Win cwin);
|
|
|
|
Win ECreateClientWindow(Win parent, int x, int y, int w, int h);
|
2008-06-05 10:45:01 -07:00
|
|
|
|
|
|
|
#define WIN_TYPE_CLIENT 0
|
|
|
|
#define WIN_TYPE_INTERNAL 1
|
2008-06-05 10:59:51 -07:00
|
|
|
#define WIN_TYPE_NO_ARGB 2
|
|
|
|
#define WIN_TYPE_GLX 3
|
2006-06-03 07:11:34 -07:00
|
|
|
Win ECreateObjectWindow(Win parent, int x, int y, int w,
|
|
|
|
int h, int saveunder, int type,
|
2007-05-20 01:08:59 -07:00
|
|
|
Win cwin);
|
2006-04-29 12:39:21 -07:00
|
|
|
Win ECreateEventWindow(Win parent, int x, int y, int w, int h);
|
|
|
|
Win ECreateFocusWindow(Win parent, int x, int y, int w, int h);
|
|
|
|
void EWindowSync(Win win);
|
2006-09-08 16:13:57 -07:00
|
|
|
void EWindowSetGeometry(Win win, int x, int y, int w, int h,
|
|
|
|
int bw);
|
2006-04-29 12:39:21 -07:00
|
|
|
void EWindowSetMapped(Win win, int mapped);
|
|
|
|
|
|
|
|
void EMoveWindow(Win win, int x, int y);
|
|
|
|
void EResizeWindow(Win win, int w, int h);
|
|
|
|
void EMoveResizeWindow(Win win, int x, int y, int w, int h);
|
|
|
|
void EDestroyWindow(Win win);
|
|
|
|
void EMapWindow(Win win);
|
|
|
|
void EMapRaised(Win win);
|
|
|
|
void EUnmapWindow(Win win);
|
|
|
|
void EReparentWindow(Win win, Win parent, int x, int y);
|
|
|
|
int EGetGeometry(Win win, Window * root_return,
|
2005-07-16 09:57:45 -07:00
|
|
|
int *x, int *y, int *w, int *h, int *bw,
|
|
|
|
int *depth);
|
2006-05-21 05:09:14 -07:00
|
|
|
void EGetWindowAttributes(Win win, XWindowAttributes * pxwa);
|
2006-04-29 12:39:21 -07:00
|
|
|
void EConfigureWindow(Win win, unsigned int mask,
|
2005-07-16 09:57:45 -07:00
|
|
|
XWindowChanges * wc);
|
2006-04-29 12:39:21 -07:00
|
|
|
void ESetWindowBackgroundPixmap(Win win, Pixmap pmap);
|
2007-05-25 15:40:47 -07:00
|
|
|
Pixmap EGetWindowBackgroundPixmap(Win win);
|
|
|
|
void EFreeWindowBackgroundPixmap(Win win);
|
2006-05-21 11:44:18 -07:00
|
|
|
void ESetWindowBackground(Win win, unsigned int col);
|
2006-04-29 12:39:21 -07:00
|
|
|
int ETranslateCoordinates(Win src_w, Win dst_w,
|
2005-07-16 09:57:45 -07:00
|
|
|
int src_x, int src_y,
|
|
|
|
int *dest_x_return,
|
|
|
|
int *dest_y_return,
|
|
|
|
Window * child_return);
|
2005-11-20 14:47:41 -08:00
|
|
|
int EDrawableCheck(Drawable draw, int grab);
|
2005-07-16 09:57:45 -07:00
|
|
|
|
2008-03-30 05:13:16 -07:00
|
|
|
void ESelectInput(Win win, unsigned int event_mask);
|
2009-12-20 04:13:31 -08:00
|
|
|
void ESelectInputChange(Win win, unsigned int set,
|
|
|
|
unsigned int clear);
|
2008-03-30 05:13:16 -07:00
|
|
|
void EChangeWindowAttributes(Win win, unsigned int mask,
|
|
|
|
XSetWindowAttributes * attr);
|
|
|
|
void ESetWindowBorderWidth(Win win, unsigned int bw);
|
|
|
|
void ERaiseWindow(Win win);
|
|
|
|
void ELowerWindow(Win win);
|
|
|
|
void EClearWindow(Win win);
|
|
|
|
void EClearArea(Win win, int x, int y,
|
|
|
|
unsigned int w, unsigned int h);
|
2005-07-16 09:57:45 -07:00
|
|
|
|
2006-05-07 08:08:01 -07:00
|
|
|
Pixmap ECreatePixmap(Win win, unsigned int width,
|
|
|
|
unsigned int height, unsigned int depth);
|
|
|
|
void EFreePixmap(Pixmap pixmap);
|
2006-04-29 12:39:21 -07:00
|
|
|
|
2011-06-06 15:14:56 -07:00
|
|
|
void EShapeUpdate(Win win);
|
2008-06-05 01:55:21 -07:00
|
|
|
void EShapeSetMask(Win win, int x, int y, Pixmap mask);
|
|
|
|
void EShapeUnionMask(Win win, int x, int y, Pixmap mask);
|
|
|
|
void EShapeSetMaskTiled(Win win, int x, int y, Pixmap mask,
|
|
|
|
int w, int h);
|
|
|
|
void EShapeSetRects(Win win, int x, int y,
|
|
|
|
XRectangle * rect, int n_rects);
|
|
|
|
void EShapeUnionRects(Win win, int x, int y,
|
|
|
|
XRectangle * rect, int n_rects);
|
|
|
|
int EShapeSetShape(Win win, int x, int y, Win src_win);
|
2006-04-29 12:39:21 -07:00
|
|
|
int EShapePropagate(Win win);
|
|
|
|
int EShapeCheck(Win win);
|
|
|
|
Pixmap EWindowGetShapePixmap(Win win);
|
2010-01-23 06:26:28 -08:00
|
|
|
Pixmap EWindowGetShapePixmapInverted(Win win);
|
2006-04-29 12:39:21 -07:00
|
|
|
|
2010-11-19 23:30:26 -08:00
|
|
|
void EWarpPointer(Win win, int x, int y);
|
2006-08-24 14:52:28 -07:00
|
|
|
Bool EQueryPointer(Win win, int *px, int *py,
|
|
|
|
Window * pchild, unsigned int *pmask);
|
|
|
|
|
2009-09-13 06:45:34 -07:00
|
|
|
unsigned int EAllocColor(Colormap cmap, unsigned int argb);
|
|
|
|
|
|
|
|
#define _A(x) (((x) >> 24) & 0xff)
|
|
|
|
#define _R(x) (((x) >> 16) & 0xff)
|
|
|
|
#define _G(x) (((x) >> 8) & 0xff)
|
|
|
|
#define _B(x) (((x) ) & 0xff)
|
|
|
|
#define _A16(x) (((x) >> 16) & 0xff00)
|
|
|
|
#define _R16(x) (((x) >> 8) & 0xff00)
|
|
|
|
#define _G16(x) (((x) ) & 0xff00)
|
|
|
|
#define _B16(x) (((x) << 8) & 0xff00)
|
|
|
|
|
|
|
|
#define COLOR32_FROM_RGB(c, r, g, b) \
|
|
|
|
c = (0xff000000 | (((r) & 0xff) << 16) | (((g) & 0xff) << 8) | ((b) & 0xff))
|
|
|
|
#define COLOR32_TO_RGB(c, r, g, b) \
|
|
|
|
do { r = _R(c); g = _G(c); b = _B(c); } while (0)
|
|
|
|
#define COLOR32_TO_ARGB(c, a, r, g, b) \
|
|
|
|
do { a = _A(c); r = _R(c); g = _G(c); b = _B(c); } while (0)
|
|
|
|
#define COLOR32_TO_RGB16(c, r, g, b) \
|
|
|
|
do { r = _R16(c); g = _G16(c); b = _B16(c); } while (0)
|
|
|
|
#define COLOR32_TO_ARGB16(c, a, r, g, b) \
|
|
|
|
do { a = _A16(c); r = _R16(c); g = _G16(c); b = _B16(c); } while (0)
|
2006-04-29 12:39:21 -07:00
|
|
|
|
|
|
|
Window EXWindowGetParent(Window xwin);
|
|
|
|
int EXGetGeometry(Window xwin, Window * root_return,
|
|
|
|
int *x, int *y, int *w, int *h, int *bw,
|
|
|
|
int *depth);
|
2008-03-30 05:13:16 -07:00
|
|
|
|
|
|
|
void EXRestackWindows(Window * windows, int nwindows);
|
2006-04-29 12:39:21 -07:00
|
|
|
|
2006-04-25 15:40:06 -07:00
|
|
|
void EXCopyArea(Drawable src, Drawable dst, int sx, int sy,
|
|
|
|
unsigned int w, unsigned int h, int dx, int dy);
|
2008-02-03 08:52:38 -08:00
|
|
|
void EXCopyAreaTiled(Drawable src, Pixmap mask, Drawable dst,
|
|
|
|
int sx, int sy,
|
|
|
|
unsigned int w, unsigned int h,
|
|
|
|
int dx, int dy);
|
2005-10-16 09:27:48 -07:00
|
|
|
|
2006-04-29 12:39:21 -07:00
|
|
|
void EXWarpPointer(Window xwin, int x, int y);
|
2010-11-19 23:30:26 -08:00
|
|
|
Bool EXQueryPointer(Window xwin, int *px, int *py,
|
|
|
|
Window * pchild, unsigned int *pmask);
|
2006-04-29 12:39:21 -07:00
|
|
|
|
|
|
|
Pixmap EXCreatePixmapCopy(Pixmap src, unsigned int w,
|
|
|
|
unsigned int h, unsigned int depth);
|
2006-04-23 16:18:23 -07:00
|
|
|
|
2006-04-17 14:55:34 -07:00
|
|
|
GC EXCreateGC(Drawable draw, unsigned long mask,
|
|
|
|
XGCValues * val);
|
2010-01-23 06:26:31 -08:00
|
|
|
void EXFreeGC(GC gc);
|
2005-07-16 09:57:45 -07:00
|
|
|
|
2008-03-30 05:13:16 -07:00
|
|
|
void EXSendEvent(Window xwin, long event_mask, XEvent * ev);
|
|
|
|
|
|
|
|
KeyCode EKeysymToKeycode(KeySym keysym);
|
|
|
|
KeyCode EKeynameToKeycode(const char *name);
|
|
|
|
const char *EKeycodeToString(KeyCode keycode, int index);
|
|
|
|
|
|
|
|
Atom EInternAtom(const char *name);
|
|
|
|
|
2008-03-23 04:54:24 -07:00
|
|
|
typedef struct {
|
2005-09-26 10:32:10 -07:00
|
|
|
char type;
|
2010-10-23 03:22:52 -07:00
|
|
|
char depth;
|
2005-09-26 10:32:10 -07:00
|
|
|
Pixmap pmap;
|
|
|
|
Pixmap mask;
|
2010-10-23 03:22:52 -07:00
|
|
|
unsigned short w, h;
|
2005-09-26 10:32:10 -07:00
|
|
|
} PmapMask;
|
|
|
|
|
2010-10-23 03:22:52 -07:00
|
|
|
void PmapMaskInit(PmapMask * pmm, Win win, int w, int h);
|
2010-10-23 03:22:50 -07:00
|
|
|
void PmapMaskFree(PmapMask * pmm);
|
2005-09-26 10:32:10 -07:00
|
|
|
|
2009-12-20 04:13:25 -08:00
|
|
|
#if USE_COMPOSITE
|
|
|
|
#include <X11/extensions/Xfixes.h>
|
|
|
|
|
|
|
|
XserverRegion ERegionCreate(void);
|
|
|
|
XserverRegion ERegionCreateRect(int x, int y, int w, int h);
|
|
|
|
|
|
|
|
#if USE_DESK_EXPOSE
|
|
|
|
XserverRegion ERegionCreateFromRects(XRectangle * rectangles,
|
|
|
|
int nrectangles);
|
|
|
|
#endif
|
|
|
|
XserverRegion ERegionCreateFromWindow(Win win);
|
|
|
|
XserverRegion ERegionCopy(XserverRegion rgn, XserverRegion src);
|
|
|
|
XserverRegion ERegionClone(XserverRegion src);
|
|
|
|
void ERegionDestroy(XserverRegion rgn);
|
|
|
|
void ERegionEmpty(XserverRegion rgn);
|
|
|
|
void ERegionSetRect(XserverRegion rgn, int x, int y, int w,
|
|
|
|
int h);
|
|
|
|
void ERegionTranslate(XserverRegion rgn, int dx, int dy);
|
|
|
|
void ERegionIntersect(XserverRegion dst, XserverRegion src);
|
|
|
|
void ERegionSubtract(XserverRegion dst, XserverRegion src);
|
2010-10-25 10:44:59 -07:00
|
|
|
void ERegionUnion(XserverRegion dst, XserverRegion src);
|
|
|
|
void ERegionIntersectOffset(XserverRegion dst, int dx, int dy,
|
|
|
|
XserverRegion src,
|
|
|
|
XserverRegion tmp);
|
2009-12-20 04:13:25 -08:00
|
|
|
void ERegionSubtractOffset(XserverRegion dst, int dx, int dy,
|
|
|
|
XserverRegion src, XserverRegion tmp);
|
|
|
|
void ERegionUnionOffset(XserverRegion dst, int dx, int dy,
|
|
|
|
XserverRegion src, XserverRegion tmp);
|
|
|
|
#if 0 /* Unused (for debug) */
|
|
|
|
int ERegionIsEmpty(XserverRegion rgn);
|
|
|
|
#endif
|
2010-01-10 09:16:59 -08:00
|
|
|
void ERegionShow(const char *txt, XserverRegion rgn,
|
|
|
|
void (*prf) (const char *fmt, ...));
|
2009-12-20 04:13:25 -08:00
|
|
|
|
|
|
|
#include <X11/extensions/Xrender.h>
|
2010-08-21 07:39:59 -07:00
|
|
|
|
|
|
|
Picture EPictureCreate(Win win, Drawable draw);
|
2009-12-20 04:13:25 -08:00
|
|
|
Picture EPictureCreateSolid(Window xwin, int argb,
|
|
|
|
unsigned int a, unsigned int rgb);
|
|
|
|
Picture EPictureCreateBuffer(Win win, int w, int h, Pixmap * ppmap);
|
2010-08-21 07:39:59 -07:00
|
|
|
void EPictureDestroy(Picture pict);
|
2009-12-20 04:13:29 -08:00
|
|
|
void EPictureSetClip(Picture pict, XserverRegion clip);
|
2009-12-20 04:13:25 -08:00
|
|
|
|
2010-01-10 09:17:02 -08:00
|
|
|
Pixmap EWindowGetPixmap(const Win win);
|
|
|
|
|
2009-12-20 04:13:25 -08:00
|
|
|
#endif /* USE_COMPOSITE */
|
|
|
|
|
2005-07-16 09:57:45 -07:00
|
|
|
#endif /* _XWIN_H_ */
|