diff options
Diffstat (limited to 'src/quick/util/qquickpixmapcache_p.h')
-rw-r--r-- | src/quick/util/qquickpixmapcache_p.h | 76 |
1 files changed, 64 insertions, 12 deletions
diff --git a/src/quick/util/qquickpixmapcache_p.h b/src/quick/util/qquickpixmapcache_p.h index f53e847e00..eea6a7a454 100644 --- a/src/quick/util/qquickpixmapcache_p.h +++ b/src/quick/util/qquickpixmapcache_p.h @@ -65,28 +65,62 @@ QT_BEGIN_NAMESPACE class QQmlEngine; class QQuickPixmapData; class QQuickTextureFactory; - -enum AutoTransform { - UsePluginDefault = -1, - ApplyTransform = 0, - DoNotApplyTransform = 1 -}; +class QQuickImageProviderOptionsPrivate; class QQuickDefaultTextureFactory : public QQuickTextureFactory { Q_OBJECT public: QQuickDefaultTextureFactory(const QImage &i); - QSGTexture *createTexture(QQuickWindow *window) const; - QSize textureSize() const { return size; } - int textureByteCount() const { return size.width() * size.height() * 4; } - QImage image() const { return im; } + QSGTexture *createTexture(QQuickWindow *window) const override; + QSize textureSize() const override { return size; } + int textureByteCount() const override { return size.width() * size.height() * 4; } + QImage image() const override { return im; } private: QImage im; QSize size; }; +class QQuickImageProviderPrivate +{ +public: + QQuickImageProvider::ImageType type; + QQuickImageProvider::Flags flags; + bool isProviderWithOptions; +}; + +// ### Qt 6: Make public moving to qquickimageprovider.h +class Q_QUICK_EXPORT QQuickImageProviderOptions +{ +public: + enum AutoTransform { + UsePluginDefaultTransform = -1, + ApplyTransform = 0, + DoNotApplyTransform = 1 + }; + + QQuickImageProviderOptions(); + ~QQuickImageProviderOptions(); + + QQuickImageProviderOptions(const QQuickImageProviderOptions&); + QQuickImageProviderOptions& operator=(const QQuickImageProviderOptions&); + + bool operator==(const QQuickImageProviderOptions&) const; + + AutoTransform autoTransform() const; + void setAutoTransform(AutoTransform autoTransform); + + bool preserveAspectRatioCrop() const; + void setPreserveAspectRatioCrop(bool preserveAspectRatioCrop); + + bool preserveAspectRatioFit() const; + void setPreserveAspectRatioFit(bool preserveAspectRatioFit); + +private: + QSharedDataPointer<QQuickImageProviderOptionsPrivate> d; +}; + class Q_QUICK_PRIVATE_EXPORT QQuickPixmap { Q_DECLARE_TR_FUNCTIONS(QQuickPixmap) @@ -115,7 +149,7 @@ public: const QUrl &url() const; const QSize &implicitSize() const; const QSize &requestSize() const; - AutoTransform autoTransform() const; + QQuickImageProviderOptions::AutoTransform autoTransform() const; QImage image() const; void setImage(const QImage &); void setPixmap(const QQuickPixmap &other); @@ -130,7 +164,7 @@ public: void load(QQmlEngine *, const QUrl &, QQuickPixmap::Options options); void load(QQmlEngine *, const QUrl &, const QSize &); void load(QQmlEngine *, const QUrl &, const QSize &, QQuickPixmap::Options options); - void load(QQmlEngine *, const QUrl &, const QSize &, QQuickPixmap::Options options, AutoTransform autoTransform); + void load(QQmlEngine *, const QUrl &, const QSize &, QQuickPixmap::Options options, const QQuickImageProviderOptions &providerOptions); void clear(); void clear(QObject *); @@ -152,6 +186,24 @@ private: Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickPixmap::Options) +// This class will disappear with Qt6 and will just be the regular QQuickImageProvider +// ### Qt 6: Remove this class and fold it with QQuickImageProvider +class Q_QUICK_EXPORT QQuickImageProviderWithOptions : public QQuickAsyncImageProvider +{ +public: + QQuickImageProviderWithOptions(ImageType type, Flags flags = Flags()); + + QImage requestImage(const QString &id, QSize *size, const QSize& requestedSize) override; + QPixmap requestPixmap(const QString &id, QSize *size, const QSize& requestedSize) override; + QQuickTextureFactory *requestTexture(const QString &id, QSize *size, const QSize &requestedSize) override; + QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override; + + virtual QImage requestImage(const QString &id, QSize *size, const QSize& requestedSize, const QQuickImageProviderOptions &options); + virtual QPixmap requestPixmap(const QString &id, QSize *size, const QSize& requestedSize, const QQuickImageProviderOptions &options); + virtual QQuickTextureFactory *requestTexture(const QString &id, QSize *size, const QSize &requestedSize, const QQuickImageProviderOptions &options); + virtual QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize, const QQuickImageProviderOptions &options); +}; + QT_END_NAMESPACE #endif // QQUICKPIXMAPCACHE_H |