Some comments.
[libdcp.git] / src / chromaticity.h
1 /*
2     Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 */
19
20 /** @file  src/chromaticity.h
21  *  @brief Chromaticity class.
22  */
23
24 #ifndef DCP_CHROMATICITY_H
25 #define DCP_CHROMATICITY_H
26
27 #include <cmath>
28
29 namespace dcp {
30
31 /** @class Chromaticity
32  *  @brief A representation of a x,y,z chromaticity, where z = 1 - x - y
33  */
34 class Chromaticity
35 {
36 public:
37         Chromaticity ()
38                 : x (0)
39                 , y (0)
40         {}
41
42         Chromaticity (double x_, double y_)
43                 : x (x_)
44                 , y (y_)
45         {}
46
47         double x;
48         double y;
49
50         double z () const {
51                 return 1 - x - y;
52         }
53
54         /** @return true if this Chromaticity's x and y are within epsilon of other */
55         bool about_equal (Chromaticity const & other, float epsilon) const {
56                 return std::fabs (x - other.x) < epsilon && std::fabs (y - other.y) < epsilon;
57         }
58 };
59
60 }
61
62 #endif