Doxygen Source Code Documentation
glut.h File Reference
#include <GL/gl.h>#include <GL/glu.h>Go to the source code of this file.
Define Documentation
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 237 of file glut.h. Referenced by glutGetModifiers(). | 
| 
 | 
| 
 Definition at line 236 of file glut.h. Referenced by glutGetModifiers(). | 
| 
 | 
| 
 Definition at line 235 of file glut.h. Referenced by glutGetModifiers(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 154 of file glut.h. Referenced by SUMA_AxisText(), and SUMA_DrawMesh(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 130 of file glut.h. Referenced by associateNewColormap(), glutCopyColormap(), and glutSetColor(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 269 of file glut.h. Referenced by glutSetCursor(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 265 of file glut.h. Referenced by __glutCreateWindow(), and glutSetCursor(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 267 of file glut.h. Referenced by glutSetCursor(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 197 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 67 of file glut.h. Referenced by __glutDetermineVisual(). | 
| 
 | 
| 
 Definition at line 86 of file glut.h. Referenced by __glutProcessDeviceEvents(), and processEvents(). | 
| 
 | 
| 
 Definition at line 204 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 117 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 129 of file glut.h. Referenced by associateNewColormap(), glutCopyColormap(), and glutSetColor(). | 
| 
 | 
| 
 Definition at line 212 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 209 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 210 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 225 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 211 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 213 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 202 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 201 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 200 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 198 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 199 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 107 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 111 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 91 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 100 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 101 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 102 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 92 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 93 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 94 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 95 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 96 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 97 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 98 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 99 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 110 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 112 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 104 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 109 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 108 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 106 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 105 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 Definition at line 224 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 116 of file glut.h. Referenced by processEvents(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 121 of file glut.h. Referenced by __glutStartMenu(). | 
| 
 | 
| 
 Definition at line 120 of file glut.h. Referenced by __glutFinishMenu(). | 
| 
 | 
| 
 Definition at line 196 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 73 of file glut.h. Referenced by __glutDetermineVisual(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 227 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 124 of file glut.h. Referenced by processEvents(), and updateWindowVisibility(). | 
| 
 | 
| 
 Definition at line 216 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 217 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 214 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 215 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 Definition at line 218 of file glut.h. Referenced by glutDeviceGet(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 228 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 223 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 128 of file glut.h. Referenced by associateNewColormap(), glutCopyColormap(), and glutSetColor(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 193 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 195 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 192 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 194 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 226 of file glut.h. Referenced by glutLayerGet(). | 
| 
 | 
| 
 Definition at line 87 of file glut.h. Referenced by __glutProcessDeviceEvents(), and processEvents(). | 
| 
 | 
| 
 Definition at line 125 of file glut.h. Referenced by processEvents(), and updateWindowVisibility(). | 
| 
 | 
| 
 Definition at line 179 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 178 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 177 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 176 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 175 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 174 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 169 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 184 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 190 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 171 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 180 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 173 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 168 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 183 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 186 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 182 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 172 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 181 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 170 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 187 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 167 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 165 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 Definition at line 166 of file glut.h. Referenced by glutGet(). | 
| 
 | 
| 
 | 
Function Documentation
| 
 | ||||||||||||
| 
 Definition at line 730 of file glut_menu.c. References __glutFatalError(), fontHeight, _GLUTmenu::list, malloc, _GLUTmenuItem::menu, MENU_GAP, menuModificationError(), _GLUTmenuItem::next, _GLUTmenu::num, _GLUTmenuItem::pixwidth, setMenuItem(), _GLUTmenuItem::win, and _GLUTmenu::win. 
 00731 {
00732   XSetWindowAttributes wa;
00733   GLUTmenuItem *entry;
00734 
00735   if (__glutMappedMenu)
00736     menuModificationError();
00737   entry = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem));
00738   if (!entry)
00739     __glutFatalError("out of memory.");
00740   entry->menu = __glutCurrentMenu;
00741   setMenuItem(entry, label, value, False);
00742   wa.event_mask = EnterWindowMask | LeaveWindowMask;
00743   entry->win = XCreateWindow(__glutDisplay,
00744     __glutCurrentMenu->win, MENU_GAP,
00745     __glutCurrentMenu->num * fontHeight + MENU_GAP,  /* x & y */
00746     entry->pixwidth, fontHeight,  /* width & height */
00747     0, CopyFromParent, InputOnly, CopyFromParent,
00748     CWEventMask, &wa);
00749   XMapWindow(__glutDisplay, entry->win);
00750   __glutCurrentMenu->num++;
00751   entry->next = __glutCurrentMenu->list;
00752   __glutCurrentMenu->list = entry;
00753 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 756 of file glut_menu.c. References __glutFatalError(), fontHeight, _GLUTmenu::list, malloc, _GLUTmenuItem::menu, MENU_GAP, menuModificationError(), _GLUTmenuItem::next, _GLUTmenu::num, _GLUTmenuItem::pixwidth, setMenuItem(), _GLUTmenu::submenus, _GLUTmenuItem::win, and _GLUTmenu::win. 
 00757 {
00758   XSetWindowAttributes wa;
00759   GLUTmenuItem *submenu;
00760 
00761   if (__glutMappedMenu)
00762     menuModificationError();
00763   submenu = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem));
00764   if (!submenu)
00765     __glutFatalError("out of memory.");
00766   __glutCurrentMenu->submenus++;
00767   submenu->menu = __glutCurrentMenu;
00768   setMenuItem(submenu, label, /* base 0 */ menu - 1, True);
00769   wa.event_mask = EnterWindowMask | LeaveWindowMask;
00770   submenu->win = XCreateWindow(__glutDisplay,
00771     __glutCurrentMenu->win, MENU_GAP,
00772     __glutCurrentMenu->num * fontHeight + MENU_GAP,  /* x & y */
00773     submenu->pixwidth, fontHeight,  /* width & height */
00774     0, CopyFromParent, InputOnly, CopyFromParent,
00775     CWEventMask, &wa);
00776   XMapWindow(__glutDisplay, submenu->win);
00777   __glutCurrentMenu->num++;
00778   submenu->next = __glutCurrentMenu->list;
00779   __glutCurrentMenu->list = submenu;
00780 }
 | 
| 
 | 
| 
 Definition at line 888 of file glut_menu.c. References __glutChangeWindowEventMask(), _GLUTmenu::id, and menuModificationError(). 
 00889 {
00890   if (__glutMappedMenu)
00891     menuModificationError();
00892   if (__glutCurrentWindow->menu[button] < 1) {
00893     __glutCurrentWindow->buttonUses++;
00894   }
00895   __glutChangeWindowEventMask(
00896     ButtonPressMask | ButtonReleaseMask, True);
00897   __glutCurrentWindow->menu[button] = __glutCurrentMenu->id + 1;
00898 }
 | 
| 
 | ||||||||||||
| 
 | 
| 
 | ||||||||||||
| 
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 783 of file glut_menu.c. References __glutWarning(), free, i, _GLUTmenuItem::isTrigger, _GLUTmenuItem::label, _GLUTmenu::list, _GLUTmenuItem::menu, menuModificationError(), _GLUTmenuItem::next, _GLUTmenu::num, setMenuItem(), and _GLUTmenu::submenus. 
 00784 {
00785   GLUTmenuItem *item;
00786   int i;
00787 
00788   if (__glutMappedMenu)
00789     menuModificationError();
00790   i = __glutCurrentMenu->num;
00791   item = __glutCurrentMenu->list;
00792   while (item) {
00793     if (i == num) {
00794       if (item->isTrigger) {
00795         /* If changing a submenu trigger to a menu entry, we
00796            need to account for submenus.  */
00797         item->menu->submenus--;
00798       }
00799       free(item->label);
00800       setMenuItem(item, label, value, False);
00801       return;
00802     }
00803     i--;
00804     item = item->next;
00805   }
00806   __glutWarning("Current menu has no %d item.", num);
00807 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 810 of file glut_menu.c. References __glutWarning(), free, i, _GLUTmenuItem::isTrigger, _GLUTmenuItem::label, _GLUTmenu::list, _GLUTmenuItem::menu, menuModificationError(), _GLUTmenuItem::next, _GLUTmenu::num, setMenuItem(), and _GLUTmenu::submenus. 
 00811 {
00812   GLUTmenuItem *item;
00813   int i;
00814 
00815   if (__glutMappedMenu)
00816     menuModificationError();
00817   i = __glutCurrentMenu->num;
00818   item = __glutCurrentMenu->list;
00819   while (item) {
00820     if (i == num) {
00821       if (!item->isTrigger) {
00822         /* If changing a menu entry to as submenu trigger, we
00823            need to account for submenus.  */
00824         item->menu->submenus++;
00825       }
00826       free(item->label);
00827       setMenuItem(item, label, /* base 0 */ menu - 1, True);
00828       return;
00829     }
00830     i--;
00831     item = item->next;
00832   }
00833   __glutWarning("Current menu has no %d item.", num);
00834 }
 | 
| 
 | 
| 
 Definition at line 237 of file glut_cindex.c. References __glutFreeColormap(), __glutPutOnWorkList(), __glutToplevelOf(), __glutWarning(), associateNewColormap(), _GLUTcolormap::cells, _GLUTcolormap::cmap, color, _GLUTwindow::colormap, _GLUToverlay::colormap, GLUT_BLUE, GLUT_COLORMAP_WORK, GLUT_GREEN, GLUT_RED, i, _GLUTwindow::overlay, _GLUTcolormap::refcnt, _GLUTcolormap::size, and _GLUTcolormap::visual. 
 00238 {
00239   GLUTwindow *window = __glutWindowList[winnum - 1];
00240   GLUTcolormap *oldcmap, *newcmap, *copycmap;
00241   XVisualInfo *dstvis;
00242   XColor color;
00243   int i, last;
00244 
00245   if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
00246     oldcmap = __glutCurrentWindow->colormap;
00247     dstvis = __glutCurrentWindow->vis;
00248     newcmap = window->colormap;
00249   } else {
00250     oldcmap = __glutCurrentWindow->overlay->colormap;
00251     dstvis = __glutCurrentWindow->overlay->vis;
00252     if (!window->overlay) {
00253       __glutWarning("glutCopyColormap: window %d has no overlay", winnum);
00254       return;
00255     }
00256     newcmap = window->overlay->colormap;
00257   }
00258 
00259   if (!oldcmap) {
00260     __glutWarning("glutCopyColormap: destination colormap must be color index");
00261     return;
00262   }
00263   if (!newcmap) {
00264     __glutWarning(
00265       "glutCopyColormap: source colormap of window %d must be color index",
00266       winnum);
00267     return;
00268   }
00269   if (newcmap == oldcmap) {
00270     /* Source and destination are the same; now copy needed. */
00271     return;
00272   }
00273   /* Play safe: compare visual IDs, not Visual*'s */
00274   if (newcmap->visual->visualid == oldcmap->visual->visualid) {
00275     /* Visuals match!  "Copy" by reference...  */
00276     __glutFreeColormap(oldcmap);
00277     newcmap->refcnt++;
00278     if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
00279       __glutCurrentWindow->colormap = newcmap;
00280       __glutCurrentWindow->cmap = newcmap->cmap;
00281     } else {
00282       __glutCurrentWindow->overlay->colormap = newcmap;
00283       __glutCurrentWindow->overlay->cmap = newcmap->cmap;
00284     }
00285     XSetWindowColormap(__glutDisplay, __glutCurrentWindow->renderWin,
00286       newcmap->cmap);
00287     __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK);
00288   } else {
00289     /* Visuals different - need a distinct X colormap! */
00290     copycmap = associateNewColormap(dstvis);
00291     /* Wouldn't it be nice if XCopyColormapAndFree could be
00292        told not to free the old colormap's entries! */
00293     last = newcmap->size;
00294     if (last > copycmap->size) {
00295       last = copycmap->size;
00296     }
00297     for (i = last - 1; i >= 0; i--) {
00298       if (newcmap->cells[i].component[GLUT_RED] >= 0.0) {
00299         color.pixel = i;
00300         copycmap->cells[i].component[GLUT_RED] =
00301           newcmap->cells[i].component[GLUT_RED];
00302         color.red = (GLfloat) 0xffff *
00303           newcmap->cells[i].component[GLUT_RED];
00304         copycmap->cells[i].component[GLUT_GREEN] =
00305           newcmap->cells[i].component[GLUT_GREEN];
00306         color.green = (GLfloat) 0xffff *
00307           newcmap->cells[i].component[GLUT_GREEN];
00308         copycmap->cells[i].component[GLUT_BLUE] =
00309           newcmap->cells[i].component[GLUT_BLUE];
00310         color.blue = (GLfloat) 0xffff *
00311           newcmap->cells[i].component[GLUT_BLUE];
00312         color.flags = DoRed | DoGreen | DoBlue;
00313         XStoreColor(__glutDisplay, copycmap->cmap, &color);
00314       }
00315     }
00316   }
00317 }
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||||||||||||||
| 
 Definition at line 722 of file glut_win.c. References __glutCreateWindow(), __glutPutOnWorkList(), __glutToplevelOf(), _GLUTwindow::cmap, GLUT_COLORMAP_WORK, _GLUTwindow::num, and win. 
 00723 {
00724   GLUTwindow *window, *toplevel;
00725 
00726   window = __glutCreateWindow(__glutWindowList[win - 1],
00727     x, y, width, height);
00728   toplevel = __glutToplevelOf(window);
00729   if (toplevel->cmap != window->cmap) {
00730     __glutPutOnWorkList(toplevel, GLUT_COLORMAP_WORK);
00731   }
00732   return window->num + 1;
00733 }
 | 
| 
 | 
| 
 Definition at line 689 of file glut_win.c. References __glutCreateWindow(), _GLUTwindow::num, win, and _GLUTwindow::win. 
 00690 {
00691   static int firstWindow = 1;
00692   GLUTwindow *window;
00693   XWMHints *wmHints;
00694   Window win;
00695   XTextProperty textprop;
00696 
00697   window = __glutCreateWindow(NULL,
00698     __glutSizeHints.x, __glutSizeHints.y,
00699     __glutInitWidth, __glutInitHeight);
00700   win = window->win;
00701   /* setup ICCCM properties */
00702   textprop.value = (unsigned char *) title;
00703   textprop.encoding = XA_STRING;
00704   textprop.format = 8;
00705   textprop.nitems = strlen(title);
00706   wmHints = XAllocWMHints();
00707   wmHints->initial_state =
00708     __glutIconic ? IconicState : NormalState;
00709   wmHints->flags = StateHint;
00710   XSetWMProperties(__glutDisplay, win, &textprop, &textprop,
00711   /* only put WM_COMMAND property on first window */
00712     firstWindow ? __glutArgv : NULL,
00713     firstWindow ? __glutArgc : 0,
00714     &__glutSizeHints, wmHints, NULL);
00715   firstWindow = 0;
00716   XFree(wmHints);
00717   XSetWMProtocols(__glutDisplay, win, &__glutWMDeleteWindow, 1);
00718   return window->num + 1;
00719 }
 | 
| 
 | 
| 
 Definition at line 656 of file glut_menu.c. References __glutGetMenuByNum(), free, _GLUTmenu::id, _GLUTmenuItem::label, _GLUTmenu::list, _GLUTmenuItem::menu, menuModificationError(), _GLUTmenuItem::next, and _GLUTmenu::win. 
 00657 {
00658   GLUTmenu *menu = __glutGetMenuByNum(menunum);
00659   GLUTmenuItem *item, *next;
00660 
00661   if (__glutMappedMenu)
00662     menuModificationError();
00663   assert(menu->id == menunum - 1);
00664   XDestroySubwindows(__glutDisplay, menu->win);
00665   XDestroyWindow(__glutDisplay, menu->win);
00666   menuList[menunum - 1] = NULL;
00667   /* free all menu entries */
00668   item = menu->list;
00669   while (item) {
00670     assert(item->menu == menu);
00671     next = item->next;
00672     free(item->label);
00673     free(item);
00674     item = next;
00675   }
00676   if (__glutCurrentMenu == menu) {
00677     __glutCurrentMenu = NULL;
00678   }
00679   free(menu);
00680 }
 | 
| 
 | 
| 
 Definition at line 794 of file glut_win.c. References __glutFatalUsage(), __glutPutOnWorkList(), __glutToplevelOf(), destroyWindow(), GLUT_COLORMAP_WORK, _GLUTwindow::parent, and win. 
 00795 {
00796   GLUTwindow *window = __glutWindowList[win - 1];
00797 
00798   if (__glutMappedMenu && __glutMenuWindow == window) {
00799     __glutFatalUsage("destroying menu window not allowed while menus in use");
00800   }
00801   /* if not a toplevel window... */
00802   if (window->parent) {
00803     /* destroying subwindows may change colormap requirements;
00804        recalculate toplevel window's WM_COLORMAP_WINDOWS
00805        property */
00806     __glutPutOnWorkList(__glutToplevelOf(window->parent),
00807       GLUT_COLORMAP_WORK);
00808   }
00809   destroyWindow(window, window);
00810 }
 | 
| 
 | 
| 
 Definition at line 901 of file glut_menu.c. References __glutChangeWindowEventMask(), and menuModificationError(). 
 00902 {
00903   if (__glutMappedMenu)
00904     menuModificationError();
00905   if (__glutCurrentWindow->menu[button] > 0) {
00906     __glutCurrentWindow->buttonUses--;
00907     __glutChangeWindowEventMask(ButtonPressMask | ButtonReleaseMask,
00908       __glutCurrentWindow->buttonUses > 0);
00909     __glutCurrentWindow->menu[button] = 0;
00910   }
00911 }
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 284 of file glut_overlay.c. References __glutDetermineVisual(), __glutFatalError(), __glutFreeOverlay(), __glutGetTransparentPixel(), __glutPutOnWorkList(), __glutSetupColormap(), __glutToplevelOf(), addStaleWindow(), _GLUTwindow::children, _GLUToverlay::cmap, _GLUToverlay::colormap, _GLUToverlay::ctx, _GLUToverlay::damaged, _GLUToverlay::display, _GLUTwindow::eventMask, _GLUToverlay::fakeSingle, _GLUTwindow::forceReshape, getOverlayVisualInfo(), GLUT_COLORMAP_WORK, GLUT_OVERLAY_EVENT_FILTER_MASK, glutUseLayer(), _GLUTwindow::height, _GLUToverlay::isDirect, malloc, overlay, _GLUTwindow::overlay, _GLUToverlay::shownState, _GLUToverlay::transparentPixel, _GLUToverlay::vis, _GLUTwindow::width, _GLUToverlay::win, and _GLUTwindow::win. 
 00285 {
00286   GLUToverlay *overlay;
00287   GLUTwindow *window;
00288   XSetWindowAttributes wa;
00289 
00290   /* Register a routine to free an overlay with glut_win.c;
00291      this keeps glut_win.c from pulling in all of
00292      glut_overlay.c when no overlay functionality is used by
00293      the application. */
00294   __glutFreeOverlayFunc = __glutFreeOverlay;
00295 
00296   window = __glutCurrentWindow;
00297 
00298   /* Allow for an existant overlay to be re-established perhaps
00299      if you wanted a different display mode. */
00300   if (window->overlay) {
00301     addStaleWindow(window, window->overlay->win);
00302     __glutFreeOverlay(window->overlay);
00303   }
00304   overlay = (GLUToverlay *) malloc(sizeof(GLUToverlay));
00305   if (!overlay)
00306     __glutFatalError("out of memory.");
00307 
00308   overlay->vis = __glutDetermineVisual(__glutDisplayMode,
00309     &overlay->fakeSingle, getOverlayVisualInfo);
00310   if (!overlay->vis) {
00311     __glutFatalError("lacks overlay support.");
00312   }
00313   overlay->ctx = glXCreateContext(__glutDisplay, overlay->vis,
00314     None, __glutTryDirect);
00315   overlay->isDirect = glXIsDirect(__glutDisplay, overlay->ctx);
00316   if (__glutForceDirect) {
00317     if (!overlay->isDirect) {
00318       __glutFatalError("direct rendering not possible.");
00319     }
00320   }
00321   __glutSetupColormap(overlay->vis, &(overlay->colormap), &(overlay->cmap));
00322   overlay->transparentPixel = __glutGetTransparentPixel(__glutDisplay,
00323     overlay->vis);
00324 
00325   wa.colormap = overlay->cmap;
00326   wa.background_pixel = overlay->transparentPixel;
00327   wa.event_mask = window->eventMask & GLUT_OVERLAY_EVENT_FILTER_MASK;
00328   wa.border_pixel = 0;
00329   overlay->win = XCreateWindow(__glutDisplay,
00330     window->win,
00331     0, 0, window->width, window->height, 0,
00332     overlay->vis->depth, InputOutput, overlay->vis->visual,
00333     CWBackPixel | CWBorderPixel | CWEventMask | CWColormap,
00334     &wa);
00335   if (window->children) {
00336     /* Overlay window must be lowered below any GLUT
00337        subwindows. */
00338     XLowerWindow(__glutDisplay, overlay->win);
00339   }
00340   XMapWindow(__glutDisplay, overlay->win);
00341   overlay->shownState = 1;
00342 
00343   overlay->damaged = 0;
00344   overlay->display = NULL;
00345 
00346   /* Make sure a reshape gets delivered. */
00347   window->forceReshape = True;
00348 
00349   __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK);
00350 
00351   window->overlay = overlay;
00352   glutUseLayer(GLUT_OVERLAY);
00353 }
 | 
| 
 | 
| 
 Definition at line 14 of file glut_ext.c. 
 00015 {
00016   static const GLubyte *extensions = NULL;
00017   const GLubyte *start;
00018   GLubyte *where, *terminator;
00019 
00020   /* Extension names should not have spaces. */
00021   where = (GLubyte *) strchr(extension, ' ');
00022   if (where || *extension == '\0')
00023     return 0;
00024 
00025   if (!extensions)
00026     extensions = glGetString(GL_EXTENSIONS);
00027   /* It takes a bit of care to be fool-proof about parsing the
00028      OpenGL extensions string.  Don't be fooled by sub-strings, 
00029      etc. */
00030   start = extensions;
00031   for (;;) {
00032     where = (GLubyte *) strstr((const char *)start, extension);
00033     if (!where)
00034       break;
00035     terminator = where + strlen(extension);
00036     if (where == start || *(where - 1) == ' ') {
00037       if (*terminator == ' ' || *terminator == '\0') {
00038         return 1;
00039       }
00040     }
00041     start = terminator;
00042   }
00043   return 0;
00044 }
 | 
| 
 | 
| 
 Definition at line 13 of file glut_fullscrn.c. References __glutPutOnWorkList(), __glutWarning(), GLUT_CONFIGURE_WORK, and GLUT_FULL_SCREEN_WORK. 
 00014 {
00015   if (__glutMotifHints == None) {
00016     __glutMotifHints = XInternAtom(__glutDisplay, "_MOTIF_WM_HINTS", 0);
00017     if (__glutMotifHints == None) {
00018       __glutWarning("Could not intern X atom for WM_COLORMAP_WINDOWS.");
00019     }
00020   }
00021   __glutCurrentWindow->desiredX = 0;
00022   __glutCurrentWindow->desiredY = 0;
00023   __glutCurrentWindow->desiredWidth = __glutScreenWidth;
00024   __glutCurrentWindow->desiredHeight = __glutScreenHeight;
00025   __glutCurrentWindow->desiredConfMask |= CWX | CWY | CWWidth | CWHeight;
00026   __glutPutOnWorkList(__glutCurrentWindow,
00027     GLUT_CONFIGURE_WORK | GLUT_FULL_SCREEN_WORK);
00028 }
 | 
| 
 | 
| 
 Definition at line 12 of file glut_get.c. References __glutDetermineVisual(), __glutInitTime(), __glutIsSupportedByGLX(), __glutWarning(), Bool, border, dummy, GETTIMEOFDAY, GLUT_DISPLAY_MODE_POSSIBLE, GLUT_ELAPSED_TIME, GLUT_INIT_DISPLAY_MODE, GLUT_INIT_WINDOW_HEIGHT, GLUT_INIT_WINDOW_WIDTH, GLUT_INIT_WINDOW_X, GLUT_INIT_WINDOW_Y, GLUT_MENU_NUM_ITEMS, GLUT_SCREEN_HEIGHT, GLUT_SCREEN_HEIGHT_MM, GLUT_SCREEN_WIDTH, GLUT_SCREEN_WIDTH_MM, GLUT_WINDOW_ACCUM_ALPHA_SIZE, GLUT_WINDOW_ACCUM_BLUE_SIZE, GLUT_WINDOW_ACCUM_GREEN_SIZE, GLUT_WINDOW_ACCUM_RED_SIZE, GLUT_WINDOW_ALPHA_SIZE, GLUT_WINDOW_BLUE_SIZE, GLUT_WINDOW_BUFFER_SIZE, GLUT_WINDOW_COLORMAP_SIZE, GLUT_WINDOW_CURSOR, GLUT_WINDOW_DEPTH_SIZE, GLUT_WINDOW_DOUBLEBUFFER, GLUT_WINDOW_GREEN_SIZE, GLUT_WINDOW_HEIGHT, GLUT_WINDOW_NUM_CHILDREN, GLUT_WINDOW_NUM_SAMPLES, GLUT_WINDOW_PARENT, GLUT_WINDOW_RED_SIZE, GLUT_WINDOW_RGBA, GLUT_WINDOW_STENCIL_SIZE, GLUT_WINDOW_STEREO, GLUT_WINDOW_WIDTH, GLUT_WINDOW_X, GLUT_WINDOW_Y, param, _GLUTwindow::siblings, TIMEDELTA, and win. 
 00013 {
00014   Window win, root;
00015   int x, y, value;
00016   unsigned int width, height, border, depth;
00017 
00018   switch (param) {
00019   case GLUT_INIT_WINDOW_X:
00020     return __glutInitX;
00021   case GLUT_INIT_WINDOW_Y:
00022     return __glutInitY;
00023   case GLUT_INIT_WINDOW_WIDTH:
00024     return __glutInitWidth;
00025   case GLUT_INIT_WINDOW_HEIGHT:
00026     return __glutInitHeight;
00027   case GLUT_INIT_DISPLAY_MODE:
00028     return __glutDisplayMode;
00029   case GLUT_WINDOW_X:
00030     XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
00031       __glutRoot, 0, 0, &x, &y, &win);
00032     return x;
00033   case GLUT_WINDOW_Y:
00034     XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
00035       __glutRoot, 0, 0, &x, &y, &win);
00036     return y;
00037   case GLUT_WINDOW_WIDTH:
00038     if (!__glutCurrentWindow->reshape) {
00039       XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
00040         &root, &x, &y,
00041         &width, &height, &border, &depth);
00042       return width;
00043     }
00044     return __glutCurrentWindow->width;
00045   case GLUT_WINDOW_HEIGHT:
00046     if (!__glutCurrentWindow->reshape) {
00047       XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
00048         &root, &x, &y,
00049         &width, &height, &border, &depth);
00050       return height;
00051     }
00052     return __glutCurrentWindow->height;
00053 
00054 #define GET_CONFIG(attrib) { \
00055   if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { \
00056     glXGetConfig(__glutDisplay, __glutCurrentWindow->vis, \
00057       attrib, &value); \
00058   } else { \
00059     glXGetConfig(__glutDisplay, __glutCurrentWindow->overlay->vis, \
00060       attrib, &value); \
00061   } \
00062 }
00063 
00064   case GLUT_WINDOW_BUFFER_SIZE:
00065     GET_CONFIG(GLX_BUFFER_SIZE);
00066     return value;
00067   case GLUT_WINDOW_STENCIL_SIZE:
00068     GET_CONFIG(GLX_STENCIL_SIZE);
00069     return value;
00070   case GLUT_WINDOW_DEPTH_SIZE:
00071     GET_CONFIG(GLX_DEPTH_SIZE);
00072     return value;
00073   case GLUT_WINDOW_RED_SIZE:
00074     GET_CONFIG(GLX_RED_SIZE);
00075     return value;
00076   case GLUT_WINDOW_GREEN_SIZE:
00077     GET_CONFIG(GLX_GREEN_SIZE);
00078     return value;
00079   case GLUT_WINDOW_BLUE_SIZE:
00080     GET_CONFIG(GLX_BLUE_SIZE);
00081     return value;
00082   case GLUT_WINDOW_ALPHA_SIZE:
00083     GET_CONFIG(GLX_ALPHA_SIZE);
00084     return value;
00085   case GLUT_WINDOW_ACCUM_RED_SIZE:
00086     GET_CONFIG(GLX_ACCUM_RED_SIZE);
00087     return value;
00088   case GLUT_WINDOW_ACCUM_GREEN_SIZE:
00089     GET_CONFIG(GLX_ACCUM_GREEN_SIZE);
00090     return value;
00091   case GLUT_WINDOW_ACCUM_BLUE_SIZE:
00092     GET_CONFIG(GLX_ACCUM_BLUE_SIZE);
00093     return value;
00094   case GLUT_WINDOW_ACCUM_ALPHA_SIZE:
00095     GET_CONFIG(GLX_ACCUM_ALPHA_SIZE);
00096     return value;
00097   case GLUT_WINDOW_DOUBLEBUFFER:
00098     GET_CONFIG(GLX_DOUBLEBUFFER);
00099     return value;
00100   case GLUT_WINDOW_RGBA:
00101     GET_CONFIG(GLX_RGBA);
00102     return value;
00103   case GLUT_WINDOW_COLORMAP_SIZE:
00104     GET_CONFIG(GLX_RGBA);
00105     if (value) {
00106       return 0;
00107     } else {
00108       return __glutCurrentWindow->vis->visual->map_entries;
00109     }
00110   case GLUT_WINDOW_PARENT:
00111     return __glutCurrentWindow->parent ?
00112       __glutCurrentWindow->parent->num + 1 : 0;
00113   case GLUT_WINDOW_NUM_CHILDREN:
00114     {
00115       int num = 0;
00116       GLUTwindow *children = __glutCurrentWindow->children;
00117 
00118       while (children) {
00119         num++;
00120         children = children->siblings;
00121       }
00122       return num;
00123     }
00124   case GLUT_WINDOW_NUM_SAMPLES:
00125 #if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample)
00126     if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) {
00127       GET_CONFIG(GLX_SAMPLES_SGIS);
00128       return value;
00129     } else {
00130       return 0;
00131     }
00132 #else
00133     /* Independent of GLX server support, multisampling not
00134        supported by GLX client-side. */
00135     return 0;
00136 #endif
00137   case GLUT_WINDOW_STEREO:
00138     GET_CONFIG(GLX_STEREO);
00139     return value;
00140   case GLUT_WINDOW_CURSOR:
00141     return __glutCurrentWindow->cursor;
00142   case GLUT_SCREEN_WIDTH:
00143     return DisplayWidth(__glutDisplay, __glutScreen);
00144   case GLUT_SCREEN_HEIGHT:
00145     return DisplayHeight(__glutDisplay, __glutScreen);
00146   case GLUT_SCREEN_WIDTH_MM:
00147     return DisplayWidthMM(__glutDisplay, __glutScreen);
00148   case GLUT_SCREEN_HEIGHT_MM:
00149     return DisplayHeightMM(__glutDisplay, __glutScreen);
00150   case GLUT_MENU_NUM_ITEMS:
00151     return __glutCurrentMenu->num;
00152   case GLUT_DISPLAY_MODE_POSSIBLE:
00153     {
00154       XVisualInfo *vi;
00155       Bool dummy;
00156 
00157       vi = __glutDetermineVisual(__glutDisplayMode, &dummy, __glutGetVisualInfo);
00158       if (vi) {
00159         XFree(vi);
00160         return 1;
00161       }
00162       return 0;
00163     }
00164   case GLUT_ELAPSED_TIME:
00165     {
00166       struct timeval elapsed, beginning, now;
00167 
00168       __glutInitTime(&beginning);
00169       GETTIMEOFDAY(&now);
00170       TIMEDELTA(elapsed, now, beginning);
00171       /* Return elapsed milliseconds. */
00172 #if defined(__vms)
00173       return (int) (elapsed.val / TICKS_PER_MILLISECOND);
00174 #else
00175       return (int) ((elapsed.tv_sec * 1000) + (elapsed.tv_usec / 1000));
00176 #endif
00177     }
00178   default:
00179     __glutWarning("invalid glutGet parameter: %d", param);
00180     return -1;
00181   }
00182 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 182 of file glut_cindex.c. References __glutWarning(), _GLUTcolormap::cells, and _GLUTcolorcell::component. 
 00183 {
00184   GLUTcolormap *colormap;
00185   XVisualInfo *vis;
00186 
00187   if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
00188     colormap = __glutCurrentWindow->colormap;
00189     vis = __glutCurrentWindow->vis;
00190   } else {
00191     colormap = __glutCurrentWindow->overlay->colormap;
00192     vis = __glutCurrentWindow->overlay->vis;
00193     if (ndx == __glutCurrentWindow->overlay->transparentPixel) {
00194       __glutWarning("glutGetColor: requesting overlay transparent index %d\n",
00195         ndx);
00196       return -1.0;
00197     }
00198   }
00199 
00200   if (!colormap) {
00201     __glutWarning("glutGetColor: current window is RGBA");
00202     return -1.0;
00203   }
00204   if (ndx >= vis->visual->map_entries || ndx < 0) {
00205     __glutWarning("glutGetColor: index %d out of range", ndx);
00206     return -1.0;
00207   }
00208   return colormap->cells[ndx].component[comp];
00209 }
 | 
| 
 | 
| 
 Definition at line 683 of file glut_menu.c. References _GLUTmenu::id. 
 00684 {
00685   if (__glutCurrentMenu) {
00686     return __glutCurrentMenu->id + 1;
00687   } else {
00688     return 0;
00689   }
00690 }
 | 
| 
 | 
| 
 Definition at line 13 of file glut_modifier.c. References __glutWarning(), GLUT_ACTIVE_ALT, GLUT_ACTIVE_CTRL, and GLUT_ACTIVE_SHIFT. 
 00014 {
00015   int modifiers;
00016 
00017   if(__glutModifierMask == (unsigned int) ~0) {
00018     __glutWarning(
00019       "glutCurrentModifiers: do not call outside core input callback.");
00020     return 0;
00021   }
00022   modifiers = 0;
00023   if(__glutModifierMask & (ShiftMask|LockMask))
00024     modifiers |= GLUT_ACTIVE_SHIFT;
00025   if(__glutModifierMask & ControlMask)
00026     modifiers |= GLUT_ACTIVE_CTRL;
00027   if(__glutModifierMask & Mod1Mask)
00028     modifiers |= GLUT_ACTIVE_ALT;
00029   return modifiers;
00030 }
 | 
| 
 | 
| 
 Definition at line 111 of file glut_win.c. References _GLUTwindow::num. 
 00112 {
00113   if (__glutCurrentWindow) {
00114     return __glutCurrentWindow->num + 1;
00115   } else {
00116     return 0;
00117   }
00118 }
 | 
| 
 | 
| 
 Definition at line 412 of file glut_overlay.c. References __glutWarning(). 
 00413 {
00414   if (!__glutCurrentWindow->overlay) {
00415     __glutWarning("glutHideOverlay: window has no overlay established");
00416     return;
00417   }
00418   XUnmapWindow(__glutDisplay, __glutCurrentWindow->overlay->win);
00419   __glutCurrentWindow->overlay->shownState = 0;
00420 }
 | 
| 
 | 
| 
 Definition at line 102 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_MAP_WORK. 
 00103 {
00104   __glutCurrentWindow->desiredMapState = WithdrawnState;
00105   __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK);
00106 }
 | 
| 
 | 
| 
 Definition at line 87 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_MAP_WORK. 
 00088 {
00089   assert(!__glutCurrentWindow->parent);
00090   __glutCurrentWindow->desiredMapState = IconicState;
00091   __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK);
00092 }
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||
| 
 Definition at line 105 of file glut_init.c. References __glutArgc, __glutArgv, __glutDebug, __glutDisplay, __glutFatalError(), __glutForceDirect, __glutIconic, __glutInitHeight, __glutInitTime(), __glutInitWidth, __glutInitX, __glutInitY, __glutOpenXConnection(), __glutProgramName, __glutScreen, __glutSizeHints, __glutTryDirect, __glutWarning(), display, flags, glutInitWindowPosition(), glutInitWindowSize(), i, malloc, removeArgs(), and synchronize. 
 00106 {
00107   char *display = NULL;
00108   char *str;
00109   struct timeval unused;
00110   int i;
00111 
00112   if (__glutDisplay) {
00113     __glutWarning("glutInit being called a second time.");
00114     return;
00115   }
00116   /* determine temporary program name */
00117   str = strrchr(argv[0], '/');
00118   if (str == NULL) {
00119     __glutProgramName = argv[0];
00120   } else {
00121     __glutProgramName = str + 1;
00122   }
00123 
00124   /* make private copy of command line arguments */
00125   __glutArgc = *argcp;
00126   __glutArgv = (char **) malloc(__glutArgc * sizeof(char *));
00127   if (!__glutArgv)
00128     __glutFatalError("out of memory.");
00129   for (i = 0; i < __glutArgc; i++) {
00130     __glutArgv[i] = strdup(argv[i]);
00131     if (!__glutArgv[i])
00132       __glutFatalError("out of memory.");
00133   }
00134 
00135   /* determine permanent program name */
00136   str = strrchr(__glutArgv[0], '/');
00137   if (str == NULL) {
00138     __glutProgramName = __glutArgv[0];
00139   } else {
00140     __glutProgramName = str + 1;
00141   }
00142 
00143   /* parse arguments for standard options */
00144   for (i = 1; i < __glutArgc; i++) {
00145     if (!strcmp(__glutArgv[i], "-display")) {
00146       if (++i >= __glutArgc) {
00147         __glutFatalError(
00148           "follow -display option with X display name.");
00149       }
00150       display = __glutArgv[i];
00151       removeArgs(argcp, &argv[1], 2);
00152     } else if (!strcmp(__glutArgv[i], "-geometry")) {
00153       int flags, x, y, width, height;
00154 
00155       if (++i >= __glutArgc) {
00156         __glutFatalError(
00157           "follow -geometry option with geometry parameter.");
00158       }
00159       /* Fix bogus "{width|height} may be used before set"
00160          warning */
00161       width = 0;
00162       height = 0;
00163 
00164       flags = XParseGeometry(__glutArgv[i], &x, &y,
00165         (unsigned int *) &width, (unsigned int *) &height);
00166       if (WidthValue & flags) {
00167         /* Careful because X does not allow zero or negative
00168            width windows */
00169         if (width > 0)
00170           __glutInitWidth = width;
00171       }
00172       if (HeightValue & flags) {
00173         /* Careful because X does not allow zero or negative
00174            height windows */
00175         if (height > 0)
00176           __glutInitHeight = height;
00177       }
00178       glutInitWindowSize(__glutInitWidth, __glutInitHeight);
00179       if (XValue & flags) {
00180         if (XNegative & flags)
00181           x = DisplayWidth(__glutDisplay, __glutScreen) +
00182             x - __glutSizeHints.width;
00183         /* Play safe: reject negative X locations */
00184         if (x >= 0)
00185           __glutInitX = x;
00186       }
00187       if (YValue & flags) {
00188         if (YNegative & flags)
00189           y = DisplayHeight(__glutDisplay, __glutScreen) +
00190             y - __glutSizeHints.height;
00191         /* Play safe: reject negative Y locations */
00192         if (y >= 0)
00193           __glutInitY = y;
00194       }
00195       glutInitWindowPosition(__glutInitX, __glutInitY);
00196       removeArgs(argcp, &argv[1], 2);
00197     } else if (!strcmp(__glutArgv[i], "-direct")) {
00198       if (!__glutTryDirect)
00199         __glutFatalError(
00200           "cannot force both direct and indirect rendering.");
00201       __glutForceDirect = GL_TRUE;
00202       removeArgs(argcp, &argv[1], 1);
00203     } else if (!strcmp(__glutArgv[i], "-indirect")) {
00204       if (__glutForceDirect)
00205         __glutFatalError(
00206           "cannot force both direct and indirect rendering.");
00207       __glutTryDirect = GL_FALSE;
00208       removeArgs(argcp, &argv[1], 1);
00209     } else if (!strcmp(__glutArgv[i], "-iconic")) {
00210       __glutIconic = GL_TRUE;
00211       removeArgs(argcp, &argv[1], 1);
00212     } else if (!strcmp(__glutArgv[i], "-gldebug")) {
00213       __glutDebug = GL_TRUE;
00214       removeArgs(argcp, &argv[1], 1);
00215     } else if (!strcmp(__glutArgv[i], "-sync")) {
00216       synchronize = GL_TRUE;
00217       removeArgs(argcp, &argv[1], 1);
00218     } else {
00219       /* once unknown option encountered, stop command line
00220          processing */
00221       break;
00222     }
00223   }
00224   __glutOpenXConnection(display);
00225   __glutInitTime(&unused);
00226 }
 | 
| 
 | 
| 
 Definition at line 257 of file glut_init.c. References __glutDisplayMode. 
 00258 {
00259   __glutDisplayMode = mask;
00260 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 229 of file glut_init.c. References __glutInitX, __glutInitY, and __glutSizeHints. Referenced by glutInit(). 
 00230 {
00231   __glutInitX = x;
00232   __glutInitY = y;
00233   if (x >= 0 && y >= 0) {
00234     __glutSizeHints.x = x;
00235     __glutSizeHints.y = y;
00236     __glutSizeHints.flags |= USPosition;
00237   } else {
00238     __glutSizeHints.flags &= ~USPosition;
00239   }
00240 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 243 of file glut_init.c. References __glutInitHeight, __glutInitWidth, and __glutSizeHints. Referenced by glutInit(). 
 00244 {
00245   __glutInitWidth = width;
00246   __glutInitHeight = height;
00247   if (width > 0 && height > 0) {
00248     __glutSizeHints.width = width;
00249     __glutSizeHints.height = height;
00250     __glutSizeHints.flags |= USSize;
00251   } else {
00252     __glutSizeHints.flags &= ~USSize;
00253   }
00254 }
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 434 of file glut_overlay.c. References __glutDetermineVisual(), __glutWarning(), Bool, dummy, getOverlayVisualInfo(), GLUT_HAS_OVERLAY, GLUT_LAYER_IN_USE, GLUT_NORMAL_DAMAGED, GLUT_OVERLAY_DAMAGED, GLUT_OVERLAY_POSSIBLE, GLUT_TRANSPARENT_INDEX, and param. 
 00435 {
00436   switch (param) {
00437   case GLUT_OVERLAY_POSSIBLE:
00438     {
00439       XVisualInfo *vi;
00440       Bool dummy;
00441 
00442       vi = __glutDetermineVisual(__glutDisplayMode, &dummy, getOverlayVisualInfo);
00443       if (vi) {
00444         XFree(vi);
00445         return 1;
00446       }
00447       return 0;
00448     }
00449   case GLUT_LAYER_IN_USE:
00450     return __glutCurrentWindow->renderWin != __glutCurrentWindow->win;
00451   case GLUT_HAS_OVERLAY:
00452     return __glutCurrentWindow->overlay != NULL;
00453   case GLUT_TRANSPARENT_INDEX:
00454     if (__glutCurrentWindow->overlay) {
00455       return __glutCurrentWindow->overlay->transparentPixel;
00456     } else {
00457       return -1;
00458     }
00459   case GLUT_NORMAL_DAMAGED:
00460     /* __glutWindowDamaged is used so the damage state within
00461        the window (or overlay belwo) can be cleared before
00462        calling a display callback so on return, the state does
00463        not have to be cleared (since upon return from the
00464        callback the window could be destroyed (or layer
00465        removed). */
00466     return __glutCurrentWindow->damaged || __glutWindowDamaged;
00467   case GLUT_OVERLAY_DAMAGED:
00468     if (__glutCurrentWindow->overlay) {
00469       return __glutCurrentWindow->overlay->damaged || __glutWindowDamaged;
00470     } else {
00471       return -1;
00472     }
00473   default:
00474     __glutWarning("invalid glutLayerGet param: %d", param);
00475     return -1;
00476   }
00477 }
 | 
| 
 | 
| 
 Definition at line 945 of file glut_event.c. References __glutFatalUsage(), __glutIdleFunc, idleWait(), processEvents(), processWindowWorkList(), and waitForSomething(). 
 00946 {
00947   if (!__glutDisplay)
00948     __glutFatalUsage("main loop entered with out X connection.");
00949   if (!__glutWindowListSize)
00950     __glutFatalUsage(
00951       "main loop entered with no windows created.");
00952   for (;;) {
00953     if (__glutWindowWorkList) {
00954       GLUTwindow *remainder, *work;
00955 
00956       work = __glutWindowWorkList;
00957       __glutWindowWorkList = NULL;
00958       if (work) {
00959         remainder = processWindowWorkList(work);
00960         if (remainder) {
00961           *beforeEnd = __glutWindowWorkList;
00962           __glutWindowWorkList = remainder;
00963         }
00964       }
00965     }
00966     if (__glutIdleFunc || __glutWindowWorkList) {
00967       idleWait();
00968     } else {
00969       if (__glutTimerList) {
00970         waitForSomething();
00971       } else {
00972         processEvents();
00973       }
00974     }
00975   }
00976 }
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 Definition at line 71 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_CONFIGURE_WORK. 
 00072 {
00073   __glutCurrentWindow->desiredStack = Above;
00074   __glutCurrentWindow->desiredConfMask |= CWStackMode;
00075   __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK);
00076 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 50 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_CONFIGURE_WORK. 
 00051 {
00052   __glutCurrentWindow->desiredX = x;
00053   __glutCurrentWindow->desiredY = y;
00054   __glutCurrentWindow->desiredConfMask |= CWX | CWY;
00055   __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK);
00056 }
 | 
| 
 | 
| 
 Definition at line 396 of file glut_overlay.c. References __glutPostRedisplay(), and GLUT_OVERLAY_REDISPLAY_WORK. 
 00397 {
00398   __glutPostRedisplay(__glutCurrentWindow, GLUT_OVERLAY_REDISPLAY_WORK);
00399 }
 | 
| 
 | 
| 
 Definition at line 156 of file glut_event.c. References __glutPostRedisplay(), and GLUT_REDISPLAY_WORK. 
 00157 {
00158   __glutPostRedisplay(__glutCurrentWindow, GLUT_REDISPLAY_WORK);
00159 }
 | 
| 
 | 
| 
 Definition at line 79 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_CONFIGURE_WORK. 
 00080 {
00081   __glutCurrentWindow->desiredStack = Below;
00082   __glutCurrentWindow->desiredConfMask |= CWStackMode;
00083   __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK);
00084 }
 | 
| 
 | 
| 
 Definition at line 837 of file glut_menu.c. References __glutWarning(), free, i, _GLUTmenuItem::label, _GLUTmenu::list, _GLUTmenu::managed, menuModificationError(), _GLUTmenuItem::next, _GLUTmenu::num, _GLUTmenuItem::pixwidth, and _GLUTmenu::pixwidth. 
 00838 {
00839   GLUTmenuItem *item, **prev, *remaining;
00840   int pixwidth, i;
00841 
00842   if (__glutMappedMenu)
00843     menuModificationError();
00844   i = __glutCurrentMenu->num;
00845   prev = &__glutCurrentMenu->list;
00846   item = __glutCurrentMenu->list;
00847   /* If menu item is removed, the menu's pixwidth may need to
00848      be recomputed. */
00849   pixwidth = 0;
00850   while (item) {
00851     if (i == num) {
00852       /* If this menu item's pixwidth is as wide as the menu's
00853          pixwidth, removing this menu item will necessitate
00854          shrinking the menu's pixwidth. */
00855       if (item->pixwidth >= __glutCurrentMenu->pixwidth) {
00856         /* Continue recalculating menu pixwidth, first skipping
00857            the removed item. */
00858         remaining = item->next;
00859         while (remaining) {
00860           if (remaining->pixwidth > pixwidth) {
00861             pixwidth = remaining->pixwidth;
00862           }
00863           remaining = remaining->next;
00864         }
00865       }
00866       __glutCurrentMenu->num--;
00867       __glutCurrentMenu->managed = False;
00868       __glutCurrentMenu->pixwidth = pixwidth;
00869 
00870       /* Patch up menu's item list. */
00871       *prev = item->next;
00872 
00873       free(item->label);
00874       free(item);
00875       return;
00876     }
00877     if (item->pixwidth > pixwidth) {
00878       pixwidth = item->pixwidth;
00879     }
00880     i--;
00881     prev = &item->next;
00882     item = item->next;
00883   }
00884   __glutWarning("Current menu has no %d item.", num);
00885 }
 | 
| 
 | 
| 
 Definition at line 356 of file glut_overlay.c. References __glutFreeOverlay(), __glutPutOnWorkList(), __glutToplevelOf(), addStaleWindow(), GLUT_COLORMAP_WORK, glutUseLayer(), overlay, _GLUTwindow::overlay, _GLUTwindow::renderWin, and _GLUToverlay::win. 
 00357 {
00358   GLUTwindow *window = __glutCurrentWindow;
00359   GLUToverlay *overlay = __glutCurrentWindow->overlay;
00360 
00361   if (!window->overlay)
00362     return;
00363 
00364   /* If using overlay, switch to the normal layer. */
00365   if (window->renderWin == overlay->win) {
00366     glutUseLayer(GLUT_NORMAL);
00367   }
00368   addStaleWindow(window, overlay->win);
00369   __glutFreeOverlay(overlay);
00370   window->overlay = NULL;
00371   __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK);
00372 }
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||
| 
 Definition at line 59 of file glut_winmisc.c. References __glutPutOnWorkList(), __glutWarning(), and GLUT_CONFIGURE_WORK. 
 00060 {
00061   if(w <= 0 || h <= 0) 
00062     __glutWarning("glutReshapeWindow: non-positive width or height not allowed");
00063 
00064   __glutCurrentWindow->desiredWidth = w;
00065   __glutCurrentWindow->desiredHeight = h;
00066   __glutCurrentWindow->desiredConfMask |= CWWidth | CWHeight;
00067   __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK);
00068 }
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 90 of file glut_cindex.c. References __glutPutOnWorkList(), __glutToplevelOf(), __glutWarning(), associateNewColormap(), _GLUTcolormap::cells, CLAMP, cmap, _GLUTcolormap::cmap, _GLUTwindow::cmap, color, _GLUTcolorcell::component, GLUT_BLUE, GLUT_COLORMAP_WORK, GLUT_GREEN, GLUT_RED, i, _GLUTcolormap::refcnt, and _GLUTcolormap::size. 
 00091 {
00092   GLUTcolormap *cmap, *newcmap;
00093   XVisualInfo *vis;
00094   XColor color;
00095   int i;
00096 
00097   if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
00098     cmap = __glutCurrentWindow->colormap;
00099     vis = __glutCurrentWindow->vis;
00100   } else {
00101     cmap = __glutCurrentWindow->overlay->colormap;
00102     vis = __glutCurrentWindow->overlay->vis;
00103     if (ndx == __glutCurrentWindow->overlay->transparentPixel) {
00104       __glutWarning(
00105         "glutSetColor: cannot set color of overlay transparent index %d\n",
00106         ndx);
00107       return;
00108     }
00109   }
00110 
00111   if (!cmap) {
00112     __glutWarning("glutSetColor: current window is RGBA");
00113     return;
00114   }
00115   if (ndx >= vis->visual->map_entries ||
00116     ndx < 0) {
00117     __glutWarning("glutSetColor: index %d out of range", ndx);
00118     return;
00119   }
00120   if (cmap->refcnt > 1) {
00121     GLUTwindow *toplevel;
00122 
00123     newcmap = associateNewColormap(vis);
00124     cmap->refcnt--;
00125     /* Wouldn't it be nice if XCopyColormapAndFree could be
00126        told not to free the old colormap's entries! */
00127     for (i = cmap->size - 1; i >= 0; i--) {
00128       if (i == ndx) {
00129         /* We are going to set this cell shortly! */
00130         continue;
00131       }
00132       if (cmap->cells[i].component[GLUT_RED] >= 0.0) {
00133         color.pixel = i;
00134         newcmap->cells[i].component[GLUT_RED] =
00135           cmap->cells[i].component[GLUT_RED];
00136         color.red = (GLfloat) 0xffff *
00137           cmap->cells[i].component[GLUT_RED];
00138         newcmap->cells[i].component[GLUT_GREEN] =
00139           cmap->cells[i].component[GLUT_GREEN];
00140         color.green = (GLfloat) 0xffff *
00141           cmap->cells[i].component[GLUT_GREEN];
00142         newcmap->cells[i].component[GLUT_BLUE] =
00143           cmap->cells[i].component[GLUT_BLUE];
00144         color.blue = (GLfloat) 0xffff *
00145           cmap->cells[i].component[GLUT_BLUE];
00146         color.flags = DoRed | DoGreen | DoBlue;
00147         XStoreColor(__glutDisplay, newcmap->cmap, &color);
00148       } else {
00149         /* leave unallocated entries unallocated */
00150       }
00151     }
00152     cmap = newcmap;
00153     if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
00154       __glutCurrentWindow->colormap = cmap;
00155       __glutCurrentWindow->cmap = cmap->cmap;
00156     } else {
00157       __glutCurrentWindow->overlay->colormap = cmap;
00158       __glutCurrentWindow->overlay->cmap = cmap->cmap;
00159     }
00160     XSetWindowColormap(__glutDisplay, __glutCurrentWindow->renderWin, cmap->cmap);
00161 
00162     toplevel = __glutToplevelOf(__glutCurrentWindow);
00163     if (toplevel->cmap != cmap->cmap) {
00164       __glutPutOnWorkList(toplevel, GLUT_COLORMAP_WORK);
00165     }
00166   }
00167   color.pixel = ndx;
00168   red = CLAMP(red);
00169   cmap->cells[ndx].component[GLUT_RED] = red;
00170   color.red = (GLfloat) 0xffff *red;
00171   green = CLAMP(green);
00172   cmap->cells[ndx].component[GLUT_GREEN] = green;
00173   color.green = (GLfloat) 0xffff *green;
00174   blue = CLAMP(blue);
00175   cmap->cells[ndx].component[GLUT_BLUE] = blue;
00176   color.blue = (GLfloat) 0xffff *blue;
00177   color.flags = DoRed | DoGreen | DoBlue;
00178   XStoreColor(__glutDisplay, cmap->cmap, &color);
00179 }
 | 
| 
 | 
| 
 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 35 of file glut_winmisc.c. 
 00036 {
00037   XTextProperty textprop;
00038 
00039   assert(!__glutCurrentWindow->parent);
00040   textprop.value = (unsigned char *) title;
00041   textprop.encoding = XA_STRING;
00042   textprop.format = 8;
00043   textprop.nitems = strlen(title);
00044   XSetWMIconName(__glutDisplay,
00045     __glutCurrentWindow->win, &textprop);
00046   XFlush(__glutDisplay);
00047 }
 | 
| 
 | 
| 
 Definition at line 693 of file glut_menu.c. References __glutSetMenu(), __glutWarning(), and menuListSize. 
 00694 {
00695   GLUTmenu *menu;
00696 
00697   if (menuid < 1 || menuid > menuListSize) {
00698     __glutWarning("glutSetMenu attempted on bogus menu.");
00699     return;
00700   }
00701   menu = menuList[menuid - 1];
00702   if (!menu) {
00703     __glutWarning("glutSetMenu attempted on bogus menu.");
00704     return;
00705   }
00706   __glutSetMenu(menu);
00707 }
 | 
| 
 | 
| 
 Definition at line 153 of file glut_win.c. References __glutSetWindow(), __glutWarning(), __glutWindowListSize, and win. 
 00154 {
00155   GLUTwindow *window;
00156 
00157   if (win < 1 || win > __glutWindowListSize) {
00158     __glutWarning("glutWindowSet attempted on bogus window.");
00159     return;
00160   }
00161   window = __glutWindowList[win - 1];
00162   if (!window) {
00163     __glutWarning("glutWindowSet attempted on bogus window.");
00164     return;
00165   }
00166   __glutSetWindow(window);
00167 }
 | 
| 
 | 
| 
 Definition at line 20 of file glut_winmisc.c. 
 00021 {
00022   XTextProperty textprop;
00023 
00024   assert(!__glutCurrentWindow->parent);
00025   textprop.value = (unsigned char *) title;
00026   textprop.encoding = XA_STRING;
00027   textprop.format = 8;
00028   textprop.nitems = strlen(title);
00029   XSetWMName(__glutDisplay,
00030     __glutCurrentWindow->win, &textprop);
00031   XFlush(__glutDisplay);
00032 }
 | 
| 
 | 
| 
 Definition at line 423 of file glut_overlay.c. References __glutWarning(). 
 00424 {
00425   if (!__glutCurrentWindow->overlay) {
00426     __glutWarning("glutShowOverlay: window has no overlay established");
00427     return;
00428   }
00429   XMapWindow(__glutDisplay, __glutCurrentWindow->overlay->win);
00430   __glutCurrentWindow->overlay->shownState = 1;
00431 }
 | 
| 
 | 
| 
 Definition at line 95 of file glut_winmisc.c. References __glutPutOnWorkList(), and GLUT_MAP_WORK. 
 00096 {
00097   __glutCurrentWindow->desiredMapState = NormalState;
00098   __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK);
00099 }
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 103 of file glut_shapes.c. References base, QUAD_OBJ_INIT, and quadObj. 
 00105 {
00106   QUAD_OBJ_INIT();
00107   gluQuadricDrawStyle(quadObj, GLU_FILL);
00108   gluQuadricNormals(quadObj, GLU_SMOOTH);
00109   /* If we ever changed/used the texture or orientation state
00110      of quadObj, we'd need to change it to the defaults here
00111      with gluQuadricTexture and/or gluQuadricOrientation. */
00112   gluCylinder(quadObj, base, 0.0, height, slices, stacks);
00113 }
 | 
| 
 | 
| 
 Definition at line 183 of file glut_shapes.c. References drawBox(). 
 00184 {
00185   drawBox(-size / 2., size / 2.,
00186     -size / 2., size / 2.,
00187     -size / 2., size / 2.,
00188     GL_QUADS);
00189 }
 | 
| 
 | 
| 
 Definition at line 385 of file glut_shapes.c. References dodecahedron(). 
 00386 {
00387   dodecahedron(GL_TRIANGLE_FAN);
00388 }
 | 
| 
 | 
| 
 Definition at line 567 of file glut_shapes.c. References icosahedron(). 
 00568 {
00569   icosahedron(GL_TRIANGLES);
00570 }
 | 
| 
 | 
| 
 Definition at line 499 of file glut_shapes.c. References octahedron(). 
 00500 {
00501   octahedron(GL_TRIANGLES);
00502 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 78 of file glut_shapes.c. References QUAD_OBJ_INIT, and quadObj. 
 00079 {
00080   QUAD_OBJ_INIT();
00081   gluQuadricDrawStyle(quadObj, GLU_FILL);
00082   gluQuadricNormals(quadObj, GLU_SMOOTH);
00083   /* If we ever changed/used the texture or orientation state
00084      of quadObj, we'd need to change it to the defaults here
00085      with gluQuadricTexture and/or gluQuadricOrientation. */
00086   gluSphere(quadObj, radius, slices, stacks);
00087 }
 | 
| 
 | 
| 
 Definition at line 196 of file glut_teapot.c. References scale, and teapot(). 
 | 
| 
 | 
| 
 Definition at line 608 of file glut_shapes.c. References tetrahedron(). 
 00609 {
00610   tetrahedron(GL_TRIANGLES);
00611 }
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 262 of file glut_shapes.c. References doughnut(). 
 00264 {
00265   doughnut(innerRadius, outerRadius, nsides, rings, GL_QUADS);
00266 }
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||
| 
 | 
| 
 | ||||||||||||
| 
 | 
| 
 | 
| 
 Definition at line 813 of file glut_win.c. References _GLUTwindow::fakeSingle, _GLUToverlay::fakeSingle, _GLUTwindow::overlay, _GLUTwindow::renderWin, and _GLUTwindow::win. 
 00814 {
00815   GLUTwindow *window = __glutCurrentWindow;
00816 
00817   if (window->renderWin == window->win) {
00818     if (__glutCurrentWindow->fakeSingle) {
00819       /* Pretend the double buffered window is single buffered,
00820          so treat glutSwapBuffers as a no-op */
00821       return;
00822     }
00823   } else {
00824     if (__glutCurrentWindow->overlay->fakeSingle) {
00825       /* Pretend the double buffered overlay is single
00826          buffered,  so treat glutSwapBuffers as a no-op. */
00827       return;
00828     }
00829   }
00830   glXSwapBuffers(__glutDisplay, __glutCurrentWindow->renderWin);
00831 }
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||||||
| 
 | 
| 
 | 
| 
 Definition at line 375 of file glut_overlay.c. References __glutSetWindow(), __glutWarning(), _GLUTwindow::ctx, _GLUToverlay::ctx, _GLUTwindow::overlay, _GLUTwindow::renderCtx, _GLUTwindow::renderWin, _GLUTwindow::win, and _GLUToverlay::win. Referenced by glutEstablishOverlay(), and glutRemoveOverlay(). 
 00376 {
00377   GLUTwindow *window = __glutCurrentWindow;
00378 
00379   switch (layer) {
00380   case GLUT_NORMAL:
00381     window->renderWin = window->win;
00382     window->renderCtx = window->ctx;
00383     break;
00384   case GLUT_OVERLAY:
00385     window->renderWin = window->overlay->win;
00386     window->renderCtx = window->overlay->ctx;
00387     break;
00388   default:
00389     __glutWarning("glutUseLayer: unknown layer, %d.", layer);
00390     break;
00391   }
00392   __glutSetWindow(window);
00393 }
 | 
| 
 | 
| 
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 90 of file glut_shapes.c. References base, QUAD_OBJ_INIT, and quadObj. 
 00092 {
00093   QUAD_OBJ_INIT();
00094   gluQuadricDrawStyle(quadObj, GLU_LINE);
00095   gluQuadricNormals(quadObj, GLU_SMOOTH);
00096   /* If we ever changed/used the texture or orientation state
00097      of quadObj, we'd need to change it to the defaults here
00098      with gluQuadricTexture and/or gluQuadricOrientation. */
00099   gluCylinder(quadObj, base, 0.0, height, slices, stacks);
00100 }
 | 
| 
 | 
| 
 Definition at line 174 of file glut_shapes.c. References drawBox(). 
 00175 {
00176   drawBox(-size / 2., size / 2.,
00177     -size / 2., size / 2.,
00178     -size / 2., size / 2.,
00179     GL_LINE_LOOP);
00180 }
 | 
| 
 | 
| 
 Definition at line 379 of file glut_shapes.c. References dodecahedron(). 
 00380 {
00381   dodecahedron(GL_LINE_LOOP);
00382 }
 | 
| 
 | 
| 
 Definition at line 561 of file glut_shapes.c. References icosahedron(). 
 00562 {
00563   icosahedron(GL_LINE_LOOP);
00564 }
 | 
| 
 | 
| 
 Definition at line 493 of file glut_shapes.c. References octahedron(). 
 00494 {
00495   octahedron(GL_LINE_LOOP);
00496 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 66 of file glut_shapes.c. References QUAD_OBJ_INIT, and quadObj. 
 00067 {
00068   QUAD_OBJ_INIT();
00069   gluQuadricDrawStyle(quadObj, GLU_LINE);
00070   gluQuadricNormals(quadObj, GLU_SMOOTH);
00071   /* If we ever changed/used the texture or orientation state
00072      of quadObj, we'd need to change it to the defaults here
00073      with gluQuadricTexture and/or gluQuadricOrientation. */
00074   gluSphere(quadObj, radius, slices, stacks);
00075 }
 | 
| 
 | 
| 
 Definition at line 202 of file glut_teapot.c. References scale, and teapot(). 
 | 
| 
 | 
| 
 Definition at line 602 of file glut_shapes.c. References tetrahedron(). 
 00603 {
00604   tetrahedron(GL_LINE_LOOP);
00605 }
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 254 of file glut_shapes.c. References doughnut(). 
 00256 {
00257   doughnut(innerRadius, outerRadius,
00258     nsides, rings, GL_LINE_LOOP);
00259 }
 | 
Variable Documentation
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  