source: trunk/src/opengl/qglpixelbuffer_win.cpp@ 591

Last change on this file since 591 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

File size: 15.5 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtOpenGL module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <qglpixelbuffer.h>
43#include <qgl.h>
44#include <private/qgl_p.h>
45
46#include <private/qglpixelbuffer_p.h>
47
48#include <qimage.h>
49#include <qdebug.h>
50
51QT_BEGIN_NAMESPACE
52
53/* WGL_WGLEXT_PROTOTYPES */
54typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
55typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
56typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
57typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
58typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
59typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
60typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
61typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
62typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
63typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
64typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
65typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int * piAttribList);
66
67#ifndef WGL_ARB_pbuffer
68#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
69#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
70#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
71#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
72#define WGL_PBUFFER_LARGEST_ARB 0x2033
73#define WGL_PBUFFER_WIDTH_ARB 0x2034
74#define WGL_PBUFFER_HEIGHT_ARB 0x2035
75#define WGL_PBUFFER_LOST_ARB 0x2036
76#endif
77
78#ifndef WGL_ARB_pixel_format
79#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
80#define WGL_DRAW_TO_WINDOW_ARB 0x2001
81#define WGL_DRAW_TO_BITMAP_ARB 0x2002
82#define WGL_ACCELERATION_ARB 0x2003
83#define WGL_NEED_PALETTE_ARB 0x2004
84#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
85#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
86#define WGL_SWAP_METHOD_ARB 0x2007
87#define WGL_NUMBER_OVERLAYS_ARB 0x2008
88#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
89#define WGL_TRANSPARENT_ARB 0x200A
90#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
91#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
92#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
93#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
94#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
95#define WGL_SHARE_DEPTH_ARB 0x200C
96#define WGL_SHARE_STENCIL_ARB 0x200D
97#define WGL_SHARE_ACCUM_ARB 0x200E
98#define WGL_SUPPORT_GDI_ARB 0x200F
99#define WGL_SUPPORT_OPENGL_ARB 0x2010
100#define WGL_DOUBLE_BUFFER_ARB 0x2011
101#define WGL_STEREO_ARB 0x2012
102#define WGL_PIXEL_TYPE_ARB 0x2013
103#define WGL_COLOR_BITS_ARB 0x2014
104#define WGL_RED_BITS_ARB 0x2015
105#define WGL_RED_SHIFT_ARB 0x2016
106#define WGL_GREEN_BITS_ARB 0x2017
107#define WGL_GREEN_SHIFT_ARB 0x2018
108#define WGL_BLUE_BITS_ARB 0x2019
109#define WGL_BLUE_SHIFT_ARB 0x201A
110#define WGL_ALPHA_BITS_ARB 0x201B
111#define WGL_ALPHA_SHIFT_ARB 0x201C
112#define WGL_ACCUM_BITS_ARB 0x201D
113#define WGL_ACCUM_RED_BITS_ARB 0x201E
114#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
115#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
116#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
117#define WGL_DEPTH_BITS_ARB 0x2022
118#define WGL_STENCIL_BITS_ARB 0x2023
119#define WGL_AUX_BUFFERS_ARB 0x2024
120#define WGL_NO_ACCELERATION_ARB 0x2025
121#define WGL_GENERIC_ACCELERATION_ARB 0x2026
122#define WGL_FULL_ACCELERATION_ARB 0x2027
123#define WGL_SWAP_EXCHANGE_ARB 0x2028
124#define WGL_SWAP_COPY_ARB 0x2029
125#define WGL_SWAP_UNDEFINED_ARB 0x202A
126#define WGL_TYPE_RGBA_ARB 0x202B
127#define WGL_TYPE_COLORINDEX_ARB 0x202C
128#endif
129
130#ifndef WGL_ARB_render_texture
131#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
132#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
133#define WGL_TEXTURE_FORMAT_ARB 0x2072
134#define WGL_TEXTURE_TARGET_ARB 0x2073
135#define WGL_MIPMAP_TEXTURE_ARB 0x2074
136#define WGL_TEXTURE_RGB_ARB 0x2075
137#define WGL_TEXTURE_RGBA_ARB 0x2076
138#define WGL_NO_TEXTURE_ARB 0x2077
139#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
140#define WGL_TEXTURE_1D_ARB 0x2079
141#define WGL_TEXTURE_2D_ARB 0x207A
142#define WGL_MIPMAP_LEVEL_ARB 0x207B
143#define WGL_CUBE_MAP_FACE_ARB 0x207C
144#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
145#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E