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 isSuitableForPrinting() const = 0;
58 virtual bool isSuitableForDisplay() const = 0;
59 virtual bool hasColorants() const = 0;
60 virtual QVector <double> getColorantsXYZ() const = 0;
61 virtual QVector <double> getColorantsxyY() const = 0;
62 virtual QVector <double> getWhitePointXYZ() const = 0;
63 virtual QVector <double> getWhitePointxyY() const = 0;
64 virtual QVector <double> getEstimatedTRC() const = 0;
65 virtual bool compareTRC(TransferCharacteristics characteristics, float error) const = 0;
66 virtual QByteArray getProfileUniqueId() const = 0;
67 };
68public:
69
70 explicit IccColorProfile(const QString &fileName = QString());
71 explicit IccColorProfile(const QByteArray &rawData);
72 explicit IccColorProfile(const QVector<double> &colorants,
73 const ColorPrimaries colorPrimariesType = PRIMARIES_UNSPECIFIED,
74 const TransferCharacteristics transferFunction = TRC_LINEAR);
76 ~IccColorProfile() override;
77
78 KoColorProfile *clone() const override;
79
80 bool load() override;
81 virtual bool save();
82
86 QByteArray rawData() const override;
87 bool valid() const override;
88 float version() const override;
89 QString colorModelID() const override;
90 bool isSuitableForOutput() const override;
91 bool isSuitableForPrinting() const override;
92 bool isSuitableForDisplay() const override;
93 bool supportsPerceptual() const override;
94 bool supportsSaturation() const override;
95 bool supportsAbsolute() const override;
96 bool supportsRelative() const override;
97 bool hasColorants() const override;
98 bool hasTRC() const override;
99 bool isLinear() const override;
100 QVector <qreal> getColorantsXYZ() const override;
101 QVector <qreal> getColorantsxyY() const override;
102 QVector <qreal> getWhitePointXYZ() const override;
103 QVector <qreal> getWhitePointxyY() const override;
104 QVector <qreal> getEstimatedTRC() const override;
105 bool compareTRC(TransferCharacteristics characteristics, float error) const override;
106 void linearizeFloatValue(QVector <qreal> & Value) const override;
107 void delinearizeFloatValue(QVector <qreal> & Value) const override;
108 void linearizeFloatValueFast(QVector <qreal> & Value) const override;
109 void delinearizeFloatValueFast(QVector <qreal> & Value) const override;
110 QByteArray uniqueId() const override;
111 bool operator==(const KoColorProfile &) const override;
112 QString type() const override
113 {
114 return "icc";
115 }
116
125
126protected:
127 void setRawData(const QByteArray &rawData);
128public:
130protected:
131 bool init();
132private:
133 struct Private;
134 QScopedPointer<Private> d;
135};
136
137#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 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 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
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 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)