Remove "All rights reserved" line from license headers.
[profile/ivi/qtdeclarative.git] / src / imports / etcprovider / qetcprovider.cpp
index 3e76c01..e80ab71 100644 (file)
@@ -1,8 +1,7 @@
 /****************************************************************************
 **
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
 **
 ** This file is part of the Declarative module of the Qt Toolkit.
 **
@@ -35,6 +34,7 @@
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
@@ -44,7 +44,8 @@
 #include <QtDebug>
 #include <QFile>
 
-#include <qglfunctions.h>
+#include <qopenglfunctions.h>
+#include <qopenglcontext.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -118,7 +119,7 @@ void EtcTexture::bind()
                 "paddedWidth: " << m_paddedSize.width() << "paddedHeight: " << m_paddedSize.height();
 #endif
 
-    const QGLContext *ctx = QGLContext::currentContext();
+    QOpenGLContext *ctx = QOpenGLContext::currentContext();
     Q_ASSERT(ctx != 0);
     ctx->functions()->glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_ETC1_RGB8_OES,
                                              m_size.width(), m_size.height(), 0,
@@ -142,10 +143,37 @@ QSize EtcTexture::textureSize() const
     return m_size;
 }
 
-QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const QSize &requestedSize)
+
+class QEtcTextureFactory : public QDeclarativeTextureFactory
+{
+public:
+    QByteArray m_data;
+    QSize m_size;
+    QSize m_paddedSize;
+
+    QSize textureSize() const {
+        return m_size;
+    }
+
+    int textureByteCount() const {
+        return m_data.size();
+    }
+
+    QSGTexture *createTexture() const {
+        EtcTexture *texture = new EtcTexture;
+        texture->m_data = m_data;
+        texture->m_size = m_size;
+        texture->m_paddedSize = m_paddedSize;
+        return texture;
+    }
+
+};
+
+
+QDeclarativeTextureFactory *QEtcProvider::requestTexture(const QString &id, QSize *size, const QSize &requestedSize)
 {
     Q_UNUSED(requestedSize);
-    EtcTexture *ret = 0;
+    QEtcTextureFactory *ret = 0;
 
     size->setHeight(0);
     size->setWidth(0);
@@ -155,7 +183,7 @@ QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const Q
     qDebug() << "requestTexture opening file: " << id;
 #endif
     if (file.open(QIODevice::ReadOnly)) {
-        ret = new EtcTexture();
+        ret = new QEtcTextureFactory;
         ret->m_data = file.readAll();
         if (!ret->m_data.isEmpty()) {
             ETCHeader *pETCHeader = NULL;
@@ -167,7 +195,7 @@ QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const Q
             ret->m_paddedSize.setWidth(getPaddedWidth(pETCHeader));
         }
         else {
-            free (ret);
+            delete ret;
             ret = 0;
         }
     }