Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_colorize_mask.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef __KIS_COLORIZE_MASK_H
9#define __KIS_COLORIZE_MASK_H
10
11#include <QScopedPointer>
12
13#include "kis_types.h"
14#include "kis_effect_mask.h"
15#include "kritaimage_export.h"
16
17class KoColor;
18class KUndo2Command;
19
21{
22 struct KeyStroke;
23}
24
25
26class KRITAIMAGE_EXPORT KisColorizeMask : public KisEffectMask
27{
28 Q_OBJECT
29public:
32 int transparentIndex = -1;
33 };
34
35public:
36 KisColorizeMask(KisImageWSP image, const QString &name);
37 ~KisColorizeMask() override;
38
40
41 void initializeCompositeOp();
42 const KoColorSpace* colorSpace() const override;
43
44 // assign color profile without conversion of pixel data
45 void setProfile(const KoColorProfile *profile, KUndo2Command *parentCommand);
46
47 KUndo2Command *setColorSpace(const KoColorSpace *dstColorSpace,
49 KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags(),
50 KoUpdater *progressUpdater = nullptr);
51
52 KisPaintDeviceSP paintDevice() const override;
53 KisPaintDeviceSP coloringProjection() const;
54
56
57 KisNodeSP clone() const override {
58 return KisNodeSP(new KisColorizeMask(*this));
59 }
60
61 QIcon icon() const override;
62
63 void setImage(KisImageWSP image) override;
64 bool accept(KisNodeVisitor &v) override;
65 void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override;
66
69 const QRect & rc,
70 PositionToFilthy maskPos,
71 KisRenderPassFlags flags) const override;
72
73 void setCurrentColor(const KoColor &color) override;
74 void mergeToLayerThreaded(KisNodeSP layer, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID, QVector<KisRunnableStrokeJobData *> *jobs) override;
75 void writeMergeData(KisPainter *painter, KisPaintDeviceSP src, const QRect &rc) override;
76 bool supportsNonIndirectPainting() const override;
77
78 QRect exactBounds() const override;
79 QRect extent() const override;
80
85 QRect nonDependentExtent() const override;
86
87 void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override;
89
90 KeyStrokeColors keyStrokesColors() const;
91 void setKeyStrokesColors(KeyStrokeColors colors);
92
93 void removeKeyStroke(const KoColor &color);
94
95 QVector<KisPaintDeviceSP> allPaintDevices() const;
96 void resetCache();
97
98 void setUseEdgeDetection(bool value);
99 bool useEdgeDetection() const;
100
101 void setEdgeDetectionSize(qreal value);
102 qreal edgeDetectionSize() const;
103
104 void setFuzzyRadius(qreal value);
105 qreal fuzzyRadius() const;
106
107 void setCleanUpAmount(qreal value);
108 qreal cleanUpAmount() const;
109
110 void setLimitToDeviceBounds(bool value);
111 bool limitToDeviceBounds() const;
112
113 void testingAddKeyStroke(KisPaintDeviceSP dev, const KoColor &color, bool isTransparent = false);
114 KisPaintDeviceSP testingFilteredSource() const;
115
116 void forceRegenerateMask();
117
118 QList<KisLazyFillTools::KeyStroke> fetchKeyStrokesDirect() const;
119 void setKeyStrokesDirect(const QList<KisLazyFillTools::KeyStroke> &strokes);
120
121 qint32 x() const override;
122 qint32 y() const override;
123 void setX(qint32 x) override;
124 void setY(qint32 y) override;
125
127
128 void regeneratePrefilteredDeviceIfNeeded();
129
130private Q_SLOTS:
131 void slotUpdateRegenerateFilling(bool prefilterOnly = false);
132 void slotRegenerationFinished(bool prefilterOnly);
133 void slotRegenerationCancelled();
134
135 void slotUpdateOnDirtyParent();
136 void slotRecalculatePrefilteredImage();
137
138Q_SIGNALS:
141
142private:
143 // NOTE: please access this methods using model properties only!
144
145 bool needsUpdate() const;
146 void setNeedsUpdate(bool value);
147
148 bool showColoring() const;
149 void setShowColoring(bool value);
150
151 bool showKeyStrokes() const;
152 void setShowKeyStrokes(bool value);
153
154 void mergeToLayerUnthreaded(KisNodeSP layer, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID);
155
156private:
157 void rerenderFakePaintDevice();
158 void moveAllInternalDevices(const QPoint &diff);
159
160 template <class DeviceMetricPolicy>
161 QRect calculateMaskBounds(DeviceMetricPolicy policy) const;
162
166
167private:
168 struct Private;
169 const QScopedPointer<Private> m_d;
170};
171
172#endif /* __KIS_COLORIZE_MASK_H */
float value(const T *src, size_t ch)
qreal v
const QScopedPointer< Private > m_d
void sigUpdateOnDirtyParent() const
void sigKeyStrokesListChanged()
KisNodeSP clone() const override
QIcon icon() const override
KisSharedPtr< KisNode > KisNodeSP
Definition kis_types.h:86
virtual KisPaintDeviceSP colorSampleSourceDevice() const
virtual PropertyList sectionModelProperties() const
virtual void setSectionModelProperties(const PropertyList &properties)
virtual void writeMergeData(KisPainter *painter, KisPaintDeviceSP src, const QRect &rc)
virtual void mergeToLayerThreaded(KisNodeSP layer, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID, QVector< KisRunnableStrokeJobData * > *jobs)
virtual void setCurrentColor(const KoColor &color)
qint32 x() const override
Definition kis_mask.cc:431
virtual QRect nonDependentExtent() const
Definition kis_mask.cc:467
void setImage(KisImageWSP image) override
Definition kis_mask.cc:103
virtual QRect decorateRect(KisPaintDeviceSP &src, KisPaintDeviceSP &dst, const QRect &rc, PositionToFilthy maskPos, KisRenderPassFlags flags) const
Definition kis_mask.cc:270
qint32 y() const override
Definition kis_mask.cc:438
void setY(qint32 y) override
Definition kis_mask.cc:456
const KoColorSpace * colorSpace() const override
Definition kis_mask.cc:135
void setX(qint32 x) override
Definition kis_mask.cc:445
QRect exactBounds() const override
Definition kis_mask.cc:411
QRect extent() const override
Definition kis_mask.cc:391
KisPaintDeviceSP paintDevice() const override
Definition kis_mask.cc:223
virtual KisPaintDeviceList getLodCapableDevices() const
Definition kis_node.cpp:682
bool accept(KisNodeVisitor &v) override
Definition kis_node.cpp:269