diff options
author | cathook <b01902109@csie.ntu.edu.tw> | 2014-04-26 18:41:28 +0800 |
---|---|---|
committer | cathook <b01902109@csie.ntu.edu.tw> | 2014-04-26 18:41:28 +0800 |
commit | 5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf (patch) | |
tree | e9664065b7cac6d2e8821ffb3c62f50483ddbcec | |
parent | 8c04f61b469eebdb536f887053e93bf63c19f06f (diff) | |
download | meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar.gz meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar.bz2 meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar.lz meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar.xz meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.tar.zst meow-5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf.zip |
add self->self transformation in colors
-rw-r--r-- | meowpp/colors/HSL.h | 2 | ||||
-rw-r--r-- | meowpp/colors/HSL.hpp | 9 | ||||
-rw-r--r-- | meowpp/colors/HSV.h | 2 | ||||
-rw-r--r-- | meowpp/colors/HSV.hpp | 9 | ||||
-rw-r--r-- | meowpp/colors/RGB.h | 3 | ||||
-rw-r--r-- | meowpp/colors/RGB.hpp | 11 | ||||
-rw-r--r-- | meowpp/colors/YUV.h | 2 | ||||
-rw-r--r-- | meowpp/colors/YUV.hpp | 9 |
8 files changed, 47 insertions, 0 deletions
diff --git a/meowpp/colors/HSL.h b/meowpp/colors/HSL.h index b16bb2d..2943c1c 100644 --- a/meowpp/colors/HSL.h +++ b/meowpp/colors/HSL.h @@ -49,6 +49,8 @@ namespace meow{ double lMax() const; }; + template<class HSL_T1, class HSL_T2> + inline void HSL_to_HSL(HSL<HSL_T1> const& a, HSL<HSL_T2>* b); template<class RGB_T, class HSL_T> inline void RGB_to_HSL(RGB<RGB_T> const& rgb, HSL<HSL_T>* hsl); template<class HSL_T, class RGB_T> diff --git a/meowpp/colors/HSL.hpp b/meowpp/colors/HSL.hpp index 18c01dc..f4b8500 100644 --- a/meowpp/colors/HSL.hpp +++ b/meowpp/colors/HSL.hpp @@ -62,6 +62,15 @@ namespace meow{ + template<class HSL_T1, class HSL_T2> + inline void HSL_to_HSL(HSL<HSL_T1> const& a, HSL<HSL_T2>* b){ + double h = normalize(a.hMin(), a.hMax(), a.h()); + double s = normalize(a.sMin(), a.sMax(), a.s()); + double l = normalize(a.lMin(), a.lMax(), a.l()); + b->h(denormalize(b->hMin(), b->hMax(), h)); + b->s(denormalize(b->sMin(), b->sMax(), s)); + b->l(denormalize(b->lMin(), b->lMax(), l)); + } template<class RGB_T, class HSL_T> inline void RGB_to_HSL(RGB<RGB_T> const& rgb, HSL<HSL_T>* hsl){ double r = normalize(rgb.rMin(), rgb.rMax(), rgb.r()); diff --git a/meowpp/colors/HSV.h b/meowpp/colors/HSV.h index d5e21a4..c28cb83 100644 --- a/meowpp/colors/HSV.h +++ b/meowpp/colors/HSV.h @@ -50,6 +50,8 @@ namespace meow{ double vMax() const; }; + template<class HSV_T1, class HSV_T2> + inline void HSV_to_HSV(HSV<HSV_T1> const& a, HSV<HSV_T2>* b); 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> diff --git a/meowpp/colors/HSV.hpp b/meowpp/colors/HSV.hpp index f7a3004..b028c6c 100644 --- a/meowpp/colors/HSV.hpp +++ b/meowpp/colors/HSV.hpp @@ -63,6 +63,15 @@ namespace meow{ + template<class HSV_T1, class HSV_T2> + inline void HSV_to_HSV(HSV<HSV_T1> const& a, HSV<HSV_T2>* b){ + double h = normalize(a.hMin(), a.hMax(), a.h()); + double s = normalize(a.sMin(), a.sMax(), a.s()); + double v = normalize(a.vMin(), a.vMax(), a.v()); + b->h(denormalize(b->hMin(), b->hMax(), h)); + b->s(denormalize(b->sMin(), b->sMax(), s)); + b->v(denormalize(b->vMin(), b->vMax(), v)); + } template<class RGB_T, class HSV_T> inline void RGB_to_HSV(RGB<RGB_T> const& rgb, HSV<HSV_T>* hsv){ double r = normalize(rgb.rMin(), rgb.rMax(), rgb.r()); diff --git a/meowpp/colors/RGB.h b/meowpp/colors/RGB.h index 04b52a1..5531d96 100644 --- a/meowpp/colors/RGB.h +++ b/meowpp/colors/RGB.h @@ -59,6 +59,9 @@ namespace meow{ int32_t bMin() const; int32_t bMax() const; }; + + template<class RGB_T1, class RGB_T2> + inline void RGB_to_RGB(RGB<RGB_T1> const& a, RGB<RGB_T2>* b); } #include "RGB.hpp" diff --git a/meowpp/colors/RGB.hpp b/meowpp/colors/RGB.hpp index b5786f4..f61b7fc 100644 --- a/meowpp/colors/RGB.hpp +++ b/meowpp/colors/RGB.hpp @@ -69,4 +69,15 @@ namespace meow{ inline int32_t RGBi::gMax() const { return 255; } inline int32_t RGBi::bMin() const { return 0; } inline int32_t RGBi::bMax() const { return 255; } + + + template<class RGB_T1, class RGB_T2> + inline void RGB_to_RGB(RGB<RGB_T1> const& a, RGB<RGB_T2>* b){ + double r = normalize(a.rMin(), a.rMax(), a.r()); + double g = normalize(a.gMin(), a.gMax(), a.g()); + double x = normalize(a.bMin(), a.bMax(), a.b()); + b->r(denormalize(b->rMin(), b->rMax(), r)); + b->g(denormalize(b->gMin(), b->gMax(), g)); + b->b(denormalize(b->bMin(), b->bMax(), x)); + } } diff --git a/meowpp/colors/YUV.h b/meowpp/colors/YUV.h index b3744d1..1b1d60e 100644 --- a/meowpp/colors/YUV.h +++ b/meowpp/colors/YUV.h @@ -48,6 +48,8 @@ namespace meow{ double vMax() const; }; + template<class YUV_T1, class YUV_T2> + inline void YUV_to_YUV(YUV<YUV_T1> const& a, YUV<YUV_T2>* b); template<class RGB_T, class YUV_T> inline void RGB_to_YUV(RGB<RGB_T> const& rgb, YUV<YUV_T>* yuv); template<class YUV_T, class RGB_T> diff --git a/meowpp/colors/YUV.hpp b/meowpp/colors/YUV.hpp index 0f0d1d0..6847160 100644 --- a/meowpp/colors/YUV.hpp +++ b/meowpp/colors/YUV.hpp @@ -57,6 +57,15 @@ namespace meow{ inline double YUVf::vMax() const { return 1.0; } + template<class YUV_T1, class YUV_T2> + inline void YUV_to_YUV(YUV<YUV_T1> const& a, YUV<YUV_T2>* b){ + double y = normalize(a.yMin(), a.yMax(), a.y()); + double u = normalize(a.uMin(), a.uMax(), a.u()); + double v = normalize(a.vMin(), a.vMax(), a.v()); + b->y(denormalize(b->yMin(), b->yMax(), y)); + b->u(denormalize(b->uMin(), b->uMax(), u)); + b->v(denormalize(b->vMin(), b->vMax(), v)); + } template<class RGB_T, class YUV_T> inline void RGB_to_YUV(RGB<RGB_T> const& rgb, YUV<YUV_T>* yuv){ double r = normalize(rgb.rMin(), rgb.rMax(), rgb.r()); |