libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
colorspace.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <array>
13
15
25 public:
36
39
41 typedef std::array<CIEPoint, 4> Params;
42
55
56 //static const ColorSpace &lookupColorSpace(ID type);
57
59 ColorSpace(ID id = Invalid) : d(lookup(id)) { }
60
62 const ID id() const { return d->id; }
64 ColorSpace inverseColorSpace() { return d->invID; }
66 const String name() const { return d->name; }
68 const String desc() const { return d->desc; }
70 const CIEPoint &red() const { return d->params[0]; }
72 const CIEPoint &green() const { return d->params[1]; }
74 const CIEPoint &blue() const { return d->params[2]; }
76 const CIEPoint &whitePoint() const { return d->params[3]; }
82 double transferFunc(double input) const { return d->transferFunc(input); }
83
89 double invtTransferFunc(double input) const { return d->invTransferFunc(input); }
90
91 private:
92 const Data *d = nullptr;
93 static const Data *lookup(ID val);
94};
95
97
A point in the CIE 1931 xy chromaticity diagram.
Definition ciepoint.h:26
Represents a color space with chromaticity coordinates and transfer functions.
Definition colorspace.h:24
double(* TransformFunc)(double)
Function pointer type for electro-optical transfer functions.
Definition colorspace.h:38
const String desc() const
Returns the color space description.
Definition colorspace.h:68
double invtTransferFunc(double input) const
Applies the inverse transfer function (EOTF) to the given value.
Definition colorspace.h:89
const ID id() const
Returns the color space ID.
Definition colorspace.h:62
const String name() const
Returns the color space name.
Definition colorspace.h:66
std::array< CIEPoint, 4 > Params
CIE chromaticity coordinates: red, green, blue primaries and white point.
Definition colorspace.h:41
ColorSpace inverseColorSpace()
Returns the inverse color space.
Definition colorspace.h:64
const CIEPoint & red() const
Returns the red chromaticity coordinate.
Definition colorspace.h:70
ColorSpace(ID id=Invalid)
Constructs a ColorSpace from the given ID, defaulting to Invalid.
Definition colorspace.h:59
double transferFunc(double input) const
Applies the forward transfer function (OETF) to the given value.
Definition colorspace.h:82
const CIEPoint & blue() const
Returns the blue chromaticity coordinate.
Definition colorspace.h:74
const CIEPoint & whitePoint() const
Returns the white point chromaticity coordinate.
Definition colorspace.h:76
const CIEPoint & green() const
Returns the green chromaticity coordinate.
Definition colorspace.h:72
ID
Identifies a known color space.
Definition colorspace.h:27
@ Rec709
ITU-R BT.709 (gamma-corrected).
Definition colorspace.h:29
@ LinearRec601_NTSC
ITU-R BT.601 NTSC (linear).
Definition colorspace.h:34
@ Rec601_NTSC
ITU-R BT.601 NTSC (gamma-corrected).
Definition colorspace.h:33
@ Invalid
Invalid or unset color space.
Definition colorspace.h:28
@ LinearRec709
ITU-R BT.709 (linear / scene-referred).
Definition colorspace.h:30
@ Rec601_PAL
ITU-R BT.601 PAL (gamma-corrected).
Definition colorspace.h:31
@ LinearRec601_PAL
ITU-R BT.601 PAL (linear).
Definition colorspace.h:32
Dynamic array container wrapping std::vector.
Definition list.h:40
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
Static data describing a color space.
Definition colorspace.h:46
TransformFunc transferFunc
Forward (OETF) transfer function.
Definition colorspace.h:52
Params params
Red, green, blue, and white point chromaticities.
Definition colorspace.h:51
String desc
Longer description.
Definition colorspace.h:49
TransformFunc invTransferFunc
Inverse (EOTF) transfer function.
Definition colorspace.h:53
String name
Human-readable name.
Definition colorspace.h:48
ID id
Color space identifier.
Definition colorspace.h:47
ID invID
ID of the inverse (linear/gamma) counterpart.
Definition colorspace.h:50