Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | Friends
omni::proj::ChannelCorrection Class Reference

Brightness, contrast and gamma correction for a single color channel. More...

#include <ChannelCorrection.h>

Public Member Functions

double gamma () const
 Return gamma value. More...
 
double gamma (double v) const
 Calculate gamma for given value. More...
 
void setGamma (double)
 Set new gamma value, value is clamped between -1 and 1. More...
 
double brightness () const
 Return brightness value. More...
 
double brightness (double v) const
 Calculate brightness for given value. More...
 
void setBrightness (double)
 Set new brightness value, value is clamped between -1 and 1. More...
 
double contrast () const
 Return contrast value. More...
 
double contrast (double v) const
 Calculate contrast for given value. More...
 
void setContrast (double)
 Set new contrast value, value is clamped between -1 and 1. More...
 
double multiplier () const
 Value contrast, brightness and gamma are multiplied. More...
 
void setMultiplier (double _multiplier)
 Set new multiplier value. More...
 
double corrected (double _value) const
 Return corrected value, value is NOT clamped. More...
 

Private Attributes

double gamma_ = 0.0
 
double brightness_ = 0.0
 Brightness between -1 and 1. More...
 
double contrast_ = 0.0
 Contrast between -1 and 1. More...
 
double multiplier_ = 0.5
 Multiplier between 0.0 and 1.0. More...
 

Friends

bool operator== (ChannelCorrection const &, ChannelCorrection const &)
 Test for equality. More...
 

Detailed Description

Brightness, contrast and gamma correction for a single color channel.

Member Function Documentation

double ChannelCorrection::brightness ( ) const

Return brightness value.

35  {
36  return brightness_;
37  }
double brightness_
Brightness between -1 and 1.
Definition: ChannelCorrection.h:74
double ChannelCorrection::brightness ( double  v) const

Calculate brightness for given value.

46  {
47  return std::max(v + brightness() * multiplier(),0.0);
48  }
double brightness() const
Return brightness value.
Definition: ChannelCorrection.cpp:35
double multiplier() const
Value contrast, brightness and gamma are multiplied.
Definition: ChannelCorrection.cpp:72
double ChannelCorrection::contrast ( ) const

Return contrast value.

64  {
65  return contrast_;
66  }
double contrast_
Contrast between -1 and 1.
Definition: ChannelCorrection.h:77
double ChannelCorrection::contrast ( double  v) const

Calculate contrast for given value.

39  {
40  double _c = (contrast() <= 0.0) ?
41  contrast()*multiplier() + 1.0 :
42  (1.0 / (1.0 - contrast()*multiplier()));
43  return ((v - 0.5) * std::max(_c, 0.0)) + 0.5;
44  }
double multiplier() const
Value contrast, brightness and gamma are multiplied.
Definition: ChannelCorrection.cpp:72
double contrast() const
Return contrast value.
Definition: ChannelCorrection.cpp:64
double ChannelCorrection::corrected ( double  _value) const

Return corrected value, value is NOT clamped.

80  {
81  return brightness(contrast(gamma(_value)));
82  }
double gamma() const
Return gamma value.
Definition: ChannelCorrection.cpp:27
double brightness() const
Return brightness value.
Definition: ChannelCorrection.cpp:35
double contrast() const
Return contrast value.
Definition: ChannelCorrection.cpp:64
double ChannelCorrection::gamma ( ) const

Return gamma value.

27  {
28  return gamma_;
29  }
double gamma_
Definition: ChannelCorrection.h:71
double ChannelCorrection::gamma ( double  v) const

Calculate gamma for given value.

50  {
51  double g = 0.0;
52  if (gamma() >= 0.0) {
53  g = 1.0 / (1.0 + gamma() * multiplier());
54  } else {
55  g = (1.0 - gamma() * multiplier());
56  }
57  return std::pow(v,g*g*g*g);
58  }
double gamma() const
Return gamma value.
Definition: ChannelCorrection.cpp:27
double multiplier() const
Value contrast, brightness and gamma are multiplied.
Definition: ChannelCorrection.cpp:72
double ChannelCorrection::multiplier ( ) const

Value contrast, brightness and gamma are multiplied.

72  {
73  return multiplier_;
74  }
double multiplier_
Multiplier between 0.0 and 1.0.
Definition: ChannelCorrection.h:80
void ChannelCorrection::setBrightness ( double  _brightness)

Set new brightness value, value is clamped between -1 and 1.

60  {
61  brightness_ = qBound(-1.0, _brightness, 1.0);
62  }
double brightness_
Brightness between -1 and 1.
Definition: ChannelCorrection.h:74
void ChannelCorrection::setContrast ( double  _contrast)

Set new contrast value, value is clamped between -1 and 1.

68  {
69  contrast_ = qBound(-1.0, _contrast, 1.0);
70  }
double contrast_
Contrast between -1 and 1.
Definition: ChannelCorrection.h:77
void ChannelCorrection::setGamma ( double  _gamma)

Set new gamma value, value is clamped between -1 and 1.

31  {
32  gamma_ = qBound(-1.0, _gamma, 1.0);
33  }
double gamma_
Definition: ChannelCorrection.h:71
void ChannelCorrection::setMultiplier ( double  _multiplier)

Set new multiplier value.

76  {
77  multiplier_ = qBound(0.0, _multiplier, 1.0);
78  }
double multiplier_
Multiplier between 0.0 and 1.0.
Definition: ChannelCorrection.h:80

Friends And Related Function Documentation

bool operator== ( ChannelCorrection const &  _lhs,
ChannelCorrection const &  _rhs 
)
friend

Test for equality.

85  {
86  return
91  }
double gamma_
Definition: ChannelCorrection.h:71
double multiplier_
Multiplier between 0.0 and 1.0.
Definition: ChannelCorrection.h:80
double brightness_
Brightness between -1 and 1.
Definition: ChannelCorrection.h:74
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
double contrast_
Contrast between -1 and 1.
Definition: ChannelCorrection.h:77

Field Documentation

double omni::proj::ChannelCorrection::brightness_ = 0.0
private

Brightness between -1 and 1.

double omni::proj::ChannelCorrection::contrast_ = 0.0
private

Contrast between -1 and 1.

double omni::proj::ChannelCorrection::gamma_ = 0.0
private
double omni::proj::ChannelCorrection::multiplier_ = 0.5
private

Multiplier between 0.0 and 1.0.


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