2
* Copyright (c) 2005 Boudewijn Rempt <boud@valdyas.org>
3
* Copyright (c) 2006-2007 Cyrille Berger <cberger@cberger.net>
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2 of the License, or (at your option) any later version.
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
15
* You should have received a copy of the GNU Lesser General Public License
16
* along with this library; see the file COPYING.LIB. If not, write to
17
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18
* Boston, MA 02110-1301, USA.
20
#ifndef KO_CONVOLUTION_OP_H
21
#define KO_CONVOLUTION_OP_H
24
* Base class of a convolution operation. A convolution operation is
25
* defined by sum(colors[i] * kernelValues[i]) / factor + offset). The
26
* most well known convolution is the gaussian blur.
28
* You access the KoConvolutionOp of a colorspace by calling
29
* KoColorSpace::convolutionOp.
34
virtual ~KoConvolutionOp() { }
36
* Convolve the colors.
38
* @param colors a pointer toward the source pixels
39
* @param kernelValues the coeffient of the source pixels
40
* @param dst the destination pixel
41
* @param factor usually the factor is equal to the sum of kernelValues
42
* @param offset the offset which is added to the result, useful
43
* when the sum of kernelValues is equal to 0
44
* @param nColors the number of pixels in the colors array
45
* @param channelFlags determines which channels are affected in pixel order
47
* This function is thread-safe.
50
virtual void convolveColors(const quint8* const* colors, const qreal* kernelValues, quint8 *dst, qreal factor, qreal offset, qint32 nColors, const QBitArray & channelFlags) const = 0;