Changeset 561 for trunk/src/opengl/qpixmapdata_gl_p.h
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/opengl/qpixmapdata_gl_p.h
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtOpenGL module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 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 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 54 54 // 55 55 56 #include "qgl_p.h" 56 57 #include "qgl.h" 57 58 58 59 #include "private/qpixmapdata_p.h" 60 #include "private/qglpaintdevice_p.h" 59 61 60 62 QT_BEGIN_NAMESPACE 61 63 62 64 class QPaintEngine; 65 class QGLFramebufferObject; 66 class QGLFramebufferObjectFormat; 67 class QGLPixmapData; 68 69 class QGLFramebufferObjectPool 70 { 71 public: 72 QGLFramebufferObject *acquire(const QSize &size, const QGLFramebufferObjectFormat &format, bool strictSize = false); 73 void release(QGLFramebufferObject *fbo); 74 75 private: 76 QList<QGLFramebufferObject *> m_fbos; 77 }; 78 79 QGLFramebufferObjectPool* qgl_fbo_pool(); 80 81 82 class QGLPixmapGLPaintDevice : public QGLPaintDevice 83 { 84 public: 85 QPaintEngine* paintEngine() const; 86 87 void beginPaint(); 88 void endPaint(); 89 QGLContext* context() const; 90 QSize size() const; 91 92 void setPixmapData(QGLPixmapData*); 93 private: 94 QGLPixmapData *data; 95 }; 96 63 97 64 98 class QGLPixmapData : public QPixmapData … … 68 102 ~QGLPixmapData(); 69 103 70 bool isValid() const;104 QPixmapData *createCompatiblePixmapData() const; 71 105 106 // Re-implemented from QPixmapData: 72 107 void resize(int width, int height); 73 void fromImage(const QImage &image, 74 Qt::ImageConversionFlags flags); 75 108 void fromImage(const QImage &image, Qt::ImageConversionFlags flags); 109 bool fromFile(const QString &filename, const char *format, 110 Qt::ImageConversionFlags flags); 111 bool fromData(const uchar *buffer, uint len, const char *format, 112 Qt::ImageConversionFlags flags); 113 void copy(const QPixmapData *data, const QRect &rect); 114 bool scroll(int dx, int dy, const QRect &rect); 76 115 void fill(const QColor &color); 77 116 bool hasAlphaChannel() const; 78 117 QImage toImage() const; 79 QPaintEngine* paintEngine() const; 118 QPaintEngine *paintEngine() const; 119 int metric(QPaintDevice::PaintDeviceMetric metric) const; 80 120 81 GLuint bind() const;82 GLuint textureId() const;121 // For accessing as a target: 122 QGLPaintDevice *glDevice() const; 83 123 124 // For accessing as a source: 84 125 bool isValidContext(const QGLContext *ctx) const; 126 GLuint bind(bool copyBack = true) const; 127 QGLTexture *texture() const; 128 129 private: 130 bool isValid() const; 85 131 86 132 void ensureCreated() const; 87 133 88 protected: 89 int metric(QPaintDevice::PaintDeviceMetric metric) const; 134 bool isUninitialized() const { return m_dirty && m_source.isNull(); } 90 135 91 private: 136 bool needsFill() const { return m_hasFillColor; } 137 QColor fillColor() const { return m_fillColor; } 138 139 140 92 141 QGLPixmapData(const QGLPixmapData &other); 93 142 QGLPixmapData &operator=(const QGLPixmapData &other); 94 143 95 int m_width;96 int m_height;144 void copyBackFromRenderFbo(bool keepCurrentFboBound) const; 145 QSize size() const { return QSize(w, h); } 97 146 98 mutable GLuint m_texture; 147 static bool useFramebufferObjects(); 148 149 QImage fillImage(const QColor &color) const; 150 151 mutable QGLFramebufferObject *m_renderFbo; 152 mutable QPaintEngine *m_engine; 153 mutable QGLContext *m_ctx; 154 mutable QImage m_source; 155 mutable QGLTexture m_texture; 156 157 // the texture is not in sync with the source image 99 158 mutable bool m_dirty; 100 mutable QImage m_source; 159 160 // fill has been called and no painting has been done, so the pixmap is 161 // represented by a single fill color 162 mutable QColor m_fillColor; 163 mutable bool m_hasFillColor; 164 165 mutable bool m_hasAlpha; 166 167 mutable QGLPixmapGLPaintDevice m_glDevice; 168 169 friend class QGLPixmapGLPaintDevice; 101 170 }; 102 171
Note:
See TracChangeset
for help on using the changeset viewer.