Krita Source Code Documentation
Loading...
Searching...
No Matches
KisGradientGenerator.cpp
Go to the documentation of this file.
1/*
2 * KDE. Krita Project.
3 *
4 * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com>
5 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10#include <kpluginfactory.h>
11#include <KoUpdater.h>
16
19
20KisGradientGenerator::KisGradientGenerator() : KisGenerator(id(), KoID("basic"), i18n("&Gradient..."))
21{
23}
24
26 const QSize &size,
27 const KisFilterConfigurationSP config,
28 KoUpdater *progressUpdater) const
29{
30 KisPaintDeviceSP device = dst.paintDevice();
31 Q_ASSERT(!device.isNull());
32
34 const KisGradientGeneratorConfiguration *generatorConfiguration =
35 dynamic_cast<const KisGradientGeneratorConfiguration*>(config.data());
36 KIS_SAFE_ASSERT_RECOVER_RETURN(generatorConfiguration);
37
38
39 QSize imageSize = device->defaultBounds()->imageBorderRect().size();
40 QPair<QPointF, QPointF> positions =
41 generatorConfiguration->absoluteCartesianPositionsInPixels(imageSize.width(), imageSize.height());
42
43 KisGradientPainter painter(device);
45 painter.setProgress(progressUpdater);
46 painter.setGradientShape(generatorConfiguration->shape());
47 painter.setGradient(generatorConfiguration->gradient());
48 painter.paintGradient(
49 positions.first,
50 positions.second,
51 generatorConfiguration->repeat(),
52 generatorConfiguration->antiAliasThreshold(),
53 generatorConfiguration->reverse(),
54 QRect(dst.topLeft(), size),
55 generatorConfiguration->dither()
56 );
57}
58
63
70
72{
73 Q_UNUSED(dev);
74 return new KisGradientGeneratorConfigWidget(parent);
75}
const QString COMPOSITE_COPY
virtual QRect imageBorderRect() const
QPair< QPointF, QPointF > absoluteCartesianPositionsInPixels(int width, int height) const
KisGradientPainter::enumGradientShape shape() const
KisGradientPainter::enumGradientRepeat repeat() const
KoAbstractGradientSP gradient(KoAbstractGradientSP fallbackGradient=nullptr) const
KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const override
KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const override
KisConfigWidget * createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
virtual void generate(KisProcessingInformation dst, const QSize &size, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
KisDefaultBoundsBaseSP defaultBounds() const
void setGradient(const KoAbstractGradientSP gradient)
void setProgress(KoUpdater *progressUpdater)
void setCompositeOpId(const KoCompositeOp *op)
bool isNull() const
Definition KoID.h:30
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
void setSupportsPainting(bool v)
bool paintGradient(const QPointF &gradientVectorStart, const QPointF &gradientVectorEnd, enumGradientRepeat repeat, double antiAliasThreshold, bool reverseGradient, qint32 startx, qint32 starty, qint32 width, qint32 height, bool useDithering=false)
void setGradientShape(enumGradientShape shape)