tizen 2.4 release
[framework/uifw/xorg/server/xorg-server.git] / hw / xfree86 / ramdac / xf86Cursor.h
1
2 #ifndef _XF86CURSOR_H
3 #define _XF86CURSOR_H
4
5 #include "xf86str.h"
6 #include "mipointer.h"
7
8 typedef struct _xf86CursorInfoRec {
9     ScrnInfoPtr pScrn;
10     int Flags;
11     int MaxWidth;
12     int MaxHeight;
13     void (*SetCursorColors) (ScrnInfoPtr pScrn, int bg, int fg);
14     void (*SetCursorPosition) (ScrnInfoPtr pScrn, int x, int y);
15     void (*LoadCursorImage) (ScrnInfoPtr pScrn, unsigned char *bits);
16     Bool (*LoadCursorImageCheck) (ScrnInfoPtr pScrn, unsigned char *bits);
17     void (*HideCursor) (ScrnInfoPtr pScrn);
18     void (*ShowCursor) (ScrnInfoPtr pScrn);
19     unsigned char *(*RealizeCursor) (struct _xf86CursorInfoRec *, CursorPtr);
20     Bool (*UseHWCursor) (ScreenPtr, CursorPtr);
21
22 #ifdef ARGB_CURSOR
23     Bool (*UseHWCursorARGB) (ScreenPtr, CursorPtr);
24     void (*LoadCursorARGB) (ScrnInfoPtr, CursorPtr);
25     Bool (*LoadCursorARGBCheck) (ScrnInfoPtr, CursorPtr);
26 #endif
27
28 } xf86CursorInfoRec, *xf86CursorInfoPtr;
29
30 static inline Bool
31 xf86DriverHasLoadCursorImage(xf86CursorInfoPtr infoPtr)
32 {
33     return infoPtr->LoadCursorImageCheck || infoPtr->LoadCursorImage;
34 }
35
36 static inline Bool
37 xf86DriverLoadCursorImage(xf86CursorInfoPtr infoPtr, unsigned char *bits)
38 {
39     if(infoPtr->LoadCursorImageCheck)
40         return infoPtr->LoadCursorImageCheck(infoPtr->pScrn, bits);
41     infoPtr->LoadCursorImage(infoPtr->pScrn, bits);
42     return TRUE;
43 }
44
45 static inline Bool
46 xf86DriverHasLoadCursorARGB(xf86CursorInfoPtr infoPtr)
47 {
48     return infoPtr->LoadCursorARGBCheck || infoPtr->LoadCursorARGB;
49 }
50
51 static inline Bool
52 xf86DriverLoadCursorARGB(xf86CursorInfoPtr infoPtr, CursorPtr pCursor)
53 {
54     if(infoPtr->LoadCursorARGBCheck)
55         return infoPtr->LoadCursorARGBCheck(infoPtr->pScrn, pCursor);
56     infoPtr->LoadCursorARGB(infoPtr->pScrn, pCursor);
57     return TRUE;
58 }
59
60 extern _X_EXPORT Bool xf86InitCursor(ScreenPtr pScreen,
61                                      xf86CursorInfoPtr infoPtr);
62 extern _X_EXPORT xf86CursorInfoPtr xf86CreateCursorInfoRec(void);
63 extern _X_EXPORT void xf86DestroyCursorInfoRec(xf86CursorInfoPtr);
64 extern _X_EXPORT void xf86ForceHWCursor(ScreenPtr pScreen, Bool on);
65
66 #define HARDWARE_CURSOR_INVERT_MASK                     0x00000001
67 #define HARDWARE_CURSOR_AND_SOURCE_WITH_MASK            0x00000002
68 #define HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK            0x00000004
69 #define HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED     0x00000008
70 #define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1        0x00000010
71 #define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8        0x00000020
72 #define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16       0x00000040
73 #define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32       0x00000080
74 #define HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64       0x00000100
75 #define HARDWARE_CURSOR_TRUECOLOR_AT_8BPP               0x00000200
76 #define HARDWARE_CURSOR_BIT_ORDER_MSBFIRST              0x00000400
77 #define HARDWARE_CURSOR_NIBBLE_SWAPPED                  0x00000800
78 #define HARDWARE_CURSOR_SHOW_TRANSPARENT                0x00001000
79 #define HARDWARE_CURSOR_UPDATE_UNHIDDEN                 0x00002000
80 #ifdef ARGB_CURSOR
81 #define HARDWARE_CURSOR_ARGB                            0x00004000
82 #endif
83
84 #endif                          /* _XF86CURSOR_H */