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