High Pass Filter
Needs ReviewPublic

Authored by Reptorian on Apr 11 2019, 7:41 PM.

Details

Reviewers
dkazakov
Group Reviewers
Krita
Summary

Implements basic version of high pass filter for Krita. More versions may or may not to come to Krita from GIMP versions. However, I decided not to do grayscale version as Krita already have de-saturation filter which takes care of that part nicely.

Diff Detail

Repository
R37 Krita
Lint
Lint Skipped
Unit
Unit Tests Skipped
Reptorian created this revision.Apr 11 2019, 7:41 PM
Restricted Application added a reviewer: Krita. · View Herald TranscriptApr 11 2019, 7:41 PM
Restricted Application added a project: Krita. · View Herald Transcript
Reptorian requested review of this revision.Apr 11 2019, 7:41 PM
Reptorian updated this revision to Diff 56012.Apr 11 2019, 8:19 PM

Fixed the copyright as requested.

Reptorian updated this revision to Diff 56107.Apr 13 2019, 1:49 AM
Reptorian edited the summary of this revision. (Show Details)

Having trouble with mixOp right now.

Reptorian updated this revision to Diff 56108.Apr 13 2019, 4:20 AM

Forgot to apply copyright name change.

rempt added a subscriber: rempt.Apr 13 2019, 9:54 AM
rempt added inline comments.
libs/image/filter/kis_filter_category_ids.h
31 ↗(On Diff #56108)

Do we really have to add another category just for this filter?

I was thinking there should be a new category if ever the new high pass filters (Like Redrobes Highpass) would be created, but I can put // before details, and move this to Other instead. The reason why I added a new category is that there isn't any good category for the filter. Other fits the best though.

dkazakov requested changes to this revision.Apr 15 2019, 2:32 PM
dkazakov added a subscriber: dkazakov.

Hi, @Reptorian!

Please check the inlined comments. It might also be nice to name the files according top the new naming convention, like HighPassFilter.cpp (without Kis prefix and in BigCamelCase).

libs/image/filter/kis_filter_category_ids.h
31 ↗(On Diff #56108)

Highpass filter is actually a kind of "edge-detection", so, no, no extra category is needed

plugins/filters/details/kis_highpass_filter.cpp
34 ↗(On Diff #56108)

It also needs

#include <KoMixColorsOp.h>
86 ↗(On Diff #56108)

I guess it is better to call the action "High Pass". There is no such term as "High Pass Mask" in the wild.

109 ↗(On Diff #56108)

I'm not sure what (1. - 1) does in this context?

140 ↗(On Diff #56108)

I guess, you can avoid this memcpy by just passing the pointers directly, can't you?

colors[0] = dstIt.oldRawData();
colors[1] = dstIt.rawDataConst();
142 ↗(On Diff #56108)

I think it should be:

mixColorsOp->mixColors(dstIt.oldRawData(), 1, dstIt.rawData());

Right now it crashes with:

==24152==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6250019cf101 at pc 0x7f826da53965 bp 0x7f82382a0680 sp 0x7f82382a0670
READ of size 1 at 0x6250019cf101 thread T68 (Thread (pooled))
    #0 0x7f826da53964 in void KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::mixColorsImpl<KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::PointerToArray, KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::NoWeightsSurrogate>(KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::PointerToArray, KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::NoWeightsSurrogate, unsigned int, unsigned char*) const /home/devel5/rawenv-1/krita/libs/pigment/KoMixColorsOpImpl.h:151
    #1 0x7f826da53964 in KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::mixColors(unsigned char const*, unsigned int, unsigned char*) const /home/devel5/rawenv-1/krita/libs/pigment/KoMixColorsOpImpl.h:46
    #2 0x7f827234d22d in KisHighPassFilter::processRaw(KisSharedPtr<KisPaintDevice>, QRect const&, double*, double, QBitArray const&, KoUpdater*) const /home/devel5/rawenv-1/krita/plugins/filters/details/kis_highpass_filter.cpp:143
    #3 0x7f827234e9db in KisHighPassFilter::processImpl(KisSharedPtr<KisPaintDevice>, QRect const&, KisPinnedSharedPtr<KisFilterConfiguration>, KoUpdater*) const /home/devel5/rawenv-1/krita/plugins/filters/details/kis_highpass_filter.cpp:114
    #4 0x7f82944e349c in KisFilterStrokeStrategy::doStrokeCallback(KisStrokeJobData*) /home/devel5/rawenv-1/krita/libs/ui/tool/strokes/kis_filter_stroke_strategy.cpp:147
    #5 0x7f8290aad34a in SimpleStrokeJobStrategy::run(KisStrokeJobData*) /home/devel5/rawenv-1/krita/libs/image/kis_simple_stroke_strategy.cpp:51
    #6 0x7f8290e38a41 in KisStrokeJob::run() /home/devel5/rawenv-1/krita-build/libs/image/../../../krita/libs/image/kis_stroke_job.h:44
    #7 0x7f8290e38a41 in KisUpdateJobItem::run() /home/devel5/rawenv-1/krita-build/libs/image/../../../krita/libs/image/kis_update_job_item.h:91
    #8 0x7f828e977df6  (/home/devel5/rawenv-1/deps/usr/lib/libQt5Core.so.5+0xabdf6)
    #9 0x7f828e9739ad  (/home/devel5/rawenv-1/deps/usr/lib/libQt5Core.so.5+0xa79ad)
    #10 0x7f828dd546b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
    #11 0x7f828e07141c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)

0x6250019cf101 is located 1 bytes to the right of 8192-byte region [0x6250019cd100,0x6250019cf100)
allocated by thread T0 here:
    #0 0x7f8298aeb602 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x98602)
    #1 0x7f82907d7d40 in KisTileData::allocateData(int) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_tile_data.cc:160
    #2 0x7f82907d895f in KisTileData::KisTileData(KisTileData const&, bool) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_tile_data.cc:106
    #3 0x7f82907dd85e in KisTileDataStore::duplicateTileData(KisTileData*) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_tile_data_store.cc:176
    #4 0x7f82907d3351 in KisTileData::clone() /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_tile_data.h:88
    #5 0x7f82907d3351 in KisTile::lockForWrite() /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_tile.cc:251
    #6 0x7f829081ee54 in KisBaseIterator::lockTile(KisSharedPtr<KisTile>&) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_base_iterator.h:48
    #7 0x7f829081ee54 in KisHLineIterator2::fetchTileDataForCache(KisHLineIterator2::KisTileInfo&, int, int) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_hline_iterator.cpp:208
    #8 0x7f8290822230 in KisHLineIterator2::KisHLineIterator2(KisDataManager*, int, int, int, int, int, bool, KisIteratorCompleteListener*) /home/devel5/rawenv-1/krita/libs/image/tiles3/kis_hline_iterator.cpp:63
    #9 0x7f8290c4742f in KisPaintDevice::Private::KisPaintDeviceStrategy::createHLineIteratorNG(KisDataManager*, int, int, int, int, int) /home/devel5/rawenv-1/krita/libs/image/kis_paint_device_strategies.h:92
    #10 0x7f8290c1df07 in KisPaintDevice::createHLineIteratorNG(int, int, int) /home/devel5/rawenv-1/krita/libs/image/kis_paint_device.cc:1752
    #11 0x7f82942fbee2 in KisPNGConverter::buildImage(QIODevice*) /home/devel5/rawenv-1/krita/libs/ui/kis_png_converter.cpp:725
    #12 0x7f825894d3c3 in KisPNGImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) /home/devel5/rawenv-1/krita/plugins/impex/png/kis_png_import.cc:48
    #13 0x7f82947c8b66 in KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) /home/devel5/rawenv-1/krita/libs/ui/KisImportExportManager.cpp:595
    #14 0x7f82947cb49f in KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) /home/devel5/rawenv-1/krita/libs/ui/KisImportExportManager.cpp:360
    #15 0x7f82947cc304 in KisImportExportManager::importDocument(QString const&, QString const&) /home/devel5/rawenv-1/krita/libs/ui/KisImportExportManager.cpp:136
    #16 0x7f82947a8fa4 in KisDocument::openFile() /home/devel5/rawenv-1/krita/libs/ui/KisDocument.cpp:1283
    #17 0x7f82947aa015 in KisDocument::openUrlInternal(QUrl const&) /home/devel5/rawenv-1/krita/libs/ui/KisDocument.cpp:1709
    #18 0x7f82947aa637 in KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) /home/devel5/rawenv-1/krita/libs/ui/KisDocument.cpp:1180
    #19 0x7f82947e091c in KisMainWindow::openDocumentInternal(QUrl const&, QFlags<KisMainWindow::OpenFlag>) /home/devel5/rawenv-1/krita/libs/ui/KisMainWindow.cpp:895
    #20 0x7f82947ee670 in KisMainWindow::openDocument(QUrl const&, QFlags<KisMainWindow::OpenFlag>) /home/devel5/rawenv-1/krita/libs/ui/KisMainWindow.cpp:870
    #21 0x7f82947eecec in KisMainWindow::slotFileOpen(bool) /home/devel5/rawenv-1/krita/libs/ui/KisMainWindow.cpp:1466
    #22 0x7f82947fe582 in KisMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/devel5/rawenv-1/krita-build/libs/ui/moc_KisMainWindow.cpp:314
    #23 0x7f828eb7f5d8 in QMetaObject::activate(QObject*, int, int, void**) (/home/devel5/rawenv-1/deps/usr/lib/libQt5Core.so.5+0x2b35d8)
    #24 0x7f828f5e94e1 in QAction::triggered(bool) (/home/devel5/rawenv-1/deps/usr/lib/libQt5Widgets.so.5+0x15b4e1)

Thread T68 (Thread (pooled)) created by T0 here:
    #0 0x7f8298a89253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
    #1 0x7f828e973037 in QThread::start(QThread::Priority) (/home/devel5/rawenv-1/deps/usr/lib/libQt5Core.so.5+0xa7037)

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/devel5/rawenv-1/krita/libs/pigment/KoMixColorsOpImpl.h:151 void KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::mixColorsImpl<KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::PointerToArray, KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::NoWeightsSurrogate>(KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::PointerToArray, KoMixColorsOpImpl<KoColorSpaceTrait<unsigned char, 2, 1> >::NoWeightsSurrogate, unsigned int, unsigned char*) const
This revision now requires changes to proceed.Apr 15 2019, 2:32 PM
Reptorian updated this revision to Diff 56323.Apr 15 2019, 8:38 PM
Reptorian marked 7 inline comments as done.

New category removed. Almost all problem has been addressed. I removed mix color code to find where's the crash, and I have installed drmingw, but I see no info on where's the crash is coming from nor I understand how to use drmingw. Files have been renamed to the new convention.

Hmm, this doesn't tell me anything useful.

Error occurred on Monday, April 15, 2019 at 16:32:08.

krita.exe caused an Access Violation at location 00007FFCB86EB910 in module libkritaimage.dll Reading from location 0000000000000000.

AddrPC           Params
00007FFCB86EB910 00000000000000D8 000000001A1EA430 00000000005F0FB0  libkritaimage.dll!0xdb910 changeRect+0x340  [C:/krita-dev/krita/libs/image/kis_filter_mask.cpp @ 136]
   134: 
   135:         KisFilterSP filter = KisFilterRegistry::instance()->value(filterConfig->name());
>  136:         filteredRect = filter->changedRect(rect, filterConfig.data(), lod);
   137:     }
   138: 
00007FFCB8769F98 0000000000000040 0000000000000004 0000000000000000  libkritaimage.dll!0x159f98 changeRect+0x18  [C:/krita-dev/krita/libs/image/kis_mask_projection_plane.cpp @ 74]
    72: QRect KisMaskProjectionPlane::changeRect(const QRect &rect, KisNode::PositionToFilthy pos) const
    73: {
>   74:     return m_d->mask->changeRect(rect, pos);
    75: }
    76: 
00007FFCB88E6122 0000000000000003 00007FFD37809960 00000000000000D8  libkritaimage.dll!0x2d6122 calculateChecksum+0x42  [C:/krita-dev/i/include/QtCore/qmutex.h @ 219]
   217:         if ((val & quintptr(1u)) == quintptr(1u)) {
   218:             val &= ~quintptr(1u);
>  219:             mutex()->unlock();
   220:         }
   221:     }
00007FFCB88E5791 0000000000000005 00000000005F1108 00000000005F11D8  libkritaimage.dll!0x2d5791 collectRects+0xd1  [C:/krita-dev/i/include/QtCore/qmutex.h @ 219]
   217:         if ((val & quintptr(1u)) == quintptr(1u)) {
   218:             val &= ~quintptr(1u);
>  219:             mutex()->unlock();
   220:         }
   221:     }
00007FFCB8723C88 0000000000000000 000000002887F4A8 0000000000004E2E  libkritaimage.dll!0x113c88 addJob+0x1b8  [C:/krita-dev/krita/libs/image/kis_simple_update_queue.cpp @ 205]
   203:         /* else if(type == KisBaseRectsWalker::UNSUPPORTED) fatalKrita; */
   204: 
>  205:         walker->collectRects(node, rc);
   206:         walkers.append(walker);
   207:     }
00007FFCB872469D 0000000000000001 00000000005F12C8 0000000019CB7120  libkritaimage.dll!0x11469d trySplitJob+0x16d  [C:/krita-dev/krita/libs/image/kis_simple_update_queue.cpp @ 277]
   275: 
   276:     KIS_SAFE_ASSERT_RECOVER_NOOP(!splitRects.isEmpty());
>  277:     addJob(node, splitRects, cropRect, levelOfDetail, type);
   278: 
   279:     return true;
00007FFCB8723BD2 00007FFCB7945DA0 00007FFCB88500AF 0000000019E05210  libkritaimage.dll!0x113bd2 addJob+0x102  [C:/krita-dev/krita/libs/image/kis_simple_update_queue.cpp @ 191]
   189:         KisBaseRectsWalkerSP walker;
   190: 
>  191:         if(trySplitJob(node, rc, cropRect, levelOfDetail, type)) continue;
   192:         if(tryMergeJob(node, rc, cropRect, levelOfDetail, type)) continue;
   193: 
00007FFCB8724151 00000000005F1400 00007FFCB873A803 0000000000600D80  libkritaimage.dll!0x114151 addUpdateJob+0x31  [C:/krita-dev/krita/libs/image/kis_simple_update_queue.cpp @ 160]
   158: void KisSimpleUpdateQueue::addUpdateJob(KisNodeSP node, const QVector<QRect> &rects, const QRect& cropRect, int levelOfDetail)
   159: {
>  160:     addJob(node, rects, cropRect, levelOfDetail, KisBaseRectsWalker::UPDATE);
   161: }
   162: 
00007FFCB8728641 000000002877F1A0 00000000005F15A8 00007FFCB87954F0  libkritaimage.dll!0x118641 updateProjection+0x51  [C:/krita-dev/krita/libs/image/kis_update_scheduler.cpp @ 155]
   153: void KisUpdateScheduler::updateProjection(KisNodeSP node, const QVector<QRect> &rects, const QRect &cropRect)
   154: {
>  155:     m_d->updatesQueue.addUpdateJob(node, rects, cropRect, currentLevelOfDetail());
   156:     processQueues();
   157: }
00007FFCB8741C73 0000000000000002 000000002877F1A0 0000000000000000  libkritaimage.dll!0x131c73 requestProjectionUpdateImpl+0x33  [C:/krita-dev/krita/libs/image/kis_image.cc @ 1699]
  1697:     if (rects.isEmpty()) return;
  1698: 
> 1699:     m_d->scheduler.updateProjection(node, rects, cropRect);
  1700: }
  1701: 
00007FFCB8748FEB 0000000019AADC20 000000002877F1A0 00000000005F15A8  libkritaimage.dll!0x138feb requestProjectionUpdate+0x3db  [C:/krita-dev/krita/libs/image/kis_image.cc @ 1732]
  1730: 
  1731:     } else {
> 1732:         requestProjectionUpdateImpl(node, rects, bounds());
  1733:     }
  1734: 
00007FFCB8795D76 0000000000000022 00007FFCB7945DBF 0000000000000040  libkritaimage.dll!0x185d76 setDirty+0x66  [C:/krita-dev/krita/libs/image/kis_node.cpp @ 601]
   599: void KisNode::setDirty(const QRect & rect)
   600: {
>  601:     setDirty(QVector<QRect>({rect}));
   602: }
   603: 
00007FFCB8795E08 0000000000000000 0000000028889C40 0000000000000070  libkritaimage.dll!0x185e08 setDirty+0x28  [C:/krita-dev/krita/libs/image/kis_node.cpp @ 584]
   582: void KisNode::setDirty()
   583: {
>  584:     setDirty(extent());
   585: }
   586: 
00007FFCC4356A4A 00000000288928C0 00007FFCB78C3662 00000000005F1768  libkritaui.dll!0x36a4a slotConfigChanged+0xda  [C:/krita-dev/krita/libs/ui/dialogs/kis_dlg_adjustment_layer.cc @ 128]
   126:     }
   127: 
>  128:     m_node->setDirty();
   129: }
   130: 
00007FFCB7AB74CA 000000002887D2A0 0000000000000000 00000000005F1810  Qt5Core.dll!0x2274ca QMetaObject::activate+0x7fa
00007FFCC45325CC 000000002888EB80 00000000005F1880 000000002888EB80  libkritaui.dll!0x2125cc setFilterIndex+0x12c  [C:/krita-dev/krita/libs/ui/widgets/kis_filter_selector_widget.cc @ 281]
   279:         KisConfig cfg(false);
   280:         cfg.writeEntry<QString>("FilterSelector/LastUsedFilter", d->currentFilter->id());
>  281:         emit(configurationChanged());
   282:     }
   283: 
00007FFCC46B0C8C 0000000000000000 00007FFCC43EC6FC FFFFFFFFFFFFFFFF  libkritaui.dll!0x390c8c  ?? +0xec  [C:/krita-dev/build/libs/ui/kritaui_autogen/IMAN36LHMA/moc_kis_filter_selector_widget.cpp @ 115]
   113:         case 4: _t->showFilterGallery((*reinterpret_cast< bool(*)>(_a[1]))); break;
   114:         case 5: _t->slotBookmarkedFilterConfigurationSelected((*reinterpret_cast< int(*)>(_a[1]))); break;
>  115:         case 6: _t->setFilterIndex((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break;
   116:         case 7: _t->editConfigurations(); break;
   117:         case 8: _t->update(); break;
00007FFCB7AB74CA 000000002887D420 0000000000000000 00000000005F1C90  Qt5Core.dll!0x2274ca QMetaObject::activate+0x7fa
00007FFCB6F1BEEF 0000000000000000 0000000000000000 0000000000000000  Qt5Widgets.dll!0x21beef QAbstractItemView::mouseReleaseEvent+0x37f
00007FFCB6F8132E 0000000000000000 0000000000000000 0000000000000000  Qt5Widgets.dll!0x28132e QTreeView::mouseReleaseEvent+0x15e
00007FFCB6D46028 00000000005F1CE8 0000000000000000 0000000028831B20  Qt5Widgets.dll!0x46028 QWidget::event+0x1d8
00007FFCB6DD9E2E 0000000013BA7470 0000000014458FD0 000000002887D520  Qt5Widgets.dll!0xd9e2e QFrame::event+0x1e
00007FFCB6F24B4E 00000000006A0000 00007FFCC45866B6 0000000000050000  Qt5Widgets.dll!0x224b4e QAbstractItemView::viewportEvent+0x1ce
00007FFCB6F80C94 0000000019916AC0 0000000019916AC0 00000000005F1F80  Qt5Widgets.dll!0x280c94 QTreeView::viewportEvent+0x34
00007FFCB7A8AA70 00000000005FFBB0 0000000000000001 000000002887D520  Qt5Core.dll!0x1faa70 QCoreApplication::applicationVersionChanged+0x1a0
00007FFCB6D07BB5 00000000139322E0 00000000005F2248 0000006000000052  Qt5Widgets.dll!0x7bb5 QApplicationPrivate::notify_helper+0x75
00007FFCB6D0FC5A 0000000000000000 00007FFCB78B215F 0000000000000000  Qt5Widgets.dll!0xfc5a QApplication::notify+0x13aa
00007FFCC45DFB76 0000000000000000 3FF0000000000000 C028000000000000  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8C0C8 0000000000000000 0000000000000000 3FF0000000000000  Qt5Core.dll!0x1fc0c8 QCoreApplication::sendSpontaneousEvent+0x1a8
00007FFCB6D0E058 0000000000000018 00007FFCB78B215F 00000000005F28C0  Qt5Widgets.dll!0xe058 QApplicationPrivate::sendMouseEvent+0x208
00007FFCB6D5AA5D 0000000002876A80 00007FFCB7A8A971 0000000000000001  Qt5Widgets.dll!0x5aa5d QDesktopWidget::qt_metacall+0x2a1d
00007FFCB6D5D7E3 00000000005FFBB0 0000000002887670 0000000000000001  Qt5Widgets.dll!0x5d7e3 QDesktopWidget::qt_metacall+0x57a3
00007FFCB6D07BDC 0000000000000001 0000000000000001 00001579E73DA797  Qt5Widgets.dll!0x7bdc QApplicationPrivate::notify_helper+0x9c
00007FFCB6D0EC63 0000000000600D80 00007FFCB78B215F 0000000000000070  Qt5Widgets.dll!0xec63 QApplication::notify+0x3b3
00007FFCC45DFB76 0000000000000000 00007FFCB72BACC4 0000000000000002  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8C0C8 0000000000005A9B 0000000000000000 0000000000000000  Qt5Core.dll!0x1fc0c8 QCoreApplication::sendSpontaneousEvent+0x1a8
00007FFCB72A7198 0000000000000000 00007FFCB7A91F53 00000000005F2DA0  Qt5Gui.dll!0x37198 QGuiApplicationPrivate::processMouseEvent+0x858
00007FFCB72A83D5 0000000002C10AD0 0000000002C1BB40 00000000000B0B5C  Qt5Gui.dll!0x383d5 QGuiApplicationPrivate::processWindowSystemEvent+0x105
00007FFCB72803FC 0000000000000401 00000000000B0B5C 0000000000000000  Qt5Gui.dll!0x103fc QWindowSystemInterface::sendWindowSystemEvents+0x44c
00007FFCB7AE689A 0000000080000012 0000000000000001 0000000000000000  Qt5Core.dll!0x25689a QEventDispatcherWin32Private::sendTimerEvent+0x60a
00007FFD372B6D41 0000000000000000 00007FFCB7AE63C0 00000000000B0B5C  USER32.dll!0x16d41 UserCallWinProcCheckWow+0x2c1
00007FFD372B6713 00000000005F3090 0000000000000000 0000000000000000  USER32.dll!0x16713 DispatchMessageWorker+0x1c3
00007FFCB7AE5D4B 0000000002C1BB40 0000000000000064 0000000002876A30  Qt5Core.dll!0x255d4b QEventDispatcherWin32::processEvents+0x5db
000000006A8F9FF5 0000000000000080 0000000000000014 000000002883AC80  qwindows.dll!0x79ff5 qt_plugin_instance+0x2e15
00007FFCB7A8A14F 0000000028817CF0 000000002888DA50 000000001445B330  Qt5Core.dll!0x1fa14f QEventLoop::exec+0x13f
00007FFCB6ECB109 00000000005F6390 000000001A311430 00000000005F6390  Qt5Widgets.dll!0x1cb109 QDialog::exec+0x1d9
00007FFCC4408755 3FE0000000000000 00000000138B2E00 0000000015A1EE60  libkritaui.dll!0xe8755 createFilterMask+0x6b5  [C:/krita-dev/krita/libs/ui/kis_mask_manager.cc @ 261]
   259:     }
   260: 
>  261:     if (dialog.exec() == QDialog::Accepted) {
   262:         KisFilterConfigurationSP filter = dialog.filterConfiguration();
   263:         if (filter) {
00007FFCC4419FCD 00000000005F6610 0000000002BFE088 00007FFCB77B3A10  libkritaui.dll!0xf9fcd createNode+0x3cd  [C:/krita-dev/krita/libs/ui/kis_node_manager.cpp @ 570]
   568:         return m_d->maskManager.createTransparencyMask(activeNode, copyFrom, false);
   569:     } else if (nodeType == "KisFilterMask") {
>  570:         return m_d->maskManager.createFilterMask(activeNode, copyFrom, quiet, false);
   571:     } else if (nodeType == "KisColorizeMask") {
   572:         return m_d->maskManager.createColorizeMask(activeNode);
00007FFCC46A0265 00007FFD23AFC48C 00007FFD239E14CE 0000000000000000  libkritaui.dll!0x380265 qt_static_metacall+0x425  [C:/krita-dev/build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_kis_node_manager.cpp @ 329]
   327:         case 18: { KisNodeSP _r = _t->createNode((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2])));
   328:             if (_a[0]) *reinterpret_cast< KisNodeSP*>(_a[0]) = std::move(_r); }  break;
>  329:         case 19: { KisNodeSP _r = _t->createNode((*reinterpret_cast< const QString(*)>(_a[1])));
   330:             if (_a[0]) *reinterpret_cast< KisNodeSP*>(_a[0]) = std::move(_r); }  break;
   331:         case 20: _t->convertNode((*reinterpret_cast< const QString(*)>(_a[1]))); break;
00007FFCB7AB74CA 00000000138B2E90 0000000000000000 00000000005F6720  Qt5Core.dll!0x2274ca QMetaObject::activate+0x7fa
00007FFCB7AC19CF 00000000005FAEE0 00000000005F6720 00000000005F66AF  Qt5Core.dll!0x2319cf QSignalMapper::map+0x2af
00007FFCB7AC1C22 0000000000000000 0000000000000000 00007FFCB7E09A40  Qt5Core.dll!0x231c22 QSignalMapper::qt_static_metacall+0xa2
00007FFCB7AB74CA 0000000014462D90 00000000005F6978 0000000000000000  Qt5Core.dll!0x2274ca QMetaObject::activate+0x7fa
00007FFCB6D03E0E 00007FFCB70C99E0 00007FFCB70C9420 00000000005F6978  Qt5Widgets.dll!0x3e0e QAction::activate+0xfe
00007FFCB6E5365B 0000000000000000 0000000000032001 0000000014462D90  Qt5Widgets.dll!0x15365b QMenu::setIcon+0x21b
00007FFCB6E5A845 0000000028684F20 000000270000007A 0000000000000073  Qt5Widgets.dll!0x15a845 QMenu::leaveEvent+0x2c5
00007FFCB6E5B567 000000001A300BB0 000000001A1E3930 000000001A3009A0  Qt5Widgets.dll!0x15b567 QMenu::mouseReleaseEvent+0xf7
00007FFCB6D46028 00007FFCB7CF7128 00000000005F6B80 00007FFCB7CF7120  Qt5Widgets.dll!0x46028 QWidget::event+0x1d8
00007FFCB6E5D64B 00000000005FFBB0 0000000000000001 0000000028684F20  Qt5Widgets.dll!0x15d64b QMenu::event+0x8b
00007FFCB6D07BDC 00000000139322E0 0000000000000000 000000270000007A  Qt5Widgets.dll!0x7bdc QApplicationPrivate::notify_helper+0x9c
00007FFCB6D0FC5A 0000000000000000 00007FFCB78B215F 3FE0000000000000  Qt5Widgets.dll!0xfc5a QApplication::notify+0x13aa
00007FFCC45DFB76 0000000000000000 0000000000000000 0000000000000000  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8C0C8 0000000000000000 0000000000000000 0000000000000000  Qt5Core.dll!0x1fc0c8 QCoreApplication::sendSpontaneousEvent+0x1a8
00007FFCB6D0E058 00000000005F7100 0000000700000000 00000000005F74E0  Qt5Widgets.dll!0xe058 QApplicationPrivate::sendMouseEvent+0x208
00007FFCB6D5B1A2 0000000002876A80 00007FFCB7A8A971 0000000000000008  Qt5Widgets.dll!0x5b1a2 QDesktopWidget::qt_metacall+0x3162
00007FFCB6D5D7E3 00000000005FFBB0 0000000002887670 0000000000000001  Qt5Widgets.dll!0x5d7e3 QDesktopWidget::qt_metacall+0x57a3
00007FFCB6D07BDC 0000000000000001 000000000000006A 00000000005F7390  Qt5Widgets.dll!0x7bdc QApplicationPrivate::notify_helper+0x9c
00007FFCB6D0EC63 0000000000600CC0 00007FFCB78B215F 0000000000000070  Qt5Widgets.dll!0xec63 QApplication::notify+0x3b3
00007FFCC45DFB76 0000000000000000 00007FFCB72BACC4 0000000000000002  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8C0C8 0000000000005553 0000000000000000 0000000000000000  Qt5Core.dll!0x1fc0c8 QCoreApplication::sendSpontaneousEvent+0x1a8
00007FFCB72A7198 0000000000000000 00007FFCB7A91F53 00000000005F79C0  Qt5Gui.dll!0x37198 QGuiApplicationPrivate::processMouseEvent+0x858
00007FFCB72A83D5 0000000002C10AD0 0000000002C1BB40 00000000000B0B5C  Qt5Gui.dll!0x383d5 QGuiApplicationPrivate::processWindowSystemEvent+0x105
00007FFCB72803FC 0000000000000401 00000000000B0B5C 0000000000000000  Qt5Gui.dll!0x103fc QWindowSystemInterface::sendWindowSystemEvents+0x44c
00007FFCB7AE689A 0000000080000012 0000000000000001 0000000000000000  Qt5Core.dll!0x25689a QEventDispatcherWin32Private::sendTimerEvent+0x60a
00007FFD372B6D41 0000000000000000 00007FFCB7AE63C0 00000000000B0B5C  USER32.dll!0x16d41 UserCallWinProcCheckWow+0x2c1
00007FFD372B6713 00000000005F7CB0 0000000000000000 0000000000000000  USER32.dll!0x16713 DispatchMessageWorker+0x1c3
00007FFCB7AE5D4B 0000000002C1BB40 0000000000000024 0000000002876A30  Qt5Core.dll!0x255d4b QEventDispatcherWin32::processEvents+0x5db
000000006A8F9FF5 0000000000000080 0000029400000014 0000000000000000  qwindows.dll!0x79ff5 qt_plugin_instance+0x2e15
00007FFCB7A8A14F 00007FFCB6E53C80 00000000005FAEE0 00000000286842E0  Qt5Core.dll!0x1fa14f QEventLoop::exec+0x13f
00007FFCB6E58684 0000000000000000 0000000000000000 00000000005FAF90  Qt5Widgets.dll!0x158684 QMenu::exec+0x64
00007FFC74C19E9F 0000000012B46770 000000000BE485B0 FFFFFFFFFFFFFFFF  kritalayerdocker.dll!0x9e9f slotContextMenuRequested+0x6af  [C:/krita-dev/krita/plugins/dockers/layerdocker/LayerBox.cpp @ 683]
   681:             }
   682:         }
>  683:         menu.exec(pos);
   684:     }
   685: }
00007FFC74C1A5CD 00000000005FB0A0 0000000015A1CD50 00000000153B65B0  kritalayerdocker.dll!0xa5cd qt_static_metacall+0x10d  [C:/krita-dev/build/plugins/dockers/layerdocker/kritalayerdocker_autogen/include/moc_LayerBox.cpp @ 228]
   226:         switch (_id) {
   227:         case 0: _t->notifyImageDeleted(); break;
>  228:         case 1: _t->slotContextMenuRequested((*reinterpret_cast< const QPoint(*)>(_a[1])),(*reinterpret_cast< const QModelIndex(*)>(_a[2]))); break;
   229:         case 2: _t->slotMinimalView(); break;
   230:         case 3: _t->slotDetailedView(); break;
00007FFCB7AB74CA 0000000015A46760 000000001A03F870 0000000015A1D430  Qt5Core.dll!0x2274ca QMetaObject::activate+0x7fa
00007FFC74C261FC 0000000000000010 00007FFCC45EFC8C 0000000019E48050  kritalayerdocker.dll!0x161fc  ?? +0x2c  [C:/krita-dev/build/plugins/dockers/layerdocker/kritalayerdocker_autogen/EWIEGA46WW/moc_NodeView.cpp @ 224]
   222: {
   223:     void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)) };
>  224:     QMetaObject::activate(this, &staticMetaObject, 0, _a);
   225: }
   226: 
00007FFC74C24CAA 0000000015A24920 0000000015A24920 0000000000000000  kritalayerdocker.dll!0x14caa contextMenuEvent+0x9a  [C:/krita-dev/krita/plugins/dockers/layerdocker/NodeView.cpp @ 318]
   316: void NodeView::showContextMenu(const QPoint &globalPos, const QModelIndex &index)
   317: {
>  318:     emit contextMenuRequested(globalPos, index);
   319: }
   320: 
00007FFCB6D46DBF 0000000000000001 00007FFCB6D26127 000000001559B540  Qt5Widgets.dll!0x46dbf QWidget::event+0xf6f
00007FFCB6DD9E2E 0000000000000031 0000000002C28DF0 00000000005FB370  Qt5Widgets.dll!0xd9e2e QFrame::event+0x1e
00007FFCB6F24B4E 0000000000000000 0000000000000000 00007FFCB78AA170  Qt5Widgets.dll!0x224b4e QAbstractItemView::viewportEvent+0x1ce
00007FFCB6F80C94 00000000005FB590 000000002876CFA8 0000000000000030  Qt5Widgets.dll!0x280c94 QTreeView::viewportEvent+0x34
00007FFC74C2457C 000000002876C9A0 000000002876C9A0 000000002876C9A0  kritalayerdocker.dll!0x1457c viewportEvent+0x1ec  [C:/krita-dev/krita/plugins/dockers/layerdocker/NodeView.cpp @ 304]
   302:         }
   303:     }
>  304:     return QTreeView::viewportEvent(e);
   305: }
   306: 
00007FFCB7A8AA70 00000000005FFBB0 0000000000000000 00000000005FFBB0  Qt5Core.dll!0x1faa70 QCoreApplication::applicationVersionChanged+0x1a0
00007FFCB6D07BB5 00000000139322E0 0100040F0000077F 00000000005FBB40  Qt5Widgets.dll!0x7bb5 QApplicationPrivate::notify_helper+0x75
00007FFCB6D0F5F6 0000000015A24920 00007FFCB78B215F 00000000005FB96F  Qt5Widgets.dll!0xf5f6 QApplication::notify+0xd46
00007FFCC45DFB76 0000000000000000 00017FFC00000001 0000000000000000  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8BC08 0000000002B2A460 0000000013B74AA0 00000000156DB0C8  Qt5Core.dll!0x1fbc08 QCoreApplication::forwardEvent+0x1b8
00007FFCB6D5AB9B 0000000002876A80 00007FFCB7A8A971 000000000000002E  Qt5Widgets.dll!0x5ab9b QDesktopWidget::qt_metacall+0x2b5b
00007FFCB6D5D7E3 00000000005FFBB0 0000000002887670 0000000000000001  Qt5Widgets.dll!0x5d7e3 QDesktopWidget::qt_metacall+0x57a3
00007FFCB6D07BDC 000000001392F5E0 0000000019DF9550 000000001437A1D0  Qt5Widgets.dll!0x7bdc QApplicationPrivate::notify_helper+0x9c
00007FFCB6D0EC63 0000000002876A80 00007FFCB78B215F 0000000000000000  Qt5Widgets.dll!0xec63 QApplication::notify+0x3b3
00007FFCC45DFB76 0000000019E00110 00007FFCB72BACC4 0000000002876A80  libkritaui.dll!0x2bfb76 notify+0x16  [C:/krita-dev/krita/libs/ui/KisApplication.cpp @ 639]
   637: {
   638:     try {
>  639:         return QApplication::notify(receiver, event);
   640:     } catch (std::exception &e) {
   641:         qWarning("Error %s sending event %i to object %s",
00007FFCB7A8C0C8 4099400000000000 4084A00000000000 00000000003FB000  Qt5Core.dll!0x1fc0c8 QCoreApplication::sendSpontaneousEvent+0x1a8
00007FFCB72A7198 000000002865A418 00007FFCB7912F90 0000000000000024  Qt5Gui.dll!0x37198 QGuiApplicationPrivate::processMouseEvent+0x858
00007FFCB72A83D5 0000000002C10AD0 0000000002C1BB40 00000000000B0B5C  Qt5Gui.dll!0x383d5 QGuiApplicationPrivate::processWindowSystemEvent+0x105
00007FFCB72803FC 0000000000000401 00000000000B0B5C 0000000000000000  Qt5Gui.dll!0x103fc QWindowSystemInterface::sendWindowSystemEvents+0x44c
00007FFCB7AE689A 0000000080000012 0000000000000001 0000000000000000  Qt5Core.dll!0x25689a QEventDispatcherWin32Private::sendTimerEvent+0x60a
00007FFD372B6D41 0000000000000000 00007FFCB7AE63C0 00000000000B0B5C  USER32.dll!0x16d41 UserCallWinProcCheckWow+0x2c1
00007FFD372B6713 00000000005FC730 0000000000000000 0000000000000000  USER32.dll!0x16713 DispatchMessageWorker+0x1c3
00007FFCB7AE5D4B 0000000002C1BB40 0000000000000024 0000000002876A30  Qt5Core.dll!0x255d4b QEventDispatcherWin32::processEvents+0x5db
000000006A8F9FF5 0000000000000080 0000000000000014 0000000014CA60A0  qwindows.dll!0x79ff5 qt_plugin_instance+0x2e15
00007FFCB7A8A14F 00007FFCC385CE60 00000000005FFB90 00000000005FFB70  Qt5Core.dll!0x1fa14f QEventLoop::exec+0x13f
00007FFCB7A93417 00000000005FFC00 00000000005FFBB0 000000000000000C  Qt5Core.dll!0x203417 QCoreApplication::exec+0x77
0000000140006A4A 0000000000000001 0000000002887550 0000000140FC3970  krita.exe!0x6a4a main+0x1cfa  [C:/krita-dev/krita/krita/main.cc @ 495]
   493:     KisUsageLogger::write(QString("  Swap Location: %1\n").arg(KisImageConfig(true).swapDir()));
   494: 
>  495:     int state = app.exec();
   496: 
   497:     {
00000001400013C7 0000000000000000 0000000000000000 0000000000000000  krita.exe!0x13c7 __tmainCRTStartup+0x247
00000001400014CB 0000000000000000 0000000000000000 0000000000000000  krita.exe!0x14cb WinMainCRTStartup+0x1b
00007FFD37A14034 0000000000000000 0000000000000000 0000000000000000  KERNEL32.DLL!0x14034 BaseThreadInitThunk+0x14
00007FFD37DC3691 0000000000000000 0000000000000000 0000000000000000  ntdll.dll!0x73691 RtlUserThreadStart+0x21

0000000140000000-00000001410BB000 krita.exe
00007FFD37D50000-00007FFD37F31000 ntdll.dll   	6.2.17134.556
00007FFD37A00000-00007FFD37AB1000 KERNEL32.DLL	6.2.17134.706
00007FFD343C0000-00007FFD34633000 KERNELBASE.dll	6.2.17134.556
00007FFD377F0000-00007FFD3788E000 msvcrt.dll  	7.0.17134.1
00007FFCC3840000-00007FFCC4318000 libkritaglobal.dll
00007FFCD58B0000-00007FFCD7B9D000 libkritawidgetutils.dll
00007FFCE45E0000-00007FFCE4AA8000 libKF5I18n.dll
00007FFCB7EC0000-00007FFCB8609000 libKF5ConfigCore.dll
00007FFCB7890000-00007FFCB7EB4000 Qt5Core.dll 	5.12.2.0
00007FFD37890000-00007FFD37931000 ADVAPI32.dll	6.2.17134.471
00007FFD379A0000-00007FFD379FB000 sechost.dll 	6.2.17134.319
00007FFD36630000-00007FFD36754000 RPCRT4.dll  	6.2.17134.648
00007FFCB8610000-00007FFCC3832000 libkritaimage.dll
00007FFD37B20000-00007FFD37C71000 ole32.dll   	6.2.17134.407
00007FFD374C0000-00007FFD377E2000 combase.dll 	6.2.17134.619
00007FFD35000000-00007FFD350F8000 ucrtbase.dll	6.2.17134.677
00007FFD35160000-00007FFD351DA000 bcryptPrimitives.dll	6.2.17134.1
00007FFD36C90000-00007FFD36CB8000 GDI32.dll   	6.2.17134.285
00007FFD34D50000-00007FFD34EE2000 gdi32full.dll	6.2.17134.706
00007FFD34F10000-00007FFD34FAF000 msvcp_win.dll	6.2.17134.619
00007FFD372A0000-00007FFD37430000 USER32.dll  	6.2.17134.376
00007FFD34EF0000-00007FFD34F10000 win32u.dll  	6.2.17134.1
00007FFD351E0000-00007FFD36620000 SHELL32.dll 	6.2.17134.441
00007FFD34FB0000-00007FFD34FF9000 cfgmgr32.dll	6.2.17134.1
00007FFD370A0000-00007FFD37149000 shcore.dll  	6.2.17134.112
00007FFD34640000-00007FFD34D4D000 windows.storage.dll	6.2.17134.677
00007FFD37150000-00007FFD371A1000 shlwapi.dll 	6.2.17134.1
00007FFD340E0000-00007FFD340F1000 kernel.appcore.dll	6.2.17134.112
00007FFD340B0000-00007FFD340CF000 profapi.dll 	6.2.17134.1
00007FFD34060000-00007FFD340AC000 powrprof.dll	6.2.17134.1
00007FFD340D0000-00007FFD340DA000 FLTLIB.DLL  	6.2.17134.1
00007FFD37430000-00007FFD3749C000 WS2_32.dll  	6.2.17134.1
00007FFCC4320000-00007FFCD58A4000 libkritaui.dll
0000000061440000-000000006145A000 libgcc_s_seh-1.dll
00007FFCB6D00000-00007FFCB726C000 Qt5Widgets.dll	5.12.2.0
00007FFCB7270000-00007FFCB7885000 Qt5Gui.dll  	5.12.2.0
00007FFD23110000-00007FFD2315B000 libkritaversion.dll
00007FFD25790000-00007FFD257CB000 Qt5Xml.dll  	5.12.2.0
000000006FC40000-000000006FDA5000 libstdc++-6.dll
00007FFCB5E50000-00007FFCB6CF9000 libkritaodf.dll
00007FFCE4340000-00007FFCE45D1000 libkritaplugin.dll
00007FFCE3950000-00007FFCE3D17000 libKF5ConfigGui.dll
00007FFCB4AA0000-00007FFCB5003000 libKF5GuiAddons.dll
00007FFCB5010000-00007FFCB5E42000 libKF5CoreAddons.dll
00007FFCB43D0000-00007FFCB4A9F000 libKF5ItemViews.dll
00007FFCB14D0000-00007FFCB1A2C000 libKF5WindowSystem.dll
00007FFD175D0000-00007FFD17628000 Qt5PrintSupport.dll	5.12.2.0
00007FFCB1A30000-00007FFCB43C7000 libKF5WidgetsAddons.dll
00007FFD371B0000-00007FFD3729D000 comdlg32.dll	6.2.17134.1
00007FFCFD6D0000-00007FFCFD733000 libintl.DLL 	0.18.0.0
00007FFD2F020000-00007FFD2F037000 NETAPI32.dll	6.2.17134.1
00007FFD2F000000-00007FFD2F01A000 MPR.dll     	6.2.17134.677
00007FFCE3310000-00007FFCE3765000 libkritacommand.dll
00007FFCB0DE0000-00007FFCB14C7000 libkritametadata.dll
00007FFCAD650000-00007FFCADE1E000 libkritapsd.dll
00007FFCAC7E0000-00007FFCAD644000 libfftw3.dll
00007FFCDA870000-00007FFCDABD4000 libkritastore.dll
00007FFCADE20000-00007FFCB0DD5000 libkritapigment.dll
00007FFCFC920000-00007FFCFC97B000 libHalf.dll
0000000064940000-0000000064955000 libwinpthread-1.dll	1.0.0.0
00007FFD33F90000-00007FFD33FB8000 USERENV.dll 	6.2.17134.1
00007FFD2F070000-00007FFD2F07A000 VERSION.dll 	6.2.17134.1
00007FFD30F00000-00007FFD30F23000 WINMM.dll   	6.2.17134.1
00007FFCFC070000-00007FFCFC10B000 libkritacolor.dll
00007FFCE3D70000-00007FFCE3F60000 libkritaimpex.dll
00007FFCABB80000-00007FFCAC7D2000 libkritalibbrush.dll
00007FFC9FE50000-00007FFCA0388000 libKF5Completion.dll
00007FFCA0390000-00007FFCA2125000 libexiv2.dll
00007FFD36620000-00007FFD36628000 PSAPI.DLL   	6.2.17134.1
00007FFCA2130000-00007FFCA5195000 libkritawidgets.dll
00007FFCF9780000-00007FFCF98BC000 libpng16.dll
00007FFCF98F0000-00007FFCF99E3000 Qt5Multimedia.dll	5.12.2.0
00007FFCF4510000-00007FFCF4658000 Qt5Network.dll	5.12.2.0
00007FFD327F0000-00007FFD32819000 dwmapi.dll  	6.2.17134.1
00007FFD32720000-00007FFD327B8000 UxTheme.dll 	6.2.17134.1
00007FFCA51A0000-00007FFCABB7A000 libkritaflake.dll
00007FFD247A0000-00007FFD247C7000 iconv.dll
00007FFD2DB90000-00007FFD2DC37000 COMCTL32.dll	5.82.17134.706
00007FFD2D960000-00007FFD2D9E5000 WINSPOOL.DRV	6.2.17134.648
00007FFC9F9E0000-00007FFC9FE46000 libquazip5.dll
00007FFD30ED0000-00007FFD30EFA000 WINMMBASE.dll	6.2.17134.1
00007FFD28C40000-00007FFD28C50000 Qt5Concurrent.dll	5.12.2.0
00007FFCFB530000-00007FFCFB583000 Qt5Svg.dll  	5.12.2.0
00007FFCF57C0000-00007FFCF584D000 libexpat.dll
00007FFCF9720000-00007FFCF9777000 libzlib.dll 	1.2.11.0
00007FFD336A0000-00007FFD3375E000 DNSAPI.dll  	6.2.17134.441
00007FFD33660000-00007FFD33698000 IPHLPAPI.DLL	6.2.17134.1
00007FFD36830000-00007FFD36838000 NSI.dll     	6.2.17134.1
00007FFD30A40000-00007FFD30BF4000 PROPSYS.dll 	7.0.17134.619
00007FFD36760000-00007FFD36822000 OLEAUT32.dll	6.2.17134.706
00007FFD33BC0000-00007FFD33BE5000 bcrypt.dll  	6.2.17134.112
00007FFD33AB0000-00007FFD33ABB000 CRYPTBASE.DLL	6.2.17134.1
00007FFD33760000-00007FFD3376E000 NETUTILS.DLL	6.2.17134.1
00007FFD2FE50000-00007FFD2FE8E000 LOGONCLI.DLL	6.2.17134.1
00007FFD2F040000-00007FFD2F066000 SRVCLI.DLL  	6.2.17134.1
00007FFD2F840000-00007FFD2F858000 SAMCLI.DLL  	6.2.17134.1
00007FFD36E70000-00007FFD36E9D000 IMM32.DLL   	6.2.17134.1
000000006A880000-000000006AA2E000 qwindows.dll	5.12.2.0
00007FFD30240000-00007FFD30253000 WTSAPI32.dll	6.2.17134.1
000000006CC40000-000000006CC74000 qwindowsvistastyle.dll	5.12.2.0
00007FFCF42F0000-00007FFCF4487000 d3d9.dll    	6.2.17134.81
00007FFD34120000-00007FFD34302000 crypt32.dll 	6.2.17134.1
00007FFD34100000-00007FFD34112000 MSASN1.dll  	6.2.17134.1
00007FFD35100000-00007FFD35157000 WINTRUST.DLL	6.2.17134.556
00007FFD374A0000-00007FFD374BD000 imagehlp.dll	6.2.17134.1
00007FFD33A90000-00007FFD33AA7000 CRYPTSP.dll 	6.2.17134.1
00007FFD334C0000-00007FFD334F3000 rsaenh.dll  	6.2.17134.254
00007FFD36EA0000-00007FFD37013000 MSCTF.dll   	6.2.17134.619
00007FFCD8150000-00007FFCD8270000 opengl32.dll	6.2.17134.1
00007FFCD8120000-00007FFCD814C000 GLU32.dll   	6.2.17134.1
0000000053C30000-0000000055EF7000 nvoglv64.DLL	23.21.13.8816
00007FFD36840000-00007FFD36C8B000 SETUPAPI.dll	6.2.17134.1
00007FFD33E70000-00007FFD33E97000 DEVOBJ.dll  	6.2.17134.1
00007FFD33150000-00007FFD33181000 ntmarta.dll 	6.2.17134.1
00007FFD331C0000-00007FFD33216000 WINSTA.dll  	6.2.17134.1
00007FFD37C80000-00007FFD37D20000 clbcatq.dll 	2001.12.10941.16384
00007FFD28AA0000-00007FFD28AB0000 libEGL.DLL  	5.12.2.0
00007FFC9F600000-00007FFC9F9D8000 libGLESv2.dll	5.12.2.0
00007FFD32E20000-00007FFD32EDB000 dxgi.dll    	6.2.17134.112
00007FFD31430000-00007FFD3173B000 d3d11.dll   	6.2.17134.441
00007FFD31D10000-00007FFD31EAC000 dcomp.dll   	6.2.17134.1
00007FFD2DD10000-00007FFD2DDFA000 nvldumdx.dll	23.21.13.8816
00007FFCED000000-00007FFCEEAEC000 nvwgf2umx.dll	23.21.13.8816
00007FFCF3110000-00007FFCF42E6000 nvd3dumx.dll	23.21.13.8816
0000000061F00000-0000000061F13000 qgif.dll    	5.12.2.0
000000006C600000-000000006C615000 qicns.dll   	5.12.2.0
000000006E840000-000000006E853000 qico.dll    	5.12.2.0
00000000626C0000-0000000062729000 qjpeg.dll   	5.12.2.0
0000000061B00000-0000000061B11000 qsvg.dll    	5.12.2.0
000000006B640000-000000006B651000 qtga.dll    	5.12.2.0
000000006CF00000-000000006CF70000 qtiff.dll   	5.12.2.0
0000000066AC0000-0000000066AD1000 qwbmp.dll   	5.12.2.0
00000000675C0000-0000000067651000 qwebp.dll   	5.12.2.0
00007FFD10BA0000-00007FFD10BF8000 dataexchange.dll	6.2.17134.1
00007FFD32930000-00007FFD32AE8000 twinapi.appcore.dll	6.2.17134.137
00007FFD328D0000-00007FFD328F9000 RMCLIENT.dll	6.2.17134.556
00007FFCFC560000-00007FFCFC595000 exchndl.dll 	0.8.2.0
00007FFCD9AC0000-00007FFCD9C6A000 mgwhelp.dll 	0.8.2.0
00007FFC9F470000-00007FFC9F5FF000 dbghelp.dll 	6.3.9600.17298
00007FFD26D90000-00007FFD270AC000 dwrite.dll  	6.2.17134.376
00007FFD28580000-00007FFD28616000 TextInputFramework.dll	6.2.17134.376
00007FFD2E080000-00007FFD2E39E000 CoreUIComponents.dll	6.2.17134.376
00007FFD32210000-00007FFD322EA000 CoreMessaging.dll	6.2.17134.471
00007FFD30260000-00007FFD303AD000 wintypes.dll	6.2.17134.523
00007FFD2D8F0000-00007FFD2D95B000 Oleacc.dll  	7.2.17134.1
00007FFD239C0000-00007FFD23BC0000 UIAutomationCore.dll	7.2.17134.112
00007FFD33EC0000-00007FFD33F5A000 sxs.dll     	6.2.17134.1
00007FFC9F290000-00007FFC9F466000 krita_shape_image.dll
00007FFC9C840000-00007FFC9F285000 krita_shape_text.dll
00007FFC96CD0000-00007FFC97FD4000 libkritatextlayout.dll
00007FFC97FE0000-00007FFC9C83E000 libkritatext.dll
00007FFC96230000-00007FFC96CC7000 krita_shape_artistictext.dll
00007FFC95560000-00007FFC96225000 krita_shape_paths.dll
00007FFC953C0000-00007FFC9555E000 kritaasccdl.dll
00007FFC94DA0000-00007FFC953B8000 kritablurfilter.dll
00007FFC94700000-00007FFC94D9F000 kritacolorsfilters.dll
00007FFC94530000-00007FFC946FA000 kritaconvertheighttonormalmap.dll
00007FFCE41D0000-00007FFCE4338000 kritaconvolutionfilters.dll
00007FFC943E0000-00007FFC9452C000 kritadodgeburn.dll
00007FFC94220000-00007FFC943D5000 kritaedgedetection.dll
00007FFC940C0000-00007FFC9421F000 kritaembossfilter.dll
00007FFC93FB0000-00007FFC940B9000 kritaexample.dll
00007FFC93D10000-00007FFC93FAC000 kritaextensioncolorsfilters.dll
00007FFC93B50000-00007FFC93D06000 kritafastcolortransferfilter.dll
00007FFC93930000-00007FFC93B4D000 kritagradientmap.dll
00007FFC936D0000-00007FFC93927000 kritaguassianhighpassfilter.dll
00007FFC93580000-00007FFC936CF000 kritahalftone.dll
00007FFC93310000-00007FFC93573000 kritaimageenhancement.dll
00007FFC93050000-00007FFC93302000 kritaindexcolors.dll
00007FFC92E90000-00007FFC9304F000 kritalevelfilter.dll
00007FFC92CF0000-00007FFC92E81000 kritanoisefilter.dll
00007FFC92BE0000-00007FFC92CED000 kritanormalize.dll
00007FFC92A70000-00007FFC92BDE000 kritaoilpaintfilter.dll
00007FFC92790000-00007FFC92A64000 kritaphongbumpmap.dll
00007FFC925E0000-00007FFC92782000 kritapixelizefilter.dll
00007FFC924B0000-00007FFC925D5000 kritaposterize.dll
00007FFC92350000-00007FFC924AF000 kritaraindropsfilter.dll
00007FFC921B0000-00007FFC92344000 kritarandompickfilter.dll
00007FFC92040000-00007FFC921B0000 kritaroundcornersfilter.dll
00007FFC91EE0000-00007FFC92035000 kritasmalltilesfilter.dll
00007FFC91D70000-00007FFC91EDF000 kritathreshold.dll
00007FFC91B20000-00007FFC91D6E000 kritaunsharpfilter.dll
00007FFC91970000-00007FFC91B16000 kritawavefilter.dll
00007FFC917E0000-00007FFC9196C000 kritacolorgenerator.dll
00007FFC91640000-00007FFC917DE000 kritapatterngenerator.dll
00007FFC914A0000-00007FFC9163F000 kritasimplexnoisegenerator.dll
00007FFC90EA0000-00007FFC9149D000 kritacolorsmudgepaintop.dll
00007FFC8E5E0000-00007FFC90E99000 libkritalibpaintop.dll
00007FFC85FD0000-00007FFC8E5DD000 kritalcmsengine.dll
00007FFC85E20000-00007FFC85FC3000 liblcms2.dll
00007FFC85790000-00007FFC85E20000 krita_colorspaces_extensions.dll
00007FFC852C0000-00007FFC8578B000 kritacurvepaintop.dll
00007FFC848D0000-00007FFC852BE000 kritadefaultpaintops.dll
00007FFC843B0000-00007FFC848C9000 kritadeformpaintop.dll
00007FFC83FE0000-00007FFC843A4000 kritaexperimentpaintop.dll
00007FFC83C60000-00007FFC83FDF000 kritafilterop.dll
00007FFC83840000-00007FFC83C53000 kritagridpaintop.dll
00007FFC832A0000-00007FFC8383E000 kritahairypaintop.dll
00007FFC82BF0000-00007FFC8329F000 kritahatchingpaintop.dll
00007FFC82780000-00007FFC82BE1000 kritaparticlepaintop.dll
00007FFC823B0000-00007FFC82771000 kritaroundmarkerpaintop.dll
00007FFC81EB0000-00007FFC823A7000 kritasketchpaintop.dll
00007FFC818E0000-00007FFC81EA1000 kritaspraypaintop.dll
00007FFC81530000-00007FFC818D8000 kritatangentnormalpaintop.dll
00007FFC80760000-00007FFC8152E000 krita_filtereffects.dll
00007FFC7FDF0000-00007FFC8075B000 kritaassistanttool.dll
00007FFC7F1F0000-00007FFC7FDE2000 krita_flaketools.dll
00007FFC7E300000-00007FFC7F1E2000 krita_karbontools.dll
00007FFC7E190000-00007FFC7E2F4000 krita_tool_basicflakes.dll
00007FFC7DF70000-00007FFC7E18E000 libkritabasicflakes.dll
00007FFC7D8D0000-00007FFC7DF6A000 krita_tool_svgtext.dll
00007FFC7C9B0000-00007FFC7D8CB000 kritadefaulttools.dll
00007FFD24190000-00007FFD241A6000 libboost_system-mgw73-mt-1_61.dll
00007FFC7BF10000-00007FFC7C9A6000 kritaselectiontools.dll
00007FFC7BB00000-00007FFC7BF03000 kritatoolSmartPatch.dll
00007FFC7B810000-00007FFC7BAFE000 kritatoolcrop.dll
00007FFC7B660000-00007FFC7B80A000 kritatooldyna.dll
00007FFC7B340000-00007FFC7B659000 kritatoollazybrush.dll
00007FFC7B180000-00007FFC7B339000 kritatoolpolygon.dll
00007FFC7AFC0000-00007FFC7B175000 kritatoolpolyline.dll
00007FFC793F0000-00007FFC7AFB7000 kritatooltransform.dll
00007FFC77E70000-00007FFC793F0000 kritaanimationdocker.dll
00007FFC77CA0000-00007FFC77E6D000 kritasvgcollectiondocker.dll
00007FFC77AB0000-00007FFC77C93000 kritaarrangedocker.dll
00007FFC776E0000-00007FFC77AAF000 kritaartisticcolorselector.dll
00007FFC77450000-00007FFC776DC000 kritachanneldocker.dll
00007FFC76360000-00007FFC7744D000 kritacolorselectorng.dll
0000000070700000-0000000070714000 qsvgicon.dll	5.12.2.0
00007FFC76080000-00007FFC76353000 kritacompositiondocker.dll
00007FFC75EE0000-00007FFC7607F000 kritadigitalmixer.dll
00007FFC75BA0000-00007FFC75ED4000 kritagamutmask.dll
00007FFC75910000-00007FFC75B93000 kritagriddocker.dll
00007FFC75690000-00007FFC75903000 kritahistogramdocker.dll
00007FFC75270000-00007FFC75682000 kritahistorydocker.dll
00007FFC74C10000-00007FFC75269000 kritalayerdocker.dll
00007FFC74A10000-00007FFC74C0B000 kritalogdocker.dll
00007FFC74670000-00007FFC74A0D000 kritalutdocker.dll
00007FFC72D80000-00007FFC74668000 libOpenColorIO.dll
00007FFC72AE0000-00007FFC72D72000 kritaoverviewdocker.dll
00007FFC728A0000-00007FFC72AD6000 kritapalettedocker.dll
00007FFC72710000-00007FFC72892000 kritapatterndocker.dll
00007FFC72580000-00007FFC7270E000 kritapresetdocker.dll
00007FFC723C0000-00007FFC7257F000 kritapresethistory.dll
00007FFC71FD0000-00007FFC723C0000 kritasmallcolorselector.dll
00007FFC71D70000-00007FFC71FC4000 kritaspecificcolorselector.dll
00007FFC71A10000-00007FFC71D65000 kritatasksetdocker.dll
00007FFC71820000-00007FFC71A0C000 kritatouchdocker.dll
00007FFD22F30000-00007FFD22F49000 Qt5QuickWidgets.dll	5.12.2.0
00007FFC70D00000-00007FFC7141A000 libkritaqml.dll
00007FFC71420000-00007FFC71815000 Qt5Qml.dll  	5.12.2.0
00007FFC70910000-00007FFC70CFB000 Qt5Quick.dll	5.12.2.0
0000000067580000-00000000675A2000 qgenericbearer.dll	5.12.2.0
00007FFD2E5B0000-00007FFD2E5C6000 dhcpcsvc6.DLL	6.2.17134.1
00007FFD2E620000-00007FFD2E63A000 dhcpcsvc.DLL	6.2.17134.1
00007FFD0B1E0000-00007FFD0B224000 edputil.dll 	6.2.17134.1
00007FFC703C0000-00007FFC70906000 kritaanimationrenderer.dll
00007FFC70200000-00007FFC703B1000 kritabuginfo.dll
00007FFC70010000-00007FFC701F2000 kritaclonesarray.dll
00007FFC6FE10000-00007FFC70001000 kritacolorrange.dll
00007FFC6FC50000-00007FFC6FE0F000 kritacolorspaceconversion.dll
00007FFC6FA00000-00007FFC6FC45000 kritahistogram.dll
00007FFC6F5E0000-00007FFC6F9F6000 kritaimagesize.dll
00007FFC6F380000-00007FFC6F5DB000 kritaimagesplit.dll
00007FFC6F270000-00007FFC6F375000 kritalayergroupswitcher.dll
00007FFC6EFB0000-00007FFC6F26B000 kritalayersplit.dll
00007FFC6ECB0000-00007FFC6EFAC000 kritametadataeditor.dll
00007FFC6E8F0000-00007FFC6ECA4000 kritamodifyselection.dll
00007FFC6E650000-00007FFC6E8E7000 kritaoffsetimage.dll
00007FFC6E030000-00007FFC6E64F000 kritaqmic.dll
00007FFC6DBD0000-00007FFC6E02E000 kritaresourcemanager.dll
00007FFC6DA00000-00007FFC6DBC8000 kritarotateimage.dll
00007FFC6D790000-00007FFC6D9FD000 kritaseparatechannels.dll
00007FFC6D620000-00007FFC6D78E000 kritashearimage.dll
00007FFC6D410000-00007FFC6D61C000 kritawaveletdecompose.dll
00007FFC6CFF0000-00007FFC6D40B000 kritapykrita.dll
00007FFC6BE30000-00007FFC6CFE2000 libkritalibkis.dll
0000000053890000-0000000053C24000 python36.dll	3.6.2150.1013
00007FFD1C4E0000-00007FFD1C4F7000 VCRUNTIME140.dll	14.0.23026.0
00007FFC6BB60000-00007FFC6BE2D000 krita.pyd
0000000064F40000-0000000064F64000 sip.pyd
000000006B880000-000000006BBA6000 QtCore.pyd
00007FFD25760000-00007FFD2576F000 python3.dll 	3.6.2150.1013
0000000066300000-000000006662E000 QtGui.pyd
0000000065400000-0000000065A9E000 QtWidgets.pyd
0000000061640000-000000006168E000 QtXml.pyd
0000000053870000-000000005388A000 _bz2.pyd    	3.6.2150.1013
00007FFCFBCD0000-00007FFCFBD12000 _lzma.pyd   	3.6.2150.1013
00007FFC6B9F0000-00007FFC6BB59000 _hashlib.pyd	3.6.2150.1013
0000000053840000-000000005386D000 _elementtree.pyd	3.6.2150.1013
00007FFCFC430000-00007FFCFC463000 pyexpat.pyd 	3.6.2150.1013
000000006E340000-000000006E34D000 Qt.pyd
0000000016A20000-0000000016AD6000 QtNetwork.pyd
000000006CB80000-000000006CC3C000 QtMultimedia.pyd
000000006C400000-000000006C4D3000 QtQml.pyd
0000000016B20000-0000000016B4D000 QtMultimediaWidgets.pyd
00007FFD175B0000-00007FFD175CF000 Qt5MultimediaWidgets.dll	5.12.2.0
00007FFCF9450000-00007FFCF94A1000 Qt5OpenGL.dll	5.12.2.0
0000000061880000-00000000618AD000 QtOpenGL.pyd
0000000065B00000-0000000065B5B000 QtPrintSupport.pyd
0000000069600000-0000000069788000 QtQuick.pyd
000000006B780000-000000006B7AA000 QtSvg.pyd
0000000066180000-0000000066199000 QtQuickWidgets.pyd
0000000053820000-0000000053835000 _socket.pyd 	3.6.2150.1013
0000000053810000-000000005381A000 select.pyd  	3.6.2150.1013
0000000053800000-000000005380E000 _overlapped.pyd	3.6.2150.1013
00007FFD338E0000-00007FFD33946000 mswsock.dll 	6.2.17134.1
00000000537F0000-00000000537FB000 _multiprocessing.pyd	3.6.2150.1013
00007FFD174F0000-00007FFD17501000 _asyncio.pyd	3.6.2150.1013
00007FFC6B7F0000-00007FFC6B9ED000 _ssl.pyd    	3.6.2150.1013
000000006DA80000-000000006DA8F000 qtquick2plugin.dll	5.12.2.0
00007FFC69860000-00007FFC6B7E7000 kritasketchplugin.dll
00007FFC69640000-00007FFC69855000 kritajpegimport.dll
00007FFC694A0000-00007FFC6963A000 libjpeg-62.dll
00007FFD24E60000-00007FFD2531D000 WININET.dll 	11.0.17134.648
00007FFD296B0000-00007FFD29956000 iertutil.dll	11.0.17134.677
00007FFD33F60000-00007FFD33F90000 SspiCli.dll 	6.2.17134.376
00007FFD128D0000-00007FFD128E5000 ondemandconnroutehelper.dll	6.2.17134.1
00007FFD2F080000-00007FFD2F15D000 winhttp.dll 	6.2.17134.590
00007FFD2E820000-00007FFD2E82B000 WINNSI.DLL  	6.2.17134.1
00007FFD29960000-00007FFD29B28000 urlmon.dll  	11.0.17134.648
00007FFD263C0000-00007FFD263CA000 rasadhlp.dll	6.2.17134.1
00007FFD26B60000-00007FFD26BD2000 fwpuclnt.dll	6.2.17134.1

Windows 6.2.9200
DrMingw 0.8.2
Reptorian updated this revision to Diff 56370.EditedApr 16 2019, 3:42 PM

Fixed the crash. Did the color[0] = thing with no avail. MixOp doesn't seem to work though removal of MixOp code below shows evidence of invert transformation.

Also, the only way to get the MixOp to work is to use (colors,2,dst.rawData()), but however, the invert transformation didn't seem to be taken into consideration when mixing colors. Just the guassian blur, and the oldRawData.

Reptorian added a comment.EditedSun, Apr 21, 1:32 AM

Never mind about earlier plan, now I got a real plan. Waveletdecompose.cpp does give me a way to create Guassian High Pass filter. The answer was in plain sight all along.

Reptorian updated this revision to Diff 56686.EditedSun, Apr 21, 9:56 PM

Finally, a working implementation of the filter. Now, I do think it needs a way to manipulate the contrast as it's too little.

EDIT: Maybe not for the contrast manipulation. Though I think there needs to be a default contrast increase. Like 50% contrast increase to match grain extract. In other words, color curves must be with these output

[64,0]
[191,255]

or

[.25,0]
[.75,1]

Reptorian updated this revision to Diff 56854.EditedTue, Apr 23, 9:07 PM

Ok, now it is using grain_extract mode.

Also, this can be used as a skeleton for developing new guassian high pass series found in GIMP. I might add those, but for now, i'm done as it was difficult for me to create new filter.

Notes :

Apply chroma from roba gimp filter can be done by keeping the a and b oldrawData with color conversion codes. So, that's really not a big deal.

RedRobes filter is going to be difficult to make though. The part that really bothers me is the part where blurring until average color is generated, and I would need to figure out how to create a color using loop, add all the value taking into account of alpha where 0 alpha means it won't be added, and 100 alpha means it will.

rempt added a comment.Wed, Apr 24, 7:11 AM

Okay, as soon as we've branched 4.2, this can go in then :-)

When this gets in the repo, @Reptorian I would request you to add the documentation for this too.