From 45e08ccde95c84932557701235558e72cdc95f1b Mon Sep 17 00:00:00 2001 From: pixel Date: Sat, 28 Oct 2006 16:50:46 +0000 Subject: Fixing caps in class names. --- lib/mcolor.cc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'lib/mcolor.cc') diff --git a/lib/mcolor.cc b/lib/mcolor.cc index 618ae4f..a8c6d16 100644 --- a/lib/mcolor.cc +++ b/lib/mcolor.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: mcolor.cc,v 1.9 2006-01-31 17:02:39 pixel Exp $ */ +/* $Id: mcolor.cc,v 1.10 2006-10-28 16:50:46 pixel Exp $ */ #include #include @@ -71,6 +71,41 @@ void mogltk::ColorP::fromHSV(double H, double S, double V) { c.R = R * 255; c.G = G * 255; c.B = B * 255; } +void mogltk::ColorP::toHSV(double * H, double * S, double * V) { + double R, G, B, cMAX, cMIN; + + R = ((double) c.R) / 255; + G = ((double) c.G) / 255; + B = ((double) c.B) / 255; + + cMAX = MAX(MAX(R, G), B); + cMIN = MIN(MIN(R, G), B); + + if (cMAX == cMIN) { + *H = 0; + *S = 0; + *V = cMAX; + return; + } + + if ((cMAX == R) && (G >= B)) { + *H = 60 * ((G - B) / (cMAX - cMIN)); + } else if ((cMAX == R) && (G < B)) { + *H = 60 * ((G - B) / (cMAX - cMIN)) + 360; + } else if (cMAX == G) { + *H = 60 * ((B - R) / (cMAX - cMIN)) + 120; + } else { + *H = 60 * ((R - G) / (cMAX - cMIN)) + 240; + } + + if (cMAX == 0) { + *S = 0; + } else { + *S = (cMAX - cMIN) / cMAX; + } + *V = cMAX; +} + void mogltk::ColorP::Norm() { c.R = MIN(MAX(c.R, Min.R), Max.R); c.G = MIN(MAX(c.R, Min.G), Max.G); -- cgit v1.2.3