diff options
Diffstat (limited to 'meowpp/colors/HSV.h')
-rw-r--r-- | meowpp/colors/HSV.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/meowpp/colors/HSV.h b/meowpp/colors/HSV.h new file mode 100644 index 0000000..d5e21a4 --- /dev/null +++ b/meowpp/colors/HSV.h @@ -0,0 +1,69 @@ +#ifndef HSV_H_ +#define HSV_H_ + +#include "RGB.h" +#include "YUV.h" +#include "HSL.h" + +namespace meow{ + template<class T> + class HSV{ + protected: + T hsv_[3]; + HSV(); + HSV(T const& h, T const& s, T const& v); + HSV(T const* hsv); + public: + virtual ~HSV(){ } + ///////////////// **# not force #** //////////////// + virtual T hMax() const = 0; + virtual T hMin() const = 0; + virtual T sMax() const = 0; + virtual T sMin() const = 0; + virtual T vMax() const = 0; + virtual T vMin() const = 0; + /////////////////// **# access #** ///////////////// + T h() const; + T s() const; + T v() const; + T hsv(size_t i) const; + T vsh(size_t i) const; + /////////////////// **# setting #** //////////////// + T h(T const& val); + T s(T const& val); + T v(T const& val); + T hsv(size_t i, T const& val); + T vsh(size_t i, T const& val); + }; + + class HSVf: public HSV<double>{ + public: + HSVf(); + ~HSVf(); + HSVf(double const&h,double const&s,double const&v); + HSVf(double const* hsv); + double hMin() const; + double hMax() const; + double sMin() const; + double sMax() const; + double vMin() const; + double vMax() const; + }; + + template<class RGB_T, class HSV_T> + inline void RGB_to_HSV(RGB<RGB_T> const& rgb, HSV<HSV_T>* hsv); + template<class HSV_T, class RGB_T> + inline void HSV_to_RGB(HSV<HSV_T> const& hsv, RGB<RGB_T>* rgb); + template<class YUV_T, class HSV_T> + inline void YUV_to_HSV(YUV<YUV_T> const& yuv, HSV<HSV_T>* hsv); + template<class HSV_T, class YUV_T> + inline void HSV_to_YUV(HSV<HSV_T> const& hsv, YUV<YUV_T>* yuv); + template<class HSL_T, class HSV_T> + inline void HSL_to_HSV(HSL<HSL_T> const& hsl, HSV<HSV_T>* hsv); + template<class HSV_T, class HSL_T> + inline void HSV_to_HSL(HSV<HSV_T> const& hsv, HSL<HSL_T>* hsl); +} + +#include "HSV.hpp" + +#endif // HSV_H_ |