diff options
44 files changed, 1 insertions, 5731 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index c023790cf..4b8ad65aa 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -73,7 +73,7 @@ cache: - '%CYGWIN_ROOT%\home\%USERNAME%\.ccache' build_script: - SET PATH=%CYGWIN_ROOT%/bin -- '%CYGWIN_ROOT%/bin/bash -lc "cd $APPVEYOR_BUILD_FOLDER; meson setup --prefix=/usr -Dxv=false -Dxf86bigfont=true -Dxephyr=true -Dxnest=true -Dxvfb=true -Dxwin=true -Dxorg=true -Dpciaccess=false -Dint10=false -Dglamor=false build"' +- '%CYGWIN_ROOT%/bin/bash -lc "cd $APPVEYOR_BUILD_FOLDER; meson setup --prefix=/usr -Dxv=false -Dxf86bigfont=true -Dxephyr=true -Dxvfb=true -Dxwin=true -Dxorg=true -Dpciaccess=false -Dint10=false -Dglamor=false build"' - '%CYGWIN_ROOT%/bin/bash -lc "cd $APPVEYOR_BUILD_FOLDER; meson configure build"' - '%CYGWIN_ROOT%/bin/bash -lc "cd $APPVEYOR_BUILD_FOLDER; ninja -C build"' - '%CYGWIN_ROOT%/bin/bash -lc "cd $APPVEYOR_BUILD_FOLDER; ccache -s"' diff --git a/hw/meson.build b/hw/meson.build index c870e19c2..d44dac2df 100644 --- a/hw/meson.build +++ b/hw/meson.build @@ -6,10 +6,6 @@ if get_option('xvfb') subdir('vfb') endif -if build_xnest - subdir('xnest') -endif - if build_xorg subdir('xfree86') endif diff --git a/hw/xnest/.gitignore b/hw/xnest/.gitignore deleted file mode 100644 index b76c5a2d0..000000000 --- a/hw/xnest/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Xnest diff --git a/hw/xnest/Args.c b/hw/xnest/Args.c deleted file mode 100644 index f54dbd608..000000000 --- a/hw/xnest/Args.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "servermd.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Args.h" - -char *xnestDisplayName = NULL; -Bool xnestSynchronize = False; -Bool xnestFullGeneration = False; -int xnestDefaultClass; -Bool xnestUserDefaultClass = False; -int xnestDefaultDepth; -Bool xnestUserDefaultDepth = False; -Bool xnestSoftwareScreenSaver = False; -int xnestX; -int xnestY; -unsigned int xnestWidth; -unsigned int xnestHeight; -int xnestUserGeometry = 0; -int xnestBorderWidth; -Bool xnestUserBorderWidth = False; -char *xnestWindowName = NULL; -int xnestNumScreens = 0; -Bool xnestDoDirectColormaps = False; -Window xnestParentWindow = 0; - -int -ddxProcessArgument(int argc, char *argv[], int i) -{ - if (!strcmp(argv[i], "-display")) { - if (++i < argc) { - xnestDisplayName = argv[i]; - return 2; - } - return 0; - } - if (!strcmp(argv[i], "-sync")) { - xnestSynchronize = True; - return 1; - } - if (!strcmp(argv[i], "-full")) { - xnestFullGeneration = True; - return 1; - } - if (!strcmp(argv[i], "-class")) { - if (++i < argc) { - if (!strcmp(argv[i], "StaticGray")) { - xnestDefaultClass = StaticGray; - xnestUserDefaultClass = True; - return 2; - } - else if (!strcmp(argv[i], "GrayScale")) { - xnestDefaultClass = GrayScale; - xnestUserDefaultClass = True; - return 2; - } - else if (!strcmp(argv[i], "StaticColor")) { - xnestDefaultClass = StaticColor; - xnestUserDefaultClass = True; - return 2; - } - else if (!strcmp(argv[i], "PseudoColor")) { - xnestDefaultClass = PseudoColor; - xnestUserDefaultClass = True; - return 2; - } - else if (!strcmp(argv[i], "TrueColor")) { - xnestDefaultClass = TrueColor; - xnestUserDefaultClass = True; - return 2; - } - else if (!strcmp(argv[i], "DirectColor")) { - xnestDefaultClass = DirectColor; - xnestUserDefaultClass = True; - return 2; - } - } - return 0; - } - if (!strcmp(argv[i], "-cc")) { - if (++i < argc && sscanf(argv[i], "%i", &xnestDefaultClass) == 1) { - if (xnestDefaultClass >= 0 && xnestDefaultClass <= 5) { - xnestUserDefaultClass = True; - /* lex the OS layer process it as well, so return 0 */ - } - } - return 0; - } - if (!strcmp(argv[i], "-depth")) { - if (++i < argc && sscanf(argv[i], "%i", &xnestDefaultDepth) == 1) { - if (xnestDefaultDepth > 0) { - xnestUserDefaultDepth = True; - return 2; - } - } - return 0; - } - if (!strcmp(argv[i], "-sss")) { - xnestSoftwareScreenSaver = True; - return 1; - } - if (!strcmp(argv[i], "-geometry")) { - if (++i < argc) { - xnestUserGeometry = XParseGeometry(argv[i], - &xnestX, &xnestY, - &xnestWidth, &xnestHeight); - if (xnestUserGeometry) - return 2; - } - return 0; - } - if (!strcmp(argv[i], "-bw")) { - if (++i < argc && sscanf(argv[i], "%i", &xnestBorderWidth) == 1) { - if (xnestBorderWidth >= 0) { - xnestUserBorderWidth = True; - return 2; - } - } - return 0; - } - if (!strcmp(argv[i], "-name")) { - if (++i < argc) { - xnestWindowName = argv[i]; - return 2; - } - return 0; - } - if (!strcmp(argv[i], "-scrns")) { - if (++i < argc && sscanf(argv[i], "%i", &xnestNumScreens) == 1) { - if (xnestNumScreens > 0) { - if (xnestNumScreens > MAXSCREENS) { - ErrorF("Maximum number of screens is %d.\n", MAXSCREENS); - xnestNumScreens = MAXSCREENS; - } - return 2; - } - } - return 0; - } - if (!strcmp(argv[i], "-install")) { - xnestDoDirectColormaps = True; - return 1; - } - if (!strcmp(argv[i], "-parent")) { - if (++i < argc) { - xnestParentWindow = (XID) strtol(argv[i], (char **) NULL, 0); - return 2; - } - } - return 0; -} - -void -ddxUseMsg(void) -{ - ErrorF("-display string display name of the real server\n"); - ErrorF("-sync sinchronize with the real server\n"); - ErrorF("-full utilize full regeneration\n"); - ErrorF("-class string default visual class\n"); - ErrorF("-depth int default depth\n"); - ErrorF("-sss use software screen saver\n"); - ErrorF("-geometry WxH+X+Y window size and position\n"); - ErrorF("-bw int window border width\n"); - ErrorF("-name string window name\n"); - ErrorF("-scrns int number of screens to generate\n"); - ErrorF("-install install colormaps directly\n"); -} diff --git a/hw/xnest/Args.h b/hw/xnest/Args.h deleted file mode 100644 index 225418d22..000000000 --- a/hw/xnest/Args.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTARGS_H -#define XNESTARGS_H - -extern char *xnestDisplayName; -extern Bool xnestSynchronize; -extern Bool xnestFullGeneration; -extern int xnestDefaultClass; -extern Bool xnestUserDefaultClass; -extern int xnestDefaultDepth; -extern Bool xnestUserDefaultDepth; -extern Bool xnestSoftwareScreenSaver; -extern int xnestX; -extern int xnestY; -extern unsigned int xnestWidth; -extern unsigned int xnestHeight; -extern int xnestUserGeometry; -extern int xnestBorderWidth; -extern Bool xnestUserBorderWidth; -extern char *xnestWindowName; -extern int xnestNumScreens; -extern Bool xnestDoDirectColormaps; -extern Window xnestParentWindow; - -#endif /* XNESTARGS_H */ diff --git a/hw/xnest/Color.c b/hw/xnest/Color.c deleted file mode 100644 index 3a9e42203..000000000 --- a/hw/xnest/Color.c +++ /dev/null @@ -1,490 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "scrnintstr.h" -#include "window.h" -#include "windowstr.h" -#include "colormapst.h" -#include "resource.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "Color.h" -#include "Visual.h" -#include "XNWindow.h" -#include "Args.h" - -DevPrivateKeyRec xnestColormapPrivateKeyRec; - -static DevPrivateKeyRec cmapScrPrivateKeyRec; - -#define cmapScrPrivateKey (&cmapScrPrivateKeyRec) - -#define GetInstalledColormap(s) ((ColormapPtr) dixLookupPrivate(&(s)->devPrivates, cmapScrPrivateKey)) -#define SetInstalledColormap(s,c) (dixSetPrivate(&(s)->devPrivates, cmapScrPrivateKey, c)) - -Bool -xnestCreateColormap(ColormapPtr pCmap) -{ - VisualPtr pVisual; - XColor *colors; - int i, ncolors; - Pixel red, green, blue; - Pixel redInc, greenInc, blueInc; - - pVisual = pCmap->pVisual; - ncolors = pVisual->ColormapEntries; - - xnestColormapPriv(pCmap)->colormap = - XCreateColormap(xnestDisplay, - xnestDefaultWindows[pCmap->pScreen->myNum], - xnestVisual(pVisual), - (pVisual->class & DynamicClass) ? AllocAll : AllocNone); - - switch (pVisual->class) { - case StaticGray: /* read only */ - colors = xallocarray(ncolors, sizeof(XColor)); - for (i = 0; i < ncolors; i++) - colors[i].pixel = i; - XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors); - for (i = 0; i < ncolors; i++) { - pCmap->red[i].co.local.red = colors[i].red; - pCmap->red[i].co.local.green = colors[i].red; - pCmap->red[i].co.local.blue = colors[i].red; - } - free(colors); - break; - - case StaticColor: /* read only */ - colors = xallocarray(ncolors, sizeof(XColor)); - for (i = 0; i < ncolors; i++) - colors[i].pixel = i; - XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors); - for (i = 0; i < ncolors; i++) { - pCmap->red[i].co.local.red = colors[i].red; - pCmap->red[i].co.local.green = colors[i].green; - pCmap->red[i].co.local.blue = colors[i].blue; - } - free(colors); - break; - - case TrueColor: /* read only */ - colors = xallocarray(ncolors, sizeof(XColor)); - red = green = blue = 0L; - redInc = lowbit(pVisual->redMask); - greenInc = lowbit(pVisual->greenMask); - blueInc = lowbit(pVisual->blueMask); - for (i = 0; i < ncolors; i++) { - colors[i].pixel = red | green | blue; - red += redInc; - if (red > pVisual->redMask) - red = 0L; - green += greenInc; - if (green > pVisual->greenMask) - green = 0L; - blue += blueInc; - if (blue > pVisual->blueMask) - blue = 0L; - } - XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors); - for (i = 0; i < ncolors; i++) { - pCmap->red[i].co.local.red = colors[i].red; - pCmap->green[i].co.local.green = colors[i].green; - pCmap->blue[i].co.local.blue = colors[i].blue; - } - free(colors); - break; - - case GrayScale: /* read and write */ - break; - - case PseudoColor: /* read and write */ - break; - - case DirectColor: /* read and write */ - break; - } - - return True; -} - -void -xnestDestroyColormap(ColormapPtr pCmap) -{ - XFreeColormap(xnestDisplay, xnestColormap(pCmap)); -} - -#define SEARCH_PREDICATE \ - (xnestWindow(pWin) != None && wColormap(pWin) == icws->cmapIDs[i]) - -static int -xnestCountInstalledColormapWindows(WindowPtr pWin, void *ptr) -{ - xnestInstalledColormapWindows *icws = (xnestInstalledColormapWindows *) ptr; - int i; - - for (i = 0; i < icws->numCmapIDs; i++) - if (SEARCH_PREDICATE) { - icws->numWindows++; - return WT_DONTWALKCHILDREN; - } - - return WT_WALKCHILDREN; -} - -static int -xnestGetInstalledColormapWindows(WindowPtr pWin, void *ptr) -{ - xnestInstalledColormapWindows *icws = (xnestInstalledColormapWindows *) ptr; - int i; - - for (i = 0; i < icws->numCmapIDs; i++) - if (SEARCH_PREDICATE) { - icws->windows[icws->index++] = xnestWindow(pWin); - return WT_DONTWALKCHILDREN; - } - - return WT_WALKCHILDREN; -} - -static Window *xnestOldInstalledColormapWindows = NULL; -static int xnestNumOldInstalledColormapWindows = 0; - -static Bool -xnestSameInstalledColormapWindows(Window *windows, int numWindows) -{ - if (xnestNumOldInstalledColormapWindows != numWindows) - return False; - - if (xnestOldInstalledColormapWindows == windows) - return True; - - if (xnestOldInstalledColormapWindows == NULL || windows == NULL) - return False; - - if (memcmp(xnestOldInstalledColormapWindows, windows, - numWindows * sizeof(Window))) - return False; - - return True; -} - -void -xnestSetInstalledColormapWindows(ScreenPtr pScreen) -{ - xnestInstalledColormapWindows icws; - int numWindows; - - icws.cmapIDs = xallocarray(pScreen->maxInstalledCmaps, sizeof(Colormap)); - icws.numCmapIDs = xnestListInstalledColormaps(pScreen, icws.cmapIDs); - icws.numWindows = 0; - WalkTree(pScreen, xnestCountInstalledColormapWindows, (void *) &icws); - if (icws.numWindows) { - icws.windows = xallocarray(icws.numWindows + 1, sizeof(Window)); - icws.index = 0; - WalkTree(pScreen, xnestGetInstalledColormapWindows, (void *) &icws); - icws.windows[icws.numWindows] = xnestDefaultWindows[pScreen->myNum]; - numWindows = icws.numWindows + 1; - } - else { - icws.windows = NULL; - numWindows = 0; - } - - free(icws.cmapIDs); - - if (!xnestSameInstalledColormapWindows(icws.windows, icws.numWindows)) { - free(xnestOldInstalledColormapWindows); - -#ifdef _XSERVER64 - { - int i; - Window64 *windows = xallocarray(numWindows, sizeof(Window64)); - - for (i = 0; i < numWindows; ++i) - windows[i] = icws.windows[i]; - XSetWMColormapWindows(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], windows, - numWindows); - free(windows); - } -#else - XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum], - icws.windows, numWindows); -#endif - - xnestOldInstalledColormapWindows = icws.windows; - xnestNumOldInstalledColormapWindows = icws.numWindows; - -#ifdef DUMB_WINDOW_MANAGERS - /* - This code is for dumb window managers. - This will only work with default local visual colormaps. - */ - if (icws.numWindows) { - WindowPtr pWin; - Visual *visual; - ColormapPtr pCmap; - - pWin = xnestWindowPtr(icws.windows[0]); - visual = xnestVisualFromID(pScreen, wVisual(pWin)); - - if (visual == xnestDefaultVisual(pScreen)) - dixLookupResourceByType((void **) &pCmap, wColormap(pWin), - RT_COLORMAP, serverClient, - DixUseAccess); - else - dixLookupResourceByType((void **) &pCmap, - pScreen->defColormap, RT_COLORMAP, - serverClient, DixUseAccess); - - XSetWindowColormap(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - xnestColormap(pCmap)); - } -#endif /* DUMB_WINDOW_MANAGERS */ - } - else - free(icws.windows); -} - -void -xnestSetScreenSaverColormapWindow(ScreenPtr pScreen) -{ - free(xnestOldInstalledColormapWindows); - -#ifdef _XSERVER64 - { - Window64 window; - - window = xnestScreenSaverWindows[pScreen->myNum]; - XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum], - &window, 1); - xnestScreenSaverWindows[pScreen->myNum] = window; - } -#else - XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum], - &xnestScreenSaverWindows[pScreen->myNum], 1); -#endif /* _XSERVER64 */ - - xnestOldInstalledColormapWindows = NULL; - xnestNumOldInstalledColormapWindows = 0; - - xnestDirectUninstallColormaps(pScreen); -} - -void -xnestDirectInstallColormaps(ScreenPtr pScreen) -{ - int i, n; - Colormap pCmapIDs[MAXCMAPS]; - - if (!xnestDoDirectColormaps) - return; - - n = (*pScreen->ListInstalledColormaps) (pScreen, pCmapIDs); - - for (i = 0; i < n; i++) { - ColormapPtr pCmap; - - dixLookupResourceByType((void **) &pCmap, pCmapIDs[i], RT_COLORMAP, - serverClient, DixInstallAccess); - if (pCmap) - XInstallColormap(xnestDisplay, xnestColormap(pCmap)); - } -} - -void -xnestDirectUninstallColormaps(ScreenPtr pScreen) -{ - int i, n; - Colormap pCmapIDs[MAXCMAPS]; - - if (!xnestDoDirectColormaps) - return; - - n = (*pScreen->ListInstalledColormaps) (pScreen, pCmapIDs); - - for (i = 0; i < n; i++) { - ColormapPtr pCmap; - - dixLookupResourceByType((void **) &pCmap, pCmapIDs[i], RT_COLORMAP, - serverClient, DixUninstallAccess); - if (pCmap) - XUninstallColormap(xnestDisplay, xnestColormap(pCmap)); - } -} - -void -xnestInstallColormap(ColormapPtr pCmap) -{ - ColormapPtr pOldCmap = GetInstalledColormap(pCmap->pScreen); - - if (pCmap != pOldCmap) { - xnestDirectUninstallColormaps(pCmap->pScreen); - - /* Uninstall pInstalledMap. Notify all interested parties. */ - if (pOldCmap != (ColormapPtr) None) - WalkTree(pCmap->pScreen, TellLostMap, (void *) &pOldCmap->mid); - - SetInstalledColormap(pCmap->pScreen, pCmap); - WalkTree(pCmap->pScreen, TellGainedMap, (void *) &pCmap->mid); - - xnestSetInstalledColormapWindows(pCmap->pScreen); - xnestDirectInstallColormaps(pCmap->pScreen); - } -} - -void -xnestUninstallColormap(ColormapPtr pCmap) -{ - ColormapPtr pCurCmap = GetInstalledColormap(pCmap->pScreen); - - if (pCmap == pCurCmap) { - if (pCmap->mid != pCmap->pScreen->defColormap) { - dixLookupResourceByType((void **) &pCurCmap, - pCmap->pScreen->defColormap, - RT_COLORMAP, - serverClient, DixInstallAccess); - (*pCmap->pScreen->InstallColormap) (pCurCmap); - } - } -} - -static Bool xnestInstalledDefaultColormap = False; - -int -xnestListInstalledColormaps(ScreenPtr pScreen, Colormap * pCmapIDs) -{ - if (xnestInstalledDefaultColormap) { - *pCmapIDs = GetInstalledColormap(pScreen)->mid; - return 1; - } - else - return 0; -} - -void -xnestStoreColors(ColormapPtr pCmap, int nColors, xColorItem * pColors) -{ - if (pCmap->pVisual->class & DynamicClass) -#ifdef _XSERVER64 - { - int i; - XColor *pColors64 = xallocarray(nColors, sizeof(XColor)); - - for (i = 0; i < nColors; ++i) { - pColors64[i].pixel = pColors[i].pixel; - pColors64[i].red = pColors[i].red; - pColors64[i].green = pColors[i].green; - pColors64[i].blue = pColors[i].blue; - pColors64[i].flags = pColors[i].flags; - } - XStoreColors(xnestDisplay, xnestColormap(pCmap), pColors64, nColors); - free(pColors64); - } -#else - XStoreColors(xnestDisplay, xnestColormap(pCmap), - (XColor *) pColors, nColors); -#endif -} - -void -xnestResolveColor(unsigned short *pRed, unsigned short *pGreen, - unsigned short *pBlue, VisualPtr pVisual) -{ - int shift; - unsigned int lim; - - shift = 16 - pVisual->bitsPerRGBValue; - lim = (1 << pVisual->bitsPerRGBValue) - 1; - - if ((pVisual->class == PseudoColor) || (pVisual->class == DirectColor)) { - /* rescale to rgb bits */ - *pRed = ((*pRed >> shift) * 65535) / lim; - *pGreen = ((*pGreen >> shift) * 65535) / lim; - *pBlue = ((*pBlue >> shift) * 65535) / lim; - } - else if (pVisual->class == GrayScale) { - /* rescale to gray then rgb bits */ - *pRed = (30L * *pRed + 59L * *pGreen + 11L * *pBlue) / 100; - *pBlue = *pGreen = *pRed = ((*pRed >> shift) * 65535) / lim; - } - else if (pVisual->class == StaticGray) { - unsigned int limg; - - limg = pVisual->ColormapEntries - 1; - /* rescale to gray then [0..limg] then [0..65535] then rgb bits */ - *pRed = (30L * *pRed + 59L * *pGreen + 11L * *pBlue) / 100; - *pRed = ((((*pRed * (limg + 1))) >> 16) * 65535) / limg; - *pBlue = *pGreen = *pRed = ((*pRed >> shift) * 65535) / lim; - } - else { - unsigned limr, limg, limb; - - limr = pVisual->redMask >> pVisual->offsetRed; - limg = pVisual->greenMask >> pVisual->offsetGreen; - limb = pVisual->blueMask >> pVisual->offsetBlue; - /* rescale to [0..limN] then [0..65535] then rgb bits */ - *pRed = ((((((*pRed * (limr + 1)) >> 16) * - 65535) / limr) >> shift) * 65535) / lim; - *pGreen = ((((((*pGreen * (limg + 1)) >> 16) * - 65535) / limg) >> shift) * 65535) / lim; - *pBlue = ((((((*pBlue * (limb + 1)) >> 16) * - 65535) / limb) >> shift) * 65535) / lim; - } -} - -Bool -xnestCreateDefaultColormap(ScreenPtr pScreen) -{ - VisualPtr pVisual; - ColormapPtr pCmap; - unsigned short zero = 0, ones = 0xFFFF; - Pixel wp, bp; - - if (!dixRegisterPrivateKey(&cmapScrPrivateKeyRec, PRIVATE_SCREEN, 0)) - return FALSE; - - for (pVisual = pScreen->visuals; - pVisual->vid != pScreen->rootVisual; pVisual++); - - if (CreateColormap(pScreen->defColormap, pScreen, pVisual, &pCmap, - (pVisual->class & DynamicClass) ? AllocNone : AllocAll, - 0) - != Success) - return False; - - wp = pScreen->whitePixel; - bp = pScreen->blackPixel; - if ((AllocColor(pCmap, &ones, &ones, &ones, &wp, 0) != - Success) || - (AllocColor(pCmap, &zero, &zero, &zero, &bp, 0) != Success)) - return FALSE; - pScreen->whitePixel = wp; - pScreen->blackPixel = bp; - (*pScreen->InstallColormap) (pCmap); - - xnestInstalledDefaultColormap = True; - - return True; -} diff --git a/hw/xnest/Color.h b/hw/xnest/Color.h deleted file mode 100644 index 2c4e0be2a..000000000 --- a/hw/xnest/Color.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTCOLOR_H -#define XNESTCOLOR_H - -#define DUMB_WINDOW_MANAGERS - -#define MAXCMAPS 1 -#define MINCMAPS 1 - -typedef struct { - Colormap colormap; -} xnestPrivColormap; - -typedef struct { - int numCmapIDs; - Colormap *cmapIDs; - int numWindows; - Window *windows; - int index; -} xnestInstalledColormapWindows; - -extern DevPrivateKeyRec xnestColormapPrivateKeyRec; - -#define xnestColormapPriv(pCmap) \ - ((xnestPrivColormap *) dixLookupPrivate(&(pCmap)->devPrivates, &xnestColormapPrivateKeyRec)) - -#define xnestColormap(pCmap) (xnestColormapPriv(pCmap)->colormap) - -#define xnestPixel(pixel) (pixel) - -Bool xnestCreateColormap(ColormapPtr pCmap); -void xnestDestroyColormap(ColormapPtr pCmap); -void xnestSetInstalledColormapWindows(ScreenPtr pScreen); -void xnestSetScreenSaverColormapWindow(ScreenPtr pScreen); -void xnestDirectInstallColormaps(ScreenPtr pScreen); -void xnestDirectUninstallColormaps(ScreenPtr pScreen); -void xnestInstallColormap(ColormapPtr pCmap); -void xnestUninstallColormap(ColormapPtr pCmap); -int xnestListInstalledColormaps(ScreenPtr pScreen, Colormap * pCmapIDs); -void xnestStoreColors(ColormapPtr pCmap, int nColors, xColorItem * pColors); -void xnestResolveColor(unsigned short *pRed, unsigned short *pGreen, - unsigned short *pBlue, VisualPtr pVisual); -Bool xnestCreateDefaultColormap(ScreenPtr pScreen); - -#endif /* XNESTCOLOR_H */ diff --git a/hw/xnest/Cursor.c b/hw/xnest/Cursor.c deleted file mode 100644 index 285e10ebf..000000000 --- a/hw/xnest/Cursor.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "cursor.h" -#include "cursorstr.h" -#include "scrnintstr.h" -#include "servermd.h" -#include "mipointrst.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "XNCursor.h" -#include "Visual.h" -#include "Keyboard.h" -#include "Args.h" - -xnestCursorFuncRec xnestCursorFuncs = { NULL }; - -Bool -xnestRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) -{ - XImage *ximage; - Pixmap source, mask; - XColor fg_color, bg_color; - unsigned long valuemask; - XGCValues values; - - valuemask = GCFunction | - GCPlaneMask | GCForeground | GCBackground | GCClipMask; - - values.function = GXcopy; - values.plane_mask = AllPlanes; - values.foreground = 1L; - values.background = 0L; - values.clip_mask = None; - - XChangeGC(xnestDisplay, xnestBitmapGC, valuemask, &values); - - source = XCreatePixmap(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - pCursor->bits->width, pCursor->bits->height, 1); - - mask = XCreatePixmap(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - pCursor->bits->width, pCursor->bits->height, 1); - - ximage = XCreateImage(xnestDisplay, - xnestDefaultVisual(pScreen), - 1, XYBitmap, 0, - (char *) pCursor->bits->source, - pCursor->bits->width, - pCursor->bits->height, BitmapPad(xnestDisplay), 0); - - XPutImage(xnestDisplay, source, xnestBitmapGC, ximage, - 0, 0, 0, 0, pCursor->bits->width, pCursor->bits->height); - - XFree(ximage); - - ximage = XCreateImage(xnestDisplay, - xnestDefaultVisual(pScreen), - 1, XYBitmap, 0, - (char *) pCursor->bits->mask, - pCursor->bits->width, - pCursor->bits->height, BitmapPad(xnestDisplay), 0); - - XPutImage(xnestDisplay, mask, xnestBitmapGC, ximage, - 0, 0, 0, 0, pCursor->bits->width, pCursor->bits->height); - - XFree(ximage); - - fg_color.red = pCursor->foreRed; - fg_color.green = pCursor->foreGreen; - fg_color.blue = pCursor->foreBlue; - - bg_color.red = pCursor->backRed; - bg_color.green = pCursor->backGreen; - bg_color.blue = pCursor->backBlue; - - xnestSetCursorPriv(pCursor, pScreen, malloc(sizeof(xnestPrivCursor))); - xnestCursor(pCursor, pScreen) = - XCreatePixmapCursor(xnestDisplay, source, mask, &fg_color, &bg_color, - pCursor->bits->xhot, pCursor->bits->yhot); - - XFreePixmap(xnestDisplay, source); - XFreePixmap(xnestDisplay, mask); - - return True; -} - -Bool -xnestUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) -{ - XFreeCursor(xnestDisplay, xnestCursor(pCursor, pScreen)); - free(xnestGetCursorPriv(pCursor, pScreen)); - return True; -} - -void -xnestRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor, Bool displayed) -{ - XColor fg_color, bg_color; - - fg_color.red = pCursor->foreRed; - fg_color.green = pCursor->foreGreen; - fg_color.blue = pCursor->foreBlue; - - bg_color.red = pCursor->backRed; - bg_color.green = pCursor->backGreen; - bg_color.blue = pCursor->backBlue; - - XRecolorCursor(xnestDisplay, - xnestCursor(pCursor, pScreen), &fg_color, &bg_color); -} - -void -xnestSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, - int y) -{ - if (pCursor) { - XDefineCursor(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - xnestCursor(pCursor, pScreen)); - } -} - -void -xnestMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) -{ -} - -Bool -xnestDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) -{ - xnestCursorFuncPtr pScreenPriv; - - pScreenPriv = (xnestCursorFuncPtr) - dixLookupPrivate(&pScreen->devPrivates, xnestCursorScreenKey); - - return pScreenPriv->spriteFuncs->DeviceCursorInitialize(pDev, pScreen); -} - -void -xnestDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) -{ - xnestCursorFuncPtr pScreenPriv; - - pScreenPriv = (xnestCursorFuncPtr) - dixLookupPrivate(&pScreen->devPrivates, xnestCursorScreenKey); - - pScreenPriv->spriteFuncs->DeviceCursorCleanup(pDev, pScreen); -} diff --git a/hw/xnest/Display.c b/hw/xnest/Display.c deleted file mode 100644 index dc59c6b91..000000000 --- a/hw/xnest/Display.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <string.h> -#include <errno.h> - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "servermd.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Init.h" -#include "Args.h" - -#include "icon" -#include "screensaver" - -Display *xnestDisplay = NULL; -XVisualInfo *xnestVisuals; -int xnestNumVisuals; -int xnestDefaultVisualIndex; -Colormap *xnestDefaultColormaps; -static unsigned int xnestNumDefaultColormaps; -int *xnestDepths; -int xnestNumDepths; -XPixmapFormatValues *xnestPixmapFormats; -int xnestNumPixmapFormats; -Pixel xnestBlackPixel; -Pixel xnestWhitePixel; -Drawable xnestDefaultDrawables[MAXDEPTH + 1]; -Pixmap xnestIconBitmap; -Pixmap xnestScreenSaverPixmap; -XlibGC xnestBitmapGC; -unsigned long xnestEventMask; - -#ifdef __SUNPRO_C -/* prevent "Function has no return statement" error for x_io_error_handler */ -#pragma does_not_return(exit) -#endif - -static int _X_NORETURN -x_io_error_handler(Display * dpy) -{ - ErrorF("Lost connection to X server: %s\n", strerror(errno)); - CloseWellKnownConnections(); - OsCleanup(1); - exit(1); -} - -void -xnestOpenDisplay(int argc, char *argv[]) -{ - XVisualInfo vi; - long mask; - int i, j; - - if (!xnestDoFullGeneration) - return; - - XSetIOErrorHandler(x_io_error_handler); - - xnestCloseDisplay(); - - xnestDisplay = XOpenDisplay(xnestDisplayName); - if (xnestDisplay == NULL) - FatalError("Unable to open display \"%s\".\n", - XDisplayName(xnestDisplayName)); - - if (xnestSynchronize) - XSynchronize(xnestDisplay, True); - - mask = VisualScreenMask; - vi.screen = DefaultScreen(xnestDisplay); - xnestVisuals = XGetVisualInfo(xnestDisplay, mask, &vi, &xnestNumVisuals); - if (xnestNumVisuals == 0 || xnestVisuals == NULL) - FatalError("Unable to find any visuals.\n"); - - if (xnestUserDefaultClass || xnestUserDefaultDepth) { - xnestDefaultVisualIndex = UNDEFINED; - for (i = 0; i < xnestNumVisuals; i++) - if ((!xnestUserDefaultClass || - xnestVisuals[i].class == xnestDefaultClass) - && - (!xnestUserDefaultDepth || - xnestVisuals[i].depth == xnestDefaultDepth)) { - xnestDefaultVisualIndex = i; - break; - } - if (xnestDefaultVisualIndex == UNDEFINED) - FatalError("Unable to find desired default visual.\n"); - } - else { - vi.visualid = XVisualIDFromVisual(DefaultVisual(xnestDisplay, - DefaultScreen - (xnestDisplay))); - xnestDefaultVisualIndex = 0; - for (i = 0; i < xnestNumVisuals; i++) - if (vi.visualid == xnestVisuals[i].visualid) - xnestDefaultVisualIndex = i; - } - - xnestNumDefaultColormaps = xnestNumVisuals; - xnestDefaultColormaps = xallocarray(xnestNumDefaultColormaps, - sizeof(Colormap)); - for (i = 0; i < xnestNumDefaultColormaps; i++) - xnestDefaultColormaps[i] = XCreateColormap(xnestDisplay, - DefaultRootWindow - (xnestDisplay), - xnestVisuals[i].visual, - AllocNone); - - xnestDepths = XListDepths(xnestDisplay, DefaultScreen(xnestDisplay), - &xnestNumDepths); - - xnestPixmapFormats = XListPixmapFormats(xnestDisplay, - &xnestNumPixmapFormats); - - xnestBlackPixel = BlackPixel(xnestDisplay, DefaultScreen(xnestDisplay)); - xnestWhitePixel = WhitePixel(xnestDisplay, DefaultScreen(xnestDisplay)); - - if (xnestParentWindow != (Window) 0) - xnestEventMask = StructureNotifyMask; - else - xnestEventMask = 0L; - - for (i = 0; i <= MAXDEPTH; i++) - xnestDefaultDrawables[i] = None; - - for (i = 0; i < xnestNumPixmapFormats; i++) - for (j = 0; j < xnestNumDepths; j++) - if (xnestPixmapFormats[i].depth == 1 || - xnestPixmapFormats[i].depth == xnestDepths[j]) { - xnestDefaultDrawables[xnestPixmapFormats[i].depth] = - XCreatePixmap(xnestDisplay, DefaultRootWindow(xnestDisplay), - 1, 1, xnestPixmapFormats[i].depth); - } - - xnestBitmapGC = XCreateGC(xnestDisplay, xnestDefaultDrawables[1], 0L, NULL); - - if (!(xnestUserGeometry & XValue)) - xnestX = 0; - - if (!(xnestUserGeometry & YValue)) - xnestY = 0; - - if (xnestParentWindow == 0) { - if (!(xnestUserGeometry & WidthValue)) - xnestWidth = 3 * DisplayWidth(xnestDisplay, - DefaultScreen(xnestDisplay)) / 4; - - if (!(xnestUserGeometry & HeightValue)) - xnestHeight = 3 * DisplayHeight(xnestDisplay, - DefaultScreen(xnestDisplay)) / 4; - } - - if (!xnestUserBorderWidth) - xnestBorderWidth = 1; - - xnestIconBitmap = - XCreateBitmapFromData(xnestDisplay, - DefaultRootWindow(xnestDisplay), - (char *) icon_bits, icon_width, icon_height); - - xnestScreenSaverPixmap = - XCreatePixmapFromBitmapData(xnestDisplay, - DefaultRootWindow(xnestDisplay), - (char *) screensaver_bits, - screensaver_width, - screensaver_height, - xnestWhitePixel, - xnestBlackPixel, - DefaultDepth(xnestDisplay, - DefaultScreen(xnestDisplay))); -} - -void -xnestCloseDisplay(void) -{ - if (!xnestDoFullGeneration || !xnestDisplay) - return; - - /* - If xnestDoFullGeneration all x resources will be destroyed upon closing - the display connection. There is no need to generate extra protocol. - */ - - free(xnestDefaultColormaps); - XFree(xnestVisuals); - XFree(xnestDepths); - XFree(xnestPixmapFormats); - XCloseDisplay(xnestDisplay); -} diff --git a/hw/xnest/Display.h b/hw/xnest/Display.h deleted file mode 100644 index 4e9dbf463..000000000 --- a/hw/xnest/Display.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTCOMMON_H -#define XNESTCOMMON_H - -#define UNDEFINED -1 - -#define MAXDEPTH 32 -#define MAXVISUALSPERDEPTH 256 - -extern Display *xnestDisplay; -extern XVisualInfo *xnestVisuals; -extern int xnestNumVisuals; -extern int xnestDefaultVisualIndex; -extern Colormap *xnestDefaultColormaps; -extern int xnestNumDefaultClormaps; -extern int *xnestDepths; -extern int xnestNumDepths; -extern XPixmapFormatValues *xnestPixmapFormats; -extern int xnestNumPixmapFormats; -extern Pixel xnestBlackPixel; -extern Pixel xnestWhitePixel; -extern Drawable xnestDefaultDrawables[MAXDEPTH + 1]; -extern Pixmap xnestIconBitmap; -extern Pixmap xnestScreenSaverPixmap; -extern XlibGC xnestBitmapGC; -extern unsigned long xnestEventMask; - -void xnestOpenDisplay(int argc, char *argv[]); -void xnestCloseDisplay(void); - -#endif /* XNESTCOMMON_H */ diff --git a/hw/xnest/Drawable.h b/hw/xnest/Drawable.h deleted file mode 100644 index ea7b5bb21..000000000 --- a/hw/xnest/Drawable.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTDRAWABLE_H -#define XNESTDRAWABLE_H - -#include "XNWindow.h" -#include "XNPixmap.h" - -#define xnestDrawable(pDrawable) \ - (WindowDrawable((pDrawable)->type) ? \ - xnestWindow((WindowPtr)pDrawable) : \ - xnestPixmap((PixmapPtr)pDrawable)) - -#endif /* XNESTDRAWABLE_H */ diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c deleted file mode 100644 index f727557ba..000000000 --- a/hw/xnest/Events.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "servermd.h" -#include "inputstr.h" -#include "inpututils.h" - -#include "mi.h" - -#include "Xnest.h" - -#include "Args.h" -#include "Color.h" -#include "Display.h" -#include "Screen.h" -#include "XNWindow.h" -#include "Events.h" -#include "Keyboard.h" -#include "Pointer.h" -#include "mipointer.h" - -CARD32 lastEventTime = 0; - -void -ProcessInputEvents(void) -{ - mieqProcessInputEvents(); -} - -int -TimeSinceLastInputEvent(void) -{ - if (lastEventTime == 0) - lastEventTime = GetTimeInMillis(); - return GetTimeInMillis() - lastEventTime; -} - -void -SetTimeSinceLastInputEvent(void) -{ - lastEventTime = GetTimeInMillis(); -} - -static Bool -xnestExposurePredicate(Display * dpy, XEvent * event, char *args) -{ - return event->type == Expose || event->type == ProcessedExpose; -} - -static Bool -xnestNotExposurePredicate(Display * dpy, XEvent * event, char *args) -{ - return !xnestExposurePredicate(dpy, event, args); -} - -void -xnestCollectExposures(void) -{ - XEvent X; - WindowPtr pWin; - RegionRec Rgn; - BoxRec Box; - - while (XCheckIfEvent(xnestDisplay, &X, xnestExposurePredicate, NULL)) { - pWin = xnestWindowPtr(X.xexpose.window); - - if (pWin && X.xexpose.width && X.xexpose.height) { - Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + X.xexpose.x; - Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + X.xexpose.y; - Box.x2 = Box.x1 + X.xexpose.width; - Box.y2 = Box.y1 + X.xexpose.height; - - RegionInit(&Rgn, &Box, 1); - - miSendExposures(pWin, &Rgn, Box.x2, Box.y2); - } - } -} - -void -xnestQueueKeyEvent(int type, unsigned int keycode) -{ - lastEventTime = GetTimeInMillis(); - QueueKeyboardEvents(xnestKeyboardDevice, type, keycode); -} - -void -xnestCollectEvents(void) -{ - XEvent X; - int valuators[2]; - ValuatorMask mask; - ScreenPtr pScreen; - - while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) { - switch (X.type) { - case KeyPress: - xnestUpdateModifierState(X.xkey.state); - xnestQueueKeyEvent(KeyPress, X.xkey.keycode); - break; - - case KeyRelease: - xnestUpdateModifierState(X.xkey.state); - xnestQueueKeyEvent(KeyRelease, X.xkey.keycode); - break; - - case ButtonPress: - valuator_mask_set_range(&mask, 0, 0, NULL); - xnestUpdateModifierState(X.xkey.state); - lastEventTime = GetTimeInMillis(); - QueuePointerEvents(xnestPointerDevice, ButtonPress, - X.xbutton.button, POINTER_RELATIVE, &mask); - break; - - case ButtonRelease: - valuator_mask_set_range(&mask, 0, 0, NULL); - xnestUpdateModifierState(X.xkey.state); - lastEventTime = GetTimeInMillis(); - QueuePointerEvents(xnestPointerDevice, ButtonRelease, - X.xbutton.button, POINTER_RELATIVE, &mask); - break; - - case MotionNotify: - valuators[0] = X.xmotion.x; - valuators[1] = X.xmotion.y; - valuator_mask_set_range(&mask, 0, 2, valuators); - lastEventTime = GetTimeInMillis(); - QueuePointerEvents(xnestPointerDevice, MotionNotify, - 0, POINTER_ABSOLUTE, &mask); - break; - - case FocusIn: - if (X.xfocus.detail != NotifyInferior) { - pScreen = xnestScreen(X.xfocus.window); - if (pScreen) - xnestDirectInstallColormaps(pScreen); - } - break; - - case FocusOut: - if (X.xfocus.detail != NotifyInferior) { - pScreen = xnestScreen(X.xfocus.window); - if (pScreen) - xnestDirectUninstallColormaps(pScreen); - } - break; - - case KeymapNotify: - break; - - case EnterNotify: - if (X.xcrossing.detail != NotifyInferior) { - pScreen = xnestScreen(X.xcrossing.window); - if (pScreen) { - NewCurrentScreen(inputInfo.pointer, pScreen, X.xcrossing.x, - X.xcrossing.y); - valuators[0] = X.xcrossing.x; - valuators[1] = X.xcrossing.y; - valuator_mask_set_range(&mask, 0, 2, valuators); - lastEventTime = GetTimeInMillis(); - QueuePointerEvents(xnestPointerDevice, MotionNotify, - 0, POINTER_ABSOLUTE, &mask); - xnestDirectInstallColormaps(pScreen); - } - } - break; - - case LeaveNotify: - if (X.xcrossing.detail != NotifyInferior) { - pScreen = xnestScreen(X.xcrossing.window); - if (pScreen) { - xnestDirectUninstallColormaps(pScreen); - } - } - break; - - case DestroyNotify: - if (xnestParentWindow != (Window) 0 && - X.xdestroywindow.window == xnestParentWindow) - exit(0); - break; - - case CirculateNotify: - case ConfigureNotify: - case GravityNotify: - case MapNotify: - case ReparentNotify: - case UnmapNotify: - break; - - default: - ErrorF("xnest warning: unhandled event\n"); - break; - } - } -} diff --git a/hw/xnest/Events.h b/hw/xnest/Events.h deleted file mode 100644 index 1c1b8cd46..000000000 --- a/hw/xnest/Events.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTEVENTS_H -#define XNESTEVENTS_H - -#include <X11/Xmd.h> - -#define ProcessedExpose (LASTEvent + 1) - -extern CARD32 lastEventTime; - -void SetTimeSinceLastInputEvent(void); -void xnestCollectExposures(void); -void xnestCollectEvents(void); -void xnestQueueKeyEvent(int type, unsigned int keycode); - -#endif /* XNESTEVENTS_H */ diff --git a/hw/xnest/Font.c b/hw/xnest/Font.c deleted file mode 100644 index 192b80f53..000000000 --- a/hw/xnest/Font.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xatom.h> -#include <X11/Xproto.h> -#include "misc.h" -#include "regionstr.h" -#include <X11/fonts/font.h> -#include <X11/fonts/fontstruct.h> -#include "dixfontstr.h" -#include "scrnintstr.h" - -#include "Xnest.h" - -#include "Display.h" -#include "XNFont.h" - -int xnestFontPrivateIndex; - -Bool -xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont) -{ - void *priv; - Atom name_atom, value_atom; - int nprops; - FontPropPtr props; - int i; - const char *name; - - xfont2_font_set_private(pFont, xnestFontPrivateIndex, NULL); - - name_atom = MakeAtom("FONT", 4, True); - value_atom = 0L; - - nprops = pFont->info.nprops; - props = pFont->info.props; - - for (i = 0; i < nprops; i++) - if (props[i].name == name_atom) { - value_atom = props[i].value; - break; - } - - if (!value_atom) - return False; - - name = NameForAtom(value_atom); - - if (!name) - return False; - - priv = (void *) malloc(sizeof(xnestPrivFont)); - xfont2_font_set_private(pFont, xnestFontPrivateIndex, priv); - - xnestFontPriv(pFont)->font_struct = XLoadQueryFont(xnestDisplay, name); - - if (!xnestFontStruct(pFont)) - return False; - - return True; -} - -Bool -xnestUnrealizeFont(ScreenPtr pScreen, FontPtr pFont) -{ - if (xnestFontPriv(pFont)) { - if (xnestFontStruct(pFont)) - XFreeFont(xnestDisplay, xnestFontStruct(pFont)); - free(xnestFontPriv(pFont)); - xfont2_font_set_private(pFont, xnestFontPrivateIndex, NULL); - } - return True; -} diff --git a/hw/xnest/GC.c b/hw/xnest/GC.c deleted file mode 100644 index ecfa61e39..000000000 --- a/hw/xnest/GC.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "gcstruct.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "scrnintstr.h" -#include <X11/fonts/fontstruct.h> -#include "mistruct.h" -#include "region.h" - -#include "Xnest.h" - -#include "Display.h" -#include "XNGC.h" -#include "GCOps.h" -#include "Drawable.h" -#include "XNFont.h" -#include "Color.h" - -DevPrivateKeyRec xnestGCPrivateKeyRec; - -static GCFuncs xnestFuncs = { - xnestValidateGC, - xnestChangeGC, - xnestCopyGC, - xnestDestroyGC, - xnestChangeClip, - xnestDestroyClip, - xnestCopyClip, -}; - -static GCOps xnestOps = { - xnestFillSpans, - xnestSetSpans, - xnestPutImage, - xnestCopyArea, - xnestCopyPlane, - xnestPolyPoint, - xnestPolylines, - xnestPolySegment, - xnestPolyRectangle, - xnestPolyArc, - xnestFillPolygon, - xnestPolyFillRect, - xnestPolyFillArc, - xnestPolyText8, - xnestPolyText16, - xnestImageText8, - xnestImageText16, - xnestImageGlyphBlt, - xnestPolyGlyphBlt, - xnestPushPixels -}; - -Bool -xnestCreateGC(GCPtr pGC) -{ - pGC->funcs = &xnestFuncs; - pGC->ops = &xnestOps; - - pGC->miTranslate = 1; - - xnestGCPriv(pGC)->gc = XCreateGC(xnestDisplay, - xnestDefaultDrawables[pGC->depth], - 0L, NULL); - - return True; -} - -void -xnestValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable) -{ -} - -void -xnestChangeGC(GCPtr pGC, unsigned long mask) -{ - XGCValues values; - - if (mask & GCFunction) - values.function = pGC->alu; - - if (mask & GCPlaneMask) - values.plane_mask = pGC->planemask; - - if (mask & GCForeground) - values.foreground = xnestPixel(pGC->fgPixel); - - if (mask & GCBackground) - values.background = xnestPixel(pGC->bgPixel); - - if (mask & GCLineWidth) - values.line_width = pGC->lineWidth; - - if (mask & GCLineStyle) - values.line_style = pGC->lineStyle; - - if (mask & GCCapStyle) - values.cap_style = pGC->capStyle; - - if (mask & GCJoinStyle) - values.join_style = pGC->joinStyle; - - if (mask & GCFillStyle) - values.fill_style = pGC->fillStyle; - - if (mask & GCFillRule) - values.fill_rule = pGC->fillRule; - - if (mask & GCTile) { - if (pGC->tileIsPixel) - mask &= ~GCTile; - else - values.tile = xnestPixmap(pGC->tile.pixmap); - } - - if (mask & GCStipple) - values.stipple = xnestPixmap(pGC->stipple); - - if (mask & GCTileStipXOrigin) - values.ts_x_origin = pGC->patOrg.x; - - if (mask & GCTileStipYOrigin) - values.ts_y_origin = pGC->patOrg.y; - - if (mask & GCFont) - values.font = xnestFont(pGC->font); - - if (mask & GCSubwindowMode) - values.subwindow_mode = pGC->subWindowMode; - - if (mask & GCGraphicsExposures) - values.graphics_exposures = pGC->graphicsExposures; - - if (mask & GCClipXOrigin) - values.clip_x_origin = pGC->clipOrg.x; - - if (mask & GCClipYOrigin) - values.clip_y_origin = pGC->clipOrg.y; - - if (mask & GCClipMask) /* this is handled in change clip */ - mask &= ~GCClipMask; - - if (mask & GCDashOffset) - values.dash_offset = pGC->dashOffset; - - if (mask & GCDashList) { - mask &= ~GCDashList; - XSetDashes(xnestDisplay, xnestGC(pGC), - pGC->dashOffset, (char *) pGC->dash, pGC->numInDashList); - } - - if (mask & GCArcMode) - values.arc_mode = pGC->arcMode; - - if (mask) - XChangeGC(xnestDisplay, xnestGC(pGC), mask, &values); -} - -void -xnestCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst) -{ - XCopyGC(xnestDisplay, xnestGC(pGCSrc), mask, xnestGC(pGCDst)); -} - -void -xnestDestroyGC(GCPtr pGC) -{ - XFreeGC(xnestDisplay, xnestGC(pGC)); -} - -void -xnestChangeClip(GCPtr pGC, int type, void *pValue, int nRects) -{ - int i; - BoxPtr pBox; - XRectangle *pRects; - - xnestDestroyClip(pGC); - - switch (type) { - case CT_NONE: - XSetClipMask(xnestDisplay, xnestGC(pGC), None); - pValue = NULL; - break; - - case CT_REGION: - nRects = RegionNumRects((RegionPtr) pValue); - pRects = xallocarray(nRects, sizeof(*pRects)); - pBox = RegionRects((RegionPtr) pValue); - for (i = nRects; i-- > 0;) { - pRects[i].x = pBox[i].x1; - pRects[i].y = pBox[i].y1; - pRects[i].width = pBox[i].x2 - pBox[i].x1; - pRects[i].height = pBox[i].y2 - pBox[i].y1; - } - XSetClipRectangles(xnestDisplay, xnestGC(pGC), 0, 0, - pRects, nRects, Unsorted); - free((char *) pRects); - break; - - case CT_PIXMAP: - XSetClipMask(xnestDisplay, xnestGC(pGC), - xnestPixmap((PixmapPtr) pValue)); - /* - * Need to change into region, so subsequent uses are with - * current pixmap contents. - */ - pGC->clientClip = (*pGC->pScreen->BitmapToRegion) ((PixmapPtr) pValue); - (*pGC->pScreen->DestroyPixmap) ((PixmapPtr) pValue); - pValue = pGC->clientClip; - break; - - case CT_UNSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *) pValue, nRects, Unsorted); - break; - - case CT_YSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *) pValue, nRects, YSorted); - break; - - case CT_YXSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *) pValue, nRects, YXSorted); - break; - - case CT_YXBANDED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *) pValue, nRects, YXBanded); - break; - } - - switch (type) { - default: - break; - - case CT_UNSORTED: - case CT_YSORTED: - case CT_YXSORTED: - case CT_YXBANDED: - /* server clip representation is a region */ - pGC->clientClip = RegionFromRects(nRects, (xRectangle *) pValue, type); - free(pValue); - pValue = pGC->clientClip; - break; - } - - pGC->clientClip = pValue; -} - -void -xnestDestroyClip(GCPtr pGC) -{ - if (pGC->clientClip) { - RegionDestroy(pGC->clientClip); - XSetClipMask(xnestDisplay, xnestGC(pGC), None); - pGC->clientClip = NULL; - } -} - -void -xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc) -{ - if (pGCSrc->clientClip) { - RegionPtr pRgn = RegionCreate(NULL, 1); - RegionCopy(pRgn, pGCSrc->clientClip); - xnestChangeClip(pGCDst, CT_REGION, pRgn, 0); - } else { - xnestDestroyClip(pGCDst); - } -} diff --git a/hw/xnest/GCOps.c b/hw/xnest/GCOps.c deleted file mode 100644 index e1cf9d65f..000000000 --- a/hw/xnest/GCOps.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "regionstr.h" -#include <X11/fonts/fontstruct.h> -#include "gcstruct.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "region.h" -#include "servermd.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "XNGC.h" -#include "XNFont.h" -#include "GCOps.h" -#include "Drawable.h" -#include "Visual.h" - -void -xnestFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans, xPoint * pPoints, - int *pWidths, int fSorted) -{ - ErrorF("xnest warning: function xnestFillSpans not implemented\n"); -} - -void -xnestSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc, - xPoint * pPoints, int *pWidths, int nSpans, int fSorted) -{ - ErrorF("xnest warning: function xnestSetSpans not implemented\n"); -} - -void -xnestGetSpans(DrawablePtr pDrawable, int maxWidth, DDXPointPtr pPoints, - int *pWidths, int nSpans, char *pBuffer) -{ - ErrorF("xnest warning: function xnestGetSpans not implemented\n"); -} - -void -xnestQueryBestSize(int class, unsigned short *pWidth, unsigned short *pHeight, - ScreenPtr pScreen) -{ - unsigned int width, height; - - width = *pWidth; - height = *pHeight; - - XQueryBestSize(xnestDisplay, class, - xnestDefaultWindows[pScreen->myNum], - width, height, &width, &height); - - *pWidth = width; - *pHeight = height; -} - -void -xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, - int w, int h, int leftPad, int format, char *pImage) -{ - XImage *ximage; - - ximage = XCreateImage(xnestDisplay, xnestDefaultVisual(pDrawable->pScreen), - depth, format, leftPad, (char *) pImage, - w, h, BitmapPad(xnestDisplay), - (format == ZPixmap) ? - PixmapBytePad(w, depth) : BitmapBytePad(w + leftPad)); - - if (ximage) { - XPutImage(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - ximage, 0, 0, x, y, w, h); - XFree(ximage); - } -} - -static int -xnestIgnoreErrorHandler (Display *dpy, - XErrorEvent *event) -{ - return False; /* return value is ignored */ -} - -void -xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h, - unsigned int format, unsigned long planeMask, char *pImage) -{ - XImage *ximage; - int length; - int (*old_handler)(Display*, XErrorEvent*); - - /* we may get BadMatch error when xnest window is minimized */ - XSync(xnestDisplay, False); - old_handler = XSetErrorHandler (xnestIgnoreErrorHandler); - - ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable), - x, y, w, h, planeMask, format); - XSetErrorHandler(old_handler); - - if (ximage) { - length = ximage->bytes_per_line * ximage->height; - - memmove(pImage, ximage->data, length); - - XDestroyImage(ximage); - } -} - -static Bool -xnestBitBlitPredicate(Display * dpy, XEvent * event, char *args) -{ - return event->type == GraphicsExpose || event->type == NoExpose; -} - -static RegionPtr -xnestBitBlitHelper(GCPtr pGC) -{ - if (!pGC->graphicsExposures) - return NullRegion; - else { - XEvent event; - RegionPtr pReg, pTmpReg; - BoxRec Box; - Bool pending, overlap; - - pReg = RegionCreate(NULL, 1); - pTmpReg = RegionCreate(NULL, 1); - if (!pReg || !pTmpReg) - return NullRegion; - - pending = True; - while (pending) { - XIfEvent(xnestDisplay, &event, xnestBitBlitPredicate, NULL); - - switch (event.type) { - case NoExpose: - pending = False; - break; - - case GraphicsExpose: - Box.x1 = event.xgraphicsexpose.x; - Box.y1 = event.xgraphicsexpose.y; - Box.x2 = event.xgraphicsexpose.x + event.xgraphicsexpose.width; - Box.y2 = event.xgraphicsexpose.y + event.xgraphicsexpose.height; - RegionReset(pTmpReg, &Box); - RegionAppend(pReg, pTmpReg); - pending = event.xgraphicsexpose.count; - break; - } - } - - RegionDestroy(pTmpReg); - RegionValidate(pReg, &overlap); - return pReg; - } -} - -RegionPtr -xnestCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty) -{ - XCopyArea(xnestDisplay, - xnestDrawable(pSrcDrawable), xnestDrawable(pDstDrawable), - xnestGC(pGC), srcx, srcy, width, height, dstx, dsty); - - return xnestBitBlitHelper(pGC); -} - -RegionPtr -xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty, unsigned long plane) -{ - XCopyPlane(xnestDisplay, - xnestDrawable(pSrcDrawable), xnestDrawable(pDstDrawable), - xnestGC(pGC), srcx, srcy, width, height, dstx, dsty, plane); - - return xnestBitBlitHelper(pGC); -} - -void -xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, - DDXPointPtr pPoints) -{ - XDrawPoints(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, mode); -} - -void -xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, - DDXPointPtr pPoints) -{ - XDrawLines(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, mode); -} - -void -xnestPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments, - xSegment * pSegments) -{ - XDrawSegments(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XSegment *) pSegments, nSegments); -} - -void -xnestPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, - xRectangle *pRectangles) -{ - XDrawRectangles(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XRectangle *) pRectangles, nRectangles); -} - -void -xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs) -{ - XDrawArcs(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XArc *) pArcs, nArcs); -} - -void -xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, - int nPoints, DDXPointPtr pPoints) -{ - XFillPolygon(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, shape, mode); -} - -void -xnestPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, - xRectangle *pRectangles) -{ - XFillRectangles(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XRectangle *) pRectangles, nRectangles); -} - -void -xnestPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs) -{ - XFillArcs(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XArc *) pArcs, nArcs); -} - -int -xnestPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - char *string) -{ - int width; - - XDrawString(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - x, y, string, count); - - width = XTextWidth(xnestFontStruct(pGC->font), string, count); - - return width + x; -} - -int -xnestPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - unsigned short *string) -{ - int width; - - XDrawString16(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - x, y, (XChar2b *) string, count); - - width = XTextWidth16(xnestFontStruct(pGC->font), (XChar2b *) string, count); - - return width + x; -} - -void -xnestImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - char *string) -{ - XDrawImageString(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - x, y, string, count); -} - -void -xnestImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - unsigned short *string) -{ - XDrawImageString16(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - x, y, (XChar2b *) string, count); -} - -void -xnestImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nGlyphs, CharInfoPtr * pCharInfo, - void *pGlyphBase) -{ - ErrorF("xnest warning: function xnestImageGlyphBlt not implemented\n"); -} - -void -xnestPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nGlyphs, CharInfoPtr * pCharInfo, - void *pGlyphBase) -{ - ErrorF("xnest warning: function xnestPolyGlyphBlt not implemented\n"); -} - -void -xnestPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDst, - int width, int height, int x, int y) -{ - /* only works for solid bitmaps */ - if (pGC->fillStyle == FillSolid) { - XSetStipple(xnestDisplay, xnestGC(pGC), xnestPixmap(pBitmap)); - XSetTSOrigin(xnestDisplay, xnestGC(pGC), x, y); - XSetFillStyle(xnestDisplay, xnestGC(pGC), FillStippled); - XFillRectangle(xnestDisplay, xnestDrawable(pDst), - xnestGC(pGC), x, y, width, height); - XSetFillStyle(xnestDisplay, xnestGC(pGC), FillSolid); - } - else - ErrorF("xnest warning: function xnestPushPixels not implemented\n"); -} diff --git a/hw/xnest/GCOps.h b/hw/xnest/GCOps.h deleted file mode 100644 index fd1f6bfc2..000000000 --- a/hw/xnest/GCOps.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTGCOPS_H -#define XNESTGCOPS_H - -void xnestFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans, - xPoint * pPoints, int *pWidths, int fSorted); -void xnestSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc, - xPoint * pPoints, int *pWidths, int nSpans, int fSorted); -void xnestGetSpans(DrawablePtr pDrawable, int maxWidth, DDXPointPtr pPoints, - int *pWidths, int nSpans, char *pBuffer); -void xnestQueryBestSize(int class, unsigned short *pWidth, - unsigned short *pHeight, ScreenPtr pScreen); -void xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, - int w, int h, int leftPad, int format, char *pImage); -void xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h, - unsigned int format, unsigned long planeMask, char *pImage); -RegionPtr xnestCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty); -RegionPtr xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty, unsigned long plane); -void xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, - DDXPointPtr pPoints); -void xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, - DDXPointPtr pPoints); -void xnestPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments, - xSegment * pSegments); -void xnestPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, - xRectangle *pRectangles); -void xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs); -void xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, - int nPoints, DDXPointPtr pPoints); -void xnestPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, - xRectangle *pRectangles); -void xnestPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, - xArc * pArcs); -int xnestPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - char *string); -int xnestPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - unsigned short *string); -void xnestImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - char *string); -void xnestImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, - unsigned short *string); -void xnestImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nGlyphs, CharInfoPtr * pCharInfo, - void *pGlyphBase); -void xnestPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nGlyphs, CharInfoPtr * pCharInfo, - void *pGlyphBase); -void xnestPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable, - int width, int height, int x, int y); - -#endif /* XNESTGCOPS_H */ diff --git a/hw/xnest/Handlers.c b/hw/xnest/Handlers.c deleted file mode 100644 index 27ea30a83..000000000 --- a/hw/xnest/Handlers.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "servermd.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Events.h" -#include "Handlers.h" - -void -xnestBlockHandler(void *blockData, void *timeout) -{ - xnestCollectExposures(); - XFlush(xnestDisplay); -} - -void -xnestWakeupHandler(void *blockData, int result) -{ - xnestCollectEvents(); -} diff --git a/hw/xnest/Handlers.h b/hw/xnest/Handlers.h deleted file mode 100644 index 6ebcc8b98..000000000 --- a/hw/xnest/Handlers.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTHANDLERS_H -#define XNESTHANDLERS_H - -void xnestBlockHandler(void *blockData, void *timeout); -void xnestWakeupHandler(void *blockData, int result); - -#endif /* XNESTHANDLERS_H */ diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c deleted file mode 100644 index cd4ee61f9..000000000 --- a/hw/xnest/Init.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "servermd.h" -#include "mi.h" -#include <X11/fonts/fontstruct.h> -#include "dixfontstr.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "Pointer.h" -#include "Keyboard.h" -#include "Handlers.h" -#include "Events.h" -#include "Init.h" -#include "Args.h" -#include "Drawable.h" -#include "XNGC.h" -#include "XNFont.h" -#ifdef DPMSExtension -#include "dpmsproc.h" -#endif - -Bool xnestDoFullGeneration = True; - -#ifdef GLXEXT -void -GlxExtensionInit(void) -{ -} -#endif - -void -InitOutput(ScreenInfo * screen_info, int argc, char *argv[]) -{ - int i, j; - - xnestOpenDisplay(argc, argv); - - screen_info->imageByteOrder = ImageByteOrder(xnestDisplay); - screen_info->bitmapScanlineUnit = BitmapUnit(xnestDisplay); - screen_info->bitmapScanlinePad = BitmapPad(xnestDisplay); - screen_info->bitmapBitOrder = BitmapBitOrder(xnestDisplay); - - screen_info->numPixmapFormats = 0; - for (i = 0; i < xnestNumPixmapFormats; i++) - for (j = 0; j < xnestNumDepths; j++) - if ((xnestPixmapFormats[i].depth == 1) || - (xnestPixmapFormats[i].depth == xnestDepths[j])) { - screen_info->formats[screen_info->numPixmapFormats].depth = - xnestPixmapFormats[i].depth; - screen_info->formats[screen_info->numPixmapFormats].bitsPerPixel = - xnestPixmapFormats[i].bits_per_pixel; - screen_info->formats[screen_info->numPixmapFormats].scanlinePad = - xnestPixmapFormats[i].scanline_pad; - screen_info->numPixmapFormats++; - break; - } - - xnestFontPrivateIndex = xfont2_allocate_font_private_index(); - - if (!xnestNumScreens) - xnestNumScreens = 1; - - for (i = 0; i < xnestNumScreens; i++) - AddScreen(xnestOpenScreen, argc, argv); - - xnestNumScreens = screen_info->numScreens; - - xnestDoFullGeneration = xnestFullGeneration; -} - -static void -xnestNotifyConnection(int fd, int ready, void *data) -{ - xnestCollectEvents(); -} - -void -InitInput(int argc, char *argv[]) -{ - int rc; - - rc = AllocDevicePair(serverClient, "Xnest", - &xnestPointerDevice, - &xnestKeyboardDevice, - xnestPointerProc, xnestKeyboardProc, FALSE); - - if (rc != Success) - FatalError("Failed to init Xnest default devices.\n"); - - mieqInit(); - - SetNotifyFd(XConnectionNumber(xnestDisplay), xnestNotifyConnection, X_NOTIFY_READ, NULL); - - RegisterBlockAndWakeupHandlers(xnestBlockHandler, xnestWakeupHandler, NULL); -} - -void -CloseInput(void) -{ - mieqFini(); -} - -void -ddxGiveUp(enum ExitCode error) -{ - xnestDoFullGeneration = True; - xnestCloseDisplay(); -} - -#ifdef __APPLE__ -void -DarwinHandleGUI(int argc, char *argv[]) -{ -} -#endif - -void -OsVendorInit(void) -{ - return; -} - -void -OsVendorFatalError(const char *f, va_list args) -{ - return; -} - -#if defined(DDXBEFORERESET) -void -ddxBeforeReset(void) -{ - return; -} -#endif - -#if INPUTTHREAD -/** This function is called in Xserver/os/inputthread.c when starting - the input thread. */ -void -ddxInputThreadInit(void) -{ -} -#endif diff --git a/hw/xnest/Init.h b/hw/xnest/Init.h deleted file mode 100644 index 7c0291ebf..000000000 --- a/hw/xnest/Init.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTINIT_H -#define XNESTINIT_H - -extern Bool xnestDoFullGeneration; - -#endif /* XNESTINIT_H */ diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c deleted file mode 100644 index 46f257c83..000000000 --- a/hw/xnest/Keyboard.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#ifdef WIN32 -#include <X11/Xwindows.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include <X11/keysym.h> -#include "screenint.h" -#include "inputstr.h" -#include "misc.h" -#include "scrnintstr.h" -#include "servermd.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "Keyboard.h" -#include "Args.h" -#include "Events.h" - -#include <X11/extensions/XKB.h> -#include "xkbsrv.h" -#include <X11/extensions/XKBconfig.h> - -extern Bool - XkbQueryExtension(Display * /* dpy */ , - int * /* opcodeReturn */ , - int * /* eventBaseReturn */ , - int * /* errorBaseReturn */ , - int * /* majorRtrn */ , - int * /* minorRtrn */ - ); - -extern XkbDescPtr XkbGetKeyboard(Display * /* dpy */ , - unsigned int /* which */ , - unsigned int /* deviceSpec */ - ); - -extern Status XkbGetControls(Display * /* dpy */ , - unsigned long /* which */ , - XkbDescPtr /* desc */ - ); - -DeviceIntPtr xnestKeyboardDevice = NULL; - -void -xnestBell(int volume, DeviceIntPtr pDev, void *ctrl, int cls) -{ - XBell(xnestDisplay, volume); -} - -void -DDXRingBell(int volume, int pitch, int duration) -{ - XBell(xnestDisplay, volume); -} - -void -xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl) -{ -#if 0 - unsigned long value_mask; - XKeyboardControl values; - int i; - - value_mask = KBKeyClickPercent | - KBBellPercent | KBBellPitch | KBBellDuration | KBAutoRepeatMode; - - values.key_click_percent = ctrl->click; - values.bell_percent = ctrl->bell; - values.bell_pitch = ctrl->bell_pitch; - values.bell_duration = ctrl->bell_duration; - values.auto_repeat_mode = ctrl->autoRepeat ? - AutoRepeatModeOn : AutoRepeatModeOff; - - XChangeKeyboardControl(xnestDisplay, value_mask, &values); - - /* - value_mask = KBKey | KBAutoRepeatMode; - At this point, we need to walk through the vector and compare it - to the current server vector. If there are differences, report them. - */ - - value_mask = KBLed | KBLedMode; - for (i = 1; i <= 32; i++) { - values.led = i; - values.led_mode = - (ctrl->leds & (1 << (i - 1))) ? LedModeOn : LedModeOff; - XChangeKeyboardControl(xnestDisplay, value_mask, &values); - } -#endif -} - -int -xnestKeyboardProc(DeviceIntPtr pDev, int onoff) -{ - XModifierKeymap *modifier_keymap; - KeySym *keymap; - int mapWidth; - int min_keycode, max_keycode; - KeySymsRec keySyms; - CARD8 modmap[MAP_LENGTH]; - int i, j; - XKeyboardState values; - XkbDescPtr xkb; - int op, event, error, major, minor; - - switch (onoff) { - case DEVICE_INIT: - XDisplayKeycodes(xnestDisplay, &min_keycode, &max_keycode); -#ifdef _XSERVER64 - { - KeySym64 *keymap64; - int len; - - keymap64 = XGetKeyboardMapping(xnestDisplay, - min_keycode, - max_keycode - min_keycode + 1, - &mapWidth); - len = (max_keycode - min_keycode + 1) * mapWidth; - keymap = xallocarray(len, sizeof(KeySym)); - for (i = 0; i < len; ++i) - keymap[i] = keymap64[i]; - XFree(keymap64); - } -#else - keymap = XGetKeyboardMapping(xnestDisplay, - min_keycode, - max_keycode - min_keycode + 1, &mapWidth); -#endif - - memset(modmap, 0, sizeof(modmap)); - modifier_keymap = XGetModifierMapping(xnestDisplay); - for (j = 0; j < 8; j++) - for (i = 0; i < modifier_keymap->max_keypermod; i++) { - CARD8 keycode; - - if ((keycode = - modifier_keymap->modifiermap[j * - modifier_keymap-> - max_keypermod + i])) - modmap[keycode] |= 1 << j; - } - XFreeModifiermap(modifier_keymap); - - keySyms.minKeyCode = min_keycode; - keySyms.maxKeyCode = max_keycode; - keySyms.mapWidth = mapWidth; - keySyms.map = keymap; - - if (XkbQueryExtension(xnestDisplay, &op, &event, &error, &major, &minor) - == 0) { - ErrorF("Unable to initialize XKEYBOARD extension.\n"); - goto XkbError; - } - xkb = - XkbGetKeyboard(xnestDisplay, XkbGBN_AllComponentsMask, - XkbUseCoreKbd); - if (xkb == NULL || xkb->geom == NULL) { - ErrorF("Couldn't get keyboard.\n"); - goto XkbError; - } - XkbGetControls(xnestDisplay, XkbAllControlsMask, xkb); - - InitKeyboardDeviceStruct(pDev, NULL, - xnestBell, xnestChangeKeyboardControl); - - XkbApplyMappingChange(pDev, &keySyms, keySyms.minKeyCode, - keySyms.maxKeyCode - keySyms.minKeyCode + 1, - modmap, serverClient); - - XkbDDXChangeControls(pDev, xkb->ctrls, xkb->ctrls); - XkbFreeKeyboard(xkb, 0, False); - free(keymap); - break; - case DEVICE_ON: - xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK; - for (i = 0; i < xnestNumScreens; i++) - XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask); - break; - case DEVICE_OFF: - xnestEventMask &= ~XNEST_KEYBOARD_EVENT_MASK; - for (i = 0; i < xnestNumScreens; i++) - XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask); - break; - case DEVICE_CLOSE: - break; - } - return Success; - - XkbError: - XGetKeyboardControl(xnestDisplay, &values); - memmove((char *) defaultKeyboardControl.autoRepeats, - (char *) values.auto_repeats, sizeof(values.auto_repeats)); - - InitKeyboardDeviceStruct(pDev, NULL, xnestBell, xnestChangeKeyboardControl); - free(keymap); - return Success; -} - -void -xnestUpdateModifierState(unsigned int state) -{ - DeviceIntPtr pDev = xnestKeyboardDevice; - KeyClassPtr keyc = pDev->key; - int i; - CARD8 mask; - int xkb_state; - - if (!pDev) - return; - - xkb_state = XkbStateFieldFromRec(&pDev->key->xkbInfo->state); - state = state & 0xff; - - if (xkb_state == state) - return; - - for (i = 0, mask = 1; i < 8; i++, mask <<= 1) { - int key; - - /* Modifier is down, but shouldn't be */ - if ((xkb_state & mask) && !(state & mask)) { - int count = keyc->modifierKeyCount[i]; - - for (key = 0; key < MAP_LENGTH; key++) - if (keyc->xkbInfo->desc->map->modmap[key] & mask) { - if (mask == LockMask) { - xnestQueueKeyEvent(KeyPress, key); - xnestQueueKeyEvent(KeyRelease, key); - } - else if (key_is_down(pDev, key, KEY_PROCESSED)) - xnestQueueKeyEvent(KeyRelease, key); - - if (--count == 0) - break; - } - } - - /* Modifier should be down, but isn't */ - if (!(xkb_state & mask) && (state & mask)) - for (key = 0; key < MAP_LENGTH; key++) - if (keyc->xkbInfo->desc->map->modmap[key] & mask) { - xnestQueueKeyEvent(KeyPress, key); - if (mask == LockMask) - xnestQueueKeyEvent(KeyRelease, key); - break; - } - } -} diff --git a/hw/xnest/Keyboard.h b/hw/xnest/Keyboard.h deleted file mode 100644 index dc5eaa2de..000000000 --- a/hw/xnest/Keyboard.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTKEYBOARD_H -#define XNESTKEYBOARD_H - -#define XNEST_KEYBOARD_EVENT_MASK \ - (KeyPressMask | KeyReleaseMask | FocusChangeMask | KeymapStateMask) - -extern DeviceIntPtr xnestKeyboardDevice; - -void xnestBell(int volume, DeviceIntPtr pDev, void *ctrl, int cls); -void xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl); -int xnestKeyboardProc(DeviceIntPtr pDev, int onoff); -void xnestUpdateModifierState(unsigned int state); - -#endif /* XNESTKEYBOARD_H */ diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c deleted file mode 100644 index 6514f3b31..000000000 --- a/hw/xnest/Pixmap.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "regionstr.h" -#include "pixmapstr.h" -#include "scrnintstr.h" -#include "gc.h" -#include "servermd.h" -#include "privates.h" -#include "mi.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "XNPixmap.h" - -DevPrivateKeyRec xnestPixmapPrivateKeyRec; - -PixmapPtr -xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, - unsigned usage_hint) -{ - PixmapPtr pPixmap; - - pPixmap = AllocatePixmap(pScreen, 0); - if (!pPixmap) - return NullPixmap; - pPixmap->drawable.type = DRAWABLE_PIXMAP; - pPixmap->drawable.class = 0; - pPixmap->drawable.depth = depth; - pPixmap->drawable.bitsPerPixel = depth; - pPixmap->drawable.id = 0; - pPixmap->drawable.x = 0; - pPixmap->drawable.y = 0; - pPixmap->drawable.width = width; - pPixmap->drawable.height = height; - pPixmap->drawable.pScreen = pScreen; - pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; - pPixmap->refcnt = 1; - pPixmap->devKind = PixmapBytePad(width, depth); - pPixmap->usage_hint = usage_hint; - if (width && height) - xnestPixmapPriv(pPixmap)->pixmap = - XCreatePixmap(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - width, height, depth); - else - xnestPixmapPriv(pPixmap)->pixmap = 0; - - return pPixmap; -} - -Bool -xnestDestroyPixmap(PixmapPtr pPixmap) -{ - if (--pPixmap->refcnt) - return TRUE; - XFreePixmap(xnestDisplay, xnestPixmap(pPixmap)); - FreePixmap(pPixmap); - return TRUE; -} - -Bool -xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, - int bitsPerPixel, int devKind, void *pPixData) -{ - if(!xnestPixmapPriv(pPixmap)->pixmap && width > 0 && height > 0) { - xnestPixmapPriv(pPixmap)->pixmap = - XCreatePixmap(xnestDisplay, - xnestDefaultWindows[pPixmap->drawable.pScreen->myNum], - width, height, depth); - } - - return miModifyPixmapHeader(pPixmap, width, height, depth, - bitsPerPixel, devKind, pPixData); -} - -RegionPtr -xnestPixmapToRegion(PixmapPtr pPixmap) -{ - XImage *ximage; - register RegionPtr pReg, pTmpReg; - register int x, y; - unsigned long previousPixel, currentPixel; - BoxRec Box = { 0, 0, 0, 0 }; - Bool overlap; - - ximage = XGetImage(xnestDisplay, xnestPixmap(pPixmap), 0, 0, - pPixmap->drawable.width, pPixmap->drawable.height, - 1, XYPixmap); - - pReg = RegionCreate(NULL, 1); - pTmpReg = RegionCreate(NULL, 1); - if (!pReg || !pTmpReg) { - XDestroyImage(ximage); - return NullRegion; - } - - for (y = 0; y < pPixmap->drawable.height; y++) { - Box.y1 = y; - Box.y2 = y + 1; - previousPixel = 0L; - for (x = 0; x < pPixmap->drawable.width; x++) { - currentPixel = XGetPixel(ximage, x, y); - if (previousPixel != currentPixel) { - if (previousPixel == 0L) { - /* left edge */ - Box.x1 = x; - } - else if (currentPixel == 0L) { - /* right edge */ - Box.x2 = x; - RegionReset(pTmpReg, &Box); - RegionAppend(pReg, pTmpReg); - } - previousPixel = currentPixel; - } - } - if (previousPixel != 0L) { - /* right edge because of the end of pixmap */ - Box.x2 = pPixmap->drawable.width; - RegionReset(pTmpReg, &Box); - RegionAppend(pReg, pTmpReg); - } - } - - RegionDestroy(pTmpReg); - XDestroyImage(ximage); - - RegionValidate(pReg, &overlap); - - return pReg; -} diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c deleted file mode 100644 index a2ee90064..000000000 --- a/hw/xnest/Pointer.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "screenint.h" -#include "inputstr.h" -#include "input.h" -#include "misc.h" -#include "scrnintstr.h" -#include "servermd.h" -#include "mipointer.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "Pointer.h" -#include "Args.h" - -#include "xserver-properties.h" -#include "exevents.h" /* For XIGetKnownProperty */ - -DeviceIntPtr xnestPointerDevice = NULL; - -void -xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl * ctrl) -{ - XChangePointerControl(xnestDisplay, True, True, - ctrl->num, ctrl->den, ctrl->threshold); -} - -int -xnestPointerProc(DeviceIntPtr pDev, int onoff) -{ - CARD8 map[MAXBUTTONS]; - Atom btn_labels[MAXBUTTONS] = { 0 }; - Atom axes_labels[2] = { 0 }; - int nmap; - int i; - - switch (onoff) { - case DEVICE_INIT: - nmap = XGetPointerMapping(xnestDisplay, map, MAXBUTTONS); - for (i = 0; i <= nmap; i++) - map[i] = i; /* buttons are already mapped */ - - btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT); - btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE); - btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT); - btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP); - btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN); - btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT); - btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT); - - axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X); - axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y); - - XGetPointerControl(xnestDisplay, - &defaultPointerControl.num, - &defaultPointerControl.den, - &defaultPointerControl.threshold); - InitPointerDeviceStruct(&pDev->public, map, nmap, btn_labels, - xnestChangePointerControl, - GetMotionHistorySize(), 2, axes_labels); - break; - case DEVICE_ON: - xnestEventMask |= XNEST_POINTER_EVENT_MASK; - for (i = 0; i < xnestNumScreens; i++) - XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask); - break; - case DEVICE_OFF: - xnestEventMask &= ~XNEST_POINTER_EVENT_MASK; - for (i = 0; i < xnestNumScreens; i++) - XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask); - break; - case DEVICE_CLOSE: - break; - } - return Success; -} diff --git a/hw/xnest/Pointer.h b/hw/xnest/Pointer.h deleted file mode 100644 index d0047c517..000000000 --- a/hw/xnest/Pointer.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTPOINTER_H -#define XNESTPOINTER_H - -#define MAXBUTTONS 256 - -#define XNEST_POINTER_EVENT_MASK \ - (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | \ - EnterWindowMask | LeaveWindowMask) - -extern DeviceIntPtr xnestPointerDevice; - -void xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl * ctrl); -int xnestPointerProc(DeviceIntPtr pDev, int onoff); - -#endif /* XNESTPOINTER_H */ diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c deleted file mode 100644 index ac01c248c..000000000 --- a/hw/xnest/Screen.c +++ /dev/null @@ -1,425 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "scrnintstr.h" -#include "dix.h" -#include "mi.h" -#include "micmap.h" -#include "colormapst.h" -#include "resource.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "XNGC.h" -#include "GCOps.h" -#include "Drawable.h" -#include "XNFont.h" -#include "Color.h" -#include "XNCursor.h" -#include "Visual.h" -#include "Events.h" -#include "Init.h" -#include "mipointer.h" -#include "Args.h" -#include "mipointrst.h" - -Window xnestDefaultWindows[MAXSCREENS]; -Window xnestScreenSaverWindows[MAXSCREENS]; -DevPrivateKeyRec xnestCursorScreenKeyRec; - -ScreenPtr -xnestScreen(Window window) -{ - int i; - - for (i = 0; i < xnestNumScreens; i++) - if (xnestDefaultWindows[i] == window) - return screenInfo.screens[i]; - - return NULL; -} - -static int -offset(unsigned long mask) -{ - int count; - - for (count = 0; !(mask & 1) && count < 32; count++) - mask >>= 1; - - return count; -} - -static Bool -xnestSaveScreen(ScreenPtr pScreen, int what) -{ - if (xnestSoftwareScreenSaver) - return False; - else { - switch (what) { - case SCREEN_SAVER_ON: - XMapRaised(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]); - xnestSetScreenSaverColormapWindow(pScreen); - break; - - case SCREEN_SAVER_OFF: - XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]); - xnestSetInstalledColormapWindows(pScreen); - break; - - case SCREEN_SAVER_FORCER: - lastEventTime = GetTimeInMillis(); - XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]); - xnestSetInstalledColormapWindows(pScreen); - break; - - case SCREEN_SAVER_CYCLE: - XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]); - xnestSetInstalledColormapWindows(pScreen); - break; - } - return True; - } -} - -static Bool -xnestCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y) -{ - return FALSE; -} - -static void -xnestCrossScreen(ScreenPtr pScreen, Bool entering) -{ -} - -static miPointerScreenFuncRec xnestPointerCursorFuncs = { - xnestCursorOffScreen, - xnestCrossScreen, - miPointerWarpCursor -}; - -static miPointerSpriteFuncRec xnestPointerSpriteFuncs = { - xnestRealizeCursor, - xnestUnrealizeCursor, - xnestSetCursor, - xnestMoveCursor, - xnestDeviceCursorInitialize, - xnestDeviceCursorCleanup -}; - -Bool -xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) -{ - VisualPtr visuals; - DepthPtr depths; - int numVisuals, numDepths; - int i, j, depthIndex; - unsigned long valuemask; - XSetWindowAttributes attributes; - XWindowAttributes gattributes; - XSizeHints sizeHints; - VisualID defaultVisual; - int rootDepth; - miPointerScreenPtr PointPriv; - - if (!dixRegisterPrivateKey - (&xnestWindowPrivateKeyRec, PRIVATE_WINDOW, sizeof(xnestPrivWin))) - return FALSE; - if (!dixRegisterPrivateKey - (&xnestGCPrivateKeyRec, PRIVATE_GC, sizeof(xnestPrivGC))) - return FALSE; - if (!dixRegisterPrivateKey - (&xnestPixmapPrivateKeyRec, PRIVATE_PIXMAP, sizeof(xnestPrivPixmap))) - return FALSE; - if (!dixRegisterPrivateKey - (&xnestColormapPrivateKeyRec, PRIVATE_COLORMAP, - sizeof(xnestPrivColormap))) - return FALSE; - if (!dixRegisterPrivateKey(&xnestCursorScreenKeyRec, PRIVATE_SCREEN, 0)) - return FALSE; - - visuals = xallocarray(xnestNumVisuals, sizeof(VisualRec)); - numVisuals = 0; - - depths = (DepthPtr) malloc(MAXDEPTH * sizeof(DepthRec)); - depths[0].depth = 1; - depths[0].numVids = 0; - depths[0].vids = (VisualID *) malloc(MAXVISUALSPERDEPTH * sizeof(VisualID)); - numDepths = 1; - - for (i = 0; i < xnestNumVisuals; i++) { - visuals[numVisuals].class = xnestVisuals[i].class; - visuals[numVisuals].bitsPerRGBValue = xnestVisuals[i].bits_per_rgb; - visuals[numVisuals].ColormapEntries = xnestVisuals[i].colormap_size; - visuals[numVisuals].nplanes = xnestVisuals[i].depth; - visuals[numVisuals].redMask = xnestVisuals[i].red_mask; - visuals[numVisuals].greenMask = xnestVisuals[i].green_mask; - visuals[numVisuals].blueMask = xnestVisuals[i].blue_mask; - visuals[numVisuals].offsetRed = offset(xnestVisuals[i].red_mask); - visuals[numVisuals].offsetGreen = offset(xnestVisuals[i].green_mask); - visuals[numVisuals].offsetBlue = offset(xnestVisuals[i].blue_mask); - - /* Check for and remove duplicates. */ - for (j = 0; j < numVisuals; j++) { - if (visuals[numVisuals].class == visuals[j].class && - visuals[numVisuals].bitsPerRGBValue == - visuals[j].bitsPerRGBValue && - visuals[numVisuals].ColormapEntries == - visuals[j].ColormapEntries && - visuals[numVisuals].nplanes == visuals[j].nplanes && - visuals[numVisuals].redMask == visuals[j].redMask && - visuals[numVisuals].greenMask == visuals[j].greenMask && - visuals[numVisuals].blueMask == visuals[j].blueMask && - visuals[numVisuals].offsetRed == visuals[j].offsetRed && - visuals[numVisuals].offsetGreen == visuals[j].offsetGreen && - visuals[numVisuals].offsetBlue == visuals[j].offsetBlue) - break; - } - if (j < numVisuals) - break; - - visuals[numVisuals].vid = FakeClientID(0); - - depthIndex = UNDEFINED; - for (j = 0; j < numDepths; j++) - if (depths[j].depth == xnestVisuals[i].depth) { - depthIndex = j; - break; - } - - if (depthIndex == UNDEFINED) { - depthIndex = numDepths; - depths[depthIndex].depth = xnestVisuals[i].depth; - depths[depthIndex].numVids = 0; - depths[depthIndex].vids = - (VisualID *) malloc(MAXVISUALSPERDEPTH * sizeof(VisualID)); - numDepths++; - } - if (depths[depthIndex].numVids >= MAXVISUALSPERDEPTH) { - FatalError("Visual table overflow"); - } - depths[depthIndex].vids[depths[depthIndex].numVids] = - visuals[numVisuals].vid; - depths[depthIndex].numVids++; - - numVisuals++; - } - visuals = reallocarray(visuals, numVisuals, sizeof(VisualRec)); - - defaultVisual = visuals[xnestDefaultVisualIndex].vid; - rootDepth = visuals[xnestDefaultVisualIndex].nplanes; - - if (xnestParentWindow != 0) { - XGetWindowAttributes(xnestDisplay, xnestParentWindow, &gattributes); - xnestWidth = gattributes.width; - xnestHeight = gattributes.height; - } - - /* myNum */ - /* id */ - miScreenInit(pScreen, NULL, xnestWidth, xnestHeight, 1, 1, xnestWidth, rootDepth, numDepths, depths, defaultVisual, /* root visual */ - numVisuals, visuals); - - pScreen->defColormap = (Colormap) FakeClientID(0); - pScreen->minInstalledCmaps = MINCMAPS; - pScreen->maxInstalledCmaps = MAXCMAPS; - pScreen->backingStoreSupport = NotUseful; - pScreen->saveUnderSupport = NotUseful; - pScreen->whitePixel = xnestWhitePixel; - pScreen->blackPixel = xnestBlackPixel; - /* GCperDepth */ - /* defaultStipple */ - pScreen->devPrivate = NULL; - /* WindowPrivateLen */ - /* WindowPrivateSizes */ - /* totalWindowSize */ - /* GCPrivateLen */ - /* GCPrivateSizes */ - /* totalGCSize */ - - /* Random screen procedures */ - - pScreen->QueryBestSize = xnestQueryBestSize; - pScreen->SaveScreen = xnestSaveScreen; - pScreen->GetImage = xnestGetImage; - pScreen->GetSpans = xnestGetSpans; - - /* Window Procedures */ - - pScreen->CreateWindow = xnestCreateWindow; - pScreen->DestroyWindow = xnestDestroyWindow; - pScreen->PositionWindow = xnestPositionWindow; - pScreen->ChangeWindowAttributes = xnestChangeWindowAttributes; - pScreen->RealizeWindow = xnestRealizeWindow; - pScreen->UnrealizeWindow = xnestUnrealizeWindow; - pScreen->PostValidateTree = NULL; - pScreen->WindowExposures = xnestWindowExposures; - pScreen->CopyWindow = xnestCopyWindow; - pScreen->ClipNotify = xnestClipNotify; - - /* Pixmap procedures */ - - pScreen->CreatePixmap = xnestCreatePixmap; - pScreen->DestroyPixmap = xnestDestroyPixmap; - pScreen->ModifyPixmapHeader = xnestModifyPixmapHeader; - - /* Font procedures */ - - pScreen->RealizeFont = xnestRealizeFont; - pScreen->UnrealizeFont = xnestUnrealizeFont; - - /* GC procedures */ - - pScreen->CreateGC = xnestCreateGC; - - /* Colormap procedures */ - - pScreen->CreateColormap = xnestCreateColormap; - pScreen->DestroyColormap = xnestDestroyColormap; - pScreen->InstallColormap = xnestInstallColormap; - pScreen->UninstallColormap = xnestUninstallColormap; - pScreen->ListInstalledColormaps = xnestListInstalledColormaps; - pScreen->StoreColors = xnestStoreColors; - pScreen->ResolveColor = xnestResolveColor; - - pScreen->BitmapToRegion = xnestPixmapToRegion; - - /* OS layer procedures */ - - pScreen->BlockHandler = (ScreenBlockHandlerProcPtr) NoopDDA; - pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr) NoopDDA; - - miDCInitialize(pScreen, &xnestPointerCursorFuncs); /* init SW rendering */ - PointPriv = dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey); - xnestCursorFuncs.spriteFuncs = PointPriv->spriteFuncs; - dixSetPrivate(&pScreen->devPrivates, xnestCursorScreenKey, - &xnestCursorFuncs); - PointPriv->spriteFuncs = &xnestPointerSpriteFuncs; - - pScreen->mmWidth = xnestWidth * DisplayWidthMM(xnestDisplay, - DefaultScreen(xnestDisplay)) - / DisplayWidth(xnestDisplay, DefaultScreen(xnestDisplay)); - pScreen->mmHeight = - xnestHeight * DisplayHeightMM(xnestDisplay, - DefaultScreen(xnestDisplay)) / - DisplayHeight(xnestDisplay, DefaultScreen(xnestDisplay)); - - /* overwrite miCloseScreen with our own */ - pScreen->CloseScreen = xnestCloseScreen; - - if (!miScreenDevPrivateInit(pScreen, xnestWidth, NULL)) - return FALSE; - - /* overwrite miSetShape with our own */ - pScreen->SetShape = xnestSetShape; - - /* devPrivates */ - -#define POSITION_OFFSET (pScreen->myNum * (xnestWidth + xnestHeight) / 32) - - if (xnestDoFullGeneration) { - - valuemask = CWBackPixel | CWEventMask | CWColormap; - attributes.background_pixel = xnestWhitePixel; - attributes.event_mask = xnestEventMask; - attributes.colormap = - xnestDefaultVisualColormap(xnestDefaultVisual(pScreen)); - - if (xnestParentWindow != 0) { - xnestDefaultWindows[pScreen->myNum] = xnestParentWindow; - XSelectInput(xnestDisplay, xnestDefaultWindows[pScreen->myNum], - xnestEventMask); - } - else - xnestDefaultWindows[pScreen->myNum] = - XCreateWindow(xnestDisplay, - DefaultRootWindow(xnestDisplay), - xnestX + POSITION_OFFSET, - xnestY + POSITION_OFFSET, - xnestWidth, xnestHeight, - xnestBorderWidth, - pScreen->rootDepth, - InputOutput, - xnestDefaultVisual(pScreen), - valuemask, &attributes); - - if (!xnestWindowName) - xnestWindowName = argv[0]; - - sizeHints.flags = PPosition | PSize | PMaxSize; - sizeHints.x = xnestX + POSITION_OFFSET; - sizeHints.y = xnestY + POSITION_OFFSET; - sizeHints.width = sizeHints.max_width = xnestWidth; - sizeHints.height = sizeHints.max_height = xnestHeight; - if (xnestUserGeometry & XValue || xnestUserGeometry & YValue) - sizeHints.flags |= USPosition; - if (xnestUserGeometry & WidthValue || xnestUserGeometry & HeightValue) - sizeHints.flags |= USSize; - XSetStandardProperties(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - xnestWindowName, - xnestWindowName, - xnestIconBitmap, argv, argc, &sizeHints); - - XMapWindow(xnestDisplay, xnestDefaultWindows[pScreen->myNum]); - - valuemask = CWBackPixmap | CWColormap; - attributes.background_pixmap = xnestScreenSaverPixmap; - attributes.colormap = - DefaultColormap(xnestDisplay, DefaultScreen(xnestDisplay)); - xnestScreenSaverWindows[pScreen->myNum] = - XCreateWindow(xnestDisplay, - xnestDefaultWindows[pScreen->myNum], - 0, 0, xnestWidth, xnestHeight, 0, - DefaultDepth(xnestDisplay, - DefaultScreen(xnestDisplay)), - InputOutput, DefaultVisual(xnestDisplay, - DefaultScreen - (xnestDisplay)), valuemask, - &attributes); - } - - if (!xnestCreateDefaultColormap(pScreen)) - return False; - - return True; -} - -Bool -xnestCloseScreen(ScreenPtr pScreen) -{ - int i; - - for (i = 0; i < pScreen->numDepths; i++) - free(pScreen->allowedDepths[i].vids); - free(pScreen->allowedDepths); - free(pScreen->visuals); - free(pScreen->devPrivate); - - /* - If xnestDoFullGeneration all x resources will be destroyed upon closing - the display connection. There is no need to generate extra protocol. - */ - - return True; -} diff --git a/hw/xnest/Screen.h b/hw/xnest/Screen.h deleted file mode 100644 index 17c514af7..000000000 --- a/hw/xnest/Screen.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTSCREEN_H -#define XNESTSCREEN_H - -extern Window xnestDefaultWindows[MAXSCREENS]; -extern Window xnestScreenSaverWindows[MAXSCREENS]; - -ScreenPtr xnestScreen(Window window); -Bool xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]); -Bool xnestCloseScreen(ScreenPtr pScreen); - -#endif /* XNESTSCREEN_H */ diff --git a/hw/xnest/Visual.c b/hw/xnest/Visual.c deleted file mode 100644 index 11673c44a..000000000 --- a/hw/xnest/Visual.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "scrnintstr.h" -#include "dix.h" -#include "mi.h" -#include "Xnest.h" - -#include "Display.h" -#include "Visual.h" - -Visual * -xnestVisual(VisualPtr pVisual) -{ - int i; - - for (i = 0; i < xnestNumVisuals; i++) - if (pVisual->class == xnestVisuals[i].class && - pVisual->bitsPerRGBValue == xnestVisuals[i].bits_per_rgb && - pVisual->ColormapEntries == xnestVisuals[i].colormap_size && - pVisual->nplanes == xnestVisuals[i].depth && - pVisual->redMask == xnestVisuals[i].red_mask && - pVisual->greenMask == xnestVisuals[i].green_mask && - pVisual->blueMask == xnestVisuals[i].blue_mask) - return xnestVisuals[i].visual; - - return NULL; -} - -Visual * -xnestVisualFromID(ScreenPtr pScreen, VisualID visual) -{ - int i; - - for (i = 0; i < pScreen->numVisuals; i++) - if (pScreen->visuals[i].vid == visual) - return xnestVisual(&pScreen->visuals[i]); - - return NULL; -} - -Colormap -xnestDefaultVisualColormap(Visual * visual) -{ - int i; - - for (i = 0; i < xnestNumVisuals; i++) - if (xnestVisuals[i].visual == visual) - return xnestDefaultColormaps[i]; - - return None; -} diff --git a/hw/xnest/Visual.h b/hw/xnest/Visual.h deleted file mode 100644 index c3ae8a19f..000000000 --- a/hw/xnest/Visual.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTVISUAL_H -#define XNESTVISUAL_H - -Visual *xnestVisual(VisualPtr pVisual); -Visual *xnestVisualFromID(ScreenPtr pScreen, VisualID visual); -Colormap xnestDefaultVisualColormap(Visual * visual); - -#define xnestDefaultVisual(pScreen) \ - xnestVisualFromID((pScreen), (pScreen)->rootVisual) - -#endif /* XNESTVISUAL_H */ diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c deleted file mode 100644 index d6f44a25a..000000000 --- a/hw/xnest/Window.c +++ /dev/null @@ -1,517 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "gcstruct.h" -#include "window.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "colormapst.h" -#include "scrnintstr.h" -#include "region.h" - -#include "mi.h" - -#include "Xnest.h" - -#include "Display.h" -#include "Screen.h" -#include "XNGC.h" -#include "Drawable.h" -#include "Color.h" -#include "Visual.h" -#include "Events.h" -#include "Args.h" - -DevPrivateKeyRec xnestWindowPrivateKeyRec; - -static int -xnestFindWindowMatch(WindowPtr pWin, void *ptr) -{ - xnestWindowMatch *wm = (xnestWindowMatch *) ptr; - - if (wm->window == xnestWindow(pWin)) { - wm->pWin = pWin; - return WT_STOPWALKING; - } - else - return WT_WALKCHILDREN; -} - -WindowPtr -xnestWindowPtr(Window window) -{ - xnestWindowMatch wm; - int i; - - wm.pWin = NullWindow; - wm.window = window; - - for (i = 0; i < xnestNumScreens; i++) { - WalkTree(screenInfo.screens[i], xnestFindWindowMatch, (void *) &wm); - if (wm.pWin) - break; - } - - return wm.pWin; -} - -Bool -xnestCreateWindow(WindowPtr pWin) -{ - unsigned long mask; - XSetWindowAttributes attributes; - Visual *visual; - ColormapPtr pCmap; - - if (pWin->drawable.class == InputOnly) { - mask = 0L; - visual = CopyFromParent; - } - else { - mask = CWEventMask | CWBackingStore; - attributes.event_mask = ExposureMask; - attributes.backing_store = NotUseful; - - if (pWin->parent) { - if (pWin->optional && - pWin->optional->visual != wVisual(pWin->parent)) { - visual = - xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin)); - mask |= CWColormap; - if (pWin->optional->colormap) { - dixLookupResourceByType((void **) &pCmap, wColormap(pWin), - RT_COLORMAP, serverClient, - DixUseAccess); - attributes.colormap = xnestColormap(pCmap); - } - else - attributes.colormap = xnestDefaultVisualColormap(visual); - } - else - visual = CopyFromParent; - } - else { /* root windows have their own colormaps at creation time */ - visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin)); - dixLookupResourceByType((void **) &pCmap, wColormap(pWin), - RT_COLORMAP, serverClient, DixUseAccess); - mask |= CWColormap; - attributes.colormap = xnestColormap(pCmap); - } - } - - xnestWindowPriv(pWin)->window = XCreateWindow(xnestDisplay, - xnestWindowParent(pWin), - pWin->origin.x - - wBorderWidth(pWin), - pWin->origin.y - - wBorderWidth(pWin), - pWin->drawable.width, - pWin->drawable.height, - pWin->borderWidth, - pWin->drawable.depth, - pWin->drawable.class, - visual, mask, &attributes); - xnestWindowPriv(pWin)->parent = xnestWindowParent(pWin); - xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin); - xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin); - xnestWindowPriv(pWin)->width = pWin->drawable.width; - xnestWindowPriv(pWin)->height = pWin->drawable.height; - xnestWindowPriv(pWin)->border_width = pWin->borderWidth; - xnestWindowPriv(pWin)->sibling_above = None; - if (pWin->nextSib) - xnestWindowPriv(pWin->nextSib)->sibling_above = xnestWindow(pWin); - xnestWindowPriv(pWin)->bounding_shape = RegionCreate(NULL, 1); - xnestWindowPriv(pWin)->clip_shape = RegionCreate(NULL, 1); - - if (!pWin->parent) /* only the root window will have the right colormap */ - xnestSetInstalledColormapWindows(pWin->drawable.pScreen); - - return True; -} - -Bool -xnestDestroyWindow(WindowPtr pWin) -{ - if (pWin->nextSib) - xnestWindowPriv(pWin->nextSib)->sibling_above = - xnestWindowPriv(pWin)->sibling_above; - RegionDestroy(xnestWindowPriv(pWin)->bounding_shape); - RegionDestroy(xnestWindowPriv(pWin)->clip_shape); - XDestroyWindow(xnestDisplay, xnestWindow(pWin)); - xnestWindowPriv(pWin)->window = None; - - if (pWin->optional && pWin->optional->colormap && pWin->parent) - xnestSetInstalledColormapWindows(pWin->drawable.pScreen); - - return True; -} - -Bool -xnestPositionWindow(WindowPtr pWin, int x, int y) -{ - xnestConfigureWindow(pWin, - CWParent | - CWX | CWY | CWWidth | CWHeight | CWBorderWidth); - - return True; -} - -void -xnestConfigureWindow(WindowPtr pWin, unsigned int mask) -{ - unsigned int valuemask; - XWindowChanges values; - - if (mask & CWParent && - xnestWindowPriv(pWin)->parent != xnestWindowParent(pWin)) { - XReparentWindow(xnestDisplay, xnestWindow(pWin), - xnestWindowParent(pWin), - pWin->origin.x - wBorderWidth(pWin), - pWin->origin.y - wBorderWidth(pWin)); - xnestWindowPriv(pWin)->parent = xnestWindowParent(pWin); - xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin); - xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin); - xnestWindowPriv(pWin)->sibling_above = None; - if (pWin->nextSib) - xnestWindowPriv(pWin->nextSib)->sibling_above = xnestWindow(pWin); - } - - valuemask = 0; - - if (mask & CWX && - xnestWindowPriv(pWin)->x != pWin->origin.x - wBorderWidth(pWin)) { - valuemask |= CWX; - values.x = - xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin); - } - - if (mask & CWY && - xnestWindowPriv(pWin)->y != pWin->origin.y - wBorderWidth(pWin)) { - valuemask |= CWY; - values.y = - xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin); - } - - if (mask & CWWidth && xnestWindowPriv(pWin)->width != pWin->drawable.width) { - valuemask |= CWWidth; - values.width = xnestWindowPriv(pWin)->width = pWin->drawable.width; - } - - if (mask & CWHeight && - xnestWindowPriv(pWin)->height != pWin->drawable.height) { - valuemask |= CWHeight; - values.height = xnestWindowPriv(pWin)->height = pWin->drawable.height; - } - - if (mask & CWBorderWidth && - xnestWindowPriv(pWin)->border_width != pWin->borderWidth) { - valuemask |= CWBorderWidth; - values.border_width = - xnestWindowPriv(pWin)->border_width = pWin->borderWidth; - } - - if (valuemask) - XConfigureWindow(xnestDisplay, xnestWindow(pWin), valuemask, &values); - - if (mask & CWStackingOrder && - xnestWindowPriv(pWin)->sibling_above != xnestWindowSiblingAbove(pWin)) { - WindowPtr pSib; - - /* find the top sibling */ - for (pSib = pWin; pSib->prevSib != NullWindow; pSib = pSib->prevSib); - - /* the top sibling */ - valuemask = CWStackMode; - values.stack_mode = Above; - XConfigureWindow(xnestDisplay, xnestWindow(pSib), valuemask, &values); - xnestWindowPriv(pSib)->sibling_above = None; - - /* the rest of siblings */ - for (pSib = pSib->nextSib; pSib != NullWindow; pSib = pSib->nextSib) { - valuemask = CWSibling | CWStackMode; - values.sibling = xnestWindowSiblingAbove(pSib); - values.stack_mode = Below; - XConfigureWindow(xnestDisplay, xnestWindow(pSib), valuemask, - &values); - xnestWindowPriv(pSib)->sibling_above = - xnestWindowSiblingAbove(pSib); - } - } -} - -Bool -xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask) -{ - XSetWindowAttributes attributes; - - if (mask & CWBackPixmap) - switch (pWin->backgroundState) { - case None: - attributes.background_pixmap = None; - break; - - case ParentRelative: - attributes.background_pixmap = ParentRelative; - break; - - case BackgroundPixmap: - attributes.background_pixmap = xnestPixmap(pWin->background.pixmap); - break; - - case BackgroundPixel: - mask &= ~CWBackPixmap; - break; - } - - if (mask & CWBackPixel) { - if (pWin->backgroundState == BackgroundPixel) - attributes.background_pixel = xnestPixel(pWin->background.pixel); - else - mask &= ~CWBackPixel; - } - - if (mask & CWBorderPixmap) { - if (pWin->borderIsPixel) - mask &= ~CWBorderPixmap; - else - attributes.border_pixmap = xnestPixmap(pWin->border.pixmap); - } - - if (mask & CWBorderPixel) { - if (pWin->borderIsPixel) - attributes.border_pixel = xnestPixel(pWin->border.pixel); - else - mask &= ~CWBorderPixel; - } - - if (mask & CWBitGravity) - attributes.bit_gravity = pWin->bitGravity; - - if (mask & CWWinGravity) /* dix does this for us */ - mask &= ~CWWinGravity; - - if (mask & CWBackingStore) /* this is really not useful */ - mask &= ~CWBackingStore; - - if (mask & CWBackingPlanes) /* this is really not useful */ - mask &= ~CWBackingPlanes; - - if (mask & CWBackingPixel) /* this is really not useful */ - mask &= ~CWBackingPixel; - - if (mask & CWOverrideRedirect) - attributes.override_redirect = pWin->overrideRedirect; - - if (mask & CWSaveUnder) /* this is really not useful */ - mask &= ~CWSaveUnder; - - if (mask & CWEventMask) /* events are handled elsewhere */ - mask &= ~CWEventMask; - - if (mask & CWDontPropagate) /* events are handled elsewhere */ - mask &= ~CWDontPropagate; - - if (mask & CWColormap) { - ColormapPtr pCmap; - - dixLookupResourceByType((void **) &pCmap, wColormap(pWin), - RT_COLORMAP, serverClient, DixUseAccess); - - attributes.colormap = xnestColormap(pCmap); - - xnestSetInstalledColormapWindows(pWin->drawable.pScreen); - } - - if (mask & CWCursor) /* this is handled in cursor code */ - mask &= ~CWCursor; - - if (mask) - XChangeWindowAttributes(xnestDisplay, xnestWindow(pWin), - mask, &attributes); - - return True; -} - -Bool -xnestRealizeWindow(WindowPtr pWin) -{ - xnestConfigureWindow(pWin, CWStackingOrder); - xnestShapeWindow(pWin); - XMapWindow(xnestDisplay, xnestWindow(pWin)); - - return True; -} - -Bool -xnestUnrealizeWindow(WindowPtr pWin) -{ - XUnmapWindow(xnestDisplay, xnestWindow(pWin)); - - return True; -} - -void -xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion) -{ -} - -void -xnestClipNotify(WindowPtr pWin, int dx, int dy) -{ - xnestConfigureWindow(pWin, CWStackingOrder); - xnestShapeWindow(pWin); -} - -static Bool -xnestWindowExposurePredicate(Display * dpy, XEvent * event, XPointer ptr) -{ - return (event->type == Expose && event->xexpose.window == *(Window *) ptr); -} - -void -xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn) -{ - XEvent event; - Window window; - BoxRec Box; - - XSync(xnestDisplay, False); - - window = xnestWindow(pWin); - - while (XCheckIfEvent(xnestDisplay, &event, - xnestWindowExposurePredicate, (char *) &window)) { - - Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + event.xexpose.x; - Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + event.xexpose.y; - Box.x2 = Box.x1 + event.xexpose.width; - Box.y2 = Box.y1 + event.xexpose.height; - - event.xexpose.type = ProcessedExpose; - - if (RegionContainsRect(pRgn, &Box) != rgnIN) - XPutBackEvent(xnestDisplay, &event); - } - - miWindowExposures(pWin, pRgn); -} - -void -xnestSetShape(WindowPtr pWin, int kind) -{ - xnestShapeWindow(pWin); - miSetShape(pWin, kind); -} - -static Bool -xnestRegionEqual(RegionPtr pReg1, RegionPtr pReg2) -{ - BoxPtr pBox1, pBox2; - unsigned int n1, n2; - - if (pReg1 == pReg2) - return True; - - if (pReg1 == NullRegion || pReg2 == NullRegion) - return False; - - pBox1 = RegionRects(pReg1); - n1 = RegionNumRects(pReg1); - - pBox2 = RegionRects(pReg2); - n2 = RegionNumRects(pReg2); - - if (n1 != n2) - return False; - - if (pBox1 == pBox2) - return True; - - if (memcmp(pBox1, pBox2, n1 * sizeof(BoxRec))) - return False; - - return True; -} - -void -xnestShapeWindow(WindowPtr pWin) -{ - Region reg; - BoxPtr pBox; - XRectangle rect; - int i; - - if (!xnestRegionEqual(xnestWindowPriv(pWin)->bounding_shape, - wBoundingShape(pWin))) { - - if (wBoundingShape(pWin)) { - RegionCopy(xnestWindowPriv(pWin)->bounding_shape, - wBoundingShape(pWin)); - - reg = XCreateRegion(); - pBox = RegionRects(xnestWindowPriv(pWin)->bounding_shape); - for (i = 0; - i < RegionNumRects(xnestWindowPriv(pWin)->bounding_shape); - i++) { - rect.x = pBox[i].x1; - rect.y = pBox[i].y1; - rect.width = pBox[i].x2 - pBox[i].x1; - rect.height = pBox[i].y2 - pBox[i].y1; - XUnionRectWithRegion(&rect, reg, reg); - } - XShapeCombineRegion(xnestDisplay, xnestWindow(pWin), - ShapeBounding, 0, 0, reg, ShapeSet); - XDestroyRegion(reg); - } - else { - RegionEmpty(xnestWindowPriv(pWin)->bounding_shape); - - XShapeCombineMask(xnestDisplay, xnestWindow(pWin), - ShapeBounding, 0, 0, None, ShapeSet); - } - } - - if (!xnestRegionEqual(xnestWindowPriv(pWin)->clip_shape, wClipShape(pWin))) { - - if (wClipShape(pWin)) { - RegionCopy(xnestWindowPriv(pWin)->clip_shape, wClipShape(pWin)); - - reg = XCreateRegion(); - pBox = RegionRects(xnestWindowPriv(pWin)->clip_shape); - for (i = 0; - i < RegionNumRects(xnestWindowPriv(pWin)->clip_shape); i++) { - rect.x = pBox[i].x1; - rect.y = pBox[i].y1; - rect.width = pBox[i].x2 - pBox[i].x1; - rect.height = pBox[i].y2 - pBox[i].y1; - XUnionRectWithRegion(&rect, reg, reg); - } - XShapeCombineRegion(xnestDisplay, xnestWindow(pWin), - ShapeClip, 0, 0, reg, ShapeSet); - XDestroyRegion(reg); - } - else { - RegionEmpty(xnestWindowPriv(pWin)->clip_shape); - - XShapeCombineMask(xnestDisplay, xnestWindow(pWin), - ShapeClip, 0, 0, None, ShapeSet); - } - } -} diff --git a/hw/xnest/XNCursor.h b/hw/xnest/XNCursor.h deleted file mode 100644 index 1a3c6f44e..000000000 --- a/hw/xnest/XNCursor.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTCURSOR_H -#define XNESTCURSOR_H - -#include "mipointrst.h" - -typedef struct { - miPointerSpriteFuncPtr spriteFuncs; -} xnestCursorFuncRec, *xnestCursorFuncPtr; - -extern DevPrivateKeyRec xnestCursorScreenKeyRec; - -#define xnestCursorScreenKey (&xnestCursorScreenKeyRec) -extern xnestCursorFuncRec xnestCursorFuncs; - -typedef struct { - Cursor cursor; -} xnestPrivCursor; - -#define xnestGetCursorPriv(pCursor, pScreen) ((xnestPrivCursor *) \ - dixLookupScreenPrivate(&(pCursor)->devPrivates, CursorScreenKey, pScreen)) - -#define xnestSetCursorPriv(pCursor, pScreen, v) \ - dixSetScreenPrivate(&(pCursor)->devPrivates, CursorScreenKey, pScreen, v) - -#define xnestCursor(pCursor, pScreen) \ - (xnestGetCursorPriv(pCursor, pScreen)->cursor) - -Bool xnestRealizeCursor(DeviceIntPtr pDev, - ScreenPtr pScreen, CursorPtr pCursor); -Bool xnestUnrealizeCursor(DeviceIntPtr pDev, - ScreenPtr pScreen, CursorPtr pCursor); -void xnestRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor, Bool displayed); -void xnestSetCursor(DeviceIntPtr pDev, - ScreenPtr pScreen, CursorPtr pCursor, int x, int y); -void xnestMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y); -Bool xnestDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen); -void xnestDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen); -#endif /* XNESTCURSOR_H */ diff --git a/hw/xnest/XNFont.h b/hw/xnest/XNFont.h deleted file mode 100644 index a210b1790..000000000 --- a/hw/xnest/XNFont.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTFONT_H -#define XNESTFONT_H - -typedef struct { - XFontStruct *font_struct; -} xnestPrivFont; - -extern int xnestFontPrivateIndex; - -#define xnestFontPriv(pFont) \ - ((xnestPrivFont *)FontGetPrivate(pFont, xnestFontPrivateIndex)) - -#define xnestFontStruct(pFont) (xnestFontPriv(pFont)->font_struct) - -#define xnestFont(pFont) (xnestFontStruct(pFont)->fid) - -Bool xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont); -Bool xnestUnrealizeFont(ScreenPtr pScreen, FontPtr pFont); - -#endif /* XNESTFONT_H */ diff --git a/hw/xnest/XNGC.h b/hw/xnest/XNGC.h deleted file mode 100644 index 974173e50..000000000 --- a/hw/xnest/XNGC.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTGC_H -#define XNESTGC_H - -/* This file uses the GC definition form Xlib.h as XlibGC. */ - -typedef struct { - XlibGC gc; -} xnestPrivGC; - -extern DevPrivateKeyRec xnestGCPrivateKeyRec; - -#define xnestGCPrivateKey (&xnestGCPrivateKeyRec) - -#define xnestGCPriv(pGC) ((xnestPrivGC *) \ - dixLookupPrivate(&(pGC)->devPrivates, xnestGCPrivateKey)) - -#define xnestGC(pGC) (xnestGCPriv(pGC)->gc) - -Bool xnestCreateGC(GCPtr pGC); -void xnestValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable); -void xnestChangeGC(GCPtr pGC, unsigned long mask); -void xnestCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); -void xnestDestroyGC(GCPtr pGC); -void xnestChangeClip(GCPtr pGC, int type, void *pValue, int nRects); -void xnestDestroyClip(GCPtr pGC); -void xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc); - -#endif /* XNESTGC_H */ diff --git a/hw/xnest/XNPixmap.h b/hw/xnest/XNPixmap.h deleted file mode 100644 index b7b10e907..000000000 --- a/hw/xnest/XNPixmap.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTPIXMAP_H -#define XNESTPIXMAP_H - -extern DevPrivateKeyRec xnestPixmapPrivateKeyRec; - -#define xnestPixmapPrivateKey (&xnestPixmapPrivateKeyRec) - -typedef struct { - Pixmap pixmap; -} xnestPrivPixmap; - -#define xnestPixmapPriv(pPixmap) ((xnestPrivPixmap *) \ - dixLookupPrivate(&(pPixmap)->devPrivates, xnestPixmapPrivateKey)) - -#define xnestPixmap(pPixmap) (xnestPixmapPriv(pPixmap)->pixmap) - -#define xnestSharePixmap(pPixmap) ((pPixmap)->refcnt++) - -PixmapPtr xnestCreatePixmap(ScreenPtr pScreen, int width, int height, - int depth, unsigned usage_hint); -Bool xnestDestroyPixmap(PixmapPtr pPixmap); -Bool xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, - int bitsPerPixel, int devKind, void *pPixData); -RegionPtr xnestPixmapToRegion(PixmapPtr pPixmap); - -#endif /* XNESTPIXMAP_H */ diff --git a/hw/xnest/XNWindow.h b/hw/xnest/XNWindow.h deleted file mode 100644 index 6320ede5e..000000000 --- a/hw/xnest/XNWindow.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - -Copyright 1993 by Davor Matic - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation. Davor Matic makes no representations about -the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -*/ - -#ifndef XNESTWINDOW_H -#define XNESTWINDOW_H - -typedef struct { - Window window; - Window parent; - int x; - int y; - unsigned int width; - unsigned int height; - unsigned int border_width; - Window sibling_above; - RegionPtr bounding_shape; - RegionPtr clip_shape; -} xnestPrivWin; - -typedef struct { - WindowPtr pWin; - Window window; -} xnestWindowMatch; - -extern DevPrivateKeyRec xnestWindowPrivateKeyRec; - -#define xnestWindowPrivateKey (&xnestWindowPrivateKeyRec) - -#define xnestWindowPriv(pWin) ((xnestPrivWin *) \ - dixLookupPrivate(&(pWin)->devPrivates, xnestWindowPrivateKey)) - -#define xnestWindow(pWin) (xnestWindowPriv(pWin)->window) - -#define xnestWindowParent(pWin) \ - ((pWin)->parent ? \ - xnestWindow((pWin)->parent) : \ - xnestDefaultWindows[pWin->drawable.pScreen->myNum]) - -#define xnestWindowSiblingAbove(pWin) \ - ((pWin)->prevSib ? xnestWindow((pWin)->prevSib) : None) - -#define xnestWindowSiblingBelow(pWin) \ - ((pWin)->nextSib ? xnestWindow((pWin)->nextSib) : None) - -#define CWParent CWSibling -#define CWStackingOrder CWStackMode - -WindowPtr xnestWindowPtr(Window window); -Bool xnestCreateWindow(WindowPtr pWin); -Bool xnestDestroyWindow(WindowPtr pWin); -Bool xnestPositionWindow(WindowPtr pWin, int x, int y); -void xnestConfigureWindow(WindowPtr pWin, unsigned int mask); -Bool xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask); -Bool xnestRealizeWindow(WindowPtr pWin); -Bool xnestUnrealizeWindow(WindowPtr pWin); -void xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion); -void xnestClipNotify(WindowPtr pWin, int dx, int dy); -void xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn); -void xnestSetShape(WindowPtr pWin, int kind); -void xnestShapeWindow(WindowPtr pWin); - -#endif /* XNESTWINDOW_H */ diff --git a/hw/xnest/Xnest.h b/hw/xnest/Xnest.h deleted file mode 100644 index 37ea6e532..000000000 --- a/hw/xnest/Xnest.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - -Copyright (c) 1995 X Consortium - -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 or substantial portions of the Software. - -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 X CONSORTIUM 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. - -Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from the X Consortium. - -*/ - -/* -** Machines with a 64 bit library interface and a 32 bit server require -** name changes to protect the guilty. -*/ -#ifdef _XSERVER64 -#define _XSERVER64_tmp -#undef _XSERVER64 -typedef unsigned long XID64; -typedef unsigned long Mask64; -typedef unsigned long Atom64; -typedef unsigned long VisualID64; -typedef unsigned long Time64; - -#define XID XID64 -#define Mask Mask64 -#define Atom Atom64 -#define VisualID VisualID64 -#define Time Time64 -typedef XID Window64; -typedef XID Drawable64; -typedef XID Font64; -typedef XID Pixmap64; -typedef XID Cursor64; -typedef XID Colormap64; -typedef XID GContext64; -typedef XID KeySym64; - -#define Window Window64 -#define Drawable Drawable64 -#define Font Font64 -#define Pixmap Pixmap64 -#define Cursor Cursor64 -#define Colormap Colormap64 -#define GContext GContext64 -#define KeySym KeySym64 -#endif /*_XSERVER64*/ - -#define GC XlibGC -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/extensions/shape.h> -#undef GC - -#ifdef _XSERVER64_tmp -#define _XSERVER64 -#undef _XSERVER64_tmp -#undef XID -#undef Mask -#undef Atom -#undef VisualID -#undef Time -#undef Window -#undef Drawable -#undef Font -#undef Pixmap -#undef Cursor -#undef Colormap -#undef GContext -#undef KeySym -#endif /*_XSERVER64_tmp*/ diff --git a/hw/xnest/icon b/hw/xnest/icon deleted file mode 100644 index 725f1131a..000000000 --- a/hw/xnest/icon +++ /dev/null @@ -1,14 +0,0 @@ -#define icon_width 32 -#define icon_height 32 -static unsigned char icon_bits[] = { - 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60, - 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c, - 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03, - 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00, - 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00, - 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00, - 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00, - 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03, - 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f, - 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f, - 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff}; diff --git a/hw/xnest/man/Xnest.man b/hw/xnest/man/Xnest.man deleted file mode 100644 index 1057e2d72..000000000 --- a/hw/xnest/man/Xnest.man +++ /dev/null @@ -1,428 +0,0 @@ -.\" $Xorg: Xnest.man,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ -.\" Copyright (c) 1993, 1994 X Consortium -.\" -.\" 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 or substantial portions of the Software. -.\" -.\" 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 X CONSORTIUM 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. -.\" -.\" Except as contained in this notice, the name of the X Consortium shall -.\" not be used in advertising or otherwise to promote the sale, use or -.\" other dealings in this Software without prior written authorization -.\" from the X Consortium. -.\" -.\" $XFree86: xc/programs/Xserver/hw/xnest/Xnest.man,v 1.6 2001/01/27 18:21:00 dawes Exp $ -.\" -.TH Xnest @appmansuffix@ @xorgversion@ -.SH NAME -Xnest \- a nested X server -.SH SYNOPSIS -.B Xnest -[ -.I options -] -.SH DESCRIPTION -.B Xnest -is both an X client and an X server. -.B Xnest -is a client of the real server which manages windows and graphics requests on -its behalf. -.B Xnest -is a server to its own clients. -.B Xnest -manages windows and graphics requests on their behalf. -To these clients, -.B Xnest -appears to be a conventional server. -.SH OPTIONS -.B Xnest -supports all standard options of the sample server implementation. -For more details, please see -.BR Xserver (@appmansuffix@). -The following additional arguments are supported as well. -.TP -.BI "\-display " string -This option specifies the display name of the real server that -.B Xnest -should try to connect to. -If it is not provided on the command line, -.B Xnest -will read the -.I DISPLAY -environment variable in order to find out this information. -.TP -.B \-sync -This option tells -.B Xnest -to synchronize its window and graphics operations with the real server. -This is a useful option for debugging, but it will slow down -.BR Xnest 's -performance considerably. -It should not be used unless absolutely necessary. -.TP -.B \-full -This option tells -.B Xnest -to utilize full regeneration of real server objects and reopen a new connection -to the real server each time the nested server regenerates. -The sample server implementation regenerates all objects in the server when the -last client of this server terminates. -When this happens, -.B Xnest -by default maintains the same top-level window and the same real server -connection in each new generation. -If the user selects full regeneration, even the top-level window and the -connection to the real server will be regenerated for each server generation. -.TP -.BI "\-class " string -This option specifies the default visual class of the nested server. -It is similar to the -.B \-cc -option from the set of standard options except that it will accept a string -rather than a number for the visual class specification. -The -.I string -must be one of the following six values: -.BR StaticGray , -.BR GrayScale , -.BR StaticColor , -.BR PseudoColor , -.BR TrueColor , -or -.BR DirectColor . -If both the -.B \-class -and -.B \-cc -options are specified, the last instance of either option takes precedence. -The class of the default visual of the nested server need not be the same as the -class of the default visual of the real server, but it must be supported by the -real server. -Use -.BR xdpyinfo (@appmansuffix@) -to obtain a list of supported visual classes on the real server before starting -.BR Xnest . -If the user chooses a static class, all the colors in the default color map will -be preallocated. -If the user chooses a dynamic class, colors in the default color map will be -available to individual clients for allocation. -.TP -.BI "\-depth " int -This option specifies the default visual depth of the nested server. -The depth of the default visual of the nested server need not be the same as the -depth of the default visual of the real server, but it must be supported by the -real server. -Use -.BR xdpyinfo (@appmansuffix@) -to obtain a list of supported visual depths on the real server before starting -.BR Xnest . -.TP -.B \-sss -This option tells -.B Xnest -to use the software screen saver. -By default, -.B Xnest -will use the screen saver that corresponds to the hardware screen saver in the -real server. -Of course, even this screen saver is software-generated since -.B Xnest -does not control any actual hardware. -However, it is treated as a hardware screen saver within the sample server code. -.TP -.B \-geometry \fIW\fBx\fIH\fB+\fIX\fB+\fIY\fP -This option specifies the geometry parameters for the top-level -.B Xnest -window. -See \(lqGEOMETRY SPECIFICATIONS\(rq in -.BR X (@miscmansuffix@) -for a discussion of this option's syntax. -This window corresponds to the root window of the nested server. -The width -.I W -and height -.I H -specified with this option will be the maximum width and height of each -top-level -.B Xnest -window. -.B Xnest -will allow the user to make any top-level window smaller, but it will not -actually change the size of the nested server root window. -.B Xnest -does not yet support the RANDR extension for resizing, rotation, and reflection -of the root window. -If this option is not specified, -.B Xnest -will choose -.I W -and -.I H -to be 3/4ths the dimensions of the root window of the real server. -.TP -.BI "\-bw " int -This option specifies the border width of the top-level -.B Xnest -window. -The integer parameter -.I int -must be positive. -The default border width is 1. -.TP -.BI "\-name " string -This option specifies the name of the top-level -.B Xnest -window as -.IR string . -The default value is the program name. -.TP -.BI "\-scrns " int -This option specifies the number of screens to create in the nested server. -For each screen, -.B Xnest -will create a separate top-level window. -Each screen is referenced by the number after the dot in the client display name -specification. -For example, -.B xterm \-display :1.1 -will open an -.BR xterm (@appmansuffix@) -client in the nested server with the display number -.B :1 -on the second screen. -The number of screens is limited by the hard-coded constant in the server sample -code, which is usually 3. -.TP -.B \-install -This option tells -.B Xnest -to do its own color map installation by bypassing the real window manager. -For it to work properly, the user will probably have to temporarily quit the -real window manager. -By default, -.B Xnest -will keep the nested client window whose color map should be installed in the -real server in the -.I WM_COLORMAP_WINDOWS -property of the top-level -.B Xnest -window. -If this color map is of the same visual type as the root window of the nested -server, -.B Xnest -will associate this color map with the top-level -.B Xnest -window as well. -Since this does not have to be the case, window managers should look primarily -at the -.I WM_COLORMAP_WINDOWS -property rather than the color map associated with the top-level -.B Xnest -window. -.\" Is the following still true? This sentence is several years old. -Unfortunately, window managers are not very good at doing that yet so this -option might come in handy. -.TP -.BI "\-parent " window_id -This option tells -.B Xnest -to use -.I window_id -as the root window instead of creating a window. -.\" XRX is dead, dead, dead. -.\" This option is used by the xrx xnestplugin. -.SH "EXTENDED DESCRIPTION" -Starting up -.B Xnest -is just as simple as starting up -.BR xclock (@appmansuffix@) -from a terminal emulator. -If a user wishes to run -.B Xnest -on the same -workstation as the real server, it is important that the nested server is given -its own listening socket address. -Therefore, if there is a server already running on the user's workstation, -.B Xnest -will have to be started up with a new display number. -Since there is usually no more than one server running on a workstation, -specifying -.RB \(oq "Xnest :1" \(cq -on the command line will be sufficient for most users. -For each server running on the workstation, the display number needs to be -incremented by one. -Thus, if you wish to start another -.BR Xnest , -you will need to type -.RB \(oq "Xnest :2" \(cq -on the command line. -.PP -To run clients in the nested server, each client needs to be given the same -display number as the nested server. -For example, -.RB \(oq "xterm \-display :1" \(cq -will start up an -.B xterm -process in the first nested server -and -.RB \(oq "xterm \-display :2" \(cq -will start an -.B xterm -in the second nested server from the example above. -Additional clients can be started from these -.BR xterm s -in each nested server. -.SS "Xnest as a client" -.B Xnest -behaves and looks to the real server and other real clients as another real -client. -It is a rather demanding client, however, since almost any window or graphics -request from a nested client will result in a window or graphics request from -.B Xnest -to the real server. -Therefore, it is desirable that -.B Xnest -and the real server are on a local network, or even better, on the same machine. -.B Xnest -assumes that the real server supports the SHAPE extension. -There is no way to turn off this assumption dynamically. -.B Xnest -can be compiled without the SHAPE extension built in, in which case the real -server need not support it. -Dynamic SHAPE extension selection support may be considered in further -development of -.BR Xnest . -.PP -Since -.B Xnest -need not use the same default visual as the the real server, the top-level -window of the -.B Xnest -client always has its own color map. -This implies that other windows' colors will not be displayed properly while the -keyboard or pointer focus is in the -.B Xnest -window, unless the real server has support for more than one installed color map -at any time. -The color map associated with the top window of the -.B Xnest -client need not be the appropriate color map that the nested server wants -installed in the real server. -In the case that a nested client attempts to install a color map of a different -visual from the default visual of the nested server, -.B Xnest -will put the top window of this nested client and all other top windows of the -nested clients that use the same color map into the -.I WM_COLORMAP_WINDOWS -property of the top-level -.B Xnest -window on the real server. -Thus, it is important that the real window manager that manages the -.B Xnest -top-level window looks at the -.I WM_COLORMAP_WINDOWS -property rather than the color map associated with the top-level -.B Xnest -window. -Since most window managers don't yet appear to implement this convention -properly, -.B Xnest -can optionally do direct installation of color maps into the real server -bypassing the real window manager. -If the user chooses this option, it is usually necessary to temporarily disable -the real window manager since it will interfere with the -.B Xnest -scheme of color map installation. -.PP -Keyboard and pointer control procedures of the nested server change the keyboard -and pointer control parameters of the real server. -Therefore, after -.B Xnest -is started up, it will change the keyboard and pointer controls of the real -server to its own internal defaults. -.SS "Xnest as a server" -.B Xnest -as a server looks exactly like a real server to its own clients. -For the clients, there is no way of telling if they are running on a real or a -nested server. -.PP -As already mentioned, -.B Xnest -is a very user-friendly server when it comes to customization. -.B Xnest -will pick up a number of command-line arguments that can configure its default -visual class and depth, number of screens, etc. -.PP -The only apparent intricacy from the users' perspective about using -.B Xnest -as a server is the selection of fonts. -.B Xnest -manages fonts by loading them locally and then passing the font name to the real -server and asking it to load that font remotely. -This approach avoids the overload of sending the glyph bits across the network -for every text operation, although it is really a bug. -The consequence of this approach is that the user will have to worry about two -different font paths \(em a local one for the nested server and a remote one for -the real server \(em since -.B Xnest -does not propagate its font path to the real server. -The reason for this is because real and nested servers need not run on the same -file system which makes the two font paths mutually incompatible. -Thus, if there is a font in the local font path of the nested server, there is -no guarantee that this font exists in the remote font path of the real server. -The -.BR xlsfonts (@appmansuffix@) -client, if run on the nested server, will list fonts in the local font path and, -if run on the real server, will list fonts in the remote font path. -Before a font can be successfully opened by the nested server, it has to exist -in local and remote font paths. -It is the users' responsibility to make sure that this is the case. -.SH "FUTURE DIRECTIONS" -Make dynamic the requirement for the SHAPE extension in the real server, rather -than having to recompile -.B Xnest -to turn this requirement on and off. -.PP -Perhaps there should be a command-line option to tell -.B Xnest -to inherit the keyboard and pointer control parameters from the real server -rather than imposing its own. -.PP -.B Xnest -should read a customization input file to provide even greater freedom and -simplicity in selecting the desired layout. -.PP -There is no support for backing store and save unders, but this should also be -considered. -.PP -.\" Is the following still true now that client-side font rendering is -.\" considered the way to go? -The proper implementation of fonts should be moved into the -.I os -layer. -.SH BUGS -Doesn't run well on servers supporting different visual depths. -.PP -Still crashes randomly. -.PP -Probably has some memory leaks. -.SH AUTHOR -Davor Matic, MIT X Consortium -.SH "SEE ALSO" -.BR Xserver (@appmansuffix@), -.BR xdpyinfo (@appmansuffix@), -.BR X (@miscmansuffix@) diff --git a/hw/xnest/meson.build b/hw/xnest/meson.build deleted file mode 100644 index 37ac5a691..000000000 --- a/hw/xnest/meson.build +++ /dev/null @@ -1,44 +0,0 @@ -srcs = [ - 'Args.c', - 'Color.c', - 'Cursor.c', - 'Display.c', - 'Events.c', - 'Font.c', - 'GC.c', - 'GCOps.c', - 'Handlers.c', - 'Init.c', - 'Keyboard.c', - 'Pixmap.c', - 'Pointer.c', - 'Screen.c', - 'Visual.c', - 'Window.c', - '../../mi/miinitext.c', - '../../mi/miinitext.h', -] - -executable( - 'Xnest', - srcs, - include_directories: inc, - dependencies: [ - common_dep, - xnest_dep, - ], - link_with: [ - libxserver_main, - libxserver, - libxserver_xi_stubs, - libxserver_xkb_stubs, - ], - c_args: '-DHAVE_XNEST_CONFIG_H', - install: true, -) - -install_man(configure_file( - input: 'man/Xnest.man', - output: 'Xnest.1', - configuration: manpage_config, -)) diff --git a/hw/xnest/screensaver b/hw/xnest/screensaver deleted file mode 100644 index 4940f2650..000000000 --- a/hw/xnest/screensaver +++ /dev/null @@ -1,686 +0,0 @@ -#define screensaver_width 256 -#define screensaver_height 256 -static unsigned char screensaver_bits[] = { - 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa, - 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80, - 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50, - 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00, - 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02, - 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a, - 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, - 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11, - 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00, - 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2, - 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01, - 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45, - 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, - 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a, - 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00, - 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01, - 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00, - 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00, - 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a, - 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a, - 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, - 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00, - 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80, - 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00, - 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00, - 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00, - 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01, - 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80, - 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00, - 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, - 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, - 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40, - 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01, - 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8, - 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00, - 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, - 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14, - 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40, - 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00, - 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02, - 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04, - 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54, - 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02, - 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa, - 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20, - 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00, - 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41, - 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08, - 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a, - 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02, - 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14, - 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04, - 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10, - 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00, - 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88, - 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04, - 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01, - 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00, - 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80, - 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20, - 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22, - 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00, - 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45, - 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08, - 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14, - 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40, - 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82, - 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08, - 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54, - 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41, - 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0, - 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08, - 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14, - 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00, - 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44, - 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a, - 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa, - 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00, - 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54, - 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40, - 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82, - 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00, - 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82, - 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44, - 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00, - 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00, - 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a, - 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, - 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00, - 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01, - 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, - 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82, - 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00, - 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01, - 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44, - 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08, - 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50, - 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, - 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50, - 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, - 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00, - 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51, - 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50, - 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82, - 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00, - 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00, - 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55, - 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0, - 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0, - 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88, - 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51, - 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14, - 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00, - 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00, - 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08, - 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10, - 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40, - 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44, - 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00, - 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a, - 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00, - 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00, - 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15, - 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88, - 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0, - 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44, - 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45, - 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0, - 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00, - 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40, - 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, - 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, - 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, - 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55, - 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa, - 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15, - 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80, - 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2, - 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54, - 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01, - 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02, - 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80, - 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2, - 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40, - 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04, - 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10, - 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02, - 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02, - 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01, - 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04, - 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11, - 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20, - 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28, - 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22, - 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01, - 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00, - 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40, - 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41, - 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80, - 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50, - 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28, - 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a, - 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a, - 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54, - 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40, - 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0, - 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0, - 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80, - 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55, - 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55, - 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55, - 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88, - 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2, - 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40, - 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41, - 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a, - 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, - 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0, - 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15, - 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40, - 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00, - 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80, - 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8, - 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14, - 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, - 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40, - 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00, - 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0, - 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00, - 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50, - 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51, - 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a, - 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82, - 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0, - 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55, - 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51, - 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a, - 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08, - 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8, - 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05, - 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55, - 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50, - 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00, - 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28, - 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50, - 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40, - 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a, - 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, - 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00, - 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0, - 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00, - 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08, - 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20, - 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04, - 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04, - 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14, - 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00, - 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00, - 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00, - 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50, - 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04, - 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82, - 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa, - 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, - 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00, - 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05, - 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08, - 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02, - 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01, - 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54, - 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80, - 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05, - 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, - 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a, - 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00, - 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05, - 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, - 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a, - 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04, - 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55, - 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41, - 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00, - 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20, - 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14, - 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04, - 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa, - 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88, - 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22, - 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40, - 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05, - 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15, - 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02, - 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08, - 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01, - 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11, - 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, - 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80, - 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28, - 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20, - 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04, - 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08, - 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, - 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22, - 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00, - 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, - 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, - 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04, - 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41, - 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44, - 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08, - 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80, - 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a, - 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10, - 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10, - 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00, - 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82, - 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02, - 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00, - 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10, - 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50, - 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00, - 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00, - 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44, - 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40, - 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01, - 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00, - 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08, - 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0, - 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00, - 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00, - 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82, - 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22, - 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa, - 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05, - 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50, - 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14, - 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82, - 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08, - 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0, - 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, - 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41, - 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa, - 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa, - 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a, - 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11, - 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10, - 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04, - 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80, - 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88, - 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55, - 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55, - 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40, - 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08, - 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08, - 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02, - 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45, - 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40, - 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a, - 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa, - 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, - 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10, - 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04, - 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88, - 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10, - 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a, - 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0, - 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/hw/xnest/xnest-config.h b/hw/xnest/xnest-config.h deleted file mode 100644 index ef48c580f..000000000 --- a/hw/xnest/xnest-config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2005 Red Hat Inc., Raleigh, North Carolina. - * - * All Rights Reserved. - * - * 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 on 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 (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * 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 - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * 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 XNEST_CONFIG_H -#define XNEST_CONFIG_H - -#include <dix-config.h> -#include <xkb-config.h> - -#undef MITSHM - -#endif /* XNEST_CONFIG_H */ diff --git a/meson.build b/meson.build index 8a77db6df..4fb5cbd6d 100644 --- a/meson.build +++ b/meson.build @@ -228,28 +228,6 @@ if (host_machine.system() != 'darwin' and endif endif -build_xnest = false -if (host_machine.system() != 'darwin' and - host_machine.system() != 'windows') - if get_option('xnest') != 'false' - xnest_required = get_option('xnest') == 'true' - - xnest_dep = [ - dependency('xext', version: xext_req, required: xnest_required), - dependency('x11', required: xnest_required), - dependency('xau', required: xnest_required), - ] - - build_xnest = true - # check for all the deps being found, to handle 'auto' mode. - foreach d: xnest_dep - if not d.found() - build_xnest = false - endif - endforeach - endif -endif - build_xwin = false if get_option('xwin') == 'auto' if (host_machine.system() == 'cygwin' or diff --git a/meson_options.txt b/meson_options.txt index d0e771edb..c3a894423 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -8,8 +8,6 @@ option('glamor', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto description: 'Enable glamor (default yes for Xorg/Xwayland builds)') option('xwayland_eglstream', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Enable EGLStream support for glamor on Xwayland') -option('xnest', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', - description: 'Enable Xnest nested X server') option('xvfb', type: 'boolean', value: true, description: 'Enable Xvfb X server') option('xwin', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', |