4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1989, 1998 The Open Group
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncthe above copyright notice appear in all copies and that both that
4c221b0da1816acf2ca302b10092df059484468dvboxsynccopyright notice and this permission notice appear in supporting
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncThe above copyright notice and this permission notice shall be included in
4c221b0da1816acf2ca302b10092df059484468dvboxsyncall copies or substantial portions of the Software.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4c221b0da1816acf2ca302b10092df059484468dvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
4c221b0da1816acf2ca302b10092df059484468dvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
4c221b0da1816acf2ca302b10092df059484468dvboxsyncin this Software without prior written authorization from The Open Group.
4c221b0da1816acf2ca302b10092df059484468dvboxsync*/
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef MIPOINTER_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MIPOINTER_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "cursor.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "input.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "privates.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _miPointerSpriteFuncRec {
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool (*RealizeCursor)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CursorPtr /* pCurs */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool (*UnrealizeCursor)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CursorPtr /* pCurs */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*SetCursor)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CursorPtr /* pCurs */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* x */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* y */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*MoveCursor)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* x */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* y */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool (*DeviceCursorInitialize)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*DeviceCursorCleanup)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync} miPointerSpriteFuncRec, *miPointerSpriteFuncPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _miPointerScreenFuncRec {
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool (*CursorOffScreen)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr* /* ppScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int* /* px */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int* /* py */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*CrossScreen)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* entering */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*WarpCursor)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /*pDev*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* x */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /* y */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*EnqueueEvent)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync InternalEvent* /* event */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (*NewEventScreen)(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /* pDev */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /* pScr */,
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool /* fromDIX */
4c221b0da1816acf2ca302b10092df059484468dvboxsync );
4c221b0da1816acf2ca302b10092df059484468dvboxsync} miPointerScreenFuncRec, *miPointerScreenFuncPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool miDCInitialize(
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /*pScreen*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync miPointerScreenFuncPtr /*screenFuncs*/
4c221b0da1816acf2ca302b10092df059484468dvboxsync);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool miPointerInitialize(
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /*pScreen*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync miPointerSpriteFuncPtr /*spriteFuncs*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync miPointerScreenFuncPtr /*screenFuncs*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool /*waitForUpdate*/
4c221b0da1816acf2ca302b10092df059484468dvboxsync);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void miPointerWarpCursor(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr /*pDev*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr /*pScreen*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /*x*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /*y*/
4c221b0da1816acf2ca302b10092df059484468dvboxsync);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* Deprecated in favour of miPointerGetScreen. */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT ScreenPtr miPointerCurrentScreen(
4c221b0da1816acf2ca302b10092df059484468dvboxsync void
4c221b0da1816acf2ca302b10092df059484468dvboxsync) _X_DEPRECATED;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT ScreenPtr miPointerGetScreen(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr pDev);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void miPointerSetScreen(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr pDev,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int screen_num,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int x,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int y);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* Returns the current cursor position. */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void miPointerGetPosition(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr pDev,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int *x,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int *y);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* Moves the cursor to the specified position. May clip the co-ordinates:
4c221b0da1816acf2ca302b10092df059484468dvboxsync * x and y are modified in-place. */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void miPointerSetPosition(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr pDev,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int *x,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int *y);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void miPointerUpdateSprite(
4c221b0da1816acf2ca302b10092df059484468dvboxsync DeviceIntPtr pDev);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/* Sets whether the sprite should be updated immediately on pointer moves */
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool miPointerSetWaitForUpdate(
4c221b0da1816acf2ca302b10092df059484468dvboxsync ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool wait);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT DevPrivateKeyRec miPointerPrivKeyRec;
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miPointerPrivKey (&miPointerPrivKeyRec)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT DevPrivateKeyRec miPointerScreenKeyRec;
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miPointerScreenKey (&miPointerScreenKeyRec)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif /* MIPOINTER_H */