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_get.c

Go to the documentation of this file.
00001 
00002 /* Copyright (c) Mark J. Kilgard, 1994. */
00003 
00004 /* This program is freely distributable without licensing fees
00005    and is provided without guarantee or warrantee expressed or
00006    implied. This program is -not- in the public domain. */
00007 
00008 #include <GL/glut.h>
00009 #include "glutint.h"
00010 
00011 int
00012 glutGet(GLenum param)
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 }
 

Powered by Plone

This site conforms to the following standards: