File indexing completed on 2024-06-23 04:26:23
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Agata Cacko <tamtamy.tymona@gmail.com> 0003 * SPDX-FileCopyrightText: 2023 Dmitry Kazakov <dimula73@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef HISTOGRAMCOMPUTATIONSTROKESTRATEGY_H 0008 #define HISTOGRAMCOMPUTATIONSTROKESTRATEGY_H 0009 0010 #include <KisIdleTaskStrokeStrategy.h> 0011 #include <vector> 0012 0013 class KoColorSpace; 0014 0015 0016 using HistVector = std::vector<std::vector<quint32> >; //Don't use QVector here - it's too slow for this purpose 0017 0018 struct HistogramData 0019 { 0020 HistVector bins; 0021 const KoColorSpace* colorSpace {0}; 0022 }; 0023 Q_DECLARE_METATYPE(HistogramData) 0024 0025 0026 class HistogramComputationStrokeStrategy : public KisIdleTaskStrokeStrategy 0027 { 0028 Q_OBJECT 0029 public: 0030 HistogramComputationStrokeStrategy(KisImageSP image); 0031 ~HistogramComputationStrokeStrategy() override; 0032 0033 private: 0034 void initStrokeCallback() override; 0035 void doStrokeCallback(KisStrokeJobData *data) override; 0036 void finishStrokeCallback() override; 0037 0038 void initiateVector(HistVector &vec, const KoColorSpace* colorSpace); 0039 0040 Q_SIGNALS: 0041 //Emitted when thumbnail is updated and overviewImage is fully generated. 0042 void computationResultReady(HistogramData data); 0043 0044 private: 0045 struct Private; 0046 const QScopedPointer<Private> m_d; 0047 }; 0048 0049 #endif // HISTOGRAMCOMPUTATIONSTROKESTRATEGY_H