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

#include <kis_duplicateop_settings.h>

+ Inheritance diagram for KisDuplicateOpSettings:

Public Member Functions

void activate () override
 
KisOptimizedBrushOutline brushOutline (const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom) override
 
KisOptimizedBrushOutline brushOutline (const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom) override
 
KisPaintOpSettingsSP clone () const override
 
void fromXML (const QDomElement &elt) override
 
QString indirectPaintingCompositeOp () const override
 
 KisDuplicateOpSettings (KisResourcesInterfaceSP resourcesInterface)
 
bool mousePressEvent (const KisPaintInformation &pos, Qt::KeyboardModifiers modifiers, KisNodeWSP currentNode) override
 
bool mouseReleaseEvent () override
 
QPointF offset () const
 
bool paintIncremental () override
 Reimplemented.
 
QPointF position () const
 
KisNodeWSP sourceNode () const
 
void toXML (QDomDocument &doc, QDomElement &rootElt) const override
 
QList< KisUniformPaintOpPropertySPuniformProperties (KisPaintOpSettingsSP settings, QPointer< KisPaintOpPresetUpdateProxy > updateProxy) override
 
 ~KisDuplicateOpSettings () override
 
- Public Member Functions inherited from KisBrushBasedPaintOpSettings
bool autoSpacingActive ()
 
qreal autoSpacingCoeff ()
 
KisBrushSP brush () const
 
virtual bool hasPatternSettings () const override
 
 KisBrushBasedPaintOpSettings (KisResourcesInterfaceSP resourcesInterface)
 
qreal paintOpAngle () const override
 
qreal paintOpSize () const override
 
void regenerateResourceCache (KoResourceCacheInterfaceSP cacheInterface) override
 
QList< int > requiredCanvasResources () const override
 
void setAutoSpacing (bool active, qreal coeff)
 
void setPaintOpAngle (qreal value) override
 
void setPaintOpSize (qreal value) override
 
void setResourceCacheInterface (KoResourceCacheInterfaceSP cacheInterface) override
 
void setSpacing (qreal spacing)
 
qreal spacing ()
 
 ~KisBrushBasedPaintOpSettings () override
 
- Public Member Functions inherited from KisOutlineGenerationPolicy< KisPaintOpSettings >
 KisOutlineGenerationPolicy (KisCurrentOutlineFetcher::Options options, KisResourcesInterfaceSP resourcesInterface)
 
void onPropertyChanged () override
 
const KisCurrentOutlineFetcheroutlineFetcher () const
 
 ~KisOutlineGenerationPolicy () override
 
- Public Member Functions inherited from KisPaintOpSettings
virtual qreal airbrushInterval () const
 
KoCanvasResourcesInterfaceSP canvasResourcesInterface () const
 
KisPaintOpSettingsSP createMaskingSettings () const
 
QString effectivePaintOpCompositeOp ()
 
bool eraserMode ()
 
bool hasMaskingSettings () const
 
virtual bool isAirbrushing () const
 
virtual bool isValid () const
 
 KisPaintOpSettings (const KisPaintOpSettings &rhs)
 
 KisPaintOpSettings (KisResourcesInterfaceSP resourcesInterface)
 
qreal lodSizeThreshold () const
 
virtual bool lodSizeThresholdSupported () const
 
QString maskingBrushCompositeOp () const
 
virtual QString modelName () const
 
virtual bool needsAsynchronousUpdates () const
 
KisNodeSP node () const
 
QString paintOpCompositeOp ()
 
qreal paintOpFade ()
 
qreal paintOpFlow ()
 
virtual qreal paintOpOpacity ()
 
virtual qreal paintOpPatternSize ()
 
qreal paintOpScatter ()
 
 Private ()
 
 Private (const Private &rhs)
 
virtual void resetSettings (const QStringList &preserveProperties=QStringList())
 
KoResourceCacheInterfaceSP resourceCacheInterface () const
 
KisResourcesInterfaceSP resourcesInterface () const
 
quint64 sanityVersionCookie () const
 
qreal savedBrushOpacity () const
 
qreal savedBrushSize () const
 
qreal savedEraserOpacity () const
 
qreal savedEraserSize () const
 
void setCanvasResourcesInterface (KoCanvasResourcesInterfaceSP canvasResourcesInterface)
 
void setEraserMode (bool value)
 
void setLodSizeThreshold (qreal value)
 
void setModelName (const QString &modelName)
 
void setPaintOpCompositeOp (const QString &value)
 
void setPaintOpFade (qreal value)
 
void setPaintOpFlow (qreal value)
 
virtual void setPaintOpOpacity (qreal value)
 
void setPaintOpScatter (qreal value)
 
void setProperty (const QString &name, const QVariant &value) override
 
virtual void setRandomOffset (const KisPaintInformation &paintInformation)
 
void setResourcesInterface (KisResourcesInterfaceSP resourcesInterface)
 
void setSavedBrushOpacity (qreal value)
 
void setSavedBrushSize (qreal value)
 
void setSavedEraserOpacity (qreal value)
 
void setSavedEraserSize (qreal value)
 
void setUpdateListener (UpdateListenerWSP listener)
 
UpdateListenerWSP updateListener () const
 
virtual bool useSpacingUpdates () const
 
 ~KisPaintOpSettings () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisPropertiesConfiguration
void clearProperties ()
 Clear the map of properties.
 
virtual bool compareTo (const KisPropertiesConfiguration *rhs) const
 
virtual void dump () const
 
void fromXML (const QDomElement &) override
 
bool fromXML (const QString &xml, bool clear=true) override
 
bool getBool (const QString &name, bool def=false) const
 
KoColor getColor (const QString &name, const KoColor &color=KoColor()) const
 getColor fetch the given property as a KoColor.
 
KisCubicCurve getCubicCurve (const QString &name, const KisCubicCurve &curve=KisCubicCurve()) const
 
double getDouble (const QString &name, double def=0.0) const
 
float getFloat (const QString &name, float def=0.0) const
 
int getInt (const QString &name, int def=0) const
 
void getPrefixedProperties (const QString &prefix, KisPropertiesConfiguration *config) const
 
void getPrefixedProperties (const QString &prefix, KisPropertiesConfigurationSP config) const
 
virtual QMap< QString, QVariant > getProperties () const
 
virtual QList< QString > getPropertiesKeys () const
 
virtual QVariant getProperty (const QString &name) const
 
virtual bool getProperty (const QString &name, QVariant &value) const
 
QString getPropertyLazy (const QString &name, const char *defaultValue) const
 
QStringList getPropertyLazy (const QString &name, const QStringList &defaultValue) const
 
template<typename T >
getPropertyLazy (const QString &name, const T &defaultValue) const
 
QString getString (const QString &name, const QString &def=QString()) const
 
QStringList getStringList (const QString &name, const QStringList &defaultValue=QStringList()) const
 
virtual bool hasProperty (const QString &name) const
 
 KisPropertiesConfiguration ()
 
 KisPropertiesConfiguration (const KisPropertiesConfiguration &rhs)
 
KisPropertiesConfigurationoperator= (const KisPropertiesConfiguration &rhs)
 
void removeProperty (const QString &name)
 
void setPrefixedProperties (const QString &prefix, const KisPropertiesConfiguration *config)
 
void setPrefixedProperties (const QString &prefix, const KisPropertiesConfigurationSP config)
 
void setProperty (const QString &name, const QStringList &value)
 
void setPropertyNotSaved (const QString &name)
 Marks a property that should not be saved by toXML.
 
QString toXML () const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
 ~KisPropertiesConfiguration () override
 
- Public Member Functions inherited from KisSerializableConfiguration
 KisSerializableConfiguration ()
 
 KisSerializableConfiguration (const KisSerializableConfiguration &rhs)
 
virtual ~KisSerializableConfiguration ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Public Attributes

bool m_duringPaintingStroke
 
bool m_isOffsetNotUptodate
 
QPointF m_offset
 
QPointF m_position
 
KisNodeWSP m_sourceNode
 
QList< KisUniformPaintOpPropertyWSPm_uniformProperties
 
- Public Attributes inherited from KisPaintOpSettings
KoCanvasResourcesInterfaceSP canvasResourcesInterface
 
bool disableDirtyNotifications
 
QString modelName
 
KoResourceCacheInterfaceSP resourceCacheInterface
 
KisResourcesInterfaceSP resourcesInterface
 
QPointer< KisPaintOpConfigWidgetsettingsWidget
 
QList< KisUniformPaintOpPropertyWSPuniformProperties
 
UpdateListenerWSP updateListener
 
quint64 versionCookie
 
KisRandomSource versionRandomSource
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Public Attributes inherited from KisPropertiesConfiguration
QSet< QString > notSavedProperties
 
QMap< QString, QVariant > properties
 

Additional Inherited Members

- Public Types inherited from KisPaintOpSettings
using UpdateListenerSP = QSharedPointer<UpdateListener>
 
using UpdateListenerWSP = QWeakPointer<UpdateListener>
 
- Static Public Member Functions inherited from KisPaintOpSettings
static KisOptimizedBrushOutline ellipseOutline (qreal width, qreal height, qreal scale, qreal rotation)
 
static bool isLodUserAllowed (const KisPropertiesConfigurationSP config)
 
static QPainterPath makeTiltIndicator (KisPaintInformation const &info, QPointF const &start, qreal lengthScale, qreal angle)
 
static void setLodUserAllowed (KisPropertiesConfigurationSP config, bool value)
 
- Static Public Member Functions inherited from KisPropertiesConfiguration
static QString escapeString (const QString &string)
 
static QString extractedPrefixKey ()
 
static QString unescapeString (const QString &string)
 
- Protected Member Functions inherited from KisBrushBasedPaintOpSettings
KisOptimizedBrushOutline brushOutlineImpl (const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom, qreal additionalScale)
 
void onPropertyChanged () override
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 
- Protected Attributes inherited from KisBrushBasedPaintOpSettings
KisBrushSP m_savedBrush
 
QList< KisUniformPaintOpPropertyWSPm_uniformProperties
 

Detailed Description

Definition at line 19 of file kis_duplicateop_settings.h.

Constructor & Destructor Documentation

◆ KisDuplicateOpSettings()

KisDuplicateOpSettings::KisDuplicateOpSettings ( KisResourcesInterfaceSP resourcesInterface)

◆ ~KisDuplicateOpSettings()

KisDuplicateOpSettings::~KisDuplicateOpSettings ( )
override

Definition at line 34 of file kis_duplicateop_settings.cpp.

35{
36}

Member Function Documentation

◆ activate()

void KisDuplicateOpSettings::activate ( )
overridevirtual

Call this function when the paint op is selected or the tool is activated

Reimplemented from KisPaintOpSettings.

Definition at line 96 of file kis_duplicateop_settings.cpp.

97{
98}

◆ brushOutline() [1/2]

KisOptimizedBrushOutline KisBrushBasedPaintOpSettings::brushOutline ( const KisPaintInformation & info,
const OutlineMode & mode,
qreal alignForZoom )
overridevirtual

Returns the brush outline in pixel coordinates. Tool is responsible for conversion into view coordinates. Outline mode has to be passed to the paintop which builds the outline as some paintops have to paint outline always like clone paintop indicating the duplicate position

Reimplemented from KisBrushBasedPaintOpSettings.

Definition at line 28 of file kis_brush_based_paintop_settings.cpp.

141{
142 return brushOutlineImpl(info, mode, alignForZoom, 1.0);
143}
KisOptimizedBrushOutline brushOutlineImpl(const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom, qreal additionalScale)

◆ brushOutline() [2/2]

KisOptimizedBrushOutline KisDuplicateOpSettings::brushOutline ( const KisPaintInformation & info,
const OutlineMode & mode,
qreal alignForZoom )
overridevirtual

Returns the brush outline in pixel coordinates. Tool is responsible for conversion into view coordinates. Outline mode has to be passed to the paintop which builds the outline as some paintops have to paint outline always like clone paintop indicating the duplicate position

Reimplemented from KisBrushBasedPaintOpSettings.

Definition at line 134 of file kis_duplicateop_settings.cpp.

135{
137
138 OutlineMode forcedMode = mode;
139
140 if (!forcedMode.isVisible) {
141 forcedMode.isVisible = true;
142 forcedMode.forceCircle = true;
143 }
144
145 // clone tool should always show an outline
146 path = KisBrushBasedPaintOpSettings::brushOutlineImpl(info, forcedMode, alignForZoom, 1.0);
147
148 KisOptimizedBrushOutline copy(path);
149 QRectF rect2 = copy.boundingRect();
150 bool shouldStayInOrigin = m_isOffsetNotUptodate // the clone brush right now waits for first stroke with a new origin, so stays at origin point
151 || !getBool(DUPLICATE_MOVE_SOURCE_POINT) // the brush always use the same source point, so stays at origin point
152 || (!m_duringPaintingStroke && getBool(DUPLICATE_RESET_SOURCE_POINT)); // during the stroke, with reset Origin selected, outline should stay at origin point
153
154 if (shouldStayInOrigin) {
155 copy.translate(m_position - info.pos());
156 }
157 else {
158 copy.translate(-m_offset);
159 }
160
161 path.addPath(copy);
162
163 qreal dx = rect2.width() / 4.0;
164 qreal dy = rect2.height() / 4.0;
165 rect2.adjust(dx, dy, -dx, -dy);
166
167 QPainterPath crossIcon;
168
169 crossIcon.moveTo(rect2.topLeft());
170 crossIcon.lineTo(rect2.bottomRight());
171
172 crossIcon.moveTo(rect2.topRight());
173 crossIcon.lineTo(rect2.bottomLeft());
174
175 path.addPath(crossIcon);
176
177 return path;
178}
const QString DUPLICATE_RESET_SOURCE_POINT
const QString DUPLICATE_MOVE_SOURCE_POINT
const QPointF & pos() const
bool getBool(const QString &name, bool def=false) const

References KisBrushBasedPaintOpSettings::brushOutlineImpl(), DUPLICATE_MOVE_SOURCE_POINT, DUPLICATE_RESET_SOURCE_POINT, KisPaintOpSettings::OutlineMode::forceCircle, KisPropertiesConfiguration::getBool(), KisPaintOpSettings::OutlineMode::isVisible, m_duringPaintingStroke, m_isOffsetNotUptodate, m_offset, m_position, and KisPaintInformation::pos().

◆ clone()

KisPaintOpSettingsSP KisDuplicateOpSettings::clone ( ) const
overridevirtual

◆ fromXML()

void KisDuplicateOpSettings::fromXML ( const QDomElement & )
overridevirtual

Fill the object from the XML encoded representation in s.

Implements KisSerializableConfiguration.

Definition at line 100 of file kis_duplicateop_settings.cpp.

101{
102 // First, call the parent class fromXML to make sure all the
103 // properties are saved to the map
105
106 m_offset.setX(KisDomUtils::toDouble(elt.attribute("OffsetX", "0.0")));
107 m_offset.setY(KisDomUtils::toDouble(elt.attribute("OffsetY", "0.0")));
108 m_isOffsetNotUptodate = false;
109}
double toDouble(const QString &str, bool *ok=nullptr)
bool fromXML(const QString &xml, bool clear=true) override

References KisPropertiesConfiguration::fromXML(), m_isOffsetNotUptodate, m_offset, and KisDomUtils::toDouble().

◆ indirectPaintingCompositeOp()

QString KisDuplicateOpSettings::indirectPaintingCompositeOp ( ) const
overridevirtual
Returns
the composite op it to which the indirect painting device should be initialized to. This is used by clone op to reset the composite op to COMPOSITE_COPY

Reimplemented from KisPaintOpSettings.

Definition at line 43 of file kis_duplicateop_settings.cpp.

44{
45 return COMPOSITE_COPY;
46}
const QString COMPOSITE_COPY

References COMPOSITE_COPY.

◆ mousePressEvent()

bool KisDuplicateOpSettings::mousePressEvent ( const KisPaintInformation & pos,
Qt::KeyboardModifiers modifiers,
KisNodeWSP currentNode )
overridevirtual

This function is called by a tool when the mouse is pressed. Returns false if picking new origin is in action, and returns true otherwise (i.e. if brush is starting a new stroke). See kis_tool_freehand:trySampleByPaintOp()

Reimplemented from KisPaintOpSettings.

Definition at line 58 of file kis_duplicateop_settings.cpp.

59{
60 bool ignoreEvent = true;
61
62 if (modifiers & Qt::ControlModifier) {
63 if (!m_sourceNode || !(modifiers & Qt::AltModifier)) {
64 m_sourceNode = currentNode;
65 }
66 m_position = info.pos();
68 ignoreEvent = false;
69 }
70 else {
71 bool resetOrigin = getBool(DUPLICATE_RESET_SOURCE_POINT);
72 if (m_isOffsetNotUptodate || resetOrigin) {
73 m_offset = info.pos() - m_position;
75 }
77 ignoreEvent = true;
78 }
79
80 return ignoreEvent;
81}

References DUPLICATE_RESET_SOURCE_POINT, KisPropertiesConfiguration::getBool(), m_duringPaintingStroke, m_isOffsetNotUptodate, m_offset, m_position, m_sourceNode, and KisPaintInformation::pos().

◆ mouseReleaseEvent()

bool KisDuplicateOpSettings::mouseReleaseEvent ( )
overridevirtual

This function is called by a tool when the mouse is released. If the tool is supposed to ignore the event, the paint op should return true and if the tool is supposed to use the event, return false.

Reimplemented from KisPaintOpSettings.

Definition at line 83 of file kis_duplicateop_settings.cpp.

84{
86 bool ignoreEvent = true;
87 return ignoreEvent;
88}

References m_duringPaintingStroke.

◆ offset()

QPointF KisDuplicateOpSettings::offset ( ) const

Definition at line 48 of file kis_duplicateop_settings.cpp.

49{
50 return m_offset;
51}

References m_offset.

◆ paintIncremental()

bool KisDuplicateOpSettings::paintIncremental ( )
overridevirtual

Reimplemented.

Reimplemented from KisBrushBasedPaintOpSettings.

Definition at line 38 of file kis_duplicateop_settings.cpp.

39{
40 return false;
41}

◆ position()

QPointF KisDuplicateOpSettings::position ( ) const

Definition at line 53 of file kis_duplicateop_settings.cpp.

54{
55 return m_position;
56}

References m_position.

◆ sourceNode()

KisNodeWSP KisDuplicateOpSettings::sourceNode ( ) const

Definition at line 91 of file kis_duplicateop_settings.cpp.

92{
93 return m_sourceNode;
94}

References m_sourceNode.

◆ toXML()

void KisDuplicateOpSettings::toXML ( QDomDocument & ,
QDomElement &  ) const
overridevirtual

Create a serialized version of this object

Implements KisSerializableConfiguration.

Definition at line 111 of file kis_duplicateop_settings.cpp.

112{
113 // Then call the parent class fromXML
115
116 rootElt.setAttribute("OffsetX", QString::number(m_offset.x()));
117 rootElt.setAttribute("OffsetY", QString::number(m_offset.y()));
118}

References m_offset, and KisPropertiesConfiguration::toXML().

◆ uniformProperties()

QList< KisUniformPaintOpPropertySP > KisDuplicateOpSettings::uniformProperties ( KisPaintOpSettingsSP settings,
QPointer< KisPaintOpPresetUpdateProxy > updateProxy )
overridevirtual

Reimplemented from KisBrushBasedPaintOpSettings.

Definition at line 188 of file kis_duplicateop_settings.cpp.

189{
192
193 if (props.isEmpty()) {
194 {
196 new KisUniformPaintOpPropertyCallback(KisUniformPaintOpPropertyCallback::Bool, KoID("clone_healing", i18n("Healing")), settings, 0);
197
198 prop->setReadCallback(
199 [](KisUniformPaintOpProperty *prop) {
200 KisDuplicateOptionData optionData;
201 optionData.read(prop->settings().data());
202
203 prop->setValue(optionData.healing);
204 });
205 prop->setWriteCallback(
206 [](KisUniformPaintOpProperty *prop) {
207 KisDuplicateOptionData optionData;
208 optionData.read(prop->settings().data());
209 optionData.healing = prop->value().toBool();
210 optionData.write(prop->settings().data());
211 });
212
213 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
214 prop->requestReadValue();
215 props << toQShared(prop);
216 }
217 {
219 new KisUniformPaintOpPropertyCallback(KisUniformPaintOpPropertyCallback::Bool, KoID("clone_movesource", i18n("Move Source")), settings, 0);
220
221 prop->setReadCallback(
222 [](KisUniformPaintOpProperty *prop) {
223 KisDuplicateOptionData optionData;
224 optionData.read(prop->settings().data());
225
226 prop->setValue(optionData.moveSourcePoint);
227 });
228 prop->setWriteCallback(
229 [](KisUniformPaintOpProperty *prop) {
230 KisDuplicateOptionData optionData;
231 optionData.read(prop->settings().data());
232 optionData.moveSourcePoint = prop->value().toBool();
233 optionData.write(prop->settings().data());
234 });
235
236 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
237 prop->requestReadValue();
238 props << toQShared(prop);
239 }
240 }
241
242 return KisPaintOpSettings::uniformProperties(settings, updateProxy) + props;
243}
QList< KisUniformPaintOpPropertyWSP > m_uniformProperties
void setValue(const QVariant &value)
KisPaintOpSettingsSP settings() const
Definition KoID.h:30
QSharedPointer< T > toQShared(T *ptr)
Container< QSharedPointer< T > > listWeakToStrong(const Container< QWeakPointer< T > > &container, bool allOrNothing=true)
KisCallbackBasedPaintopProperty< KisUniformPaintOpProperty > KisUniformPaintOpPropertyCallback
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
QList< KisUniformPaintOpPropertyWSP > uniformProperties

References KisDuplicateOptionData::healing, listWeakToStrong(), m_uniformProperties, KisDuplicateOptionData::moveSourcePoint, KisDuplicateOptionData::read(), KisCallbackBasedPaintopProperty< ParentClass >::setReadCallback(), KisCallbackBasedPaintopProperty< ParentClass >::setWriteCallback(), toQShared(), KisPaintOpSettings::uniformProperties, and KisDuplicateOptionData::write().

Member Data Documentation

◆ m_duringPaintingStroke

bool KisDuplicateOpSettings::m_duringPaintingStroke

Definition at line 65 of file kis_duplicateop_settings.h.

◆ m_isOffsetNotUptodate

bool KisDuplicateOpSettings::m_isOffsetNotUptodate

Definition at line 64 of file kis_duplicateop_settings.h.

◆ m_offset

QPointF KisDuplicateOpSettings::m_offset

Definition at line 63 of file kis_duplicateop_settings.h.

◆ m_position

QPointF KisDuplicateOpSettings::m_position

Definition at line 66 of file kis_duplicateop_settings.h.

◆ m_sourceNode

KisNodeWSP KisDuplicateOpSettings::m_sourceNode

Definition at line 67 of file kis_duplicateop_settings.h.

◆ m_uniformProperties

QList<KisUniformPaintOpPropertyWSP> KisDuplicateOpSettings::m_uniformProperties

Definition at line 68 of file kis_duplicateop_settings.h.


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