/****************************************************************************
**
-** 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.
**
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtDebug>
#include <QFile>
-#include <qglfunctions.h>
+#include <qopenglfunctions.h>
+#include <qopenglcontext.h>
QT_BEGIN_NAMESPACE
"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,
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);
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;
ret->m_paddedSize.setWidth(getPaddedWidth(pETCHeader));
}
else {
- free (ret);
+ delete ret;
ret = 0;
}
}