Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00037 #ifndef DMXWINDOW_H
00038 #define DMXWINDOW_H
00039
00040 #include "windowstr.h"
00041
00043 typedef struct _dmxWinPriv {
00044 Window window;
00045 Bool offscreen;
00046 Bool mapped;
00047 Bool restacked;
00048 unsigned long attribMask;
00049 Colormap cmap;
00050 Visual *visual;
00051 Bool isShaped;
00052 Bool hasPict;
00053 #ifdef GLXEXT
00054 void *swapGroup;
00055 int barrier;
00056 void (*windowDestroyed)(WindowPtr);
00057 void (*windowUnmapped)(WindowPtr);
00058 #endif
00059 } dmxWinPrivRec, *dmxWinPrivPtr;
00060
00061
00062 extern Bool dmxInitWindow(ScreenPtr pScreen);
00063
00064 extern Window dmxCreateRootWindow(WindowPtr pWindow);
00065
00066 extern void dmxGetDefaultWindowAttributes(WindowPtr pWindow,
00067 Colormap *cmap,
00068 Visual **visual);
00069 extern void dmxCreateAndRealizeWindow(WindowPtr pWindow, Bool doSync);
00070
00071 extern Bool dmxCreateWindow(WindowPtr pWindow);
00072 extern Bool dmxDestroyWindow(WindowPtr pWindow);
00073 extern Bool dmxPositionWindow(WindowPtr pWindow, int x, int y);
00074 extern Bool dmxChangeWindowAttributes(WindowPtr pWindow, unsigned long mask);
00075 extern Bool dmxRealizeWindow(WindowPtr pWindow);
00076 extern Bool dmxUnrealizeWindow(WindowPtr pWindow);
00077 extern void dmxRestackWindow(WindowPtr pWindow, WindowPtr pOldNextSib);
00078 extern void dmxWindowExposures(WindowPtr pWindow, RegionPtr prgn,
00079 RegionPtr other_exposed);
00080 extern void dmxCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg,
00081 RegionPtr prgnSrc);
00082
00083 extern void dmxResizeWindow(WindowPtr pWindow, int x, int y,
00084 unsigned int w, unsigned int h, WindowPtr pSib);
00085 extern void dmxReparentWindow(WindowPtr pWindow, WindowPtr pPriorParent);
00086
00087 extern void dmxChangeBorderWidth(WindowPtr pWindow, unsigned int width);
00088
00089 extern void dmxResizeScreenWindow(ScreenPtr pScreen,
00090 int x, int y, int w, int h);
00091 extern void dmxResizeRootWindow(WindowPtr pRoot,
00092 int x, int y, int w, int h);
00093
00094 extern Bool dmxBEDestroyWindow(WindowPtr pWindow);
00095
00096
00097 extern void dmxSetShape(WindowPtr pWindow, int kind);
00098
00100 #define DMX_GET_WINDOW_PRIV(_pWin) ((dmxWinPrivPtr) \
00101 dixLookupPrivate(&(_pWin)->devPrivates, dmxWinPrivateKey))
00102
00103
00104 #define DMX_WINDOW_FUNC_PROLOGUE(_pGC) \
00105 do { \
00106 dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \
00107 DMX_UNWRAP(funcs, pGCPriv, (_pGC)); \
00108 if (pGCPriv->ops) \
00109 DMX_UNWRAP(ops, pGCPriv, (_pGC)); \
00110 } while (0)
00111
00112 #define DMX_WINDOW_FUNC_EPILOGUE(_pGC) \
00113 do { \
00114 dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \
00115 DMX_WRAP(funcs, &dmxGCFuncs, pGCPriv, (_pGC)); \
00116 if (pGCPriv->ops) \
00117 DMX_WRAP(ops, &dmxGCOps, pGCPriv, (_pGC)); \
00118 } while (0)
00119
00120 #define DMX_WINDOW_X1(_pWin) \
00121 ((_pWin)->drawable.x - wBorderWidth(_pWin))
00122 #define DMX_WINDOW_Y1(_pWin) \
00123 ((_pWin)->drawable.y - wBorderWidth(_pWin))
00124 #define DMX_WINDOW_X2(_pWin) \
00125 ((_pWin)->drawable.x + wBorderWidth(_pWin) + (_pWin)->drawable.width)
00126 #define DMX_WINDOW_Y2(_pWin) \
00127 ((_pWin)->drawable.y + wBorderWidth(_pWin) + (_pWin)->drawable.height)
00128
00129 #define DMX_WINDOW_OFFSCREEN(_pWin) \
00130 (DMX_WINDOW_X1(_pWin) >= (_pWin)->drawable.pScreen->width || \
00131 DMX_WINDOW_Y1(_pWin) >= (_pWin)->drawable.pScreen->height || \
00132 DMX_WINDOW_X2(_pWin) <= 0 || \
00133 DMX_WINDOW_Y2(_pWin) <= 0)
00134
00135 #endif