Remove etcprovider plugin.
authorMichael Brasser <michael.brasser@nokia.com>
Mon, 13 Feb 2012 23:41:26 +0000 (09:41 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 15 Feb 2012 05:27:46 +0000 (06:27 +0100)
Handling image providers via QDeclarativeExtensionPlugin is not a
pattern we want to promote for library code. The plugin was also
missing documentation and autotests. It might be appropriate to be
re-added later as an example showing the use of an image provider with
a texture factory.

Change-Id: I2d8f3208aebd55180bd627b3f9acc0679eb6328c
Reviewed-by: Martin Jones <martin.jones@nokia.com>
src/imports/etcprovider/etcprovider.pro [deleted file]
src/imports/etcprovider/plugin.cpp [deleted file]
src/imports/etcprovider/plugin.h [deleted file]
src/imports/etcprovider/qetcprovider.cpp [deleted file]
src/imports/etcprovider/qetcprovider.h [deleted file]
src/imports/etcprovider/qmldir [deleted file]
src/imports/imports.pro

diff --git a/src/imports/etcprovider/etcprovider.pro b/src/imports/etcprovider/etcprovider.pro
deleted file mode 100644 (file)
index 3ec3ab5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TARGET  = qmletcproviderplugin
-TARGETPATH = Qt/labs/etcprovider
-include(../qimportbase.pri)
-!contains(QT_CONFIG, egl):DEFINES += QT_NO_EGL
-
-QT += declarative quick opengl
-
-SOURCES += qetcprovider.cpp plugin.cpp
-HEADERS += qetcprovider.h plugin.h
-
-QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
-target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-
-qmldir.files += $$PWD/qmldir
-qmldir.path +=  $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-
-INSTALLS += target qmldir
-
-OTHER_FILES +=
diff --git a/src/imports/etcprovider/plugin.cpp b/src/imports/etcprovider/plugin.cpp
deleted file mode 100644 (file)
index 29de421..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "plugin.h"
-#include "qetcprovider.h"
-
-#include <QDeclarativeEngine>
-#include <qdebug.h>
-
-QT_BEGIN_NAMESPACE
-
-class QEtcDummyObject : public QObject
-{
-public:
-    QEtcDummyObject() {}
-};
-
-void EtcProviderPlugin::registerTypes(const char *uri)
-{
-    //### this is required or "import Qt.labs.etcprovider 1.0" will give errors
-    //### this plugin should eventually be replaced by a non-import type plugin
-    //    (once it is available)
-    qmlRegisterType<QEtcDummyObject>(uri,1,0,"EtcObject");
-}
-
-void EtcProviderPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri)
-{
-    qDebug () << uri;
-    engine->addImageProvider(QLatin1String("etc"), new QEtcProvider());
-}
-
-QT_END_NAMESPACE
-
-Q_EXPORT_PLUGIN2(qmletcproviderplugin, QT_PREPEND_NAMESPACE(EtcProviderPlugin))
diff --git a/src/imports/etcprovider/plugin.h b/src/imports/etcprovider/plugin.h
deleted file mode 100644 (file)
index c7b388d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef ETCPROVIDERPLUGIN_H
-#define ETCPROVIDERPLUGIN_H
-
-#include <QtDeclarative/qdeclarative.h>
-#include <QtDeclarative/QDeclarativeExtensionPlugin>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-
-class EtcProviderPlugin : public QDeclarativeExtensionPlugin
-{
-    Q_OBJECT
-
-public:
-    void registerTypes(const char *uri);
-    void initializeEngine(QDeclarativeEngine *engine, const char *uri);
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // ETCPROVIDERPLUGIN_H
-
diff --git a/src/imports/etcprovider/qetcprovider.cpp b/src/imports/etcprovider/qetcprovider.cpp
deleted file mode 100644 (file)
index 15ece33..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/****************************************************************************
-**
-** 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_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qetcprovider.h"
-
-#include <QtDebug>
-#include <QFile>
-
-#include <qopenglfunctions.h>
-#include <qopenglcontext.h>
-
-QT_BEGIN_NAMESPACE
-
-typedef struct {
-    char aName[6];
-    unsigned short iBlank;
-    /* NB: Beware endianess issues here. */
-    unsigned char iPaddedWidthMSB;
-    unsigned char iPaddedWidthLSB;
-    unsigned char iPaddedHeightMSB;
-    unsigned char iPaddedHeightLSB;
-    unsigned char iWidthMSB;
-    unsigned char iWidthLSB;
-    unsigned char iHeightMSB;
-    unsigned char iHeightLSB;
-} ETCHeader;
-
-
-unsigned short getWidth(ETCHeader *pHeader)
-{
-    return (pHeader->iWidthMSB << 8) | pHeader->iWidthLSB;
-}
-
-unsigned short getHeight(ETCHeader *pHeader)
-{
-    return (pHeader->iHeightMSB << 8) | pHeader->iHeightLSB;
-}
-
-unsigned short getPaddedWidth(ETCHeader *pHeader)
-{
-    return (pHeader->iPaddedWidthMSB << 8) | pHeader->iPaddedWidthLSB;
-}
-
-unsigned short getPaddedHeight(ETCHeader *pHeader)
-{
-    return (pHeader->iPaddedHeightMSB << 8) | pHeader->iPaddedHeightLSB;
-}
-
-enum {GL_ETC1_RGB8_OES=0x8d64};
-
-EtcTexture::EtcTexture()
-    : m_texture_id(0)
-{
-
-}
-
-EtcTexture::~EtcTexture()
-{
-    if (m_texture_id)
-        glDeleteTextures(1, &m_texture_id);
-}
-
-
-void EtcTexture::bind()
-{
-    if (m_texture_id) {
-        glBindTexture(GL_TEXTURE_2D, m_texture_id);
-        return;
-    }
-
-#ifdef ETC_DEBUG
-    printf("EtcTextureProvider: about to update that texture...\n");
-#endif
-
-    glGenTextures(1, &m_texture_id);
-
-    glBindTexture(GL_TEXTURE_2D, m_texture_id);
-
-#ifdef ETC_DEBUG
-    qDebug() << "glCompressedTexImage2D, width: " << m_size.width() << "height" << m_size.height() <<
-                "paddedWidth: " << m_paddedSize.width() << "paddedHeight: " << m_paddedSize.height();
-#endif
-
-    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,
-                                             (m_paddedSize.width() * m_paddedSize.height()) >> 1,
-                                             m_data.data() + 16);
-
-    // Gracefully fail in case of an error...
-    GLuint error = glGetError();
-    if (error != GL_NO_ERROR) {
-        qDebug () << "glCompressedTexImage2D for compressed texture failed, error: " << error;
-        glBindTexture(GL_TEXTURE_2D, 0);
-        glDeleteTextures(1, &m_texture_id);
-        m_texture_id = 0;
-        return;
-    }
-    updateBindOptions(true);
-}
-
-QSize EtcTexture::textureSize() const
-{
-    return m_size;
-}
-
-
-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(QQuickCanvas *) 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);
-    QEtcTextureFactory *ret = 0;
-
-    size->setHeight(0);
-    size->setWidth(0);
-
-    QFile file(id);
-#ifdef ETC_DEBUG
-    qDebug() << "requestTexture opening file: " << id;
-#endif
-    if (file.open(QIODevice::ReadOnly)) {
-        ret = new QEtcTextureFactory;
-        ret->m_data = file.readAll();
-        if (!ret->m_data.isEmpty()) {
-            ETCHeader *pETCHeader = NULL;
-            pETCHeader = (ETCHeader *)ret->m_data.data();
-            size->setHeight(getHeight(pETCHeader));
-            size->setWidth(getWidth(pETCHeader));
-            ret->m_size = *size;
-            ret->m_paddedSize.setHeight(getPaddedHeight(pETCHeader));
-            ret->m_paddedSize.setWidth(getPaddedWidth(pETCHeader));
-        }
-        else {
-            delete ret;
-            ret = 0;
-        }
-    }
-
-#ifdef ETC_DEBUG
-    if (ret)
-        qDebug() << "requestTexture returning: " << ret->m_data.length() << ", bytes; width: " << size->width() << ", height: " << size->height();
-    else
-        qDebug () << "File not found.";
-#endif
-
-    return ret;
-}
-
-QT_END_NAMESPACE
diff --git a/src/imports/etcprovider/qetcprovider.h b/src/imports/etcprovider/qetcprovider.h
deleted file mode 100644 (file)
index 32e0d40..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/****************************************************************************
-**
-** 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_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QETCPROVIDER_H
-#define QETCPROVIDER_H
-
-#include <qopengl.h>
-#include <QDeclarativeImageProvider>
-#include <QtQuick/QSGTexture>
-#include <QDeclarativeEngine>
-#include <QDeclarativeContext>
-#include <QFileInfo>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-
-// #define ETC_DEBUG
-
-class EtcTexture : public QSGTexture
-{
-    Q_OBJECT
-public:
-    EtcTexture();
-    ~EtcTexture();
-
-    void bind();
-    QSize textureSize() const;
-
-    int textureId() const { return m_texture_id; }
-
-    void setImage(const QImage &image) { Q_UNUSED(image); }
-
-    bool hasAlphaChannel() const { return false; }
-    bool hasMipmaps() const { return false; }
-
-    QByteArray m_data;
-    QSize m_size;
-    QSize m_paddedSize;
-    GLuint m_texture_id;
-};
-
-class QEtcProvider : public QDeclarativeImageProvider
-{
-public:
-    QEtcProvider()
-        : QDeclarativeImageProvider(QDeclarativeImageProvider::Texture)
-    {
-#ifdef ETC_DEBUG
-        qDebug () << "Creating QEtcProvider.";
-#endif
-    }
-    QDeclarativeTextureFactory *requestTexture(const QString &id, QSize *size, const QSize &requestedSize);
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QETCPROVIDER_H
diff --git a/src/imports/etcprovider/qmldir b/src/imports/etcprovider/qmldir
deleted file mode 100644 (file)
index f731f58..0000000
+++ /dev/null
@@ -1 +0,0 @@
-plugin qmletcproviderplugin
index 241ea18..b62275b 100644 (file)
@@ -1,5 +1,5 @@
 TEMPLATE = subdirs
 
-SUBDIRS += qtquick2 folderlistmodel etcprovider localstorage
+SUBDIRS += qtquick2 folderlistmodel localstorage
 contains(QT_CONFIG, qmltest): SUBDIRS += testlib
 contains(QT_CONFIG, xmlpatterns) : SUBDIRS += xmllistmodel