4#ifndef ASYNCIMAGEPROVIDER_H
5#define ASYNCIMAGEPROVIDER_H
7#include "asyncimageproviderbase.h"
8#include "asyncimagerenderthread.h"
9#include "rgbcolorspacefactory.h"
149class AsyncImageProvider final :
public AsyncImageProviderBase
156 virtual ~AsyncImageProvider() noexcept override;
158 [[nodiscard]] QImage getMaskCache() const;
159 [[nodiscard]] QImage getCache() const;
160 [[nodiscard]] T imageParameters() const;
163 void setImageParameters(const T &newImageParameters);
166 Q_DISABLE_COPY(AsyncImageProvider)
169 friend class TestAsyncImageProvider;
171 void processInterlacingPassResult(const QImage &deliveredImage, const QImage &deliveredMask);
189 bool m_lastRenderingRequestHasYetDeliveredAnImage = false;
192 std::optional<T> m_lastRenderingRequestImageParameters;
194 AsyncImageRenderThread m_renderThread;
202 : AsyncImageProviderBase(
parent)
203 , m_renderThread(&T::render)
207 qRegisterMetaType<T>();
210 &AsyncImageRenderThread::interlacingPassCompleted,
212 &AsyncImageProvider<T>::processInterlacingPassResult);
217AsyncImageProvider<T>::~AsyncImageProvider() noexcept
227QImage AsyncImageProvider<T>::getCache()
const
239QImage AsyncImageProvider<T>::getMaskCache()
const
261void AsyncImageProvider<T>::setImageParameters(
const T &newImageParameters)
263 m_imageParameters = newImageParameters;
279T AsyncImageProvider<T>::imageParameters()
const
281 return m_imageParameters;
315void AsyncImageProvider<T>::processInterlacingPassResult(
const QImage &deliveredImage,
const QImage &deliveredMask)
317 m_cache = deliveredImage;
318 if (!deliveredMask.
isNull()) {
319 m_maskCache = deliveredMask;
321 Q_EMIT interlacingPassCompleted();
327void AsyncImageProvider<T>::refreshAsync()
329 if (imageParameters() == m_lastRenderingRequestImageParameters) {
333 m_lastRenderingRequestImageParameters = imageParameters();
338void AsyncImageProvider<T>::refreshSync()
341 m_renderThread.waitForIdle();
The namespace of this library.
bool isNull() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
QVariant fromValue(T &&value)