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
15
20{
21public:
22
24
29 class Data
30 {
31 public:
32 Data();
33 explicit Data(const QByteArray &rawData);
34 ~Data();
35 QByteArray rawData();
36 void setRawData(const QByteArray &);
37 private:
38 struct Private;
39 QScopedPointer<Private> const d;
40 };
46 {
47 public:
48 Container();
49 virtual ~Container();
50 public:
51 virtual QString name() const = 0;
52 virtual QString info() const = 0;
53 virtual QString manufacturer() const = 0;
54 virtual QString copyright() const = 0;
55 virtual bool valid() const = 0;
56 virtual bool isSuitableForOutput() const = 0;
57 virtual bool isSuitableForInput() const = 0;
58 virtual bool isSuitableForWorkspace() const = 0;
59 virtual bool isSuitableForPrinting() const = 0;
60 virtual bool isSuitableForDisplay() const = 0;
61 virtual bool hasColorants() const = 0;
62 virtual QVector <double> getColorantsXYZ() const = 0;
63 virtual QVector <double> getColorantsxyY() const = 0;
64 virtual QVector <double> getWhitePointXYZ() const = 0;
65 virtual QVector <double> getWhitePointxyY() const = 0;
66 virtual QVector <double> getEstimatedTRC() const = 0;
67 virtual bool compareTRC(TransferCharacteristics characteristics, float error) const = 0;
68 virtual QByteArray getProfileUniqueId() const = 0;
69 };
70public:
71
72 explicit IccColorProfile(const QString &fileName = QString());
73 explicit IccColorProfile(const QByteArray &rawData);
74 explicit IccColorProfile(const QVector<double> &colorants,
75 const ColorPrimaries colorPrimariesType = PRIMARIES_UNSPECIFIED,
76 const TransferCharacteristics transferFunction = TRC_LINEAR);
78 ~IccColorProfile() override;
79
80 KoColorProfile *clone() const override;
81
82 bool load() override;
83 virtual bool save();
84
88 QByteArray rawData() const override;
89 bool valid() const override;
90 float version() const override;
91 QString colorModelID() const override;
92 bool isSuitableForOutput() const override;
93 bool isSuitableForInput() const override;
94 bool isSuitableForWorkspace() const override;
95 bool isSuitableForPrinting() const override;
96 bool isSuitableForDisplay() const override;
97 bool supportsPerceptual() const override;
98 bool supportsSaturation() const override;
99 bool supportsAbsolute() const override;
100 bool supportsRelative() const override;
101 bool hasColorants() const override;
102 bool hasTRC() const override;
103 bool isLinear() const override;
104 QVector <qreal> getColorantsXYZ() const override;
105 QVector <qreal> getColorantsxyY() const override;
106 QVector <qreal> getWhitePointXYZ() const override;
107 QVector <qreal> getWhitePointxyY() const override;
108 QVector <qreal> getEstimatedTRC() const override;
109 bool compareTRC(TransferCharacteristics characteristics, float error) const override;
110 void linearizeFloatValue(QVector <qreal> & Value) const override;
111 void delinearizeFloatValue(QVector <qreal> & Value) const override;
112 void linearizeFloatValueFast(QVector <qreal> & Value) const override;
113 void delinearizeFloatValueFast(QVector <qreal> & Value) const override;
114 QByteArray uniqueId() const override;
115 bool operator==(const KoColorProfile &) const override;
116 QString type() const override
117 {
118 return "icc";
119 }
120
129
130protected:
131 void setRawData(const QByteArray &rawData);
132public:
134protected:
135 bool init();
136private:
137 struct Private;
138 QScopedPointer<Private> d;
139};
140
141#endif
ColorPrimaries
The colorPrimaries enum Enum of colorants, follows ITU H.273 for values 0 to 255, and has extra known...
@ PRIMARIES_UNSPECIFIED
TransferCharacteristics
The transferCharacteristics enum Enum of transfer characteristics, follows ITU H.273 for values 0 to ...
virtual bool isSuitableForInput() const =0
virtual QByteArray getProfileUniqueId() const =0
virtual QVector< double > getWhitePointxyY() const =0
virtual bool isSuitableForPrinting() const =0
virtual bool hasColorants() const =0
virtual QVector< double > getColorantsxyY() const =0
virtual bool isSuitableForWorkspace() const =0
virtual QVector< double > getColorantsXYZ() const =0
virtual bool compareTRC(TransferCharacteristics characteristics, float error) const =0
virtual QString info() const =0
virtual bool isSuitableForOutput() const =0
virtual QVector< double > getEstimatedTRC() const =0
virtual QString copyright() const =0
virtual QVector< double > getWhitePointXYZ() const =0
virtual QString name() const =0
virtual bool isSuitableForDisplay() const =0
virtual bool valid() const =0
virtual QString manufacturer() const =0
QScopedPointer< Private > const d
void setRawData(const QByteArray &)
bool isSuitableForDisplay() const override
bool isSuitableForInput() const override
virtual bool save()
void linearizeFloatValueFast(QVector< qreal > &Value) const override
QVector< qreal > getColorantsxyY() const override
void setRawData(const QByteArray &rawData)
bool operator==(const KoColorProfile &) const override
~IccColorProfile() override
LcmsColorProfileContainer * asLcms() const
QVector< qreal > getColorantsXYZ() const override
bool supportsRelative() const override
bool hasColorants() const override
bool isSuitableForWorkspace() const override
bool supportsPerceptual() const override
bool isSuitableForPrinting() const override
QVector< qreal > getWhitePointXYZ() const override
bool isLinear() const override
void delinearizeFloatValue(QVector< qreal > &Value) const override
QString colorModelID() const override
QByteArray rawData() const override
void linearizeFloatValue(QVector< qreal > &Value) const override
const QVector< KoChannelInfo::DoubleRange > & getFloatUIMinMax(void) const
bool isSuitableForOutput() const override
bool load() override
bool supportsSaturation() const override
bool valid() const override
bool hasTRC() const override
IccColorProfile(const QString &fileName=QString())
float version() const override
QByteArray uniqueId() const override
void delinearizeFloatValueFast(QVector< qreal > &Value) const override
KoColorProfile * clone() const override
QScopedPointer< Private > d
QVector< qreal > getWhitePointxyY() const override
QString type() const override
bool compareTRC(TransferCharacteristics characteristics, float error) const override
bool supportsAbsolute() const override
QVector< qreal > getEstimatedTRC() const override
TransferCharacteristics characteristics
virtual bool save(const QString &fileName)