aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcathook <b01902109@csie.ntu.edu.tw>2014-04-26 18:41:28 +0800
committercathook <b01902109@csie.ntu.edu.tw>2014-04-26 18:41:28 +0800
commit5e989019d254dfc2e7ca8f3c6a8dc6507cd0efaf (patch)
treee9664065b7cac6d2e8821ffb3c62f50483ddbcec
parent8c04f61b469eebdb536f887053e93bf63c19f06f (diff)
downloadmeow-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.h2
-rw-r--r--meowpp/colors/HSL.hpp9
-rw-r--r--meowpp/colors/HSV.h2
-rw-r--r--meowpp/colors/HSV.hpp9
-rw-r--r--meowpp/colors/RGB.h3
-rw-r--r--meowpp/colors/RGB.hpp11
-rw-r--r--meowpp/colors/YUV.h2
-rw-r--r--meowpp/colors/YUV.hpp9
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());