Krita Source Code Documentation
Loading...
Searching...
No Matches
IccColorProfile.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
3 * SPDX-FileCopyrightText: 2021 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6*/
7
8#ifndef _KO_ICC_COLOR_PROFILE_H_
9#define _KO_ICC_COLOR_PROFILE_H_
10
11#include "KoColorProfile.h"
12#include "KoChannelInfo.h"
13
14#include "kritalcmsengine_export.h"
15
18
22class KRITALCMSENGINE_EXPORT IccColorProfile : public KoColorProfile
23{
24public:
25
27
32 class Data
33 {
34 public:
35 Data();
36 explicit Data(const QByteArray &rawData);
37 ~Data();
38 QByteArray rawData();
39 void setRawData(const QByteArray &);
40 private:
41 struct Private;
42 QScopedPointer<Private> const d;
43 };
49 {
50 public:
51 Container();
52 virtual ~Container();
53 public:
54 virtual QString name() const = 0;
55 virtual QString info() const = 0;
56 virtual QString manufacturer() const = 0;
57 virtual QString copyright() const = 0;
58 virtual bool valid() const = 0;
59 virtual bool isSuitableForOutput() const = 0;
60 virtual bool isSuitableForInput() const = 0;
61 virtual bool isSuitableForWorkspace() const = 0;
62 virtual bool isSuitableForPrinting() const = 0;
63 virtual bool isSuitableForDisplay() const = 0;
64 virtual bool hasColorants() const = 0;
65 virtual QVector <KoColorimetryUtils::XYZ> getColorantsXYZ() const = 0;
66 virtual QVector <KoColorimetryUtils::xyY> getColorantsxyY() const = 0;
67 virtual std::optional<double> hdrReferenceWhite() const = 0;
70 virtual QVector <double> getEstimatedTRC() const = 0;
71 virtual bool compareTRC(TransferCharacteristics characteristics, float error) const = 0;
72 virtual QByteArray getProfileUniqueId() const = 0;
73 virtual bool hasCicpValues() const = 0;
74 virtual ColorPrimaries cicpPrimaries() const = 0;
76 };
77public:
78
79 explicit IccColorProfile(const QString &fileName = QString());
80 explicit IccColorProfile(const QByteArray &rawData);
81 explicit IccColorProfile(const KoColorProfileQuery &query);
83 ~IccColorProfile() override;
84
85 KoColorProfile *clone() const override;
86
87 bool load() override;
88 virtual bool save();
89
93 QByteArray rawData() const override;
94 bool valid() const override;
95 float version() const override;
96 QString colorModelID() const override;
97 bool isSuitableForOutput() const override;
98 bool isSuitableForInput() const override;
99 bool isSuitableForWorkspace() const override;
100 bool isSuitableForPrinting() const override;
101 bool isSuitableForDisplay() const override;
102 bool supportsPerceptual() const override;
103 bool supportsSaturation() const override;
104 bool supportsAbsolute() const override;
105 bool supportsRelative() const override;
106 bool hasColorants() const override;
107 bool hasTRC() const override;
108 bool isLinear() const override;
109 QVector <KoColorimetryUtils::XYZ> getColorantsXYZ() const override;
110 QVector <KoColorimetryUtils::xyY> getColorantsxyY() const override;
113 std::optional<double> hdrReferenceWhite() const override;
114 QVector <qreal> getEstimatedTRC() const override;
115 bool compareTRC(TransferCharacteristics characteristics, float error) const override;
116 void linearizeFloatValue(QVector <qreal> & Value) const override;
117 void delinearizeFloatValue(QVector <qreal> & Value) const override;
118 void linearizeFloatValueFast(QVector <qreal> & Value) const override;
119 void delinearizeFloatValueFast(QVector <qreal> & Value) const override;
120 QByteArray uniqueId() const override;
121 bool operator==(const KoColorProfile &) const override;
122 QString type() const override
123 {
124 return "icc";
125 }
126
134 const QVector<KoChannelInfo::DoubleRange> &getFloatUIMinMax(void) const;
135
136protected:
137 void setRawData(const QByteArray &rawData);
138public:
139 LcmsColorProfileContainer *asLcms() const;
140protected:
141 bool init();
142private:
143 struct Private;
144 QScopedPointer<Private> d;
145};
146
147#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 ...
virtual bool isSuitableForInput() const =0
virtual std::optional< double > hdrReferenceWhite() const =0
virtual QByteArray getProfileUniqueId() const =0
virtual TransferCharacteristics cicpTransfer() const =0
virtual bool isSuitableForPrinting() const =0
virtual bool hasColorants() const =0
virtual KoColorimetryUtils::xyY getWhitePointxyY() const =0
virtual bool isSuitableForWorkspace() const =0
virtual bool compareTRC(TransferCharacteristics characteristics, float error) const =0
virtual QString info() const =0
virtual KoColorimetryUtils::XYZ getWhitePointXYZ() const =0
virtual bool isSuitableForOutput() const =0
virtual QVector< double > getEstimatedTRC() const =0
virtual QString copyright() const =0
virtual QString name() const =0
virtual bool isSuitableForDisplay() const =0
virtual bool hasCicpValues() const =0
virtual ColorPrimaries cicpPrimaries() const =0
virtual QVector< KoColorimetryUtils::xyY > getColorantsxyY() const =0
virtual QVector< KoColorimetryUtils::XYZ > getColorantsXYZ() const =0
virtual bool valid() const =0
virtual QString manufacturer() const =0
QScopedPointer< Private > const d
QScopedPointer< Private > d
QString type() const override
The KoColorProfileQuery struct.
virtual bool isSuitableForOutput() const =0
virtual std::optional< double > hdrReferenceWhite() const =0
hdrReferenceWhite HDR reference white is only available for Perceptual Quantizer profiles that save t...
virtual bool isSuitableForWorkspace() const =0
virtual QByteArray rawData() const
virtual void linearizeFloatValue(QVector< qreal > &Value) const =0
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 bool save(const QString &fileName)
virtual QVector< qreal > getEstimatedTRC() const =0
virtual void delinearizeFloatValue(QVector< qreal > &Value) const =0
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
virtual bool supportsAbsolute() const =0
virtual bool load()
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