Krita Source Code Documentation
Loading...
Searching...
No Matches
KoColorConversionTransformation.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5*/
6
7#ifndef _KO_COLOR_CONVERSION_TRANSFORMATION_H_
8#define _KO_COLOR_CONVERSION_TRANSFORMATION_H_
9
10#include "kritapigment_export.h"
12#include <QMetaType>
13
14class KoColorSpace;
16
20class KRITAPIGMENT_EXPORT KoColorConversionTransformation : public KoColorTransformation
21{
23 struct Private;
24public:
25
30 enum Intent {
31 IntentPerceptual = 0,
32 IntentRelativeColorimetric = 1,
33 IntentSaturation = 2,
34 IntentAbsoluteColorimetric = 3
35 };
36
41 Empty = 0x0,
42 NoOptimization = 0x0100,
43 GamutCheck = 0x1000, // Out of Gamut alarm
44 SoftProofing = 0x4000, // Do softproofing
45 BlackpointCompensation = 0x2000,
46 NoWhiteOnWhiteFixup = 0x0004, // Don't fix scum dot
47 HighQuality = 0x0400, // Use more memory to give better accuracy
48 LowQuality = 0x0800, // Use less memory to minimize resources
49 CopyAlpha = 0x04000000, //Let LCMS handle the alpha. Should always be on.
50 NoAdaptationAbsoluteIntent = 01000000 // Krita-only flag, should be stripped off before passing to lcms (proofing only)
51
52 };
53 Q_DECLARE_FLAGS(ConversionFlags, ConversionFlag)
54
55
73 static Intent internalRenderingIntent() { return IntentPerceptual; }
74 static ConversionFlags internalConversionFlags() { return BlackpointCompensation; }
75
76 static Intent adjustmentRenderingIntent() { return IntentPerceptual; }
77 static ConversionFlags adjustmentConversionFlags() { return ConversionFlags(BlackpointCompensation | NoWhiteOnWhiteFixup); }
78
79public:
81 const KoColorSpace* dstCs,
82 Intent renderingIntent,
83 ConversionFlags conversionFlags);
85public:
86
91
96
102
106 ConversionFlags conversionFlags() const;
107
113 void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override = 0;
114
120 void transformInPlace(const quint8 *src, quint8 *dst, qint32 nPixels) const;
121
125 bool isValid() const override { return true; }
126
127private:
128
129 void setSrcColorSpace(const KoColorSpace*) const;
130 void setDstColorSpace(const KoColorSpace*) const;
131
132 Private * const d;
133};
134
135Q_DECLARE_OPERATORS_FOR_FLAGS(KoColorConversionTransformation::ConversionFlags);
137
138#endif
Q_DECLARE_FLAGS(KisUpdaterContextSnapshotEx, KisUpdaterContextSnapshotExTag)
Q_DECLARE_OPERATORS_FOR_FLAGS(KoColorConversionTransformation::ConversionFlags)
Q_DECLARE_METATYPE(KoColorConversionTransformation::Intent)
const KoColorSpace * srcColorSpace() const
ConversionFlags conversionFlags() const
const KoColorSpace * dstColorSpace() const
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override=0