12#include <klocalizedstring.h>
13#include <kpluginfactory.h>
48 KisAction *action = createAction(
"layersplit");
49 connect(action, SIGNAL(triggered()),
this, SLOT(slotLayerSplit()));
73 if (dlg.exec() == QDialog::Accepted) {
85 if (node->inherits(
"KisColorizeMask")) {
87 node = convertedNode.get();
92 KisImageBarrierLock lock(image);
95 if (!projection)
return;
100 QRect rc = image->
bounds();
104 KisCursorOverrideLock cursorLock(Qt::WaitCursor);
108 updater =
viewManager()->createUnthreadedUpdater(i18n(
"Split into Layers"));
111 updater =
viewManager()->createUnthreadedUpdater(i18n(
"Split into Masks"));
114 updater->setProgress(0);
118 for (
int row = rc.y(); row < rc.height(); ++row) {
120 for (
int col = rc.x(); col < rc.width(); ++col) {
136 Q_FOREACH (
const Layer &l, colorMap) {
137 if (fuzziness == 0) {
139 found = (l.
color == c);
143 found = (match <= fuzziness);
149 const_cast<Layer*
>(&l)->pixelsWritten++;
157 name = dlg.
palette()->getClosestSwatchInfo(c).swatch.name();
160 if (name.toLower() ==
"untitled" || name.toLower() ==
"none" || name.toLower() ==
"") {
174 if (updater->interrupted()) {
178 updater->setProgress((row - rc.y()) * 100 / rc.height() - rc.y());
181 updater->setProgress(100);
183 dbgKrita <<
"Created" << colorMap.size() <<
"layers";
189 std::sort(colorMap.begin(), colorMap.end());
209 adapter.
addNode(grp, baseGroup, 1);
213 Q_FOREACH (
const Layer &l, colorMap) {
217 adapter.
addNode(grp, baseGroup, 1);
220 adapter.
addNode(paintLayer, grp, 0);
226 Q_FOREACH (
const Layer &l, colorMap) {
232 adapter.
addNode(mask, baseGroup,0);
241#include "layersplit.moc"
const quint8 OPACITY_TRANSPARENT_U8
const quint8 OPACITY_OPAQUE_U8
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KoColorSetSP palette() const
bool disregardOpacity() const
bool createSeparateGroups() const
bool hideOriginal() const
bool createBaseGroup() const
QPointer< KisViewManager > viewManager() const
virtual quint8 * rawData()=0
virtual const quint8 * rawDataConst() const =0
KisUndoAdapter * undoAdapter() const
QRect bounds() const override
void addNode(KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis, KisImageLayerAddCommand::Flags flags=KisImageLayerAddCommand::DoRedoUpdates|KisImageLayerAddCommand::DoUndoUpdates)
KisRandomConstAccessorSP createRandomConstAccessorNG() const
const KoColorSpace * colorSpace() const
KisRandomAccessorSP createRandomAccessorNG()
static KisPaintDeviceSP convertToAlphaAsPureAlpha(KisPaintDeviceSP src)
virtual void moveTo(qint32 x, qint32 y)=0
virtual quint32 pixelSize() const =0
virtual quint8 difference(const quint8 *src1, const quint8 *src2) const =0
static QString toQString(const KoColor &color)
toQString create a user-visible string of the channel names and the channel values
void setColor(const quint8 *data, const KoColorSpace *colorSpace=0)
void setOpacity(quint8 alpha)
LayerSplit(QObject *parent, const QVariantList &)
K_PLUGIN_FACTORY_WITH_JSON(KritaASCCDLFactory, "kritaasccdl.json", registerPlugin< KritaASCCDL >();) KritaASCCDL
KUndo2MagicString kundo2_i18n(const char *text)
std::future< KisNodeSP > convertToPaintLayer(KisImageSP image, KisNodeSP src)
virtual KisPaintDeviceSP projection() const =0
virtual void setVisible(bool visible, bool loading=false)
void setName(const QString &name)
void initSelection(KisSelectionSP copyFrom, KisLayerSP parentLayer)
initSelection initializes the selection for the mask from the given selection's projection.
void setAlphaLocked(bool lock)
void setActive(bool active)
KisRandomAccessorSP accessor
bool operator<(const Layer &other) const