1 /* 2 SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef IMAGETEXTURESCACHE_H 8 #define IMAGETEXTURESCACHE_H 9 10 #include <QQuickWindow> 11 #include <QSharedPointer> 12 13 class QImage; 14 class QSGTexture; 15 struct ImageTexturesCachePrivate; 16 17 /** 18 * @short Helps to manage textures by creating images and reference counts them. 19 * 20 * Use this class as a factory for textures, when creating them from a QImage 21 * instance. 22 * Keeps track of all the created textures in a map between the QImage::cacheKey() and 23 * the cached texture until it gets de-referenced. 24 * 25 * @see ManagedTextureNode 26 */ 27 class ImageTexturesCache 28 { 29 public: 30 ImageTexturesCache(); 31 ~ImageTexturesCache(); 32 33 /** 34 * @returns the texture for a given @p window and @p image. 35 * 36 * If an @p image id is the same as one already provided before, we won't create 37 * a new texture and return a shared pointer to the existing texture. 38 */ 39 QSharedPointer<QSGTexture> loadTexture(QQuickWindow *window, const QImage &image, QQuickWindow::CreateTextureOptions options); 40 41 QSharedPointer<QSGTexture> loadTexture(QQuickWindow *window, const QImage &image); 42 43 private: 44 QScopedPointer<ImageTexturesCachePrivate> d; 45 }; 46 47 #endif // IMAGETEXTURESCACHE_H 48