⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glcontextmodes.c

📁 mesa-6.5-minigui源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * (C) Copyright IBM Corporation 2003 * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * on the rights to use, copy, modify, merge, publish, distribute, sub * license, and/or sell copies of the Software, and to permit persons to whom * the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. *//** * \file glcontextmodes.c * Utility routines for working with \c __GLcontextModes structures.  At * some point most or all of these functions will be moved to the Mesa * code base. * * \author Ian Romanick <idr@us.ibm.com> */#if defined(IN_MINI_GLX)# include <stdlib.h># include <string.h># include <GL/gl.h># include "GL/internal/dri_interface.h"# include "imports.h"# define _mesa_memset  memset#else# if defined(HAVE_DIX_CONFIG_H)#  include <dix-config.h># endif# include <X11/X.h># include <GL/glx.h># include "GL/glxint.h"# ifdef XFree86Server# include <os.h># include <string.h>#  define _mesa_malloc(b) xalloc(b)#  define _mesa_free(m)   xfree(m)#  define _mesa_memset   memset# else#  include <X11/Xlibint.h>#  define _mesa_memset memset#  define _mesa_malloc(b) Xmalloc(b)#  define _mesa_free(m) Xfree(m)# endif /* XFree86Server */#endif /* !defined(IN_MINI_GLX) */#include "glcontextmodes.h"#if !defined(IN_MINI_GLX)#define NUM_VISUAL_TYPES   6/** * Convert an X visual type to a GLX visual type. *  * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) *        to be converted. * \return If \c visualType is a valid X visual type, a GLX visual type will *         be returned.  Otherwise \c GLX_NONE will be returned. */GLint_gl_convert_from_x_visual_type( int visualType ){    static const int glx_visual_types[ NUM_VISUAL_TYPES ] = {	GLX_STATIC_GRAY,  GLX_GRAY_SCALE,	GLX_STATIC_COLOR, GLX_PSEUDO_COLOR,	GLX_TRUE_COLOR,   GLX_DIRECT_COLOR    };    return ( (unsigned) visualType < NUM_VISUAL_TYPES )	? glx_visual_types[ visualType ] : GLX_NONE;}/** * Convert a GLX visual type to an X visual type. *  * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR,  *                   \c GLX_STATIC_GRAY, etc.) to be converted. * \return If \c visualType is a valid GLX visual type, an X visual type will *         be returned.  Otherwise -1 will be returned. */GLint_gl_convert_to_x_visual_type( int visualType ){    static const int x_visual_types[ NUM_VISUAL_TYPES ] = {	TrueColor,   DirectColor,	PseudoColor, StaticColor,	GrayScale,   StaticGray    };    return ( (unsigned) (visualType - GLX_TRUE_COLOR) <= NUM_VISUAL_TYPES )	? x_visual_types[ visualType - GLX_TRUE_COLOR ] : -1;}/** * Copy a GLX visual config structure to a GL context mode structure.  All * of the fields in \c config are copied to \c mode.  Additional fields in * \c mode that can be derrived from the fields of \c config (i.e., * \c haveDepthBuffer) are also filled in.  The remaining fields in \c mode * that cannot be derrived are set to default values. *  * \param mode   Destination GL context mode. * \param config Source GLX visual config. *  * \note * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes * structure will be set to the \c vid of the \c __GLXvisualConfig structure. */void_gl_copy_visual_to_context_mode( __GLcontextModes * mode,				 const __GLXvisualConfig * config ){    __GLcontextModes * const next = mode->next;    (void) _mesa_memset( mode, 0, sizeof( __GLcontextModes ) );    mode->next = next;    mode->visualID = config->vid;    mode->visualType = _gl_convert_from_x_visual_type( config->class );    mode->xRenderable = GL_TRUE;    mode->fbconfigID = config->vid;    mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT;    mode->rgbMode = (config->rgba != 0);    mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;    mode->colorIndexMode = !(mode->rgbMode);    mode->doubleBufferMode = (config->doubleBuffer != 0);    mode->stereoMode = (config->stereo != 0);    mode->haveAccumBuffer = ((config->accumRedSize +			      config->accumGreenSize +			      config->accumBlueSize +			      config->accumAlphaSize) > 0);    mode->haveDepthBuffer = (config->depthSize > 0);    mode->haveStencilBuffer = (config->stencilSize > 0);    mode->redBits = config->redSize;    mode->greenBits = config->greenSize;    mode->blueBits = config->blueSize;    mode->alphaBits = config->alphaSize;    mode->redMask = config->redMask;    mode->greenMask = config->greenMask;    mode->blueMask = config->blueMask;    mode->alphaMask = config->alphaMask;    mode->rgbBits = mode->rgbMode ? config->bufferSize : 0;    mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0;    mode->accumRedBits = config->accumRedSize;    mode->accumGreenBits = config->accumGreenSize;    mode->accumBlueBits = config->accumBlueSize;    mode->accumAlphaBits = config->accumAlphaSize;    mode->depthBits = config->depthSize;    mode->stencilBits = config->stencilSize;    mode->numAuxBuffers = config->auxBuffers;    mode->level = config->level;    mode->visualRating = config->visualRating;    mode->transparentPixel = config->transparentPixel;    mode->transparentRed   = config->transparentRed;    mode->transparentGreen = config->transparentGreen;    mode->transparentBlue  = config->transparentBlue;    mode->transparentAlpha = config->transparentAlpha;    mode->transparentIndex = config->transparentIndex;    mode->swapMethod = GLX_SWAP_UNDEFINED_OML;}/** * Get data from a GL context mode. *  * \param mode         GL context mode whose data is to be returned. * \param attribute    Attribute of \c mode that is to be returned. * \param value_return Location to store the data member of \c mode. * \return  If \c attribute is a valid attribute of \c mode, zero is *          returned.  Otherwise \c GLX_BAD_ATTRIBUTE is returned. */int_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute,			  int *value_return){    switch (attribute) {      case GLX_USE_GL:	*value_return = GL_TRUE;	return 0;      case GLX_BUFFER_SIZE:	*value_return = mode->rgbBits;	return 0;      case GLX_RGBA:	*value_return = mode->rgbMode;	return 0;      case GLX_RED_SIZE:	*value_return = mode->redBits;	return 0;      case GLX_GREEN_SIZE:	*value_return = mode->greenBits;	return 0;      case GLX_BLUE_SIZE:	*value_return = mode->blueBits;	return 0;      case GLX_ALPHA_SIZE:	*value_return = mode->alphaBits;	return 0;      case GLX_DOUBLEBUFFER:	*value_return = mode->doubleBufferMode;	return 0;      case GLX_STEREO:	*value_return = mode->stereoMode;	return 0;      case GLX_AUX_BUFFERS:	*value_return = mode->numAuxBuffers;	return 0;      case GLX_DEPTH_SIZE:	*value_return = mode->depthBits;	return 0;      case GLX_STENCIL_SIZE:	*value_return = mode->stencilBits;	return 0;      case GLX_ACCUM_RED_SIZE:	*value_return = mode->accumRedBits;	return 0;      case GLX_ACCUM_GREEN_SIZE:	*value_return = mode->accumGreenBits;	return 0;      case GLX_ACCUM_BLUE_SIZE:	*value_return = mode->accumBlueBits;	return 0;      case GLX_ACCUM_ALPHA_SIZE:	*value_return = mode->accumAlphaBits;	return 0;      case GLX_LEVEL:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -