Krita Source Code Documentation
Loading...
Searching...
No Matches
KisLevelsFilter.cpp
Go to the documentation of this file.
1/*
2 * This file is part of Krita
3 *
4 * SPDX-FileCopyrightText: 2006 Frederic Coiffier <fcoiffie@gmail.com>
5 * SPDX-FileCopyrightText: 2021 Deif Lou <ginoba@gmail.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
11
13
14#include "KisLevelsFilter.h"
16
18 : KisColorTransformationFilter(id(), FiltersCategoryAdjustId, i18n("&Levels..."))
19{
22 setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L));
23}
24
29
31{
32 return new KisLevelsConfigWidget(parent, dev, dev->compositionSourceColorSpace());
33}
34
36{
37 Q_ASSERT(cs);
38 const KisLevelsFilterConfiguration *config_ = dynamic_cast<const KisLevelsFilterConfiguration*>(config.data());
39 Q_ASSERT(config_);
40
41 if (config_->useLightnessMode()) {
42 if (!config_->lightnessLevelsCurve().isIdentity()) {
43 return cs->createBrightnessContrastAdjustment(config_->lightnessTransfer().constData());
44 }
45 } else {
46 QList<bool> isIdentityList;
47 for (const KisLevelsCurve &levelsCurve : config_->levelsCurves()) {
48 isIdentityList.append(levelsCurve.isIdentity());
49 }
50
52 }
53 return nullptr;
54}
@ TO_LAB16
This class holds the parameters for a levels adjustment. It is modeled after KisCubicCurve and has si...
bool isIdentity() const
Check whether the level info maps all values to themselves.
const KisLevelsCurve lightnessLevelsCurve() const
const QVector< KisLevelsCurve > levelsCurves() const
const QVector< QVector< quint16 > > & transfers() const
const QVector< quint16 > & lightnessTransfer() const
KoColorTransformation * createTransformation(const KoColorSpace *cs, const KisFilterConfigurationSP config) const override
KisConfigWidget * createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const override
virtual const KoColorSpace * compositionSourceColorSpace() const
virtual KoColorTransformation * createBrightnessContrastAdjustment(const quint16 *transferValues) const =0
const KoID FiltersCategoryAdjustId("adjust_filters", ki18nc("The category of color adjustment filters, like levels. Verb.", "Adjust"))
KoColorTransformation * createPerChannelTransformationFromTransfers(const KoColorSpace *cs, const QVector< QVector< quint16 > > &transfers, const QList< bool > &transferIsIdentity)
Create a composed per channel transformation object from the set of given transfers.
void setShortcut(const QKeySequence &shortcut)
void setSupportsPainting(bool v)
void setColorSpaceIndependence(ColorSpaceIndependence v)