Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_display_color_converter.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_DISPLAY_COLOR_CONVERTER_H
8#define __KIS_DISPLAY_COLOR_CONVERTER_H
9
10#include <QScopedPointer>
11
14
15#include "kis_types.h"
17
18class KoColor;
19class KoColorProfile;
23class KoID;
24
37class KRITAUI_EXPORT KisDisplayColorConverter : public QObject
38{
39 Q_OBJECT
40
41public:
43 KisDisplayColorConverter(KoCanvasResourceProvider *resourceManager, QObject *parent);
45
46 void setImage(KisImageSP image);
47 void setImageColorSpace(const KoColorSpace *cs);
48
49 static KisDisplayColorConverter* dumbConverterInstance();
50
51 KoColorDisplayRendererInterface* displayRendererInterface() const;
52
53 const KoColorSpace* paintingColorSpace() const;
54 const KoColorSpace* nodeColorSpace() const;
55 void setMultiSurfaceDisplayConfig(const KisMultiSurfaceDisplayConfig &config);
56 void setDisplayFilter(QSharedPointer<KisDisplayFilter> displayFilter);
57
58 QColor toQColor(const KoColor &c, bool proofToPaintColors = false) const;
59 KoColor approximateFromRenderedQColor(const QColor &c) const;
60
61 bool canSkipDisplayConversion(const KoColorSpace *cs) const;
62 KoColor applyDisplayFiltering(const KoColor &srcColor, const KoID &bitDepthId) const;
63
69 void applyDisplayFilteringF32(KisFixedPaintDeviceSP device, const KoColorSpace *dstColorSpace) const;
70
71
78 QImage toQImage(KisPaintDeviceSP srcDevice, bool proofPaintColors = false) const;
79 QImage toQImage(const KoColorSpace *srcColorSpace, const quint8 *data, QSize size, bool proofPaintColors = false) const;
80
81 KoColor fromHsv(int h, int s, int v, int a = 255) const;
82 KoColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
83 KoColor fromHslF(qreal h, qreal s, qreal l, qreal a = 1.0);
84 KoColor fromHsiF(qreal h, qreal s, qreal i);
85 KoColor fromHsyF(qreal h, qreal s, qreal y, qreal R=0.2126, qreal G=0.7152, qreal B=0.0722, qreal gamma=2.2);
86
87 void getHsv(const KoColor &srcColor, int *h, int *s, int *v, int *a = 0) const;
88 void getHsvF(const KoColor &srcColor, qreal *h, qreal *s, qreal *v, qreal *a = 0);
89 void getHslF(const KoColor &srcColor, qreal *h, qreal *s, qreal *l, qreal *a = 0);
90 void getHsiF(const KoColor &srcColor, qreal *h, qreal *s, qreal *i);
91 void getHsyF(const KoColor &srcColor, qreal *h, qreal *s, qreal *y, qreal R=0.2126, qreal G=0.7152, qreal B=0.0722, qreal gamma=2.2);
92
93 KisDisplayConfig displayConfig() const;
94
95 QSharedPointer<KisDisplayFilter> displayFilter() const;
96 KisMultiSurfaceDisplayConfig multiSurfaceDisplayConfig() const;
97
98 using ConversionOptions = std::pair<KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags>;
99 ConversionOptions conversionOptions() const;
100
101
102Q_SIGNALS:
104
105private:
106 // is not possible to implement!
107 KoColor toKoColor(const QColor &c);
108 template <class Policy>
109 typename Policy::Result convertToDisplayImpl(const KoColor &srcColor, bool alreadyInDestinationF32 = false) const;
110
111private:
112 Q_PRIVATE_SLOT(m_d, void slotCanvasResourceChanged(int key, const QVariant &v));
113 Q_PRIVATE_SLOT(m_d, void selectPaintingColorSpace());
114 Q_PRIVATE_SLOT(m_d, void slotUpdateCurrentNodeColorSpace());
115
116private:
117 struct Private;
118 const QScopedPointer<Private> m_d;
119};
120
121#endif /* __KIS_DISPLAY_COLOR_CONVERTER_H */
Eigen::Matrix< double, 4, 2 > R
qreal v
std::pair< KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags > ConversionOptions
KoColor toKoColor(const QColor &c)
const QScopedPointer< Private > m_d
Q_PRIVATE_SLOT(m_d, void selectPaintingColorSpace())
Q_PRIVATE_SLOT(m_d, void slotCanvasResourceChanged(int key, const QVariant &v))
Q_PRIVATE_SLOT(m_d, void slotUpdateCurrentNodeColorSpace())
Policy::Result convertToDisplayImpl(const KoColor &srcColor, bool alreadyInDestinationF32=false) const
void setImage(KisImageSP image)
KisDisplayConfig This class keeps track of the color management configuration for image to display....
Definition KoID.h:30