Drop Xnest DDX
This commit is contained in:
parent
6cae4b397d
commit
69cc6a6caa
|
@ -72,7 +72,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 -Dhal=false -Dudev=false -Dpciaccess=false -Dint10=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 -Dhal=false -Dudev=false -Dpciaccess=false -Dint10=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"'
|
||||
|
|
|
@ -6,10 +6,6 @@ if get_option('xvfb')
|
|||
subdir('vfb')
|
||||
endif
|
||||
|
||||
if build_xnest
|
||||
subdir('xnest')
|
||||
endif
|
||||
|
||||
if build_xorg
|
||||
subdir('xfree86')
|
||||
endif
|
||||
|
|
1
hw/xnest/.gitignore
vendored
1
hw/xnest/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
Xnest
|
192
hw/xnest/Args.c
192
hw/xnest/Args.c
|
@ -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");
|
||||
}
|
|
@ -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 */
|
490
hw/xnest/Color.c
490
hw/xnest/Color.c
|
@ -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;
|
||||
}
|
|
@ -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 */
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
295
hw/xnest/GC.c
295
hw/xnest/GC.c
|
@ -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);
|
||||
}
|
||||
}
|
339
hw/xnest/GCOps.c
339
hw/xnest/GCOps.c
|
@ -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");
|
||||
}
|
|
@ -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 */
|
|
@ -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();
|
||||
}
|
|
@ -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 */
|
170
hw/xnest/Init.c
170
hw/xnest/Init.c
|
@ -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
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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*/
|
|
@ -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};
|
|
@ -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@)
|
|
@ -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,
|
||||
))
|
|
@ -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};
|
|
@ -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 */
|
22
meson.build
22
meson.build
|
@ -224,28 +224,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
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue
Block a user