From 392b078c78b265ee636e57fca01eebd69f262985 Mon Sep 17 00:00:00 2001 From: Matthew Vogt Date: Wed, 21 Mar 2012 17:55:07 +1000 Subject: [PATCH] Provide imageType() from QQmlImageProviderBase Clients who are only interested in the type of image data provided by an image provider should not need to cast the base pointer to a QQuickImageProvider to access this information. Also make the QQmlImageProviderBase constructor private to prevent unwanted inheritance; all implementors should use the QQuickImageProvider class. Change-Id: Ia2dd2595c2711fa7df47265c9857f45ef0f4cc41 Reviewed-by: Kent Hansen --- src/qml/qml/qqmlengine.cpp | 34 +++++++++++++++++++++++++++++++- src/qml/qml/qqmlengine.h | 13 ++++++++++++ src/quick/util/qquickimageprovider.cpp | 13 ------------ src/quick/util/qquickimageprovider.h | 7 ------ 4 files changed, 46 insertions(+), 21 deletions(-) diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index b1fcadd..6729960 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -177,6 +177,38 @@ void QQmlEnginePrivate::defineModule() } +/*! + \class QQmlImageProviderBase + \brief The QQmlImageProviderBase class is used to register image providers in the QML engine. + \mainclass + + Image providers must be registered with the QML engine. The only information the QML + engine knows about image providers is the type of image data they provide. To use an + image provider to acquire image data, you must cast the QQmlImageProviderBase pointer + to a QQuickImageProvider pointer. + + \sa QQuickImageProvider, QQuickTextureFactory +*/ + +/*! + \enum QQmlImageProviderBase::ImageType + + Defines the type of image supported by this image provider. + + \value Image The Image Provider provides QImage images. + The QQuickImageProvider::requestImage() method will be called for all image requests. + \value Pixmap The Image Provider provides QPixmap images. + The QQuickImageProvider::requestPixmap() method will be called for all image requests. + \value Texture The Image Provider provides QSGTextureProvider based images. + The QQuickImageProvider::requestTexture() method will be called for all image requests. \omitvalue +*/ + +/*! \internal */ +QQmlImageProviderBase::QQmlImageProviderBase() +{ +} + +/*! \internal */ QQmlImageProviderBase::~QQmlImageProviderBase() { } @@ -679,7 +711,7 @@ QNetworkAccessManager *QQmlEngine::networkAccessManager() const All required image providers should be added to the engine before any QML sources files are loaded. - \sa removeImageProvider(), QQuickImageProvider + \sa removeImageProvider(), QQuickImageProvider, QQmlImageProviderBase */ void QQmlEngine::addImageProvider(const QString &providerId, QQmlImageProviderBase *provider) { diff --git a/src/qml/qml/qqmlengine.h b/src/qml/qml/qqmlengine.h index 4169692..21a03d6 100644 --- a/src/qml/qml/qqmlengine.h +++ b/src/qml/qml/qqmlengine.h @@ -57,7 +57,20 @@ QT_BEGIN_NAMESPACE class Q_QML_EXPORT QQmlImageProviderBase { public: + enum ImageType { + Image, + Pixmap, + Texture, + Invalid + }; + virtual ~QQmlImageProviderBase(); + + virtual ImageType imageType() const = 0; + +private: + friend class QQuickImageProvider; + QQmlImageProviderBase(); }; class QQmlComponent; diff --git a/src/quick/util/qquickimageprovider.cpp b/src/quick/util/qquickimageprovider.cpp index a5d2720..1d838ca 100644 --- a/src/quick/util/qquickimageprovider.cpp +++ b/src/quick/util/qquickimageprovider.cpp @@ -222,19 +222,6 @@ QImage QQuickTextureFactory::image() const */ /*! - \enum QQuickImageProvider::ImageType - - Defines the type of image supported by this image provider. - - \value Image The Image Provider provides QImage images. The - requestImage() method will be called for all image requests. - \value Pixmap The Image Provider provides QPixmap images. The - requestPixmap() method will be called for all image requests. - \value Texture The Image Provider provides QSGTextureProvider based images. - The requestTexture() method will be called for all image requests. \omitvalue -*/ - -/*! Creates an image provider that will provide images of the given \a type. */ QQuickImageProvider::QQuickImageProvider(ImageType type) diff --git a/src/quick/util/qquickimageprovider.h b/src/quick/util/qquickimageprovider.h index 2a5d146..252d57b 100644 --- a/src/quick/util/qquickimageprovider.h +++ b/src/quick/util/qquickimageprovider.h @@ -71,13 +71,6 @@ public: class Q_QUICK_EXPORT QQuickImageProvider : public QQmlImageProviderBase { public: - enum ImageType { - Image, - Pixmap, - Texture, - Invalid - }; - QQuickImageProvider(ImageType type); virtual ~QQuickImageProvider(); -- 1.7.2.5