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 "KisHandleStyle.h"
16#include "kis_types.h"
18
19class KoColor;
20class KoColorProfile;
24class KoID;
25class QPalette;
26
39class KRITAUI_EXPORT KisDisplayColorConverter : public QObject
40{
41 Q_OBJECT
42
43public:
45 KisDisplayColorConverter(KoCanvasResourceProvider *resourceManager, QObject *parent);
47
48 void setImage(KisImageSP image);
49 void setImageColorSpace(const KoColorSpace *cs);
50
51 static KisDisplayColorConverter* dumbConverterInstance();
52
53 KoColorDisplayRendererInterface* displayRendererInterface() const;
54
55 const KoColorSpace* paintingColorSpace() const;
56 const KoColorSpace* nodeColorSpace() const;
57 void setMultiSurfaceDisplayConfig(const KisMultiSurfaceDisplayConfig &config);
58 void setDisplayFilter(QSharedPointer<KisDisplayFilter> displayFilter);
59
60 QColor toQColor(const KoColor &c, bool proofToPaintColors = false) const;
61 KoColor approximateFromRenderedQColor(const QColor &c) const;
62
63 bool canSkipDisplayConversion(const KoColorSpace *cs) const;
64 KoColor applyDisplayFiltering(const KoColor &srcColor, const KoID &bitDepthId) const;
65
71 void applyDisplayFilteringF32(KisFixedPaintDeviceSP device, const KoColorSpace *dstColorSpace) const;
72
82 QColor convertColorToDisplayColorSpace(const KoColor color, bool applyOcio = false) const;
83
92 QImage convertImageToDisplayColorSpace(KisPaintDeviceSP srcDevice, QRect source = QRect(), bool applyOcio = false) const;
93
98 KisHandlePalette handlePaletteForDisplayColorSpace() const;
99
104 QPalette systemPaletteForDisplayColorSpace() const;
105
106
113 QImage toQImage(KisPaintDeviceSP srcDevice, bool proofPaintColors = false) const;
114 QImage toQImage(const KoColorSpace *srcColorSpace, const quint8 *data, QSize size, bool proofPaintColors = false) const;
115
116 KoColor fromHsv(int h, int s, int v, int a = 255) const;
117 KoColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
118 KoColor fromHslF(qreal h, qreal s, qreal l, qreal a = 1.0);
119 KoColor fromHsiF(qreal h, qreal s, qreal i);
120 KoColor fromHsyF(qreal h, qreal s, qreal y, qreal R=0.2126, qreal G=0.7152, qreal B=0.0722, qreal gamma=2.2);
121
122 void getHsv(const KoColor &srcColor, int *h, int *s, int *v, int *a = 0) const;
123 void getHsvF(const KoColor &srcColor, qreal *h, qreal *s, qreal *v, qreal *a = 0);
124 void getHslF(const KoColor &srcColor, qreal *h, qreal *s, qreal *l, qreal *a = 0);
125 void getHsiF(const KoColor &srcColor, qreal *h, qreal *s, qreal *i);
126 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);
127
128 KisDisplayConfig displayConfig() const;
129
130 QSharedPointer<KisDisplayFilter> displayFilter() const;
131 KisMultiSurfaceDisplayConfig multiSurfaceDisplayConfig() const;
132
133 using ConversionOptions = std::pair<KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags>;
134 ConversionOptions conversionOptions() const;
135
136
137Q_SIGNALS:
139
140private:
141 // is not possible to implement!
142 KoColor toKoColor(const QColor &c);
143 template <class Policy>
144 typename Policy::Result convertToDisplayImpl(const KoColor &srcColor, bool alreadyInDestinationF32 = false) const;
145
146private:
147 Q_PRIVATE_SLOT(m_d, void slotCanvasResourceChanged(int key, const QVariant &v));
148 Q_PRIVATE_SLOT(m_d, void selectPaintingColorSpace());
149 Q_PRIVATE_SLOT(m_d, void slotUpdateCurrentNodeColorSpace());
150 Q_SLOT void updatePalettes();
151
152private:
153 struct Private;
154 const QScopedPointer<Private> m_d;
155};
156
157#endif /* __KIS_DISPLAY_COLOR_CONVERTER_H */
Eigen::Matrix< double, 4, 2 > R
qreal v
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
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