18#include <kpluginfactory.h>
19#include <klocalizedstring.h>
38#include "ui_wdgrandompickoptions.h"
42K_PLUGIN_FACTORY_WITH_JSON(KritaRandomPickFilterFactory,
"kritarandompickfilter.json", registerPlugin<KritaRandomPickFilter>();)
62 const QRect& applyRect,
68 Q_ASSERT(!device.
isNull());
73 int level = (config && config->getProperty(
"level",
value)) ?
value.toInt() : 50;
74 int opacity = (config && config->getProperty(
"opacity",
value)) ?
value.toInt() : 100;
75 double windowsize = (config && config->getProperty(
"windowsize",
value)) ?
value.toDouble() : 2.5;
77 int seedThreshold = rand();
82 seedThreshold = config->getInt(
"seedThreshold", seedThreshold);
83 seedH = config->getInt(
"seedH", seedH);
84 seedV = config->getInt(
"seedV", seedV);
93 double threshold = (100 - level) / 100.0;
96 weights[0] = (255 * opacity) / 100; weights[1] = 255 - weights[0];
97 const quint8* pixels[2];
101 int x =
static_cast<int>(dstIt.
x() + windowsize * (randH.
doubleRandomAt(dstIt.
x(), dstIt.
y()) - 0.5));
102 int y =
static_cast<int>(dstIt.
y() + windowsize * (randV.
doubleRandomAt(dstIt.
x(), dstIt.
y()) -0.5));
121 config->setProperty(
"level", 50);
122 config->setProperty(
"windowsize", 2.5);
123 config->setProperty(
"opacity", 100);
124 config->setProperty(
"seedThreshold", rand());
125 config->setProperty(
"seedH", rand());
126 config->setProperty(
"seedV", rand());
136 int windowsize = ceil((config && config->getProperty(
"windowsize",
value)) ?
value.toDouble() : 2.5);
137 return rect.adjusted(-windowsize, -windowsize, windowsize, windowsize);
145#include "randompickfilter.moc"
float value(const T *src, size_t ch)
virtual const quint8 * oldRawData() const =0
KisConfigWidget * createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
QRect neededRect(const QRect &rect, const KisFilterConfigurationSP config, int lod=0) const override
KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const override
QRect changedRect(const QRect &rect, const KisFilterConfigurationSP config, int lod=0) const override
void processImpl(KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
void add(KisFilterSP item)
static KisFilterRegistry * instance()
KisRandomConstAccessorSP createRandomConstAccessorNG() const
const KoColorSpace * colorSpace() const
virtual void moveTo(qint32 x, qint32 y)=0
ALWAYS_INLINE quint8 * rawData()
ALWAYS_INLINE int x() const
ALWAYS_INLINE const quint8 * oldRawData() const
ALWAYS_INLINE int y() const
KoMixColorsOp * mixColorsOp
virtual void mixColors(const quint8 *const *colors, const qint16 *weights, int nColors, quint8 *dst, int weightSum=255) const =0
KritaRandomPickFilter(QObject *parent, const QVariantList &)
~KritaRandomPickFilter() override
K_PLUGIN_FACTORY_WITH_JSON(KritaASCCDLFactory, "kritaasccdl.json", registerPlugin< KritaASCCDL >();) KritaASCCDL
const KoID FiltersCategoryOtherId("other_filters", ki18nc("The category of filters that do not fit in a category. Noun.", "Other"))
virtual KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const
void setSupportsPainting(bool v)
void setColorSpaceIndependence(ColorSpaceIndependence v)
double doubleRandomAt(qint64 x, qint64 y)