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