Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSurfaceColorSpaceWrapper.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #ifndef KISSURFACECOLORSPACEWRAPPER_H
7 #define KISSURFACECOLORSPACEWRAPPER_H
8
9#include <QtGlobal>
10#include <QMetaObject>
11#include <boost/operators.hpp>
12
13 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
14 #include <QSurfaceFormat>
15 #else
16 #include <QColorSpace>
17 #endif
18
19class KisSurfaceColorSpaceWrapper : public boost::equality_comparable<KisSurfaceColorSpaceWrapper>
20{
21public:
22
29 Q_ENUMS(ColorSpace)
30
35
37 : m_colorSpace(colorSpace)
38 {
39 }
40
42 return { sRGBColorSpace };
43 }
44
46 return { scRGBColorSpace };
47 }
48
52
53#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
54 static constexpr KisSurfaceColorSpaceWrapper fromQtColorSpace(QSurfaceFormat::ColorSpace colorSpace)
55 {
56 return { static_cast<ColorSpace>(colorSpace) };
57 }
58#else
59 static KisSurfaceColorSpaceWrapper fromQtColorSpace(const QColorSpace &colorSpace)
60 {
61 if (colorSpace == QColorSpace()) {
62 return { DefaultColorSpace };
63 } else if (colorSpace == QColorSpace::SRgb) {
64 return { sRGBColorSpace };
65 } else if (colorSpace == QColorSpace::SRgbLinear) {
66 return { scRGBColorSpace };
67 } else if (colorSpace == QColorSpace::Bt2100Pq) {
68 return { bt2020PQColorSpace };
69 } else {
70 qWarning() << "WARNING: KisSurfaceColorSpaceWrapper: unsupported surface color space" << colorSpace;
71 return { DefaultColorSpace };
72 }
73 }
74#endif
75
80
81 constexpr bool operator==(const KisSurfaceColorSpaceWrapper &rhs) const {
82 return m_colorSpace == rhs.m_colorSpace;
83 }
84
85#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
92 return lhs == rhs.m_colorSpace;
93 }
94
96 return lhs.m_colorSpace == rhs;
97 }
98
100 return !(lhs == rhs);
101 }
102
104 return !(lhs == rhs);
105 }
106
107 constexpr operator QSurfaceFormat::ColorSpace() const {
108 return static_cast<QSurfaceFormat::ColorSpace>(m_colorSpace);
109 }
110#else
111 operator QColorSpace() const {
112 switch (m_colorSpace) {
114 return QColorSpace();
115 case sRGBColorSpace:
116 return QColorSpace::SRgb;
117 case scRGBColorSpace:
118 return QColorSpace::SRgbLinear;
120 return QColorSpace::Bt2100Pq;
121 }
122
123 Q_UNREACHABLE_RETURN(QColorSpace());
124 }
125#endif
126
127private:
129};
130
131 #endif /* KISSURFACECOLORSPACEWRAPPER_H */
bool operator!=(const KoID &v1, const KoID &v2)
Definition KoID.h:103
KisSurfaceColorSpaceWrapper & operator=(const KisSurfaceColorSpaceWrapper &rhs)=default
constexpr KisSurfaceColorSpaceWrapper(ColorSpace colorSpace)
constexpr bool operator==(const KisSurfaceColorSpaceWrapper &rhs) const
static constexpr KisSurfaceColorSpaceWrapper makeSCRGBColorSpace()
static constexpr KisSurfaceColorSpaceWrapper makeSRGBColorSpace()
KisSurfaceColorSpaceWrapper(const KisSurfaceColorSpaceWrapper &rhs)=default
KisSurfaceColorSpaceWrapper & operator=(KisSurfaceColorSpaceWrapper &&rhs)=default
KisSurfaceColorSpaceWrapper(KisSurfaceColorSpaceWrapper &&rhs)=default
static KisSurfaceColorSpaceWrapper fromQtColorSpace(const QColorSpace &colorSpace)
static constexpr KisSurfaceColorSpaceWrapper makeBt2020PQColorSpace()