Doxygen Source Code Documentation
glut_get.c File Reference
#include <GL/glut.h>
#include "glutint.h"
Go to the source code of this file.
Defines | |
#define | GET_CONFIG(attrib) |
Functions | |
int | glutGet (GLenum param) |
Define Documentation
|
Value: { \ if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { \ glXGetConfig(__glutDisplay, __glutCurrentWindow->vis, \ attrib, &value); \ } else { \ glXGetConfig(__glutDisplay, __glutCurrentWindow->overlay->vis, \ attrib, &value); \ } \ } |
Function Documentation
|
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 } |