Krita Source Code Documentation
Loading...
Searching...
No Matches
KoColorProfile.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_PROFILE_H_
8#define _KO_COLOR_PROFILE_H_
9
10#include <boost/operators.hpp>
11#include <QString>
12#include <QVector>
13#include <QVariant>
14
16#include "kritapigment_export.h"
17#include <KoColorimetryUtils.h>
18#include <optional>
19
23class KRITAPIGMENT_EXPORT KoColorProfile : public boost::equality_comparable<KoColorProfile>
24{
25
26public:
27
31 explicit KoColorProfile(const QString &fileName = QString());
32 KoColorProfile(const KoColorProfile& profile);
33 virtual ~KoColorProfile();
34
38 virtual QString type() const {
39 return QString();
40 }
41
50 virtual KoColorProfile* clone() const = 0;
51
56 virtual bool load();
57
63 virtual bool save(const QString &fileName);
64
69 virtual bool valid() const = 0;
70
74 QString name() const;
78 QString info() const;
81 QString manufacturer() const;
85 QString copyright() const;
89 QString fileName() const;
93 void setFileName(const QString &filename);
94
98 virtual float version() const = 0;
99
103 virtual QString colorModelID() const {
104 return QString();
105 };
109 virtual bool isSuitableForOutput() const = 0;
113 virtual bool isSuitableForInput() const = 0;
117 virtual bool isSuitableForWorkspace() const = 0;
121 virtual bool isSuitableForPrinting() const = 0;
125 virtual bool isSuitableForDisplay() const = 0;
126
130 virtual bool supportsPerceptual() const = 0;
131 virtual bool supportsSaturation() const = 0;
132 virtual bool supportsAbsolute() const = 0;
133 virtual bool supportsRelative() const = 0;
137 virtual bool hasColorants() const = 0;
141 virtual QVector <KoColorimetryUtils::XYZ> getColorantsXYZ() const = 0;
145 virtual QVector <KoColorimetryUtils::xyY> getColorantsxyY() const = 0;
154
162 virtual std::optional<double> hdrReferenceWhite() const = 0;
163
167 virtual QVector <qreal> getEstimatedTRC() const = 0;
168
172 virtual bool hasTRC() const = 0;
176 virtual bool isLinear() const = 0;
181 virtual void linearizeFloatValue(QVector <qreal> & Value) const = 0;
187 virtual void delinearizeFloatValue(QVector <qreal> & Value) const = 0;
192 virtual void linearizeFloatValueFast(QVector <qreal> & Value) const = 0;
193 virtual void delinearizeFloatValueFast(QVector <qreal> & Value) const = 0;
194
199 virtual bool compareTRC(TransferCharacteristics characteristics, float error) const = 0;
200
201 virtual QByteArray uniqueId() const = 0;
202
203 virtual bool operator==(const KoColorProfile&) const = 0;
204
208 virtual QByteArray rawData() const {
209 return QByteArray();
210 }
211
216 virtual ColorPrimaries getColorPrimaries() const;
217
223 static QString getColorPrimariesName(ColorPrimaries primaries);
233 static void colorantsForType(ColorPrimaries primaries, KoColorimetryUtils::xy &whitePoint, QList<KoColorimetryUtils::xy> &colorants, const bool prequantized = false);
234
240 virtual TransferCharacteristics getTransferCharacteristics() const;
241
247 static QString getTransferCharacteristicName(TransferCharacteristics curve);
248
249protected:
253 void setName(const QString &name);
257 void setInfo(const QString &info);
261 void setManufacturer(const QString &manufacturer);
265 void setCopyright(const QString &copyright);
266
273 void setCharacteristics(ColorPrimaries primaries, TransferCharacteristics curve);
274
275private:
276 struct Private;
277 Private* const d;
278};
279
280#endif
ColorPrimaries
The colorPrimaries enum Enum of colorants, follows ITU H.273 for values 0 to 255, and has extra known...
TransferCharacteristics
The transferCharacteristics enum Enum of transfer characteristics, follows ITU H.273 for values 0 to ...
QString copyright() const
virtual bool isSuitableForOutput() const =0
QString name() const
virtual std::optional< double > hdrReferenceWhite() const =0
hdrReferenceWhite HDR reference white is only available for Perceptual Quantizer profiles that save t...
QString info() const
Private *const d
virtual bool isSuitableForWorkspace() const =0
virtual QByteArray rawData() const
virtual void linearizeFloatValue(QVector< qreal > &Value) const =0
QString manufacturer() const
virtual void linearizeFloatValueFast(QVector< qreal > &Value) const =0
virtual KoColorimetryUtils::XYZ getWhitePointXYZ() const =0
virtual KoColorimetryUtils::xyY getWhitePointxyY() const =0
virtual bool isSuitableForDisplay() const =0
virtual QVector< qreal > getEstimatedTRC() const =0
virtual void delinearizeFloatValue(QVector< qreal > &Value) const =0
virtual QString type() const
virtual bool hasColorants() const =0
virtual QByteArray uniqueId() const =0
virtual bool compareTRC(TransferCharacteristics characteristics, float error) const =0
virtual KoColorProfile * clone() const =0
virtual bool isSuitableForInput() const =0
QString fileName() const
virtual bool supportsAbsolute() const =0
virtual bool isLinear() const =0
virtual bool operator==(const KoColorProfile &) const =0
virtual bool supportsRelative() const =0
virtual bool valid() const =0
virtual float version() const =0
virtual QVector< KoColorimetryUtils::xyY > getColorantsxyY() const =0
virtual bool isSuitableForPrinting() const =0
virtual bool supportsPerceptual() const =0
virtual bool supportsSaturation() const =0
virtual QString colorModelID() const
virtual bool hasTRC() const =0
virtual void delinearizeFloatValueFast(QVector< qreal > &Value) const =0
virtual QVector< KoColorimetryUtils::XYZ > getColorantsXYZ() const =0