Lumitronix_Iflex_Pro_Workshop
Library to interact with the iFlexPro
NeoGamma.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2 NeoGamma class is used to correct RGB colors for human eye gamma levels equally
3 across all color channels
4 
5 Written by Michael C. Miller.
6 
7 I invest time and resources providing this open source code,
8 please support me by dontating (see https://github.com/Makuna)
9 
10 -------------------------------------------------------------------------
11 This file is part of the LUMITRONIX_iFlex_Workshop library.
12 
13 LumitronixIFlexBus is free software: you can redistribute it and/or modify
14 it under the terms of the GNU Lesser General Public License as
15 published by the Free Software Foundation, either version 3 of
16 the License, or (at your option) any later version.
17 
18 LumitronixIFlexBus is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU Lesser General Public License for more details.
22 
23 You should have received a copy of the GNU Lesser General Public
24 License along with LumitronixIFlex. If not, see
25 <http://www.gnu.org/licenses/>.
26 -------------------------------------------------------------------------*/
27 #pragma once
28 
29 // use one of the gamma method classes as a converter for this template class
30 // T_METHOD -
31 // NeoGammaEquationMethod
32 // NeoGammaCieLabEquationMethod
33 // NeoGammaTableMethod
34 // NeoGammaNullMethod
35 // NeoGammaInvert<one of the above>
36 //
37 template<typename T_METHOD> class NeoGamma
38 {
39 public:
40  static RgbColor Correct(const RgbColor& original)
41  {
42  return RgbColor(T_METHOD::Correct(original.R),
43  T_METHOD::Correct(original.G),
44  T_METHOD::Correct(original.B));
45  }
46 
47  static RgbwColor Correct(const RgbwColor& original)
48  {
49  return RgbwColor(T_METHOD::Correct(original.R),
50  T_METHOD::Correct(original.G),
51  T_METHOD::Correct(original.B),
52  T_METHOD::Correct(original.W) );
53  }
54 
55  static Rgb48Color Correct(const Rgb48Color& original)
56  {
57  return Rgb48Color(T_METHOD::Correct(original.R),
58  T_METHOD::Correct(original.G),
59  T_METHOD::Correct(original.B));
60  }
61 
62  static Rgbw64Color Correct(const Rgbw64Color& original)
63  {
64  return Rgbw64Color(T_METHOD::Correct(original.R),
65  T_METHOD::Correct(original.G),
66  T_METHOD::Correct(original.B),
67  T_METHOD::Correct(original.W));
68  }
69 };
70 
71 
72 
Definition: NeoGamma.h:38
static RgbColor Correct(const RgbColor &original)
Definition: NeoGamma.h:40
static RgbwColor Correct(const RgbwColor &original)
Definition: NeoGamma.h:47
static Rgbw64Color Correct(const Rgbw64Color &original)
Definition: NeoGamma.h:62
static Rgb48Color Correct(const Rgb48Color &original)
Definition: NeoGamma.h:55
Definition: Rgb48Color.h:36
uint16_t B
Definition: Rgb48Color.h:288
uint16_t G
Definition: Rgb48Color.h:287
uint16_t R
Definition: Rgb48Color.h:286
Definition: RgbColor.h:36
uint8_t G
Definition: RgbColor.h:247
uint8_t B
Definition: RgbColor.h:248
uint8_t R
Definition: RgbColor.h:246
Definition: Rgbw64Color.h:38
uint16_t B
Definition: Rgbw64Color.h:321
uint16_t G
Definition: Rgbw64Color.h:320
uint16_t W
Definition: Rgbw64Color.h:322
uint16_t R
Definition: Rgbw64Color.h:319
Definition: RgbwColor.h:38
uint8_t R
Definition: RgbwColor.h:271
uint8_t W
Definition: RgbwColor.h:274
uint8_t B
Definition: RgbwColor.h:273
uint8_t G
Definition: RgbwColor.h:272