57{
59
60 if (dlg.exec() == QDialog::Accepted) {
61
62 KisCursorOverrideLock cursorLock(Qt::WaitCursor);
63
65
67 if (!image) return;
68
69 if (!
viewManager()->blockUntilOperationsFinished(image))
return;
70
72
74 if (!projection) return;
75
77
79
80 int scales = dlg.scales();
81
83 const QBitArray flags(0);
84
85 QRect rc = image->
bounds();
86
88
89
90 for(int level = 0; level < scales; ++level){
91
92
94
95
97
98
100 painter.setCompositeOpId(op);
101 painter.bitBlt(0, 0, blur, 0, 0, rc.width(), rc.height());
102 painter.end();
103
104
105 results << original;
106 original = blur;
107 updater->setProgress((level * 100) / scales);
108 }
109
112
114
116
117
119 adapter.addNode(grp, baseGroup, baseGroup->
lastChild());
120 baseGroup = grp;
121
122
123 int i = 1;
127 adapter.addNode(paintLayer, baseGroup, 0);
128 adapter.setCompositeOp(paintLayer, op2);
129 ++i;
130 }
131
132
134 adapter.addNode(paintLayer, baseGroup, 0);
135
137 updater->setProgress(100);
139 }
140}
const quint8 OPACITY_OPAQUE_U8
const QString COMPOSITE_GRAIN_MERGE
const QString COMPOSITE_GRAIN_EXTRACT
QPointer< KisViewManager > viewManager() const
KisUndoAdapter * undoAdapter() const
KisGroupLayerSP rootLayer() const
void barrierLock(bool readOnly=false)
Wait until all the queued background jobs are completed and lock the image.
KisPaintDeviceSP projection() const
QRect bounds() const override
const KoColorSpace * colorSpace() const
static void applyWavelet(KisPaintDeviceSP device, const QRect &rect, qreal xRadius, qreal yRadius, const QBitArray &channelFlags, KoUpdater *updater)
const KoCompositeOp * compositeOp(const QString &id, const KoColorSpace *srcSpace=nullptr) const
KUndo2MagicString kundo2_i18n(const char *text)
QAction * undo(const QObject *recvr, const char *slot, QObject *parent)
KisNodeSP lastChild() const