File indexing completed on 2024-05-19 04:29:13
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Eugene Ingerman geneing at gmail dot com 0003 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KISIMAGETHUMBNAILSTROKESTRATEGY_H 0009 #define KISIMAGETHUMBNAILSTROKESTRATEGY_H 0010 0011 #include <QObject> 0012 #include <QRect> 0013 #include <QSize> 0014 #include <QImage> 0015 0016 #include "kritaui_export.h" 0017 #include "kis_types.h" 0018 #include <KoColorConversionTransformation.h> 0019 #include "KisIdleTaskStrokeStrategy.h" 0020 0021 class KoColorProfile; 0022 0023 0024 class KRITAUI_EXPORT KisImageThumbnailStrokeStrategyBase : public KisIdleTaskStrokeStrategy 0025 { 0026 Q_OBJECT 0027 public: 0028 KisImageThumbnailStrokeStrategyBase(KisPaintDeviceSP device, 0029 const QRect& rect, 0030 const QSize& thumbnailSize, 0031 bool isPixelArt, 0032 const KoColorProfile *profile, 0033 KoColorConversionTransformation::Intent renderingIntent, 0034 KoColorConversionTransformation::ConversionFlags conversionFlags); 0035 ~KisImageThumbnailStrokeStrategyBase() override; 0036 0037 private: 0038 void initStrokeCallback() override; 0039 0040 protected: 0041 virtual void reportThumbnailGenerationCompleted(KisPaintDeviceSP device, const QRect &rect) = 0; 0042 0043 private: 0044 KisPaintDeviceSP m_device; 0045 QRect m_rect; 0046 QSize m_thumbnailSize; 0047 QSize m_thumbnailOversampledSize; 0048 bool m_isPixelArt {false}; 0049 KisPaintDeviceSP m_thumbnailDevice; 0050 0051 protected: 0052 const KoColorProfile *m_profile; 0053 KoColorConversionTransformation::Intent m_renderingIntent; 0054 KoColorConversionTransformation::ConversionFlags m_conversionFlags; 0055 }; 0056 0057 class KRITAUI_EXPORT KisImageThumbnailStrokeStrategy : public KisImageThumbnailStrokeStrategyBase 0058 { 0059 Q_OBJECT 0060 public: 0061 using KisImageThumbnailStrokeStrategyBase::KisImageThumbnailStrokeStrategyBase; 0062 0063 0064 protected: 0065 virtual void reportThumbnailGenerationCompleted(KisPaintDeviceSP device, const QRect &rect); 0066 0067 Q_SIGNALS: 0068 //Emitted when thumbnail is updated and overviewImage is fully generated. 0069 void thumbnailUpdated(QImage pixmap); 0070 }; 0071 0072 #endif // KISIMAGETHUMBNAILSTROKESTRATEGY_H