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;
69 virtual QVector <double> getEstimatedTRC() const = 0;
70 virtual bool compareTRC(TransferCharacteristics characteristics, float error) const = 0;
71 virtual QByteArray getProfileUniqueId() const = 0;
72 virtual bool hasCicpValues() const = 0;
73 virtual ColorPrimaries cicpPrimaries() const = 0;
75 };
76public:
77
78 explicit IccColorProfile(const QString &fileName = QString());
79 explicit IccColorProfile(const QByteArray &rawData);
80 explicit IccColorProfile(const KoColorProfileQuery &query);
82 ~IccColorProfile() override;
83
84 KoColorProfile *clone() const override;
85
86 bool load() override;
87 virtual bool save();
88
92 QByteArray rawData() const override;
93 bool valid() const override;
94 float version() const override;
95 QString colorModelID() const override;
96 bool isSuitableForOutput() const override;
97 bool isSuitableForInput() const override;
98 bool isSuitableForWorkspace() const override;
99 bool isSuitableForPrinting() const override;
100 bool isSuitableForDisplay() const override;
101 bool supportsPerceptual() const override;
102 bool supportsSaturation() const override;
103 bool supportsAbsolute() const override;
104 bool supportsRelative() const override;
105 bool hasColorants() const override;
106 bool hasTRC() const override;
107 bool isLinear() const override;
108 QVector <KoColorimetryUtils::XYZ> getColorantsXYZ() const override;
109 QVector <KoColorimetryUtils::xyY> getColorantsxyY() const override;
112 QVector <qreal> getEstimatedTRC() const override;
113 bool compareTRC(TransferCharacteristics characteristics, float error) const override;
114 void linearizeFloatValue(QVector <qreal> & Value) const override;
115 void delinearizeFloatValue(QVector <qreal> & Value) const override;
116 void linearizeFloatValueFast(QVector <qreal> & Value) const override;
117 void delinearizeFloatValueFast(QVector <qreal> & Value) const override;
118 QByteArray uniqueId() const override;
119 bool operator==(const KoColorProfile &) const override;
120 QString type() const override
121 {
122 return "icc";
123 }
124
132 const QVector<KoChannelInfo::DoubleRange> &getFloatUIMinMax(void) const;
133
134protected:
135 void setRawData(const QByteArray &rawData);
136public:
137 LcmsColorProfileContainer *asLcms() const;
138protected:
139 bool init();
140private:
141 struct Private;
142 QScopedPointer<Private> d;
143};
144
145#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 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 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