Doxygen Source Code Documentation
glut_cursor.c File Reference
#include <GL/glut.h>
#include "glutint.h"
#include <X11/Xatom.h>
#include <X11/cursorfont.h>
Go to the source code of this file.
Data Structures | |
struct | _CursorTable |
Typedefs | |
typedef _CursorTable | CursorTable |
Functions | |
Cursor | getFullCrosshairCursor (void) |
Cursor | makeBlankCursor (void) |
void | glutSetCursor (int cursor) |
Variables | |
CursorTable | cursorTable [] |
Cursor | blankCursor = None |
Cursor | fullCrosshairCusor = None |
Typedef Documentation
|
|
Function Documentation
|
Definition at line 45 of file glut_cursor.c. References fullCrosshairCusor, and left. Referenced by glutSetCursor().
00046 { 00047 Cursor cursor; 00048 Atom crosshairAtom, actualType; 00049 int rc, actualFormat; 00050 unsigned long n, left; 00051 unsigned long *value; 00052 00053 if (fullCrosshairCusor == None) { 00054 crosshairAtom = XInternAtom(__glutDisplay, 00055 "_SGI_CROSSHAIR_CURSOR", True); 00056 if (crosshairAtom != None) { 00057 value = 0; /* Make compiler happy. */ 00058 rc = XGetWindowProperty(__glutDisplay, __glutRoot, 00059 crosshairAtom, 0, 1, False, XA_CURSOR, &actualType, 00060 &actualFormat, &n, &left, (unsigned char **) &value); 00061 if (rc == Success && actualFormat == 32 && n >= 1) { 00062 cursor = value[0]; 00063 XFree(value); 00064 return cursor; 00065 } 00066 } 00067 } 00068 return XCreateFontCursor(__glutDisplay, XC_crosshair); 00069 } |
|
Definition at line 92 of file glut_cursor.c. References blankCursor, _CursorTable::cursor, fullCrosshairCusor, getFullCrosshairCursor(), GLUT_CURSOR_FULL_CROSSHAIR, GLUT_CURSOR_INHERIT, GLUT_CURSOR_NONE, and makeBlankCursor().
00093 { 00094 Cursor xcursor; 00095 00096 if (cursor >= 0 && 00097 cursor < sizeof(cursorTable) / sizeof(cursorTable[0])) { 00098 if (cursorTable[cursor].cursor == None) 00099 cursorTable[cursor].cursor = XCreateFontCursor(__glutDisplay, 00100 cursorTable[cursor].glyph); 00101 xcursor = cursorTable[cursor].cursor; 00102 } else { 00103 /* Special cases. */ 00104 switch (cursor) { 00105 case GLUT_CURSOR_INHERIT: 00106 xcursor = None; 00107 break; 00108 case GLUT_CURSOR_NONE: 00109 if (blankCursor == None) 00110 blankCursor = makeBlankCursor(); 00111 xcursor = blankCursor; 00112 break; 00113 case GLUT_CURSOR_FULL_CROSSHAIR: 00114 if (fullCrosshairCusor == None) 00115 fullCrosshairCusor = getFullCrosshairCursor(); 00116 xcursor = fullCrosshairCusor; 00117 break; 00118 } 00119 } 00120 __glutCurrentWindow->cursor = cursor; 00121 XDefineCursor(__glutDisplay, 00122 __glutCurrentWindow->win, xcursor); 00123 XFlush(__glutDisplay); 00124 } |
|
Definition at line 72 of file glut_cursor.c. References __glutFatalError(), and dummy. Referenced by glutSetCursor().
00073 { 00074 static char data[1] = 00075 {0}; 00076 Cursor cursor; 00077 Pixmap blank; 00078 XColor dummy; 00079 00080 blank = XCreateBitmapFromData(__glutDisplay, __glutRoot, 00081 data, 1, 1); 00082 if (blank == None) 00083 __glutFatalError("out of memory."); 00084 cursor = XCreatePixmapCursor(__glutDisplay, blank, blank, 00085 &dummy, &dummy, 0, 0); 00086 XFreePixmap(__glutDisplay, blank); 00087 00088 return cursor; 00089 } |
Variable Documentation
|
Definition at line 41 of file glut_cursor.c. Referenced by glutSetCursor(). |
|
Initial value: { {XC_arrow, None}, {XC_top_left_arrow, None}, {XC_hand1, None}, {XC_pirate, None}, {XC_question_arrow, None}, {XC_exchange, None}, {XC_spraycan, None}, {XC_watch, None}, {XC_xterm, None}, {XC_crosshair, None}, {XC_sb_v_double_arrow, None}, {XC_sb_h_double_arrow, None}, {XC_top_side, None}, {XC_bottom_side, None}, {XC_left_side, None}, {XC_right_side, None}, {XC_top_left_corner, None}, {XC_top_right_corner, None}, {XC_bottom_right_corner, None}, {XC_bottom_left_corner, None}, } Definition at line 18 of file glut_cursor.c. |
|
Definition at line 42 of file glut_cursor.c. Referenced by getFullCrosshairCursor(), and glutSetCursor(). |