1b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 2b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz/* 345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * This library is free software; you can redistribute it and/or 445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * modify it under the terms of the GNU Library General Public 545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * License as published by the Free Software Foundation; either 645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * version 2 of the License, or (at your option) any later version. 745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * 845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * This library is distributed in the hope that it will be useful, 945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * but WITHOUT ANY WARRANTY; without even the implied warranty of 1045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Library General Public License for more details. 1245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * 1345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * You should have received a copy of the GNU Library General Public 1445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * License along with this library; if not, write to the Free 1545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 1645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * 1745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 18b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 19b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz/* 2045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * File name : wgl.c 2145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * WGL stuff. Added by Oleg Letsinsky, ajl@ultersys.ru 2245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Some things originated from the 3Dfx WGL functions 2345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 24b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 2545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* 2645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * This file contains the implementation of the wgl* functions for 2745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Mesa on Windows. Since these functions are provided by Windows in 2845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * GDI/OpenGL, we must supply our versions that work with Mesa here. 2945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 30b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 31b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 32b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz#include <windows.h> 3337aca21129d87946d2dc6b45fa5bacd514921550zhang 3415eaf8297ecb39337109b95480e61f37a6b20f0aJosé Fonseca#include "main/config.h" 3515eaf8297ecb39337109b95480e61f37a6b20f0aJosé Fonseca#include "glapi/glapi.h" 36590321c39db86baddf656b6e550cbd76ac1e569aBrian Paul#include "swrast/swrast.h" 3745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz#include "GL/wmesa.h" /* protos for wmesa* functions */ 38b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 3945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* 4045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Pixel Format Descriptors 4145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 42b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 4345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* Extend the PFD to include DB flag */ 44b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstruct __pixelformat__ 45b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 4645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PIXELFORMATDESCRIPTOR pfd; 47b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz GLboolean doubleBuffered; 48b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz}; 49b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 505c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle 515c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle 5245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* These are the PFD's supported by this driver. */ 5345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultzstruct __pixelformat__ pfd[] = 54b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 555c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle#if 0 56b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz /* Double Buffer, alpha */ 5745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 5845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 5945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz sizeof(PIXELFORMATDESCRIPTOR), 1, 6045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| 6145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_GENERIC_FORMAT|PFD_DOUBLEBUFFER|PFD_SWAP_COPY, 6245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_TYPE_RGBA, 6345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 24, 6445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 0, 6545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 8, 6645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 16, 6745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 24, 6845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 0, 0, 695c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle DEFAULT_SOFTWARE_DEPTH_BITS, 8, 7045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 7145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0 7245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz }, 73b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz GL_TRUE 74b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz }, 75b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz /* Single Buffer, alpha */ 7645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 7745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 7845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz sizeof(PIXELFORMATDESCRIPTOR), 1, 7945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| 8045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_GENERIC_FORMAT, 8145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_TYPE_RGBA, 8245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 24, 8345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 0, 8445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 8, 8545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 16, 8645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 24, 8745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 0, 0, 885c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle DEFAULT_SOFTWARE_DEPTH_BITS, 8, 8945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 9045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0 9145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz }, 92b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz GL_FALSE 93b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz }, 945c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle#endif 95b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz /* Double Buffer, no alpha */ 9645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 9745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 9845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz sizeof(PIXELFORMATDESCRIPTOR), 1, 9945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| 10045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_GENERIC_FORMAT|PFD_DOUBLEBUFFER|PFD_SWAP_COPY, 10145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_TYPE_RGBA, 10245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 24, 10345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 0, 10445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 8, 10545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 16, 10645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 10745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 0, 0, 1085c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle DEFAULT_SOFTWARE_DEPTH_BITS, 8, 10945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 11045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0 11145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz }, 112b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz GL_TRUE 113b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz }, 114b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz /* Single Buffer, no alpha */ 11545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 11645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 11745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz sizeof(PIXELFORMATDESCRIPTOR), 1, 11845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| 11945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_GENERIC_FORMAT, 12045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PFD_TYPE_RGBA, 12145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 24, 12245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 0, 12345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 8, 12445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 8, 16, 12545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 12645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 0, 0, 1275c64e6885dd3810a8ac5a49a55f807c5994c30fbDelle DEFAULT_SOFTWARE_DEPTH_BITS, 8, 12845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0, 12945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 0, 0, 0 13045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz }, 131b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz GL_FALSE 132b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz }, 133b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz}; 134b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 13545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultzint npfd = sizeof(pfd) / sizeof(pfd[0]); 13645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 13745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 13845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* 13945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz * Contexts 14045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 141b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 142b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultztypedef struct { 143b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz WMesaContext ctx; 144b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} MesaWglCtx; 145b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 146b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz#define MESAWGL_CTX_MAX_COUNT 20 147b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 148b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstatic MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT]; 149b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 150b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstatic unsigned ctx_count = 0; 15186e001b78cb46c1d5a216dd50b3d7fe32db23575Brian Paulstatic int ctx_current = -1; 152b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstatic unsigned curPFD = 0; 153b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 15487af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultzstatic HDC CurrentHDC = 0; 15587af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz 15687af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz 15745ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI HGLRC GLAPIENTRY wglCreateContext(HDC hdc) 158b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 159b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz int i = 0; 16045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (!ctx_count) { 16145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++) { 16245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz wgl_ctx[i].ctx = NULL; 16345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 164b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 16545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ ) { 16645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if ( wgl_ctx[i].ctx == NULL ) { 16745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz wgl_ctx[i].ctx = 168f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz WMesaCreateContext(hdc, NULL, (GLboolean)GL_TRUE, 169f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLboolean) (pfd[curPFD-1].doubleBuffered ? 170f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz GL_TRUE : GL_FALSE), 171f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLboolean)(pfd[curPFD-1].pfd.cAlphaBits ? 172f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz GL_TRUE : GL_FALSE) ); 173b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz if (wgl_ctx[i].ctx == NULL) 174b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz break; 175b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz ctx_count++; 176b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return ((HGLRC)wgl_ctx[i].ctx); 177b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 178b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 179b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 180b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(NULL); 181b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 182b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 18345ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglDeleteContext(HGLRC hglrc) 184b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 185b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz int i; 18645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ ) { 18787af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz if ( wgl_ctx[i].ctx == (WMesaContext) hglrc ){ 18887af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz WMesaMakeCurrent((WMesaContext) hglrc, NULL); 18987af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz WMesaDestroyContext(wgl_ctx[i].ctx); 190b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz wgl_ctx[i].ctx = NULL; 191b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz ctx_count--; 192b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(TRUE); 193b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 194b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 195b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 196b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 197b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 198b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 19945ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI HGLRC GLAPIENTRY wglGetCurrentContext(VOID) 200b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 20145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (ctx_current < 0) 20245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return 0; 20345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz else 20445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return (HGLRC) wgl_ctx[ctx_current].ctx; 205b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 206b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 20745ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI HDC GLAPIENTRY wglGetCurrentDC(VOID) 208b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 20987af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz return CurrentHDC; 210b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 211b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 21287af12dbdcb078b95391d57dabe53ce17b19f651Karl SchultzWINGDIAPI BOOL GLAPIENTRY wglMakeCurrent(HDC hdc, HGLRC hglrc) 213b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 21445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int i; 21545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 21687af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz CurrentHDC = hdc; 21787af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz 21845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (!hdc || !hglrc) { 21987af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz WMesaMakeCurrent(NULL, NULL); 22045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ctx_current = -1; 22145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return TRUE; 22245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 22345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 22445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ ) { 22587af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz if ( wgl_ctx[i].ctx == (WMesaContext) hglrc ) { 22687af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz WMesaMakeCurrent( (WMesaContext) hglrc, hdc ); 22745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ctx_current = i; 22845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return TRUE; 22945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 23045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 23145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return FALSE; 232b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 233b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 23445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 23545ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI int GLAPIENTRY wglChoosePixelFormat(HDC hdc, 23645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz CONST 23745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PIXELFORMATDESCRIPTOR *ppfd) 238b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 23945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int i,best = -1,bestdelta = 0x7FFFFFFF,delta; 24045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; 24145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 24245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR) || ppfd->nVersion != 1) 24345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 24445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 24545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(0); 24645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 24745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for(i = 0; i < npfd;i++) 24845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 24945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz delta = 0; 25045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 25145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (ppfd->dwFlags & PFD_DRAW_TO_WINDOW) && 25245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(pfd[i].pfd.dwFlags & PFD_DRAW_TO_WINDOW)) 25345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 25445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 25545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) && 25645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(pfd[i].pfd.dwFlags & PFD_DRAW_TO_BITMAP)) 25745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 25845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 25945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (ppfd->dwFlags & PFD_SUPPORT_GDI) && 26045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(pfd[i].pfd.dwFlags & PFD_SUPPORT_GDI)) 26145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 26245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 26345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (ppfd->dwFlags & PFD_SUPPORT_OPENGL) && 26445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(pfd[i].pfd.dwFlags & PFD_SUPPORT_OPENGL)) 26545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 26645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 26745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(ppfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE) && 26845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ((ppfd->dwFlags & PFD_DOUBLEBUFFER) != 26945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (pfd[i].pfd.dwFlags & PFD_DOUBLEBUFFER))) 27045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 27145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( 27245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz !(ppfd->dwFlags & PFD_STEREO_DONTCARE) && 27345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ((ppfd->dwFlags & PFD_STEREO) != 27445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (pfd[i].pfd.dwFlags & PFD_STEREO))) 27545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 27645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(ppfd->iPixelType != pfd[i].pfd.iPixelType) 27745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz delta++; 27845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(ppfd->cAlphaBits != pfd[i].pfd.cAlphaBits) 27945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz delta++; 28045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(delta < bestdelta) 28145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 28245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz best = i + 1; 28345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bestdelta = delta; 28445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(bestdelta == 0) 28545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz break; 28645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 28745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 28845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(best == -1) 28945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 29045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 29145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(0); 29245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 29345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(best); 29445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 295b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 2969b5678198604a3f959af990f5a4dd39d799ef667Karl SchultzWINGDIAPI int GLAPIENTRY wglDescribePixelFormat(HDC hdc, 2979b5678198604a3f959af990f5a4dd39d799ef667Karl Schultz int iPixelFormat, 2989b5678198604a3f959af990f5a4dd39d799ef667Karl Schultz UINT nBytes, 2999b5678198604a3f959af990f5a4dd39d799ef667Karl Schultz LPPIXELFORMATDESCRIPTOR ppfd) 30045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 30145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; 30245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 30345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(ppfd == NULL) 30445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(npfd); 30545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(iPixelFormat < 1 || iPixelFormat > npfd || 30645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz nBytes != sizeof(PIXELFORMATDESCRIPTOR)) 30745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz { 30845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 30945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(0); 31045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 31145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz *ppfd = pfd[iPixelFormat - 1].pfd; 31245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(npfd); 31345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 314b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 31545ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI PROC GLAPIENTRY wglGetProcAddress(LPCSTR lpszProc) 31645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 31745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz PROC p = (PROC) _glapi_get_proc_address((const char *) lpszProc); 31845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (p) 31945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return p; 32045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 32145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 32245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(NULL); 32345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 32445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 32545ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI int GLAPIENTRY wglGetPixelFormat(HDC hdc) 32645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 32745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; 32845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if(curPFD == 0) { 32945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 33045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(0); 331b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz } 33245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(curPFD); 333b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 334b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 33545ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglSetPixelFormat(HDC hdc,int iPixelFormat, 33676fb8089103e9dba9aaa7232c86d864d5874a08fZhang const PIXELFORMATDESCRIPTOR *ppfd) 337b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca{ 33845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; 339c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand 340c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand /* SetPixelFormat (hence wglSetPixelFormat) must not touch ppfd, per 341c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand * http://msdn.microsoft.com/en-us/library/dd369049(v=vs.85).aspx 342c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand */ 343c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand (void) ppfd; 344c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand 345c7fc4067ebd4758dd7566b20169a428dc8926c8dMorgan Armand if(iPixelFormat < 1 || iPixelFormat > npfd) { 34645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 34745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(FALSE); 34845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 34945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz curPFD = iPixelFormat; 350b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(TRUE); 351b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 352b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 35345ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglSwapBuffers(HDC hdc) 35445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 35587af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz WMesaSwapBuffers(hdc); 35687af12dbdcb078b95391d57dabe53ce17b19f651Karl Schultz return TRUE; 35745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 358b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 359b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstatic FIXED FixedFromDouble(double d) 360b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 361b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz long l = (long) (d * 65536L); 362a6c423d95663cfd8601cf84e10e8e1b12fa6ef15Brian Paul return *(FIXED *) (void *) &l; 363b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 364b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 365b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 366b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz/* 367b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz** This is cribbed from FX/fxwgl.c, and seems to implement support 368b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz** for bitmap fonts where the wglUseFontBitmapsA() code implements 369b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz** support for outline fonts. In combination they hopefully give 370b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz** fairly generic support for fonts. 371b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz*/ 372b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultzstatic BOOL wglUseFontBitmaps_FX(HDC fontDevice, DWORD firstChar, 373b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz DWORD numChars, DWORD listBase) 374b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 375da87370032c393077fa70099a79ea1e71ae2f5beJosé Fonseca#define VERIFY(a) (void)(a) 37645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 37745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz TEXTMETRIC metric; 37845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz BITMAPINFO *dibInfo; 37945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz HDC bitDevice; 38045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz COLORREF tempColor; 38145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int i; 38245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 38345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(GetTextMetrics(fontDevice, &metric)); 38445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 38545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo = (BITMAPINFO *) calloc(sizeof(BITMAPINFO) + sizeof(RGBQUAD), 1); 38645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); 38745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biPlanes = 1; 38845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biBitCount = 1; 38945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biCompression = BI_RGB; 39045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 39145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bitDevice = CreateCompatibleDC(fontDevice); 39245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 39376fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Swap fore and back colors so the bitmap has the right polarity */ 39445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz tempColor = GetBkColor(bitDevice); 39545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetBkColor(bitDevice, GetTextColor(bitDevice)); 39645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetTextColor(bitDevice, tempColor); 39745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 39876fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Place chars based on base line */ 39945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(SetTextAlign(bitDevice, TA_BASELINE) != GDI_ERROR ? 1 : 0); 40045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 40145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for(i = 0; i < (int)numChars; i++) { 40245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SIZE size; 40345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz char curChar; 40445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int charWidth,charHeight,bmapWidth,bmapHeight,numBytes,res; 40545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz HBITMAP bitObject; 40645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz HGDIOBJ origBmap; 40745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz unsigned char *bmap; 40845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 409f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz curChar = (char)(i + firstChar); 41045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 41176fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Find how high/wide this character is */ 41245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(GetTextExtentPoint32(bitDevice, &curChar, 1, &size)); 41345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 41476fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Create the output bitmap */ 41545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz charWidth = size.cx; 41645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz charHeight = size.cy; 41776fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Round up to the next multiple of 32 bits */ 41845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmapWidth = ((charWidth + 31) / 32) * 32; 41945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmapHeight = charHeight; 42045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bitObject = CreateCompatibleBitmap(bitDevice, 42145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmapWidth, 42245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmapHeight); 42376fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* VERIFY(bitObject); */ 42445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 42576fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Assign the output bitmap to the device */ 42645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz origBmap = SelectObject(bitDevice, bitObject); 42745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) VERIFY(origBmap); 42845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 42945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY( PatBlt( bitDevice, 0, 0, bmapWidth, bmapHeight,BLACKNESS ) ); 43045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 43176fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Use our source font on the device */ 43245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(SelectObject(bitDevice, GetCurrentObject(fontDevice,OBJ_FONT))); 43345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 43476fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Draw the character */ 43545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(TextOut(bitDevice, 0, metric.tmAscent, &curChar, 1)); 43645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 43776fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Unselect our bmap object */ 43845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(SelectObject(bitDevice, origBmap)); 43945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 44076fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Convert the display dependant representation to a 1 bit deep DIB */ 44145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz numBytes = (bmapWidth * bmapHeight) / 8; 44245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmap = malloc(numBytes); 44345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biWidth = bmapWidth; 44445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo->bmiHeader.biHeight = bmapHeight; 44545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz res = GetDIBits(bitDevice, bitObject, 0, bmapHeight, bmap, 44645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz dibInfo, 44745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DIB_RGB_COLORS); 44876fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* VERIFY(res); */ 44945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 45076fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Create the GL object */ 45145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glNewList(i + listBase, GL_COMPILE); 452f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz glBitmap(bmapWidth, bmapHeight, 0.0, (GLfloat)metric.tmDescent, 453f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLfloat)charWidth, 0.0, 45445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz bmap); 45545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glEndList(); 45676fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* CheckGL(); */ 45745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 45876fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Destroy the bmap object */ 45945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DeleteObject(bitObject); 46045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 46176fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Deallocate the bitmap data */ 46245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz free(bmap); 46345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 46445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 46576fb8089103e9dba9aaa7232c86d864d5874a08fZhang /* Destroy the DC */ 46645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz VERIFY(DeleteDC(bitDevice)); 46745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 46845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz free(dibInfo); 46945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 47045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return TRUE; 471b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz#undef VERIFY 472b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 473b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 47445ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglUseFontBitmapsA(HDC hdc, DWORD first, 47545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD count, DWORD listBase) 476b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 47745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int i; 47845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GLuint font_list; 47945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD size; 48045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GLYPHMETRICS gm; 48145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz HANDLE hBits; 48245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz LPSTR lpBits; 48345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz MAT2 mat; 48445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int success = TRUE; 48545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 48645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (count == 0) 48745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return FALSE; 48845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 48945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz font_list = listBase; 49045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 49145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz mat.eM11 = FixedFromDouble(1); 49245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz mat.eM12 = FixedFromDouble(0); 49345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz mat.eM21 = FixedFromDouble(0); 49445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz mat.eM22 = FixedFromDouble(-1); 49545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 49645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz memset(&gm,0,sizeof(gm)); 49745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 49845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz /* 49945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ** If we can't get the glyph outline, it may be because this is a fixed 50045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ** font. Try processing it that way. 50145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 50245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if( GetGlyphOutline(hdc, first, GGO_BITMAP, &gm, 0, NULL, &mat) 50345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz == GDI_ERROR ) { 50445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return wglUseFontBitmaps_FX( hdc, first, count, listBase ); 50545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 50645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 50745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz /* 50845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ** Otherwise process all desired characters. 50945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz */ 51045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz for (i = 0; i < (int)count; i++) { 51145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD err; 51245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 51345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glNewList( font_list+i, GL_COMPILE ); 51445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 51545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz /* allocate space for the bitmap/outline */ 51645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, 51745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz &gm, 0, NULL, &mat); 51845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (size == GDI_ERROR) { 51945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glEndList( ); 52045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz err = GetLastError(); 52145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz success = FALSE; 52245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 52345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 52445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 52545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz hBits = GlobalAlloc(GHND, size+1); 52645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz lpBits = GlobalLock(hBits); 52745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 52845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz err = 52945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GetGlyphOutline(hdc, /* handle to device context */ 53045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz first + i, /* character to query */ 53145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GGO_BITMAP, /* format of data to return */ 53245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz &gm, /* ptr to structure for metrics*/ 53345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz size, /* size of buffer for data */ 53445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz lpBits, /* pointer to buffer for data */ 53545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz &mat /* pointer to transformation */ 53645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz /* matrix structure */ 53745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz ); 53845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 53945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz if (err == GDI_ERROR) { 54045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GlobalUnlock(hBits); 54145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GlobalFree(hBits); 54245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 54345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glEndList( ); 54445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz err = GetLastError(); 54545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz success = FALSE; 54645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz continue; 54745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 54845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 54945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glBitmap(gm.gmBlackBoxX,gm.gmBlackBoxY, 550f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLfloat)-gm.gmptGlyphOrigin.x, 551f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLfloat)gm.gmptGlyphOrigin.y, 552f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLfloat)gm.gmCellIncX, 553f66084b834ce37e7f0143e456df1265cd343a674Karl Schultz (GLfloat)gm.gmCellIncY, 55445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (const GLubyte * )lpBits); 55545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 55645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GlobalUnlock(hBits); 55745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz GlobalFree(hBits); 55845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 55945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz glEndList( ); 56045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz } 56145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 56245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return success; 563b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 564b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 565645c131264ae169cf64753a930ada500b6933fe7Brian PaulWINGDIAPI BOOL GLAPIENTRY wglShareLists(HGLRC hglrc1, 566645c131264ae169cf64753a930ada500b6933fe7Brian Paul HGLRC hglrc2) 567645c131264ae169cf64753a930ada500b6933fe7Brian Paul{ 568645c131264ae169cf64753a930ada500b6933fe7Brian Paul WMesaShareLists((WMesaContext)hglrc1, (WMesaContext)hglrc2); 569645c131264ae169cf64753a930ada500b6933fe7Brian Paul return(TRUE); 570645c131264ae169cf64753a930ada500b6933fe7Brian Paul} 571645c131264ae169cf64753a930ada500b6933fe7Brian Paul 572b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 57345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 57445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz/* NOT IMPLEMENTED YET */ 57545ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglCopyContext(HGLRC hglrcSrc, 57645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz HGLRC hglrcDst, 57745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz UINT mask) 57845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 57945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hglrcSrc; (void) hglrcDst; (void) mask; 58045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(FALSE); 58145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 58245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 58345ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC hdc, 58445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iLayerPlane) 58545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz{ 58645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz SetLastError(0); 58700c02626d8087cab0cf5581911c4e68f7b32eb6eKarl Schultz if (iLayerPlane == 0) 58800c02626d8087cab0cf5581911c4e68f7b32eb6eKarl Schultz return wglCreateContext( hdc ); 58945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz return(NULL); 59045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz} 59145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 59245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz 59345ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglUseFontBitmapsW(HDC hdc, 59445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD first, 59545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD count, 59645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD listBase) 597b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 598b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) hdc; (void) first; (void) count; (void) listBase; 599b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return FALSE; 600b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 601b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 60245ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglUseFontOutlinesA(HDC hdc, 60345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD first, 60445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD count, 60545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD listBase, 60645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz FLOAT deviation, 60745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz FLOAT extrusion, 60845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int format, 60945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz LPGLYPHMETRICSFLOAT lpgmf) 610b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 611b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) hdc; (void) first; (void) count; 612b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) listBase; (void) deviation; (void) extrusion; (void) format; 613b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) lpgmf; 614b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 615b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 616b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 617b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 61845ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglUseFontOutlinesW(HDC hdc, 61945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD first, 62045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD count, 62145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz DWORD listBase, 62245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz FLOAT deviation, 62345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz FLOAT extrusion, 62445ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int format, 62545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz LPGLYPHMETRICSFLOAT lpgmf) 626b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 627b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) hdc; (void) first; (void) count; 628b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) listBase; (void) deviation; (void) extrusion; (void) format; 629b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) lpgmf; 630b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 631b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 632b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 633b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 63445ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglDescribeLayerPlane(HDC hdc, 63545ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iPixelFormat, 63645ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iLayerPlane, 63745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz UINT nBytes, 63845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz LPLAYERPLANEDESCRIPTOR plpd) 639b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 64045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; (void) iPixelFormat; (void) iLayerPlane; 64145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) nBytes; (void) plpd; 642b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 643b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 644b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 645b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 64645ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI int GLAPIENTRY wglSetLayerPaletteEntries(HDC hdc, 64745ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iLayerPlane, 64845ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iStart, 64945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int cEntries, 65045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz CONST COLORREF *pcr) 651b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 65245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; (void) iLayerPlane; (void) iStart; 65345ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) cEntries; (void) pcr; 654b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 655b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(0); 656b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 657b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 65845ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI int GLAPIENTRY wglGetLayerPaletteEntries(HDC hdc, 65945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iLayerPlane, 66045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iStart, 66145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int cEntries, 66245ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz COLORREF *pcr) 663b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 664b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr; 665b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 666b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(0); 667b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 668b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 66945ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglRealizeLayerPalette(HDC hdc, 67045ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz int iLayerPlane, 67145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz BOOL bRealize) 672b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 673b1f709cc881138d8aef06381edb0fde927f69307Daniel Borca (void) hdc; (void) iLayerPlane; (void) bRealize; 674b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 675b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 676b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 677b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 67845ab8cb08aaf641a397c1a30ac19f0942498430bKarl SchultzWINGDIAPI BOOL GLAPIENTRY wglSwapLayerBuffers(HDC hdc, 67945ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz UINT fuPlanes) 680b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz{ 68145ab8cb08aaf641a397c1a30ac19f0942498430bKarl Schultz (void) hdc; (void) fuPlanes; 682b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz SetLastError(0); 683b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz return(FALSE); 684b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz} 685b6a74a4f6e17dc95c5b3fed73f77fb9b7d9ea806Karl Schultz 6867f1274fa8b98f334fc12e13f18caf23b2a79a415Karl SchultzWINGDIAPI const char * GLAPIENTRY wglGetExtensionsStringARB(HDC hdc) 6877f1274fa8b98f334fc12e13f18caf23b2a79a415Karl Schultz{ 6887f1274fa8b98f334fc12e13f18caf23b2a79a415Karl Schultz return "WGL_ARB_extensions_string"; 6897f1274fa8b98f334fc12e13f18caf23b2a79a415Karl Schultz} 690