105b261ecSmrg
205b261ecSmrg#ifndef _XF86CURSOR_H
305b261ecSmrg#define _XF86CURSOR_H
405b261ecSmrg
505b261ecSmrg#include "xf86str.h"
605b261ecSmrg#include "mipointer.h"
705b261ecSmrg
805b261ecSmrgtypedef struct _xf86CursorInfoRec {
905b261ecSmrg    ScrnInfoPtr pScrn;
1005b261ecSmrg    int Flags;
1105b261ecSmrg    int MaxWidth;
1205b261ecSmrg    int MaxHeight;
1335c4bbdfSmrg    void (*SetCursorColors) (ScrnInfoPtr pScrn, int bg, int fg);
1435c4bbdfSmrg    void (*SetCursorPosition) (ScrnInfoPtr pScrn, int x, int y);
1535c4bbdfSmrg    void (*LoadCursorImage) (ScrnInfoPtr pScrn, unsigned char *bits);
1635c4bbdfSmrg    Bool (*LoadCursorImageCheck) (ScrnInfoPtr pScrn, unsigned char *bits);
1735c4bbdfSmrg    void (*HideCursor) (ScrnInfoPtr pScrn);
1835c4bbdfSmrg    void (*ShowCursor) (ScrnInfoPtr pScrn);
191b5d61b8Smrg    Bool (*ShowCursorCheck) (ScrnInfoPtr pScrn);
2035c4bbdfSmrg    unsigned char *(*RealizeCursor) (struct _xf86CursorInfoRec *, CursorPtr);
2135c4bbdfSmrg    Bool (*UseHWCursor) (ScreenPtr, CursorPtr);
2235c4bbdfSmrg
2305b261ecSmrg    Bool (*UseHWCursorARGB) (ScreenPtr, CursorPtr);
2405b261ecSmrg    void (*LoadCursorARGB) (ScrnInfoPtr, CursorPtr);
2535c4bbdfSmrg    Bool (*LoadCursorARGBCheck) (ScrnInfoPtr, CursorPtr);
2605b261ecSmrg
2705b261ecSmrg} xf86CursorInfoRec, *xf86CursorInfoPtr;
2805b261ecSmrg
2935c4bbdfSmrgstatic inline Bool
3035c4bbdfSmrgxf86DriverHasLoadCursorImage(xf86CursorInfoPtr infoPtr)
3135c4bbdfSmrg{
3235c4bbdfSmrg    return infoPtr->LoadCursorImageCheck || infoPtr->LoadCursorImage;
3335c4bbdfSmrg}
3435c4bbdfSmrg
3535c4bbdfSmrgstatic inline Bool
3635c4bbdfSmrgxf86DriverLoadCursorImage(xf86CursorInfoPtr infoPtr, unsigned char *bits)
3735c4bbdfSmrg{
3835c4bbdfSmrg    if(infoPtr->LoadCursorImageCheck)
3935c4bbdfSmrg        return infoPtr->LoadCursorImageCheck(infoPtr->pScrn, bits);
4035c4bbdfSmrg    infoPtr->LoadCursorImage(infoPtr->pScrn, bits);
4135c4bbdfSmrg    return TRUE;
4235c4bbdfSmrg}
4335c4bbdfSmrg
441b5d61b8Smrgstatic inline Bool
451b5d61b8Smrgxf86DriverHasShowCursor(xf86CursorInfoPtr infoPtr)
461b5d61b8Smrg{
471b5d61b8Smrg    return infoPtr->ShowCursorCheck || infoPtr->ShowCursor;
481b5d61b8Smrg}
491b5d61b8Smrg
501b5d61b8Smrgstatic inline Bool
511b5d61b8Smrgxf86DriverShowCursor(xf86CursorInfoPtr infoPtr)
521b5d61b8Smrg{
531b5d61b8Smrg    if(infoPtr->ShowCursorCheck)
541b5d61b8Smrg        return infoPtr->ShowCursorCheck(infoPtr->pScrn);
551b5d61b8Smrg    infoPtr->ShowCursor(infoPtr->pScrn);
561b5d61b8Smrg    return TRUE;
571b5d61b8Smrg}
581b5d61b8Smrg
5935c4bbdfSmrgstatic inline Bool
6035c4bbdfSmrgxf86DriverHasLoadCursorARGB(xf86CursorInfoPtr infoPtr)
6135c4bbdfSmrg{
6235c4bbdfSmrg    return infoPtr->LoadCursorARGBCheck || infoPtr->LoadCursorARGB;
6335c4bbdfSmrg}
6435c4bbdfSmrg
6535c4bbdfSmrgstatic inline Bool
6635c4bbdfSmrgxf86DriverLoadCursorARGB(xf86CursorInfoPtr infoPtr, CursorPtr pCursor)
6735c4bbdfSmrg{
6835c4bbdfSmrg    if(infoPtr->LoadCursorARGBCheck)
6935c4bbdfSmrg        return infoPtr->LoadCursorARGBCheck(infoPtr->pScrn, pCursor);
7035c4bbdfSmrg    infoPtr->LoadCursorARGB(infoPtr->pScrn, pCursor);
7135c4bbdfSmrg    return TRUE;
7235c4bbdfSmrg}
7335c4bbdfSmrg
7435c4bbdfSmrgextern _X_EXPORT Bool xf86InitCursor(ScreenPtr pScreen,
7535c4bbdfSmrg                                     xf86CursorInfoPtr infoPtr);
766747b715Smrgextern _X_EXPORT xf86CursorInfoPtr xf86CreateCursorInfoRec(void);
776747b715Smrgextern _X_EXPORT void xf86DestroyCursorInfoRec(xf86CursorInfoPtr);
7835c4bbdfSmrgextern _X_EXPORT void xf86CursorResetCursor(ScreenPtr pScreen);
7935c4bbdfSmrgextern _X_EXPORT void xf86ForceHWCursor(ScreenPtr pScreen, Bool on);
801b5d61b8Smrgextern _X_EXPORT CursorPtr xf86CurrentCursor(ScreenPtr pScreen);
8105b261ecSmrg
8205b261ecSmrg#define HARDWARE_CURSOR_INVERT_MASK 			0x00000001
8305b261ecSmrg#define HARDWARE_CURSOR_AND_SOURCE_WITH_MASK		0x00000002
8405b261ecSmrg#define HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK		0x00000004
8505b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED	0x00000008
8605b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1	0x00000010
8705b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8	0x00000020
8805b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16	0x00000040
8905b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32	0x00000080
9005b261ecSmrg#define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64	0x00000100
9105b261ecSmrg#define HARDWARE_CURSOR_TRUECOLOR_AT_8BPP		0x00000200
9205b261ecSmrg#define HARDWARE_CURSOR_BIT_ORDER_MSBFIRST		0x00000400
9305b261ecSmrg#define HARDWARE_CURSOR_NIBBLE_SWAPPED			0x00000800
9405b261ecSmrg#define HARDWARE_CURSOR_SHOW_TRANSPARENT		0x00001000
9505b261ecSmrg#define HARDWARE_CURSOR_UPDATE_UNHIDDEN			0x00002000
9605b261ecSmrg#define HARDWARE_CURSOR_ARGB				0x00004000
9705b261ecSmrg
9835c4bbdfSmrg#endif                          /* _XF86CURSOR_H */
99