Krita Source Code Documentation
Loading...
Searching...
No Matches
PatternGenerator Class Reference

#include <patterngenerator.h>

+ Inheritance diagram for PatternGenerator:

Public Member Functions

bool allowsSplittingIntoPatches () const override
 
KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
 
KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
KisFilterConfigurationSP factoryConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
virtual void generate (KisProcessingInformation dst, const QSize &size, const KisFilterConfigurationSP config) const
 
void generate (KisProcessingInformation dst, const QSize &size, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
 
virtual void generate (KisProcessingInformation dst, const QSize &size, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const=0
 
 PatternGenerator ()
 
- Public Member Functions inherited from KisGenerator
virtual QRect generatedRect (QRect _imageArea, const KisFilterConfigurationSP=0) const
 
 KisGenerator (const KoID &id, const KoID &category, const QString &entry)
 
 ~KisGenerator () override
 
- Public Member Functions inherited from KisBaseProcessor
KisBookmarkedConfigurationManagerbookmarkManager ()
 
const KisBookmarkedConfigurationManagerbookmarkManager () const
 
ColorSpaceIndependence colorSpaceIndependence () const
 
QString id () const
 
 KisBaseProcessor (const KoID &id, const KoID &category, const QString &entry)
 
KoID menuCategory () const
 
QString menuEntry () const
 
QString name () const
 
 Private ()
 
QKeySequence shortcut () const
 
bool showConfigurationWidget ()
 If true, the filter wants to show a configuration widget.
 
bool supportsAdjustmentLayers () const
 This filter can be used in adjustment layers.
 
bool supportsPainting () const
 
bool supportsThreading () const
 
virtual ~KisBaseProcessor ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Static Public Member Functions

static KoID id ()
 

Additional Inherited Members

- Public Attributes inherited from KisBaseProcessor
KisBookmarkedConfigurationManagerbookmarkManager
 
KoID category
 
ColorSpaceIndependence colorSpaceIndependence
 
QString entry
 
KoID id
 
QKeySequence shortcut
 
bool showConfigurationWidget
 
bool supportsAdjustmentLayers
 
bool supportsPainting
 
bool supportsThreading
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Member Functions inherited from KisGenerator
QString configEntryGroup () const
 
- Protected Member Functions inherited from KisBaseProcessor
void init (const QString &configEntryGroup)
 
void setColorSpaceIndependence (ColorSpaceIndependence v)
 
void setShortcut (const QKeySequence &shortcut)
 
void setShowConfigurationWidget (bool v)
 
void setSupportsAdjustmentLayers (bool v)
 
void setSupportsPainting (bool v)
 
void setSupportsThreading (bool v)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 26 of file patterngenerator.h.

Constructor & Destructor Documentation

◆ PatternGenerator()

PatternGenerator::PatternGenerator ( )

Definition at line 197 of file patterngenerator.cpp.

198 : KisGenerator(id(), KoID("basic"), i18n("&Pattern..."))
199{
202}
@ FULLY_INDEPENDENT
KisGenerator(const KoID &id, const KoID &category, const QString &entry)
Definition KoID.h:30
void setSupportsPainting(bool v)
void setColorSpaceIndependence(ColorSpaceIndependence v)

References FULLY_INDEPENDENT, KisBaseProcessor::setColorSpaceIndependence(), and KisBaseProcessor::setSupportsPainting().

Member Function Documentation

◆ allowsSplittingIntoPatches()

bool PatternGenerator::allowsSplittingIntoPatches ( ) const
inlineoverridevirtual

This generator pastes a single instance of pattern over the whole layer.

Reimplemented from KisGenerator.

Definition at line 51 of file patterngenerator.h.

51{ return false; }

◆ createConfigurationWidget()

KisConfigWidget * PatternGenerator::createConfigurationWidget ( QWidget * parent,
const KisPaintDeviceSP dev,
bool useForMasks ) const
overridevirtual

Create the configuration widget for this processor.

Parameters
parentthe Qt owner widget of this widget
devthe paintdevice this filter will act on
useForMasksshown if the filer is going to be used in a mask. Some filters may provide limited options when applied as a mask (e.g. Gaussian Blur)

Reimplemented from KisBaseProcessor.

Definition at line 245 of file patterngenerator.cpp.

246{
247 Q_UNUSED(dev);
248 return new KisWdgPattern(parent);
249}

◆ defaultConfiguration()

KisFilterConfigurationSP PatternGenerator::defaultConfiguration ( KisResourcesInterfaceSP resourcesInterface) const
overridevirtual

Return the configuration set as the default by the user or the default configuration from the filter writer as returned by factoryConfiguration.

This configuration is used by default for the configuration widget and given to the process function if there is no configuration widget.

Returns
the default configuration of this widget

Reimplemented from KisBaseProcessor.

Definition at line 209 of file patterngenerator.cpp.

210{
211 KisFilterConfigurationSP config = factoryConfiguration(resourcesInterface);
212
213 auto source = resourcesInterface->source<KoPattern>(ResourceType::Patterns);
214
215 if (!source.fallbackResource()) {
216 return config;
217 }
218
219 config->setProperty("md5sum", QVariant::fromValue(source.fallbackResource()->md5Sum()));
220 config->setProperty("fileName", QVariant::fromValue(source.fallbackResource()->filename()));
221 config->setProperty("pattern", QVariant::fromValue(source.fallbackResource()->name()));
222
223 config->setProperty("transform_shear_x", QVariant::fromValue(0.0));
224 config->setProperty("transform_shear_y", QVariant::fromValue(0.0));
225
226 config->setProperty("transform_scale_x", QVariant::fromValue(1.0));
227 config->setProperty("transform_scale_y", QVariant::fromValue(1.0));
228
229 config->setProperty("transform_rotation_x", QVariant::fromValue(0.0));
230 config->setProperty("transform_rotation_y", QVariant::fromValue(0.0));
231 config->setProperty("transform_rotation_z", QVariant::fromValue(0.0));
232
233 config->setProperty("transform_offset_x", QVariant::fromValue(0));
234 config->setProperty("transform_offset_y", QVariant::fromValue(0));
235
236 config->setProperty("transform_keep_scale_aspect", QVariant::fromValue(true));
237
238 config->setProperty("transform_align_to_pixel_grid", QVariant::fromValue(false));
239 config->setProperty("transform_align_to_pixel_grid_x", QVariant::fromValue(1));
240 config->setProperty("transform_align_to_pixel_grid_y", QVariant::fromValue(1));
241
242 return config;
243}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
Write API docs here.
Definition KoPattern.h:21
KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const override
const QString Patterns

References factoryConfiguration(), ResourceType::Patterns, and source().

◆ factoryConfiguration()

KisFilterConfigurationSP PatternGenerator::factoryConfiguration ( KisResourcesInterfaceSP resourcesInterface) const
overridevirtual
Returns
the default configuration object as defined by whoever wrote the plugin. This object must be filled in with fromXML after that.

Reimplemented from KisBaseProcessor.

Definition at line 204 of file patterngenerator.cpp.

205{
206 return new PatternGeneratorConfiguration(id().id(), 1, resourcesInterface);
207}

◆ generate() [1/3]

void KisGenerator::generate ( KisProcessingInformation dst,
const QSize & size,
const KisFilterConfigurationSP config ) const
virtual

Provided for convenience when no progress reporting is needed.

Reimplemented from KisGenerator.

Definition at line 59 of file kis_generator.cpp.

33{
34 generate(dst, size, config, 0);
35}
void generate(KisProcessingInformation dst, const QSize &size, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override

◆ generate() [2/3]

void PatternGenerator::generate ( KisProcessingInformation dst,
const QSize & size,
const KisFilterConfigurationSP config,
KoUpdater * progressUpdater ) const
overridevirtual

Override this function with the implementation of your generator.

Parameters
dstthe destination paint device
sizethe size of the area that is to be filled
configthe parameters of the filter
progressUpdaterthe progress updater

HACK ALERT: using "no-compose" version of fillRect discards all the opacity, selection, and channel flags options. Though it doesn't seem that we have a any GUI in Krita that actually passes a selection to the generator itself. Fill layers apply their settings on a later stage of the compositing pipeline.

Implements KisGenerator.

Definition at line 251 of file patterngenerator.cpp.

255{
256 KisPaintDeviceSP dst = dstInfo.paintDevice();
257
258 Q_ASSERT(!dst.isNull());
259
260 const PatternGeneratorConfiguration *config =
261 dynamic_cast<const PatternGeneratorConfiguration*>(_config.data());
262
264 KoPatternSP pattern = config->pattern();
265 QTransform transform = config->transform();
266
267 KisFillPainter gc(dst);
268 gc.setPattern(pattern);
269 gc.setProgress(progressUpdater);
270 gc.setChannelFlags(config->channelFlags());
271 gc.setOpacityToUnit();
272 gc.setSelection(dstInfo.selection());
273 gc.setWidth(size.width());
274 gc.setHeight(size.height());
275 gc.setFillStyle(KisFillPainter::FillStylePattern);
282 gc.fillRectNoCompose(QRect(dstInfo.topLeft(), size), pattern, transform);
283 gc.end();
284
285}
bool isNull() const
KoResourceLoadResult pattern(KisResourcesInterfaceSP resourcesInterface) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References KisFilterConfiguration::channelFlags, KisSharedPtr< T >::data(), KisPainter::end(), KisFillPainter::fillRectNoCompose(), KisPainter::FillStylePattern, KisSharedPtr< T >::isNull(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisProcessingInformation::paintDevice(), PatternGeneratorConfiguration::pattern(), KisConstProcessingInformation::selection, KisPainter::setChannelFlags(), KisPainter::setFillStyle(), KisFillPainter::setHeight(), KisPainter::setOpacityToUnit(), KisPainter::setPattern(), KisPainter::setProgress(), KisPainter::setSelection(), KisFillPainter::setWidth(), KisConstProcessingInformation::topLeft, and PatternGeneratorConfiguration::transform().

◆ generate() [3/3]

virtual void KisGenerator::generate ( KisProcessingInformation dst,
const QSize & size,
const KisFilterConfigurationSP config,
KoUpdater * progressUpdater ) const
virtual

Override this function with the implementation of your generator.

Parameters
dstthe destination paint device
sizethe size of the area that is to be filled
configthe parameters of the filter
progressUpdaterthe progress updater

Implements KisGenerator.

◆ id()

static KoID PatternGenerator::id ( )
inlinestatic

Definition at line 40 of file patterngenerator.h.

40 {
41 return KoID("pattern", i18n("Pattern"));
42 }

The documentation for this class was generated from the following files: