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