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