Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSurfaceColorimetry::WaylandSurfaceDescription Struct Reference

#include <KisWaylandSurfaceColorimetry.h>

+ Inheritance diagram for KisSurfaceColorimetry::WaylandSurfaceDescription:

Public Types

using primaries = QtWayland::wp_color_manager_v1::primaries
 
using transfer_function = QtWayland::wp_color_manager_v1::transfer_function
 

Public Member Functions

bool operator== (const WaylandSurfaceDescription &other) const
 
SurfaceDescription toSurfaceDescription () const
 

Static Public Member Functions

static WaylandSurfaceDescription fromSurfaceDescription (const SurfaceDescription &desc)
 

Public Attributes

std::optional< WaylandPrimariescontainer
 
bool iccFileIsPresent = false
 
std::optional< KisSurfaceColorimetry::Luminanceluminances
 
std::optional< KisSurfaceColorimetry::MasteringLuminancemasteringLuminance
 
std::optional< primariesnamedContainer
 
std::optional< WaylandPrimariestarget
 
std::optional< uint32_t > targetMaxCLL
 
std::optional< uint32_t > targetMaxFALL
 
std::optional< uint32_t > tfGamma
 
std::optional< transfer_functiontfNamed
 

Detailed Description

Definition at line 57 of file KisWaylandSurfaceColorimetry.h.

Member Typedef Documentation

◆ primaries

using KisSurfaceColorimetry::WaylandSurfaceDescription::primaries = QtWayland::wp_color_manager_v1::primaries

Definition at line 60 of file KisWaylandSurfaceColorimetry.h.

◆ transfer_function

using KisSurfaceColorimetry::WaylandSurfaceDescription::transfer_function = QtWayland::wp_color_manager_v1::transfer_function

Definition at line 59 of file KisWaylandSurfaceColorimetry.h.

Member Function Documentation

◆ fromSurfaceDescription()

WaylandSurfaceDescription KisSurfaceColorimetry::WaylandSurfaceDescription::fromSurfaceDescription ( const SurfaceDescription & desc)
static

Definition at line 173 of file KisWaylandSurfaceColorimetry.cpp.

174{
175 WaylandSurfaceDescription desc;
176
177 using namespace KisColorimetryUtils;
178 using namespace KisSurfaceColorimetry;
179
180 if (std::holds_alternative<NamedPrimaries>(rhs.colorSpace.primaries)) {
181 desc.namedContainer = primariesKritaToWayland(std::get<NamedPrimaries>(rhs.colorSpace.primaries));
182 } else {
183 desc.container = WaylandPrimaries::fromColorimetry(
184 std::get<Colorimetry>(rhs.colorSpace.primaries));
185 }
186
187 if (std::holds_alternative<NamedTransferFunction>(rhs.colorSpace.transferFunction)) {
188 desc.tfNamed = transferFunctionKritaToWayland(std::get<NamedTransferFunction>(rhs.colorSpace.transferFunction));
189 } else {
190 desc.tfGamma = std::get<uint32_t>(rhs.colorSpace.transferFunction);
191 }
192
193 if (rhs.colorSpace.luminance) {
194 desc.luminances = rhs.colorSpace.luminance;
195 }
196
197 if (rhs.masteringInfo) {
198 desc.target = WaylandPrimaries::fromColorimetry(rhs.masteringInfo->primaries);
199 desc.masteringLuminance = rhs.masteringInfo->luminance;
200
201 if (rhs.masteringInfo->maxCll) {
202 desc.targetMaxCLL = *rhs.masteringInfo->maxCll;
203 }
204
205 if (rhs.masteringInfo->maxFall) {
206 desc.targetMaxCLL = *rhs.masteringInfo->maxFall;
207 }
208 }
209
210 return desc;
211}
QtWayland::wp_color_manager_v1::primaries primariesKritaToWayland(KisSurfaceColorimetry::NamedPrimaries primaries)
QtWayland::wp_color_manager_v1::transfer_function transferFunctionKritaToWayland(KisSurfaceColorimetry::NamedTransferFunction transferFunction)
static WaylandPrimaries fromColorimetry(const Colorimetry &colorimetry)

References KisSurfaceColorimetry::SurfaceDescription::colorSpace, container, KisSurfaceColorimetry::WaylandPrimaries::fromColorimetry(), KisSurfaceColorimetry::ColorSpace::luminance, luminances, KisSurfaceColorimetry::SurfaceDescription::masteringInfo, masteringLuminance, namedContainer, KisSurfaceColorimetry::ColorSpace::primaries, KisSurfaceColorimetry::primariesKritaToWayland(), target, targetMaxCLL, tfGamma, tfNamed, KisSurfaceColorimetry::ColorSpace::transferFunction, and KisSurfaceColorimetry::transferFunctionKritaToWayland().

◆ operator==()

bool KisSurfaceColorimetry::WaylandSurfaceDescription::operator== ( const WaylandSurfaceDescription & other) const
inline

Definition at line 78 of file KisWaylandSurfaceColorimetry.h.

78 {
79 return tfGamma == other.tfGamma &&
80 tfNamed == other.tfNamed &&
81 container == other.container &&
82 namedContainer == other.namedContainer &&
83 target == other.target &&
84 luminances == other.luminances &&
85 masteringLuminance == other.masteringLuminance &&
86 targetMaxCLL == other.targetMaxCLL &&
87 targetMaxFALL == other.targetMaxFALL &&
88 iccFileIsPresent == other.iccFileIsPresent;
89
90 }
std::optional< KisSurfaceColorimetry::Luminance > luminances
std::optional< KisSurfaceColorimetry::MasteringLuminance > masteringLuminance

References container, iccFileIsPresent, luminances, masteringLuminance, namedContainer, target, targetMaxCLL, targetMaxFALL, tfGamma, and tfNamed.

◆ toSurfaceDescription()

SurfaceDescription KisSurfaceColorimetry::WaylandSurfaceDescription::toSurfaceDescription ( ) const

Definition at line 13 of file KisWaylandSurfaceColorimetry.cpp.

14{
16
17 // Map transfer function
18 if (this->tfNamed) {
19 switch (*this->tfNamed) {
20 case QtWayland::wp_color_manager_v1::transfer_function_bt1886:
22 break;
23 case QtWayland::wp_color_manager_v1::transfer_function_gamma22:
25 break;
26 case QtWayland::wp_color_manager_v1::transfer_function_gamma28:
28 break;
29 case QtWayland::wp_color_manager_v1::transfer_function_st240:
31 break;
32 case QtWayland::wp_color_manager_v1::transfer_function_ext_linear:
34 break;
35 case QtWayland::wp_color_manager_v1::transfer_function_log_100:
37 break;
38 case QtWayland::wp_color_manager_v1::transfer_function_log_316:
40 break;
41 case QtWayland::wp_color_manager_v1::transfer_function_xvycc:
43 break;
44 case QtWayland::wp_color_manager_v1::transfer_function_srgb:
46 break;
47 case QtWayland::wp_color_manager_v1::transfer_function_ext_srgb:
49 break;
50 case QtWayland::wp_color_manager_v1::transfer_function_st2084_pq:
52 break;
53 case QtWayland::wp_color_manager_v1::transfer_function_st428:
55 break;
56 case QtWayland::wp_color_manager_v1::transfer_function_hlg:
58 break;
59 }
60 } else if (this->tfGamma) {
61 description.colorSpace.transferFunction = *this->tfGamma;
62 }
63
64 // Map primaries
65 if (this->namedContainer) {
66 switch (*this->namedContainer) {
67 case QtWayland::wp_color_manager_v1::primaries_srgb:
69 break;
70 case QtWayland::wp_color_manager_v1::primaries_pal_m:
72 break;
73 case QtWayland::wp_color_manager_v1::primaries_pal:
75 break;
76 case QtWayland::wp_color_manager_v1::primaries_ntsc:
78 break;
79 case QtWayland::wp_color_manager_v1::primaries_generic_film:
81 break;
82 case QtWayland::wp_color_manager_v1::primaries_bt2020:
84 break;
85 case QtWayland::wp_color_manager_v1::primaries_cie1931_xyz:
87 break;
88 case QtWayland::wp_color_manager_v1::primaries_dci_p3:
90 break;
91 case QtWayland::wp_color_manager_v1::primaries_display_p3:
93 break;
94 case QtWayland::wp_color_manager_v1::primaries_adobe_rgb:
96 break;
97 }
98 } else if (this->container) {
99 description.colorSpace.primaries = this->container->toColorimetry();
100 }
101
102 // Map luminance
103 if (this->luminances) {
104 description.colorSpace.luminance = this->luminances;
105 }
106
107 // Map mastering info
108 if (this->target || this->masteringLuminance) {
110
111 if (this->target) {
112 masteringInfo.primaries = this->target->toColorimetry();
113 } else if (std::holds_alternative<KisSurfaceColorimetry::Colorimetry>(description.colorSpace.primaries)) {
114 masteringInfo.primaries = std::get<KisSurfaceColorimetry::Colorimetry>(description.colorSpace.primaries);
115 } else if (this->namedContainer) {
116 switch (*this->namedContainer) {
117 case QtWayland::wp_color_manager_v1::primaries_srgb:
119 break;
120 case QtWayland::wp_color_manager_v1::primaries_pal_m:
122 break;
123 case QtWayland::wp_color_manager_v1::primaries_pal:
125 break;
126 case QtWayland::wp_color_manager_v1::primaries_ntsc:
128 break;
129 case QtWayland::wp_color_manager_v1::primaries_generic_film:
131 break;
132 case QtWayland::wp_color_manager_v1::primaries_bt2020:
134 break;
135 case QtWayland::wp_color_manager_v1::primaries_cie1931_xyz:
137 break;
138 case QtWayland::wp_color_manager_v1::primaries_dci_p3:
140 break;
141 case QtWayland::wp_color_manager_v1::primaries_display_p3:
143 break;
144 case QtWayland::wp_color_manager_v1::primaries_adobe_rgb:
146 break;
147 }
148 }
149
150 if (this->masteringLuminance) {
151 masteringInfo.luminance = *this->masteringLuminance;
152 } else {
153 if (description.colorSpace.luminance) {
154 masteringInfo.luminance.fromLuminance(*description.colorSpace.luminance);
155 } else {
157 }
158 }
159
160 if (this->targetMaxCLL) {
161 masteringInfo.maxCll = *this->targetMaxCLL;
162 }
163 if (this->targetMaxFALL) {
164 masteringInfo.maxFall = *this->targetMaxFALL;
165 }
166
167 description.masteringInfo = masteringInfo;
168 }
169
170 return description;
171}
static const Colorimetry GenericFilm
static const Colorimetry AdobeRGB
static const Colorimetry DisplayP3
std::optional< Luminance > luminance
std::variant< NamedPrimaries, Colorimetry > primaries
std::variant< NamedTransferFunction, uint32_t > transferFunction
static MasteringLuminance fromLuminance(const Luminance &rhs)

References KisColorimetryUtils::Colorimetry::AdobeRGB, KisColorimetryUtils::Colorimetry::BT2020, KisColorimetryUtils::Colorimetry::BT709, KisColorimetryUtils::Colorimetry::CIEXYZ, KisSurfaceColorimetry::SurfaceDescription::colorSpace, container, KisColorimetryUtils::Colorimetry::DCIP3, KisColorimetryUtils::Colorimetry::DisplayP3, KisSurfaceColorimetry::MasteringLuminance::fromLuminance(), KisColorimetryUtils::Colorimetry::GenericFilm, KisSurfaceColorimetry::ColorSpace::luminance, KisSurfaceColorimetry::MasteringInfo::luminance, luminances, KisSurfaceColorimetry::SurfaceDescription::masteringInfo, masteringLuminance, KisSurfaceColorimetry::MasteringInfo::maxCll, KisSurfaceColorimetry::MasteringInfo::maxFall, namedContainer, KisColorimetryUtils::Colorimetry::NTSC, KisColorimetryUtils::Colorimetry::PAL, KisColorimetryUtils::Colorimetry::PAL_M, KisSurfaceColorimetry::ColorSpace::primaries, KisSurfaceColorimetry::MasteringInfo::primaries, KisSurfaceColorimetry::primaries_adobe_rgb, KisSurfaceColorimetry::primaries_bt2020, KisSurfaceColorimetry::primaries_dci_p3, KisSurfaceColorimetry::primaries_display_p3, KisSurfaceColorimetry::primaries_srgb, KisSurfaceColorimetry::primaries_unknown, target, targetMaxCLL, targetMaxFALL, tfGamma, tfNamed, KisSurfaceColorimetry::transfer_function_bt1886, KisSurfaceColorimetry::transfer_function_ext_linear, KisSurfaceColorimetry::transfer_function_ext_srgb, KisSurfaceColorimetry::transfer_function_gamma22, KisSurfaceColorimetry::transfer_function_gamma28, KisSurfaceColorimetry::transfer_function_srgb, KisSurfaceColorimetry::transfer_function_st2084_pq, KisSurfaceColorimetry::transfer_function_unknown, and KisSurfaceColorimetry::ColorSpace::transferFunction.

Member Data Documentation

◆ container

std::optional<WaylandPrimaries> KisSurfaceColorimetry::WaylandSurfaceDescription::container

Definition at line 65 of file KisWaylandSurfaceColorimetry.h.

◆ iccFileIsPresent

bool KisSurfaceColorimetry::WaylandSurfaceDescription::iccFileIsPresent = false

Definition at line 76 of file KisWaylandSurfaceColorimetry.h.

◆ luminances

std::optional<KisSurfaceColorimetry::Luminance> KisSurfaceColorimetry::WaylandSurfaceDescription::luminances

Definition at line 70 of file KisWaylandSurfaceColorimetry.h.

◆ masteringLuminance

std::optional<KisSurfaceColorimetry::MasteringLuminance> KisSurfaceColorimetry::WaylandSurfaceDescription::masteringLuminance

Definition at line 71 of file KisWaylandSurfaceColorimetry.h.

◆ namedContainer

std::optional<primaries> KisSurfaceColorimetry::WaylandSurfaceDescription::namedContainer

Definition at line 66 of file KisWaylandSurfaceColorimetry.h.

◆ target

std::optional<WaylandPrimaries> KisSurfaceColorimetry::WaylandSurfaceDescription::target

Definition at line 68 of file KisWaylandSurfaceColorimetry.h.

◆ targetMaxCLL

std::optional<uint32_t> KisSurfaceColorimetry::WaylandSurfaceDescription::targetMaxCLL

Definition at line 73 of file KisWaylandSurfaceColorimetry.h.

◆ targetMaxFALL

std::optional<uint32_t> KisSurfaceColorimetry::WaylandSurfaceDescription::targetMaxFALL

Definition at line 74 of file KisWaylandSurfaceColorimetry.h.

◆ tfGamma

std::optional<uint32_t> KisSurfaceColorimetry::WaylandSurfaceDescription::tfGamma

Definition at line 62 of file KisWaylandSurfaceColorimetry.h.

◆ tfNamed

std::optional<transfer_function> KisSurfaceColorimetry::WaylandSurfaceDescription::tfNamed

Definition at line 63 of file KisWaylandSurfaceColorimetry.h.


The documentation for this struct was generated from the following files: