Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_multichannel_filter_base.h
Go to the documentation of this file.
1/*
2 * This file is part of Krita
3 *
4 * SPDX-FileCopyrightText: 2018 Jouni Pentikainen <joupent@gmail.com>
5 * SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8*/
9
10#ifndef _KIS_MULTICHANNEL_FILTER_BASE_H_
11#define _KIS_MULTICHANNEL_FILTER_BASE_H_
12
13#include <QList>
14
17#include <kis_config_widget.h>
18#include <kis_paint_device.h>
19#include "ui_wdg_perchannel.h"
20
22
27{
28public:
29 bool needsTransparentPixels(const KisFilterConfigurationSP config, const KoColorSpace *cs) const override;
30
36 static QVector<VirtualChannelInfo> getVirtualChannels(const KoColorSpace *cs, int maxChannels = -1);
37 static int findChannel(const QVector<VirtualChannelInfo> &virtualChannels, const VirtualChannelInfo::Type &channelType);
38
39protected:
40 KisMultiChannelFilter(const KoID &id, const QString &entry);
41};
42
47{
48public:
52
56
57 void fromLegacyXML(const QDomElement& root) override;
58
59 void fromXML(const QDomElement& e) override;
60 void toXML(QDomDocument& doc, QDomElement& root) const override;
61
63 bool isCompatible(const KisPaintDeviceSP) const override;
64
65 const QVector<QVector<quint16> >& transfers() const;
66 const QList<KisCubicCurve>& curves() const;
67
68 virtual bool compareTo(const KisPropertiesConfiguration* rhs) const override;
69
70 void setProperty(const QString& name, const QVariant& value) override;
71 void setActiveCurve(int value);
72
73protected:
75 int m_activeCurve {-1};
78
79 void init();
80 void updateTransfer(int index);
81 void updateTransfers();
82
84
94 bool curveIndexFromCurvePropertyName(const QString& name, int& curveIndex) const;
95};
96
97class WdgPerChannel : public QWidget, public Ui::WdgPerChannel
98{
99 Q_OBJECT
100
101public:
102 WdgPerChannel(QWidget *parent) : QWidget(parent) {
103 setupUi(this);
104 }
105};
106
111{
112 Q_OBJECT
113
114public:
115 KisMultiChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, Qt::WindowFlags f = Qt::WindowFlags());
117
118 void setConfiguration(const KisPropertiesConfigurationSP config) override;
119
120protected Q_SLOTS:
121 void logHistView();
122 void resetCurve();
123 void slotCurveModified();
124 void slotChannelSelected(int index);
125
126protected:
127 void init();
128 void resetCurves();
129 void setActiveChannel(int ch);
131
132 virtual void updateChannelControls() = 0;
134
135 inline QPixmap getHistogram();
136 inline QPixmap createGradient(Qt::Orientation orient /*, int invert (not used now) */);
137
141
145};
146
147#endif
float value(const T *src, size_t ch)
QPixmap createGradient(Qt::Orientation orient)
virtual void updateChannelControls()=0
KisMultiChannelConfigWidget(QWidget *parent, KisPaintDeviceSP dev, Qt::WindowFlags f=Qt::WindowFlags())
void setConfiguration(const KisPropertiesConfigurationSP config) override
virtual KisPropertiesConfigurationSP getDefaultConfiguration()=0
QVector< VirtualChannelInfo > m_virtualChannels
void setProperty(const QString &name, const QVariant &value) override
const QVector< QVector< quint16 > > & transfers() const
bool curveIndexFromCurvePropertyName(const QString &name, int &curveIndex) const
Takes a curve property name with format "curve#", where # is the index of the channel and puts the in...
void setCurves(QList< KisCubicCurve > &curves)
bool isCompatible(const KisPaintDeviceSP) const override
void fromLegacyXML(const QDomElement &root) override
KisMultiChannelFilterConfiguration(int channelCount, const QString &name, qint32 version, KisResourcesInterfaceSP resourcesInterface)
virtual KisCubicCurve getDefaultCurve()=0
const QList< KisCubicCurve > & curves() const
virtual bool compareTo(const KisPropertiesConfiguration *rhs) const override
void fromXML(const QDomElement &e) override
bool needsTransparentPixels(const KisFilterConfigurationSP config, const KoColorSpace *cs) const override
static QVector< VirtualChannelInfo > getVirtualChannels(const KoColorSpace *cs, int maxChannels=-1)
static int findChannel(const QVector< VirtualChannelInfo > &virtualChannels, const VirtualChannelInfo::Type &channelType)
KisMultiChannelFilter(const KoID &id, const QString &entry)
Definition KoID.h:30
void fromXML(const QDomElement &) override
virtual void fromLegacyXML(const QDomElement &)
KisResourcesInterfaceSP resourcesInterface