Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

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

typedef struct _CursorTable CursorTable
 


Function Documentation

Cursor getFullCrosshairCursor void    [static]
 

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 }

void glutSetCursor int    cursor
 

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 }

Cursor makeBlankCursor void    [static]
 

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

Cursor blankCursor = None [static]
 

Definition at line 41 of file glut_cursor.c.

Referenced by glutSetCursor().

CursorTable cursorTable[] [static]
 

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.

Cursor fullCrosshairCusor = None [static]
 

Definition at line 42 of file glut_cursor.c.

Referenced by getFullCrosshairCursor(), and glutSetCursor().

 

Powered by Plone

This site conforms to the following standards: