File indexing completed on 2024-06-09 04:27:12

0001 /*
0002  *  SPDX-FileCopyrightText: 2016 Miroslav Talasek <miroslav.talasek@seznam.cz>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_WAVELET_KERNEL_H
0008 #define __KIS_WAVELET_KERNEL_H
0009 
0010 #include "kis_types.h"
0011 
0012 #include <Eigen/Core>
0013 
0014 class QRect;
0015 
0016 class KisWaveletKernel
0017 {
0018 public:
0019     static Eigen::Matrix<qreal, Eigen::Dynamic, Eigen::Dynamic>
0020         createHorizontalMatrix(qreal radius);
0021 
0022     static Eigen::Matrix<qreal, Eigen::Dynamic, Eigen::Dynamic>
0023         createVerticalMatrix(qreal radius);
0024 
0025     static KisConvolutionKernelSP
0026         createHorizontalKernel(qreal radius);
0027 
0028     static KisConvolutionKernelSP
0029         createVerticalKernel(qreal radius);
0030 
0031     static int kernelSizeFromRadius(qreal radius);
0032 
0033     static void applyWavelet(KisPaintDeviceSP device,
0034                               const QRect& rect,
0035                               qreal xRadius, qreal yRadius,
0036                               const QBitArray &channelFlags,
0037                               KoUpdater *updater);
0038 };
0039 
0040 #endif /* __KIS_WAVELET_KERNEL_H */