File indexing completed on 2024-06-16 04:16:49

0001 /*
0002  * KDE. Krita Project.
0003  *
0004  * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com>
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #ifndef KISSCREENTONEGENERATOR_H
0010 #define KISSCREENTONEGENERATOR_H
0011 
0012 #include <QObject>
0013 #include "generator/kis_generator.h"
0014 
0015 #include "KisScreentoneGeneratorConfiguration.h"
0016 
0017 class KisConfigWidget;
0018 
0019 class KisScreentoneGenerator : public KisGenerator
0020 {
0021 public:
0022     KisScreentoneGenerator();
0023 
0024     using KisGenerator::generate;
0025 
0026     virtual void generate(KisProcessingInformation dst,
0027                           const QSize& size,
0028                           const KisFilterConfigurationSP config,
0029                           KoUpdater* progressUpdater) const override;
0030 
0031     void generate(KisProcessingInformation dst,
0032                   const QSize& size,
0033                   const KisScreentoneGeneratorConfigurationSP config,
0034                   KoUpdater* progressUpdater) const;
0035     
0036     template <class Sampler>
0037     void generate(KisProcessingInformation dst,
0038                   const QSize &size,
0039                   const KisScreentoneGeneratorConfigurationSP config,
0040                   KoUpdater *progressUpdater,
0041                   const Sampler &sampler) const;
0042     
0043     template <class Sampler, class PostprocessingFunction>
0044     void generate(KisProcessingInformation dst,
0045                   const QSize &size,
0046                   const KisScreentoneGeneratorConfigurationSP config,
0047                   KoUpdater *progressUpdater,
0048                   const Sampler &sampler,
0049                   const PostprocessingFunction &postprocessingFunction) const;
0050 
0051     static inline KoID id() {
0052         return KoID(KisScreentoneGeneratorConfiguration::defaultName(), i18n("Screentone"));
0053     }
0054 
0055     KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const override;
0056     KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const override;
0057     KisConfigWidget * createConfigurationWidget(QWidget* parent, const KisPaintDeviceSP dev, bool useForMasks) const override;
0058 
0059 private:
0060     bool checkUpdaterInterruptedAndSetPercent(KoUpdater *progressUpdater, int percent) const;
0061 };
0062 
0063 #endif