File indexing completed on 2024-05-26 04:33:11

0001 /*
0002  * This file is part of Krita
0003  *
0004  * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #ifndef THRESHOLD_H
0010 #define THRESHOLD_H
0011 
0012 #include <QObject>
0013 #include <QVariant>
0014 #include <filter/kis_filter.h>
0015 #include <kis_filter_configuration.h>
0016 #include <kis_config_widget.h>
0017 
0018 #include "ui_wdg_threshold.h"
0019 
0020 class WdgThreshold;
0021 class QWidget;
0022 class KisHistogram;
0023 
0024 
0025 
0026 class KritaThreshold : public QObject
0027 {
0028     Q_OBJECT
0029 public:
0030     KritaThreshold(QObject *parent, const QVariantList &);
0031     ~KritaThreshold() override;
0032 };
0033 
0034 class KisFilterThreshold : public KisFilter
0035 {
0036 public:
0037     KisFilterThreshold();
0038 public:
0039 
0040     static inline KoID id() {
0041         return KoID("threshold", i18n("Threshold"));
0042     }
0043 
0044     void processImpl(KisPaintDeviceSP device,
0045                      const QRect& applyRect,
0046                      const KisFilterConfigurationSP config,
0047                      KoUpdater *progressUpdater) const override;
0048 
0049     KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const override;
0050 
0051     KisConfigWidget *createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override;
0052 
0053 };
0054 
0055 class KisThresholdConfigWidget : public KisConfigWidget
0056 {
0057     Q_OBJECT
0058 public:
0059     KisThresholdConfigWidget(QWidget *parent, KisPaintDeviceSP dev);
0060     ~KisThresholdConfigWidget() override;
0061 
0062     KisPropertiesConfigurationSP configuration() const override;
0063     void setConfiguration(const KisPropertiesConfigurationSP config) override;
0064     Ui::WdgThreshold m_page;
0065 
0066 private Q_SLOTS:
0067     void slotDrawHistogram(bool logarithmic = false);
0068 
0069     void slotSetThreshold(int);
0070 
0071 
0072 protected:
0073     QScopedPointer<KisHistogram> m_histogram;
0074     bool m_histlog;
0075 };
0076 
0077 
0078 #endif
0079