Krita Source Code Documentation
Loading...
Searching...
No Matches
KoLabDarkenColorTransformation.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
3 * SPDX-FileCopyrightText: 2005-2006 C. Boemann <cbo@boemann.dk>
4 * SPDX-FileCopyrightText: 2004, 2006-2007 Cyrille Berger <cberger@cberger.net>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7*/
8
9#ifndef _KO_LAB_DARKEN_COLOR_TRANSFORMATION_H_
10#define _KO_LAB_DARKEN_COLOR_TRANSFORMATION_H_
11
12#if !defined _MSC_VER
13#pragma GCC diagnostic ignored "-Wcast-align"
14#endif
15
17
18template<typename _lab_channels_type_>
20 KoLabDarkenColorTransformation(qint32 shade, bool compensate, qreal compensation, const KoColorSpace *colorspace)
22 , m_shade(shade)
23 , m_compensate(compensate)
24 , m_compensation(compensation)
25 {
26 }
27
28 void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override
29 {
30 *((quint32 *)dst) = *((const quint32 *)src);
31
32 QColor c;
33
34 for (unsigned int i = 0; i < nPixels*m_colorSpace->pixelSize(); i+=m_colorSpace->pixelSize()) {
35 if (m_compensate) {
36 m_colorSpace->toQColor(src+i,&c);
37 c.setRed((c.red()*m_shade)/(m_compensation*255));
38 c.setGreen((c.green()*m_shade)/(m_compensation*255));
39 c.setBlue((c.blue()*m_shade)/(m_compensation*255));
40 m_colorSpace->fromQColor(c,dst+i);
41 } else {
42 m_colorSpace->toQColor(src+i,&c);
43 c.setRed((c.red()*m_shade)/255);
44 c.setGreen((c.green()*m_shade)/255);
45 c.setBlue((c.blue()*m_shade)/255);
46 m_colorSpace->fromQColor(c,dst+i);
47 }
48 }
49 }
53 qint32 m_shade {0};
54 bool m_compensate {false};
55 qreal m_compensation {0.0};
56};
57
58#endif
virtual quint32 pixelSize() const =0
virtual void toQColor(const quint8 *src, QColor *c) const =0
virtual void fromQColor(const QColor &color, quint8 *dst) const =0
KoLabDarkenColorTransformation(qint32 shade, bool compensate, qreal compensation, const KoColorSpace *colorspace)
const KoColorConversionTransformation * m_defaultFromLab
const KoColorConversionTransformation * m_defaultToLab
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override