Templates -- Meow  1.1.4
A C++ template which is unable and also not allowed to compile to obj-file first.
YUV.h
Go to the documentation of this file.
1 #ifndef YUV_H_
2 #define YUV_H_
3 
4 #include "RGB.h"
5 
6 namespace meow{
7  template<class T> class YUV{
8  protected:
9  T yuv_[3];
10  YUV();
11  YUV(T const& y, T const& u, T const& v);
12  YUV(T const* yuv);
13  public:
14  virtual ~YUV() { }
16  virtual T yMax() const = 0;
17  virtual T yMin() const = 0;
18  virtual T uMax() const = 0;
19  virtual T uMin() const = 0;
20  virtual T vMax() const = 0;
21  virtual T vMin() const = 0;
23  T y() const;
24  T u() const;
25  T v() const;
26  T yuv(size_t i) const;
27  T vuy(size_t i) const;
29  T y(T const& val);
30  T u(T const& val);
31  T v(T const& val);
32  T yuv(size_t i, T const& val);
33  T vuy(size_t i, T const& val);
34  };
35 
36  class YUVf: public YUV<double>{
37  public:
38  YUVf();
39  ~YUVf();
40  YUVf(double const& y, double const& u, double const& v);
41  YUVf(double const* yuv);
42  double yMin() const;
43  double yMax() const;
44  double uMin() const;
45  double uMax() const;
46  double vMin() const;
47  double vMax() const;
48  };
49 
50  template<class RGB_T, class YUV_T> inline void RGB_to_YUV(
51  RGB<RGB_T> const& rgb,
52  YUV<YUV_T> * yuv);
53  template<class YUV_T, class RGB_T> inline void YUV_to_RGB(
54  YUV<YUV_T> const& yuv,
55  RGB<RGB_T> * rgb);
56 }
57 
58 #include "YUV.hpp"
59 
60 #endif // YUV_H_
double uMin() const
Definition: YUV.hpp:41
virtual ~YUV()
Definition: YUV.h:14
double vMax() const
Definition: YUV.hpp:44
virtual T yMin() const =0
Definition: RGB.h:5
virtual T vMax() const =0
T yuv_[3]
Definition: YUV.h:9
Definition: YUV.h:36
T v() const
Definition: YUV.hpp:18
Definition: YUV.h:7
void RGB_to_YUV(RGB< RGB_T > const &rgb, YUV< YUV_T > *yuv)
Definition: YUV.hpp:47
T y() const
Definition: YUV.hpp:16
double yMin() const
Definition: YUV.hpp:39
virtual T yMax() const =0
double vMin() const
Definition: YUV.hpp:43
YUVf()
Definition: YUV.hpp:35
void YUV_to_RGB(YUV< YUV_T > const &yuv, RGB< RGB_T > *rgb)
Definition: YUV.hpp:60
double uMax() const
Definition: YUV.hpp:42
double yMax() const
Definition: YUV.hpp:40
virtual T vMin() const =0
T u() const
Definition: YUV.hpp:17
T yuv(size_t i) const
Definition: YUV.hpp:19
T vuy(size_t i) const
Definition: YUV.hpp:22
~YUVf()
Definition: YUV.hpp:36
YUV()
Definition: YUV.hpp:6
virtual T uMax() const =0
virtual T uMin() const =0