~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/opengl/qgl_p.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
 
4
**
 
5
** This file is part of the opengl module of the Qt Toolkit.
 
6
**
 
7
** This file may be distributed under the terms of the Q Public License
 
8
** as defined by Trolltech AS of Norway and appearing in the file
 
9
** LICENSE.QPL included in the packaging of this file.
 
10
**
 
11
** This file may be distributed and/or modified under the terms of the
 
12
** GNU General Public License version 2 as published by the Free Software
 
13
** Foundation and appearing in the file LICENSE.GPL included in the
 
14
** packaging of this file.
 
15
**
 
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
 
17
**   information about Qt Commercial License Agreements.
 
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
 
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
 
20
**
 
21
** Contact info@trolltech.com if any conditions of this licensing are
 
22
** not clear to you.
 
23
**
 
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
26
**
 
27
****************************************************************************/
 
28
 
 
29
#ifndef QGL_P_H
 
30
#define QGL_P_H
 
31
 
 
32
#include "private/qwidget_p.h"
 
33
#include "qglcolormap.h"
 
34
#include "qgl.h"
 
35
#include "qmap.h"
 
36
 
 
37
class QGLContext;
 
38
class QGLOverlayWidget;
 
39
class QPixmap;
 
40
#ifdef Q_WS_MAC
 
41
class QMacWindowChangeEvent;
 
42
#endif
 
43
 
 
44
class QGLFormatPrivate
 
45
{
 
46
public:
 
47
    QGLFormatPrivate() {
 
48
        opts = QGL::DoubleBuffer | QGL::DepthBuffer | QGL::Rgba | QGL::DirectRendering;
 
49
        pln = 0;
 
50
        depthSize = accumSize = stencilSize = alphaSize = -1;
 
51
        numSamples = -1;
 
52
    }
 
53
    QGL::FormatOptions opts;
 
54
    int pln;
 
55
    int depthSize;
 
56
    int accumSize;
 
57
    int stencilSize;
 
58
    int alphaSize;
 
59
    int numSamples;
 
60
};
 
61
 
 
62
class QGLWidgetPrivate : public QWidgetPrivate
 
63
{
 
64
    Q_DECLARE_PUBLIC(QGLWidget)
 
65
public:
 
66
    QGLWidgetPrivate() : QWidgetPrivate() {}
 
67
    ~QGLWidgetPrivate() {}
 
68
 
 
69
    void init(QGLContext *context, const QGLWidget* shareWidget);
 
70
    bool renderCxPm(QPixmap *pixmap);
 
71
    void cleanupColormaps();
 
72
 
 
73
    QGLContext *glcx;
 
74
    bool autoSwap;
 
75
 
 
76
    QGLColormap cmap;
 
77
    QMap<QString, int> displayListCache;
 
78
 
 
79
#if defined(Q_WS_WIN)
 
80
    QGLContext *olcx;
 
81
#elif defined(Q_WS_X11)
 
82
    QGLOverlayWidget *olw;
 
83
#elif defined(Q_WS_MAC)
 
84
    QGLContext *olcx;
 
85
    void updatePaintDevice();
 
86
    QMacWindowChangeEvent *watcher;
 
87
#endif
 
88
};
 
89
 
 
90
class QGLContextPrivate
 
91
{
 
92
    Q_DECLARE_PUBLIC(QGLContext)
 
93
public:
 
94
    explicit QGLContextPrivate(QGLContext *context) : q_ptr(context) {}
 
95
    ~QGLContextPrivate() {}
 
96
    GLuint bindTexture(const QImage &image, GLenum target, GLint format, const QString &key);
 
97
    void init(QPaintDevice *dev, const QGLFormat &format);
 
98
 
 
99
#if defined(Q_WS_WIN)
 
100
    HGLRC rc;
 
101
    HDC dc;
 
102
    WId        win;
 
103
    int pixelFormatId;
 
104
    QGLCmap* cmap;
 
105
    HBITMAP hbitmap;
 
106
    HDC hbitmap_hdc;
 
107
#elif defined(Q_WS_X11) || defined(Q_WS_MAC)
 
108
    void* vi;
 
109
    void* cx;
 
110
#if defined(Q_WS_X11)
 
111
    quint32 gpm;
 
112
#endif
 
113
#endif
 
114
    QGLFormat glFormat;
 
115
    QGLFormat reqFormat;
 
116
 
 
117
    uint valid : 1;
 
118
    uint sharing : 1;
 
119
    uint initDone : 1;
 
120
    uint crWin : 1;
 
121
    QPaintDevice *paintDevice;
 
122
    QColor transpColor;
 
123
    QGLContext *q_ptr;
 
124
};
 
125
 
 
126
// GL extension definitions
 
127
class QGLExtensions {
 
128
public:
 
129
    enum Extension {
 
130
        TextureRectangle        = 0x00000001,
 
131
        SampleBuffers           = 0x00000002,
 
132
        GenerateMipmap          = 0x00000004,
 
133
        TextureCompression      = 0x00000008
 
134
    };
 
135
    Q_DECLARE_FLAGS(Extensions, Extension)
 
136
 
 
137
    static Extensions glExtensions;
 
138
    static void init(); // sys dependent
 
139
    static void init_extensions(); // general: called by init()
 
140
};
 
141
 
 
142
Q_DECLARE_OPERATORS_FOR_FLAGS(QGLExtensions::Extensions)
 
143
 
 
144
/* NV_texture_rectangle */
 
145
#ifndef GL_NV_texture_rectangle
 
146
#define GL_TEXTURE_RECTANGLE_NV           0x84F5
 
147
#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
 
148
#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
 
149
#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
 
150
#endif
 
151
#endif // QGL_P_H