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(). | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  