Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDisplayConfig.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2024 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KISDISPLAYCONFIG_H
7#define KISDISPLAYCONFIG_H
8
9#include <kritaui_export.h>
10#include <boost/operators.hpp>
12
13class KoColorProfile;
14class KisConfig;
21class KRITAUI_EXPORT KisDisplayConfig : public boost::equality_comparable<KisDisplayConfig>
22{
23public:
24 using Options = std::pair<KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags>;
25
26public:
28 KisDisplayConfig(const KoColorProfile *_profile,
30 KoColorConversionTransformation::ConversionFlags _conversionFlags,
31 bool _isHDR = false);
32 bool operator==(const KisDisplayConfig &rhs) const;
33
34 Options options() const {
35 return std::make_pair(intent, conversionFlags);
36 }
37
38 void setOptions(const Options &options) {
39 std::tie(intent, conversionFlags) = options;
40 }
41
42 static Options optionsFromKisConfig(const KisConfig &cfg);
43
46 KoColorConversionTransformation::ConversionFlags conversionFlags;
47
48 // TODO (DK):
49 // 1) remove isHDR from KisDisplayConfig and keep it only in
50 // KisMultiSurfaceDisplayConfig
51 // 2) move KisDisplayConfig into pigment and use it as a structure
52 // for transformation options, e.g. rename into
53 // KoColorTransformationOptions
54 bool isHDR { false };
55};
56
57KRITAUI_EXPORT QDebug operator<<(QDebug debug, const KisDisplayConfig &value);
58
59class KRITAUI_EXPORT KisMultiSurfaceDisplayConfig : public boost::equality_comparable<KisMultiSurfaceDisplayConfig>
60{
61public:
63
64public:
65
67 bool operator==(const KisMultiSurfaceDisplayConfig &rhs) const;
68
70 return KisDisplayConfig(uiProfile, intent, conversionFlags, false);
71 }
72
74 return KisDisplayConfig(canvasProfile, intent, conversionFlags, isCanvasHDR);
75 }
76
77 Options options() const {
78 return std::make_pair(intent, conversionFlags);
79 }
80
81 void setOptions(const Options &options) {
82 std::tie(intent, conversionFlags) = options;
83 }
84
85 const KoColorProfile *uiProfile {nullptr};
86 const KoColorProfile *canvasProfile {nullptr};
88 KoColorConversionTransformation::ConversionFlags conversionFlags { KoColorConversionTransformation::internalConversionFlags() };
89 bool isCanvasHDR { false };
90};
91
92#endif // KISDISPLAYCONFIG_H
float value(const T *src, size_t ch)
KRITAUI_EXPORT QDebug operator<<(QDebug debug, const KisDisplayConfig &value)
bool operator==(const KisRegion &lhs, const KisRegion &rhs)
KisDisplayConfig This class keeps track of the color management configuration for image to display....
void setOptions(const Options &options)
Options options() const
std::pair< KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags > Options
KoColorConversionTransformation::ConversionFlags conversionFlags
const KoColorProfile * profile
KoColorConversionTransformation::Intent intent
KisDisplayConfig uiDisplayConfig() const
void setOptions(const Options &options)
KisDisplayConfig::Options Options
KisDisplayConfig canvasDisplayConfig() const