0030969: Coding Rules - refactor Quantity_Color.cxx color table definition
[occt.git] / src / Quantity / Quantity_Color.cxx
index 69e94fd..d29b651 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <Quantity_Color.hxx>
 
-#include <Quantity_ColorDefinitionError.hxx>
 #include <Quantity_ColorRGBA.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_OutOfRange.hxx>
 #include <TCollection_AsciiString.hxx>
 
 #include <string.h>
-// for Test method (suite et fin)
-void call_hlsrgb(float h, float l, float s, float& r, float& g, float& b);
-void call_rgbhls(float r, float g, float b, float& h, float& l, float& s);
-
-//-Aliases
-
-//-Global data definitions
 
 #define RGBHLS_H_UNDEFINED -1.0
 
 static Standard_Real TheEpsilon = 0.0001;
 
-//     -- les composantes RGB
-//     MyRed           :       Standard_ShortReal;
-//     MyGreen         :       Standard_ShortReal;
-//     MyBlue          :       Standard_ShortReal;
+// Throw exception if RGB values are out of range.
+#define Quantity_ColorValidateRgbRange(theR, theG, theB) \
+  if (theR < 0.0 || theR > 1.0 \
+   || theG < 0.0 || theG > 1.0 \
+   || theB < 0.0 || theB > 1.0) { throw Standard_OutOfRange("Color out"); }
+
+// Throw exception if HLS values are out of range.
+#define Quantity_ColorValidateHlsRange(theH, theL, theS) \
+  if ((theH < 0.0 && theH != RGBHLS_H_UNDEFINED && theS != 0.0) \
+   || (theH > 360.0) \
+    || theL < 0.0 || theL > 1.0 \
+    || theS < 0.0 || theS > 1.0) { throw Standard_OutOfRange("Color out"); }
+
+namespace
+{
+  //! Raw color for defining list of standard color
+  struct Quantity_StandardColor
+  {
+    const char*             StringName;
+    NCollection_Vec3<float> RgbValues;
+    Quantity_NameOfColor    EnumName;
+
+    Quantity_StandardColor (Quantity_NameOfColor theName, const char* theStringName, const NCollection_Vec3<float>& theVec3)
+    : StringName (theStringName), RgbValues (theVec3), EnumName (theName) {}
+  };
+}
 
-//-Constructors
+// Note that HTML/hex sRGB representation is ignored
+#define RawColor(theName, theHex, theR, theG, theB) Quantity_StandardColor(Quantity_NOC_##theName, #theName, NCollection_Vec3<float>(theR##f, theG##f, theB##f))
 
-//-Destructors
+//! Name list of standard materials (defined within enumeration).
+static const Quantity_StandardColor THE_COLORS[] =
+{
+#include "Quantity_ColorTable.pxx"
+};
 
-//-Methods, in order
+// =======================================================================
+// function : Epsilon
+// purpose  :
+// =======================================================================
+Standard_Real Quantity_Color::Epsilon()
+{
+  return TheEpsilon;
+}
+
+// =======================================================================
+// function : SetEpsilon
+// purpose  :
+// =======================================================================
+void Quantity_Color::SetEpsilon (const Standard_Real theEpsilon)
+{
+  TheEpsilon = theEpsilon;
+}
 
+// =======================================================================
+// function : valuesOf
+// purpose  :
+// =======================================================================
+NCollection_Vec3<float> Quantity_Color::valuesOf (const Quantity_NameOfColor theName,
+                                                  const Quantity_TypeOfColor theType)
+{
+  if ((Standard_Integer )theName < 0 || (Standard_Integer )theName > Quantity_NOC_WHITE)
+  {
+    throw Standard_OutOfRange("Bad name");
+  }
+
+  const NCollection_Vec3<float>& anRgb = THE_COLORS[theName].RgbValues;
+  switch (theType)
+  {
+    case Quantity_TOC_RGB: return anRgb;
+    case Quantity_TOC_HLS: return Convert_sRGB_To_HLS (anRgb);
+  }
+  throw Standard_ProgramError("Internal error");
+}
+
+// =======================================================================
+// function : StringName
+// purpose  :
+// =======================================================================
+Standard_CString Quantity_Color::StringName (const Quantity_NameOfColor theName)
+{
+  if ((Standard_Integer )theName < 0 || (Standard_Integer )theName > Quantity_NOC_WHITE)
+  {
+    throw Standard_OutOfRange("Bad name");
+  }
+  return THE_COLORS[theName].StringName;
+}
+
+// =======================================================================
+// function : ColorFromName
+// purpose  :
+// =======================================================================
 Standard_Boolean Quantity_Color::ColorFromName (const Standard_CString theName,
                                                 Quantity_NameOfColor&  theColor)
 {
@@ -58,21 +131,41 @@ Standard_Boolean Quantity_Color::ColorFromName (const Standard_CString theName,
 
   for (Standard_Integer anIter = Quantity_NOC_BLACK; anIter <= Quantity_NOC_WHITE; ++anIter)
   {
-    Standard_CString aColorName = Quantity_Color::StringName (Quantity_NameOfColor (anIter));
+    Standard_CString aColorName = THE_COLORS[anIter].StringName;
     if (aName == aColorName)
     {
       theColor = (Quantity_NameOfColor )anIter;
       return Standard_True;
     }
   }
-  return Standard_False;
+
+  // aliases
+  if      (aName == "BLUE1")       { theColor = Quantity_NOC_BLUE1; }
+  else if (aName == "CHARTREUSE1") { theColor = Quantity_NOC_CHARTREUSE1; }
+  else if (aName == "CYAN1")       { theColor = Quantity_NOC_CYAN1; }
+  else if (aName == "GOLD1")       { theColor = Quantity_NOC_GOLD1; }
+  else if (aName == "GREEN1")      { theColor = Quantity_NOC_GREEN1; }
+  else if (aName == "LIGHTCYAN1")  { theColor = Quantity_NOC_LIGHTCYAN1; }
+  else if (aName == "MAGENTA1")    { theColor = Quantity_NOC_MAGENTA1; }
+  else if (aName == "ORANGE1")     { theColor = Quantity_NOC_ORANGE1; }
+  else if (aName == "ORANGERED1")  { theColor = Quantity_NOC_ORANGERED1; }
+  else if (aName == "RED1")        { theColor = Quantity_NOC_RED1; }
+  else if (aName == "TOMATO1")     { theColor = Quantity_NOC_TOMATO1; }
+  else if (aName == "YELLOW1")     { theColor = Quantity_NOC_YELLOW1; }
+  else
+  {
+    return Standard_False;
+  }
+
+  return Standard_True;
 }
 
 //=======================================================================
 // function : ColorFromHex
 // purpose  :
 //=======================================================================
-bool Quantity_Color::ColorFromHex (const Standard_CString theHexColorString, Quantity_Color& theColor)
+bool Quantity_Color::ColorFromHex (const Standard_CString theHexColorString,
+                                   Quantity_Color& theColor)
 {
   Quantity_ColorRGBA aColorRGBA;
   if (!Quantity_ColorRGBA::ColorFromHex (theHexColorString, aColorRGBA, true))
@@ -83,3847 +176,394 @@ bool Quantity_Color::ColorFromHex (const Standard_CString theHexColorString, Qua
   return true;
 }
 
-Quantity_Color::Quantity_Color () {
-
-       Quantity_Color::ValuesOf
-               (Quantity_NOC_YELLOW, Quantity_TOC_RGB, MyRed, MyGreen, MyBlue);
-}
-
-Quantity_Color::Quantity_Color (const Quantity_NameOfColor AName) {
-
-       Quantity_Color::ValuesOf
-               (AName, Quantity_TOC_RGB, MyRed, MyGreen, MyBlue);
-}
-
-Quantity_Color::Quantity_Color (const Standard_Real R1, const Standard_Real R2, const Standard_Real R3, const Quantity_TypeOfColor AType) {
-
-       switch (AType) {
-
-               case Quantity_TOC_RGB :
-                       if ( R1 < 0. || R1 > 1. ||
-                            R2 < 0. || R2 > 1. ||
-                            R3 < 0. || R3 > 1. )
-                               throw Standard_OutOfRange("Color out");
-                       MyRed   = Standard_ShortReal (R1);
-                       MyGreen = Standard_ShortReal (R2);
-                       MyBlue  = Standard_ShortReal (R3);
-               break;
-
-               case Quantity_TOC_HLS :
-                       if ( (R1 < 0. && R1 != RGBHLS_H_UNDEFINED && R3 != 0.0)
-                         || (R1 > 360.) ||
-                            R2 < 0. || R2 > 1. ||
-                            R3 < 0. || R3 > 1. )
-                               throw Standard_OutOfRange("Color out");
-                       Quantity_Color::hlsrgb
-                               (Standard_ShortReal (R1),
-                                Standard_ShortReal (R2),
-                                Standard_ShortReal (R3),
-                                MyRed, MyGreen, MyBlue);
-               break;
-       }
-
-}
-
-Quantity_Color::Quantity_Color (const NCollection_Vec3<float>& theRgb)
-: MyRed  (theRgb.r()),
-  MyGreen(theRgb.g()),
-  MyBlue (theRgb.b())
+// =======================================================================
+// function : Quantity_Color
+// purpose  :
+// =======================================================================
+Quantity_Color::Quantity_Color (const Standard_Real theR1, const Standard_Real theR2, const Standard_Real theR3,
+                                const Quantity_TypeOfColor theType)
 {
-  if (theRgb.r() < 0.0f || theRgb.r() > 1.0f
-   || theRgb.g() < 0.0f || theRgb.g() > 1.0f
-   || theRgb.b() < 0.0f || theRgb.b() > 1.0f)
+  switch (theType)
   {
-    throw Standard_OutOfRange("Color out");
+    case Quantity_TOC_RGB:
+    {
+      Quantity_ColorValidateRgbRange(theR1, theR2, theR3);
+      myRgb.SetValues (float(theR1), float(theR2), float(theR3));
+      break;
+    }
+    case Quantity_TOC_HLS:
+    {
+      Quantity_ColorValidateHlsRange(theR1, theR2, theR3);
+      myRgb = Convert_HLS_To_sRGB (NCollection_Vec3<float> (float(theR1), float(theR2), float(theR3)));
+      break;
+    }
   }
 }
 
-void Quantity_Color::ChangeContrast (const Standard_Real ADelta) {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-       MySaturation    += MySaturation * Standard_ShortReal (ADelta) / (float ) 100.0;
-
-       if ( !((MySaturation > 1.0) || (MySaturation < 0.0) )) {
-               Quantity_Color::hlsrgb
-                       (MyHue, MyLight, MySaturation, MyRed, MyGreen, MyBlue);
-       }
-}
-
-void Quantity_Color::ChangeIntensity (const Standard_Real ADelta) {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-
-       MyLight         += MyLight * Standard_ShortReal (ADelta) / (float ) 100.0;
-       if ( !((MyLight > 1.0) || (MyLight < 0.0) )) {
-               Quantity_Color::hlsrgb
-                       (MyHue, MyLight, MySaturation, MyRed, MyGreen, MyBlue);
-       }
-
-}
-
-void Quantity_Color::SetValues (const Quantity_NameOfColor AName) {
-
-       Quantity_Color::ValuesOf
-               (AName, Quantity_TOC_RGB, MyRed, MyGreen, MyBlue);
-
-}
-
-void Quantity_Color::SetValues (const Standard_Real R1, const Standard_Real R2, const Standard_Real R3, const Quantity_TypeOfColor AType) {
-
-       switch (AType) {
-
-               case Quantity_TOC_RGB :
-                       if ( R1 < 0. || R1 > 1. ||
-                            R2 < 0. || R2 > 1. ||
-                            R3 < 0. || R3 > 1. )
-                               throw Standard_OutOfRange("Color out");
-                       else {
-                               MyRed   = Standard_ShortReal (R1);
-                               MyGreen = Standard_ShortReal (R2);
-                               MyBlue  = Standard_ShortReal (R3);
-                       }
-               break;
-
-               case Quantity_TOC_HLS :
-                       if ( R1 < 0. || R1 > 360. ||
-                            R2 < 0. || R2 > 1. ||
-                            R3 < 0. || R3 > 1. )
-                               throw Standard_OutOfRange("Color out");
-                       else {
-                               Quantity_Color::hlsrgb
-                                       (Standard_ShortReal (R1),
-                                        Standard_ShortReal (R2),
-                                        Standard_ShortReal (R3),
-                                        MyRed, MyGreen, MyBlue);
-                       }
-               break;
-       }
-
-}
-
-Standard_Real Quantity_Color::Distance (const Quantity_Color& AColor) const {
-
-Standard_Real R1, G1, B1;
-Standard_Real R2, G2, B2;
-
-       R1      = Standard_Real (MyRed);
-       G1      = Standard_Real (MyGreen);
-       B1      = Standard_Real (MyBlue);
-
-       R2      = Standard_Real (AColor.MyRed);
-       G2      = Standard_Real (AColor.MyGreen);
-       B2      = Standard_Real (AColor.MyBlue);
-
-       return  Sqrt (
-                       ((R1 - R2) * (R1 - R2)) +
-                       ((G1 - G2) * (G1 - G2)) +
-                       ((B1 - B2) * (B1 - B2))
-                    );
-
-}
-
-Standard_Real Quantity_Color::SquareDistance (const Quantity_Color& AColor) const {
-
-Standard_Real R1, G1, B1;
-Standard_Real R2, G2, B2;
-
-       R1      = Standard_Real (MyRed);
-       G1      = Standard_Real (MyGreen);
-       B1      = Standard_Real (MyBlue);
-
-       R2      = Standard_Real (AColor.MyRed);
-       G2      = Standard_Real (AColor.MyGreen);
-       B2      = Standard_Real (AColor.MyBlue);
-
-       return  (
-                       ((R1 - R2) * (R1 - R2)) +
-                       ((G1 - G2) * (G1 - G2)) +
-                       ((B1 - B2) * (B1 - B2))
-               );
-
-}
-
-void Quantity_Color::Delta (const Quantity_Color& AColor, Standard_Real& DC, Standard_Real& DI) const {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-       DC      = Standard_Real (MySaturation   - AColor.Saturation ());
-       DI      = Standard_Real (MyLight                - AColor.Light ());
-
-}
-
-Standard_Boolean Quantity_Color::IsDifferent (const Quantity_Color& Other) const {
-
-       return (Distance (Other) > Epsilon ());
-
-}
-
-Standard_Boolean Quantity_Color::IsEqual (const Quantity_Color& Other) const {
-
-       return (Distance (Other) <= Epsilon ());
-
-}
-
-Quantity_NameOfColor Quantity_Color::Name () const {
-
-Quantity_NameOfColor MyNewName = Quantity_NOC_BLACK;   // Nom courant.
-Quantity_Color Col;                            // Couleur courante.
-Standard_Real NewDist = 4.0;                   // Distance courante.
-Standard_Real Dist = 4.0;                      // Distance la plus courte.
-
-Standard_Integer Begin, End, Current;
-
-               //
-               // Parcours de l'enumeration
-               //
-               Begin   = Standard_Integer (Quantity_NOC_BLACK);
-               End     = Standard_Integer (Quantity_NOC_WHITE);
-
-               for (Current = Begin;
-                       ((Current <= End) && (NewDist != 0.0)); Current++) {
-
-                       Col.SetValues (Quantity_NameOfColor (Current));
-                       NewDist = 
-                       ((MyRed   - Col.MyRed)   * (MyRed - Col.MyRed))     +
-                       ((MyGreen - Col.MyGreen) * (MyGreen - Col.MyGreen)) +
-                       ((MyBlue  - Col.MyBlue)  * (MyBlue - Col.MyBlue));
-
-                       if (NewDist < Dist) {
-                               MyNewName = Quantity_NameOfColor (Current);
-                               Dist = NewDist;
-                       }
-               } // Fin de boucle for
-
-               return (MyNewName);
-
-}
-
-Standard_Real Quantity_Color::Epsilon()
+// =======================================================================
+// function : Quantity_Color
+// purpose  :
+// =======================================================================
+Quantity_Color::Quantity_Color (const NCollection_Vec3<float>& theRgb)
+: myRgb (theRgb)
 {
-  return TheEpsilon;
-}
-
-void Quantity_Color::SetEpsilon (const Standard_Real AnEpsilon) {
-
-       TheEpsilon      = AnEpsilon;
-
-}
-
-Quantity_NameOfColor Quantity_Color::Name (const Standard_Real R, const Standard_Real G, const Standard_Real B) {
-
-       if ( R < 0. || R > 1. ||
-            G < 0. || G > 1. ||
-            B < 0. || B > 1. )
-               throw Standard_OutOfRange("Color out");
-
-Quantity_Color AColor (R, G, B, Quantity_TOC_RGB);     // Couleur definie en RGB.
-
-       return (AColor.Name ());
-
-}
-
-Standard_Real Quantity_Color::Red () const {
-
-       return (Standard_Real (MyRed));
-
-}
-
-Standard_Real Quantity_Color::Green () const {
-
-       return (Standard_Real (MyGreen));
-
-}
-
-Standard_Real Quantity_Color::Blue () const {
-
-       return (Standard_Real (MyBlue));
-
-}
-
-Standard_Real Quantity_Color::Hue () const {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-       return (Standard_Real (MyHue));
-
-}
-
-Standard_Real Quantity_Color::Light () const {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-       return (Standard_Real (MyLight));
-
+  Quantity_ColorValidateRgbRange(theRgb.r(), theRgb.g(), theRgb.b());
 }
 
-Standard_Real Quantity_Color::Saturation () const {
-
-Standard_ShortReal MyHue, MyLight, MySaturation;
-
-       Quantity_Color::rgbhls
-                       (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-       return (Standard_Real (MySaturation));
-
+// =======================================================================
+// function : ChangeContrast
+// purpose  :
+// =======================================================================
+void Quantity_Color::ChangeContrast (const Standard_Real theDelta)
+{
+  NCollection_Vec3<float> aHls = Convert_sRGB_To_HLS (myRgb);
+  aHls[2] += aHls[2] * Standard_ShortReal (theDelta) / 100.0f; // saturation
+  if (!((aHls[2] > 1.0f) || (aHls[2] < 0.0f)))
+  {
+    myRgb = Convert_HLS_To_sRGB (aHls);
+  }
 }
 
-void Quantity_Color::Values (Standard_Real& R1, Standard_Real& R2, Standard_Real& R3, const Quantity_TypeOfColor AType) const {
-
-
-       switch (AType) {
-
-               case Quantity_TOC_RGB :
-                       R1      = Standard_Real (MyRed);
-                       R2      = Standard_Real (MyGreen);
-                       R3      = Standard_Real (MyBlue);
-               break;
-
-               case Quantity_TOC_HLS :
-                     { Standard_ShortReal MyHue, MyLight, MySaturation;
-
-                       Quantity_Color::rgbhls
-                        (MyRed, MyGreen, MyBlue, MyHue, MyLight, MySaturation);
-
-                       R1      = Standard_Real (MyHue);
-                       R2      = Standard_Real (MyLight);
-                       R3      = Standard_Real (MySaturation);
-                     }
-               break;
-       }
-
+// =======================================================================
+// function : ChangeIntensity
+// purpose  :
+// =======================================================================
+void Quantity_Color::ChangeIntensity (const Standard_Real theDelta)
+{
+  NCollection_Vec3<float> aHls = Convert_sRGB_To_HLS (myRgb);
+  aHls[1] += aHls[1] * Standard_ShortReal (theDelta) / 100.0f; // light
+  if (!((aHls[1] > 1.0f) || (aHls[1] < 0.0f)))
+  {
+    myRgb = Convert_HLS_To_sRGB (aHls);
+  }
 }
 
-void Quantity_Color::RgbHls (const Standard_Real R, const Standard_Real G, const Standard_Real B, Standard_Real& H, Standard_Real& L, Standard_Real& S) {
-
-Standard_ShortReal HH, LL, SS;
-
-       call_rgbhls (Standard_ShortReal (R),
-                       Standard_ShortReal (G),
-                       Standard_ShortReal (B),
-                       HH, LL, SS);
-
-       H       = Standard_Real (HH);
-       L       = Standard_Real (LL);
-       S       = Standard_Real (SS);
-
+// =======================================================================
+// function : SetValues
+// purpose  :
+// =======================================================================
+void Quantity_Color::SetValues (const Standard_Real theR1, const Standard_Real theR2, const Standard_Real theR3,
+                                const Quantity_TypeOfColor theType)
+{
+  switch (theType)
+  {
+    case Quantity_TOC_RGB:
+    {
+      Quantity_ColorValidateRgbRange(theR1, theR2, theR3);
+      myRgb.SetValues (float(theR1), float(theR2), float(theR3));
+      break;
+    }
+    case Quantity_TOC_HLS:
+    {
+      Quantity_ColorValidateHlsRange(theR1, theR2, theR3);
+      myRgb = Convert_HLS_To_sRGB (NCollection_Vec3<float> (float(theR1), float(theR2), float(theR3)));
+      break;
+    }
+  }
 }
 
-void Quantity_Color::HlsRgb (const Standard_Real H, const Standard_Real L, const Standard_Real S, Standard_Real& R, Standard_Real& G, Standard_Real& B) {
-
-Standard_ShortReal RR, GG, BB;
-
-       call_hlsrgb (Standard_ShortReal (H),
-                       Standard_ShortReal (L),
-                       Standard_ShortReal (S),
-                       RR, GG, BB);
-
-       R       = Standard_Real (RR);
-       G       = Standard_Real (GG);
-       B       = Standard_Real (BB);
-
+// =======================================================================
+// function : Delta
+// purpose  :
+// =======================================================================
+void Quantity_Color::Delta (const Quantity_Color& theColor,
+                            Standard_Real& theDC,
+                            Standard_Real& theDI) const
+{
+  const NCollection_Vec3<float> aHls1 = Convert_sRGB_To_HLS (myRgb);
+  const NCollection_Vec3<float> aHls2 = Convert_sRGB_To_HLS (theColor.myRgb);
+  theDC = Standard_Real (aHls1[2] - aHls2[2]); // saturation
+  theDI = Standard_Real (aHls1[1] - aHls2[1]); // light
 }
 
-void Quantity_Color::rgbhls (const Standard_ShortReal R, const Standard_ShortReal G, const Standard_ShortReal B, Standard_ShortReal& H, Standard_ShortReal& L, Standard_ShortReal& S) {
-
-       call_rgbhls (R, G, B, H, L, S);
-
+// =======================================================================
+// function : Name
+// purpose  :
+// =======================================================================
+Quantity_NameOfColor Quantity_Color::Name() const
+{
+  Standard_ShortReal aDist2 = 4.0f;
+  Quantity_NameOfColor aResName = Quantity_NOC_BLACK;
+  for (Standard_Integer aColIter = Quantity_NOC_BLACK; aColIter <= Quantity_NOC_WHITE; ++aColIter)
+  {
+    const Standard_ShortReal aNewDist2 = (myRgb - THE_COLORS[aColIter].RgbValues).SquareModulus();
+    if (aNewDist2 < aDist2)
+    {
+      aResName = Quantity_NameOfColor (aColIter);
+      aDist2 = aNewDist2;
+      if (aNewDist2 == 0.0f)
+      {
+        break;
+      }
+    }
+  }
+  return aResName;
 }
 
-void Quantity_Color::hlsrgb (const Standard_ShortReal H, const Standard_ShortReal L, const Standard_ShortReal S, Standard_ShortReal& R, Standard_ShortReal& G, Standard_ShortReal& B) {
-
-       call_hlsrgb (H, L, S, R, G, B);
-
+// =======================================================================
+// function : Values
+// purpose  :
+// =======================================================================
+void Quantity_Color::Values (Standard_Real& theR1, Standard_Real& theR2, Standard_Real& theR3,
+                             const Quantity_TypeOfColor theType) const
+{
+  switch (theType)
+  {
+    case Quantity_TOC_RGB:
+    {
+      theR1 = myRgb.r();
+      theR2 = myRgb.g();
+      theR3 = myRgb.b();
+      break;
+    }
+    case Quantity_TOC_HLS:
+    {
+      const NCollection_Vec3<float> aHls = Convert_sRGB_To_HLS (myRgb);
+      theR1 = aHls[0];
+      theR2 = aHls[1];
+      theR3 = aHls[2];
+      break;
+    }
+  }
 }
 
-//=======================================================================
-//function : Color2argb
-//purpose  : 
-//=======================================================================
-
-void Quantity_Color::Color2argb (const Quantity_Color& theColor,
-                                 Standard_Integer& theARGB)
+// =======================================================================
+// function : Convert_HLS_To_sRGB
+// purpose  : Reference: La synthese d'images, Collection Hermes
+// =======================================================================
+NCollection_Vec3<float> Quantity_Color::Convert_HLS_To_sRGB (const NCollection_Vec3<float>& theHls)
 {
-  const Standard_Integer aColor[3] = {
-    static_cast<Standard_Integer> (255 * theColor.MyRed),
-    static_cast<Standard_Integer> (255 * theColor.MyGreen),
-    static_cast<Standard_Integer> (255 * theColor.MyBlue)
-  };
-  theARGB = (((aColor[0] & 0xff) << 16) |
-             ((aColor[1] & 0xff) << 8)  |
-             (aColor[2] & 0xff));
-}
+  float aHue = theHls[0];
+  const float aLight = theHls[1];
+  const float aSaturation = theHls[2];
+  if (aSaturation == 0.0f
+   && aHue == RGBHLS_H_UNDEFINED)
+  {
+    return NCollection_Vec3<float> (aLight, aLight, aLight);
+  }
 
-//=======================================================================
-//function : Argb2color
-//purpose  : 
-//=======================================================================
+  int aHueIndex = 0;
+  float lmuls = aLight * aSaturation;
+  if (aHue == 360.0f)
+  {
+    aHue = 0.0;
+    aHueIndex = 0;
+  }
+  else
+  {
+    aHue /= 60.0f;
+    aHueIndex = (int )aHue;
+  }
 
-void Quantity_Color::Argb2color (const Standard_Integer theARGB,
-                                 Quantity_Color& theColor)
-{
-  const Standard_Real aColor[3] = {
-    static_cast <Standard_Real> ((theARGB & 0xff0000) >> 16),
-    static_cast <Standard_Real> ((theARGB & 0x00ff00) >> 8),
-    static_cast <Standard_Real> ((theARGB & 0x0000ff))
-  };
-  theColor.SetValues(aColor[0] / 255.0, aColor[1] / 255.0, aColor[2] / 255.0,
-                     Quantity_TOC_RGB);
+  switch (aHueIndex)
+  {
+    case 0: return NCollection_Vec3<float> (aLight,
+                                            aLight - lmuls + lmuls * aHue,
+                                            aLight - lmuls);
+    case 1: return NCollection_Vec3<float> (aLight + lmuls - lmuls * aHue,
+                                            aLight,
+                                            aLight - lmuls);
+    case 2: return NCollection_Vec3<float> (aLight - lmuls,
+                                            aLight,
+                                            aLight - 3 * lmuls + lmuls * aHue);
+    case 3: return NCollection_Vec3<float> (aLight - lmuls,
+                                            aLight + 3 * lmuls - lmuls * aHue,
+                                            aLight);
+    case 4: return NCollection_Vec3<float> (aLight - 5 * lmuls + lmuls * aHue,
+                                            aLight - lmuls,
+                                            aLight);
+    case 5 : return NCollection_Vec3<float> (aLight,
+                                             aLight - lmuls,
+                                             aLight + 5 * lmuls - lmuls * aHue);
+  }
+  throw Standard_OutOfRange("Color out");
 }
 
-void Quantity_Color::ValuesOf (const Quantity_NameOfColor AName, const Quantity_TypeOfColor AType, Standard_ShortReal& R1, Standard_ShortReal& R2, Standard_ShortReal& R3) {
+// =======================================================================
+// function : Convert_sRGB_To_HLS
+// purpose  : Reference: La synthese d'images, Collection Hermes
+// =======================================================================
+NCollection_Vec3<float> Quantity_Color::Convert_sRGB_To_HLS (const NCollection_Vec3<float>& theRgb)
+{
+  float aPlus = 0.0f;
+  float aDiff = theRgb.g() - theRgb.b();
 
-Standard_ShortReal RR = 0 ;
-Standard_ShortReal RG = 0 ;
-Standard_ShortReal RB = 0 ;
+  // compute maximum from RGB components, which will be a luminance
+  float aMax = theRgb.r();
+  if (theRgb.g() > aMax) { aPlus = 2.0; aDiff = theRgb.b() - theRgb.r(); aMax = theRgb.g(); }
+  if (theRgb.b() > aMax) { aPlus = 4.0; aDiff = theRgb.r() - theRgb.g(); aMax = theRgb.b(); }
 
-switch (AName) {
+  // compute minimum from RGB components
+  float min = theRgb.r();
+  if (theRgb.g() < min) min = theRgb.g();
+  if (theRgb.b() < min) min = theRgb.b();
 
-       case Quantity_NOC_BLACK :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_MATRAGRAY :
-               RR = R1 = (float ) 0.600000; RG = R2 = (float ) 0.600000; RB = R3 = (float ) 0.600000;
-       break;
-       case Quantity_NOC_MATRABLUE :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = 0.750000;
-       break;
-       case Quantity_NOC_ALICEBLUE :
-               RR = R1 = (float ) 0.941176; RG = R2 = (float ) 0.972549; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_ANTIQUEWHITE :
-               RR = R1 = (float ) 0.980392; RG = R2 = (float ) 0.921569; RB = R3 = (float ) 0.843137;
-       break;
-       case Quantity_NOC_ANTIQUEWHITE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.937255; RB = R3 = (float ) 0.858824;
-       break;
-       case Quantity_NOC_ANTIQUEWHITE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.874510; RB = R3 = (float ) 0.800000;
-       break;
-       case Quantity_NOC_ANTIQUEWHITE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.752941; RB = R3 = (float ) 0.690196;
-       break;
-       case Quantity_NOC_ANTIQUEWHITE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.513725; RB = R3 = (float ) 0.470588;
-       break;
-       case Quantity_NOC_AQUAMARINE1 :
-               RR = R1 = (float ) 0.498039; RG = R2 = 1.000000; RB = R3 = (float ) 0.831373;
-       break;
-       case Quantity_NOC_AQUAMARINE2 :
-               RR = R1 = (float ) 0.462745; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.776471;
-       break;
-       case Quantity_NOC_AQUAMARINE4 :
-               RR = R1 = (float ) 0.270588; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.454902;
-       break;
-       case Quantity_NOC_AZURE :
-               RR = R1 = (float ) 0.941176; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_AZURE2 :
-               RR = R1 = (float ) 0.878431; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_AZURE3 :
-               RR = R1 = (float ) 0.756863; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_AZURE4 :
-               RR = R1 = (float ) 0.513725; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_BEIGE :
-               RR = R1 = (float ) 0.960784; RG = R2 = (float ) 0.960784; RB = R3 = (float ) 0.862745;
-       break;
-       case Quantity_NOC_BISQUE :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.894118; RB = R3 = (float ) 0.768627;
-       break;
-       case Quantity_NOC_BISQUE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.835294; RB = R3 = (float ) 0.717647;
-       break;
-       case Quantity_NOC_BISQUE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.717647; RB = R3 = (float ) 0.619608;
-       break;
-       case Quantity_NOC_BISQUE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.490196; RB = R3 = (float ) 0.419608;
-       break;
-       case Quantity_NOC_BLANCHEDALMOND :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.921569; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_BLUE1 :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_BLUE2 :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_BLUE3 :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_BLUE4 :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_BLUEVIOLET :
-               RR = R1 = (float ) 0.541176; RG = R2 = (float ) 0.168627; RB = R3 = (float ) 0.886275;
-       break;
-       case Quantity_NOC_BROWN :
-               RR = R1 = (float ) 0.647059; RG = R2 = (float ) 0.164706; RB = R3 = (float ) 0.164706;
-       break;
-       case Quantity_NOC_BROWN1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.250980; RB = R3 = (float ) 0.250980;
-       break;
-       case Quantity_NOC_BROWN2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.231373; RB = R3 = (float ) 0.231373;
-       break;
-       case Quantity_NOC_BROWN3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.200000; RB = R3 = (float ) 0.200000;
-       break;
-       case Quantity_NOC_BROWN4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.137255; RB = R3 = (float ) 0.137255;
-       break;
-       case Quantity_NOC_BURLYWOOD :
-               RR = R1 = (float ) 0.870588; RG = R2 = (float ) 0.721569; RB = R3 = (float ) 0.529412;
-       break;
-       case Quantity_NOC_BURLYWOOD1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.827451; RB = R3 = (float ) 0.607843;
-       break;
-       case Quantity_NOC_BURLYWOOD2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.772549; RB = R3 = (float ) 0.568627;
-       break;
-       case Quantity_NOC_BURLYWOOD3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.666667; RB = R3 = (float ) 0.490196;
-       break;
-       case Quantity_NOC_BURLYWOOD4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.450980; RB = R3 = (float ) 0.333333;
-       break;
-       case Quantity_NOC_CADETBLUE :
-               RR = R1 = (float ) 0.372549; RG = R2 = (float ) 0.619608; RB = R3 = (float ) 0.627451;
-       break;
-       case Quantity_NOC_CADETBLUE1 :
-               RR = R1 = (float ) 0.596078; RG = R2 = (float ) 0.960784; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_CADETBLUE2 :
-               RR = R1 = (float ) 0.556863; RG = R2 = (float ) 0.898039; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_CADETBLUE3 :
-               RR = R1 = (float ) 0.478431; RG = R2 = (float ) 0.772549; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_CADETBLUE4 :
-               RR = R1 = (float ) 0.325490; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_CHARTREUSE :
-               RR = R1 = (float ) 0.498039; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_CHARTREUSE1 :
-               RR = R1 = (float ) 0.498039; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_CHARTREUSE2 :
-               RR = R1 = (float ) 0.462745; RG = R2 = (float ) 0.933333; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_CHARTREUSE3 :
-               RR = R1 = (float ) 0.400000; RG = R2 = (float ) 0.803922; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_CHARTREUSE4 :
-               RR = R1 = (float ) 0.270588; RG = R2 = (float ) 0.545098; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_CHOCOLATE :
-               RR = R1 = (float ) 0.823529; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.117647;
-       break;
-       case Quantity_NOC_CHOCOLATE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.498039; RB = R3 = (float ) 0.141176;
-       break;
-       case Quantity_NOC_CHOCOLATE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.462745; RB = R3 = (float ) 0.129412;
-       break;
-       case Quantity_NOC_CHOCOLATE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.400000; RB = R3 = (float ) 0.113725;
-       break;
-       case Quantity_NOC_CHOCOLATE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.270588; RB = R3 = (float ) 0.074510;
-       break;
-       case Quantity_NOC_CORAL :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.498039; RB = R3 = (float ) 0.313725;
-       break;
-       case Quantity_NOC_CORAL1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.447059; RB = R3 = (float ) 0.337255;
-       break;
-       case Quantity_NOC_CORAL2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.415686; RB = R3 = (float ) 0.313725;
-       break;
-       case Quantity_NOC_CORAL3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.356863; RB = R3 = (float ) 0.270588;
-       break;
-       case Quantity_NOC_CORAL4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.243137; RB = R3 = (float ) 0.184314;
-       break;
-       case Quantity_NOC_CORNFLOWERBLUE :
-               RR = R1 = (float ) 0.392157; RG = R2 = (float ) 0.584314; RB = R3 = (float ) 0.929412;
-       break;
-       case Quantity_NOC_CORNSILK1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.972549; RB = R3 = (float ) 0.862745;
-       break;
-       case Quantity_NOC_CORNSILK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.909804; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_CORNSILK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.784314; RB = R3 = (float ) 0.694118;
-       break;
-       case Quantity_NOC_CORNSILK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.533333; RB = R3 = (float ) 0.470588;
-       break;
-       case Quantity_NOC_CYAN1 :
-               RR = R1 = 0.000000; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_CYAN2 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_CYAN3 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_CYAN4 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_DARKGOLDENROD :
-               RR = R1 = (float ) 0.721569; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.043137;
-       break;
-       case Quantity_NOC_DARKGOLDENROD1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.725490; RB = R3 = (float ) 0.058824;
-       break;
-       case Quantity_NOC_DARKGOLDENROD2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.678431; RB = R3 = (float ) 0.054902;
-       break;
-       case Quantity_NOC_DARKGOLDENROD3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.584314; RB = R3 = (float ) 0.047059;
-       break;
-       case Quantity_NOC_DARKGOLDENROD4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.396078; RB = R3 = (float ) 0.031373;
-       break;
-       case Quantity_NOC_DARKGREEN :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.392157; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKKHAKI :
-               RR = R1 = (float ) 0.741176; RG = R2 = (float ) 0.717647; RB = R3 = (float ) 0.419608;
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN :
-               RR = R1 = (float ) 0.333333; RG = R2 = (float ) 0.419608; RB = R3 = (float ) 0.184314;
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN1 :
-               RR = R1 = (float ) 0.792157; RG = R2 = 1.000000; RB = R3 = (float ) 0.439216;
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN2 :
-               RR = R1 = (float ) 0.737255; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.407843;
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN3 :
-               RR = R1 = (float ) 0.635294; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.352941;
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN4 :
-               RR = R1 = (float ) 0.431373; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.239216;
-       break;
-       case Quantity_NOC_DARKORANGE :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.549020; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKORANGE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.498039; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKORANGE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.462745; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKORANGE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.400000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKORANGE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.270588; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_DARKORCHID :
-               RR = R1 = (float ) 0.600000; RG = R2 = (float ) 0.196078; RB = R3 = (float ) 0.800000;
-       break;
-       case Quantity_NOC_DARKORCHID1 :
-               RR = R1 = (float ) 0.749020; RG = R2 = (float ) 0.243137; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_DARKORCHID2 :
-               RR = R1 = (float ) 0.698039; RG = R2 = (float ) 0.227451; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_DARKORCHID3 :
-               RR = R1 = (float ) 0.603922; RG = R2 = (float ) 0.196078; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_DARKORCHID4 :
-               RR = R1 = (float ) 0.407843; RG = R2 = (float ) 0.133333; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_DARKSALMON :
-               RR = R1 = (float ) 0.913725; RG = R2 = (float ) 0.588235; RB = R3 = (float ) 0.478431;
-       break;
-       case Quantity_NOC_DARKSEAGREEN :
-               RR = R1 = (float ) 0.560784; RG = R2 = (float ) 0.737255; RB = R3 = (float ) 0.560784;
-       break;
-       case Quantity_NOC_DARKSEAGREEN1 :
-               RR = R1 = (float ) 0.756863; RG = R2 = 1.000000; RB = R3 = (float ) 0.756863;
-       break;
-       case Quantity_NOC_DARKSEAGREEN2 :
-               RR = R1 = (float ) 0.705882; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_DARKSEAGREEN3 :
-               RR = R1 = (float ) 0.607843; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.607843;
-       break;
-       case Quantity_NOC_DARKSEAGREEN4 :
-               RR = R1 = (float ) 0.411765; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.411765;
-       break;
-       case Quantity_NOC_DARKSLATEBLUE :
-               RR = R1 = (float ) 0.282353; RG = R2 = (float ) 0.239216; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_DARKSLATEGRAY1 :
-               RR = R1 = (float ) 0.592157; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_DARKSLATEGRAY2 :
-               RR = R1 = (float ) 0.552941; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_DARKSLATEGRAY3 :
-               RR = R1 = (float ) 0.474510; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_DARKSLATEGRAY4 :
-               RR = R1 = (float ) 0.321569; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_DARKSLATEGRAY :
-               RR = R1 = (float ) 0.184314; RG = R2 = (float ) 0.309804; RB = R3 = (float ) 0.309804;
-       break;
-       case Quantity_NOC_DARKTURQUOISE :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.807843; RB = R3 = (float ) 0.819608;
-       break;
-       case Quantity_NOC_DARKVIOLET :
-               RR = R1 = (float ) 0.580392; RG = R2 = 0.000000; RB = R3 = (float ) 0.827451;
-       break;
-       case Quantity_NOC_DEEPPINK :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.078431; RB = R3 = (float ) 0.576471;
-       break;
-       case Quantity_NOC_DEEPPINK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.070588; RB = R3 = (float ) 0.537255;
-       break;
-       case Quantity_NOC_DEEPPINK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.062745; RB = R3 = (float ) 0.462745;
-       break;
-       case Quantity_NOC_DEEPPINK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.039216; RB = R3 = (float ) 0.313725;
-       break;
-       case Quantity_NOC_DEEPSKYBLUE1 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.749020; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_DEEPSKYBLUE2 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.698039; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_DEEPSKYBLUE3 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.603922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_DEEPSKYBLUE4 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.407843; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_DODGERBLUE1 :
-               RR = R1 = (float ) 0.117647; RG = R2 = (float ) 0.564706; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_DODGERBLUE2 :
-               RR = R1 = (float ) 0.109804; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_DODGERBLUE3 :
-               RR = R1 = (float ) 0.094118; RG = R2 = (float ) 0.454902; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_DODGERBLUE4 :
-               RR = R1 = (float ) 0.062745; RG = R2 = (float ) 0.305882; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_FIREBRICK :
-               RR = R1 = (float ) 0.698039; RG = R2 = (float ) 0.133333; RB = R3 = (float ) 0.133333;
-       break;
-       case Quantity_NOC_FIREBRICK1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.188235; RB = R3 = (float ) 0.188235;
-       break;
-       case Quantity_NOC_FIREBRICK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.172549; RB = R3 = (float ) 0.172549;
-       break;
-       case Quantity_NOC_FIREBRICK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.149020; RB = R3 = (float ) 0.149020;
-       break;
-       case Quantity_NOC_FIREBRICK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.101961; RB = R3 = (float ) 0.101961;
-       break;
-       case Quantity_NOC_FLORALWHITE :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.941176;
-       break;
-       case Quantity_NOC_FORESTGREEN :
-               RR = R1 = (float ) 0.133333; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.133333;
-       break;
-       case Quantity_NOC_GAINSBORO :
-               RR = R1 = (float ) 0.862745; RG = R2 = (float ) 0.862745; RB = R3 = (float ) 0.862745;
-       break;
-       case Quantity_NOC_GHOSTWHITE :
-               RR = R1 = (float ) 0.972549; RG = R2 = (float ) 0.972549; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_GOLD :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.843137; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GOLD1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.843137; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GOLD2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.788235; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GOLD3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.678431; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GOLD4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.458824; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GOLDENROD :
-               RR = R1 = (float ) 0.854902; RG = R2 = (float ) 0.647059; RB = R3 = (float ) 0.125490;
-       break;
-       case Quantity_NOC_GOLDENROD1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.756863; RB = R3 = (float ) 0.145098;
-       break;
-       case Quantity_NOC_GOLDENROD2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.705882; RB = R3 = (float ) 0.133333;
-       break;
-       case Quantity_NOC_GOLDENROD3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.607843; RB = R3 = (float ) 0.113725;
-       break;
-       case Quantity_NOC_GOLDENROD4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.078431;
-       break;
-       case Quantity_NOC_GRAY :
-               RR = R1 = (float ) 0.752941; RG = R2 = (float ) 0.752941; RB = R3 = (float ) 0.752941;
-       break;
-       case Quantity_NOC_GRAY0 :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GRAY1 :
-               RR = R1 = (float ) 0.011765; RG = R2 = (float ) 0.011765; RB = R3 = (float ) 0.011765;
-       break;
-       case Quantity_NOC_GRAY10 :
-               RR = R1 = (float ) 0.101961; RG = R2 = (float ) 0.101961; RB = R3 = (float ) 0.101961;
-       break;
-       case Quantity_NOC_GRAY11 :
-               RR = R1 = (float ) 0.109804; RG = R2 = (float ) 0.109804; RB = R3 = (float ) 0.109804;
-       break;
-       case Quantity_NOC_GRAY12 :
-               RR = R1 = (float ) 0.121569; RG = R2 = (float ) 0.121569; RB = R3 = (float ) 0.121569;
-       break;
-       case Quantity_NOC_GRAY13 :
-               RR = R1 = (float ) 0.129412; RG = R2 = (float ) 0.129412; RB = R3 = (float ) 0.129412;
-       break;
-       case Quantity_NOC_GRAY14 :
-               RR = R1 = (float ) 0.141176; RG = R2 = (float ) 0.141176; RB = R3 = (float ) 0.141176;
-       break;
-       case Quantity_NOC_GRAY15 :
-               RR = R1 = (float ) 0.149020; RG = R2 = (float ) 0.149020; RB = R3 = (float ) 0.149020;
-       break;
-       case Quantity_NOC_GRAY16 :
-               RR = R1 = (float ) 0.160784; RG = R2 = (float ) 0.160784; RB = R3 = (float ) 0.160784;
-       break;
-       case Quantity_NOC_GRAY17 :
-               RR = R1 = (float ) 0.168627; RG = R2 = (float ) 0.168627; RB = R3 = (float ) 0.168627;
-       break;
-       case Quantity_NOC_GRAY18 :
-               RR = R1 = (float ) 0.180392; RG = R2 = (float ) 0.180392; RB = R3 = (float ) 0.180392;
-       break;
-       case Quantity_NOC_GRAY19 :
-               RR = R1 = (float ) 0.188235; RG = R2 = (float ) 0.188235; RB = R3 = (float ) 0.188235;
-       break;
-       case Quantity_NOC_GRAY2 :
-               RR = R1 = (float ) 0.019608; RG = R2 = (float ) 0.019608; RB = R3 = (float ) 0.019608;
-       break;
-       case Quantity_NOC_GRAY20 :
-               RR = R1 = (float ) 0.200000; RG = R2 = (float ) 0.200000; RB = R3 = (float ) 0.200000;
-       break;
-       case Quantity_NOC_GRAY21 :
-               RR = R1 = (float ) 0.211765; RG = R2 = (float ) 0.211765; RB = R3 = (float ) 0.211765;
-       break;
-       case Quantity_NOC_GRAY22 :
-               RR = R1 = (float ) 0.219608; RG = R2 = (float ) 0.219608; RB = R3 = (float ) 0.219608;
-       break;
-       case Quantity_NOC_GRAY23 :
-               RR = R1 = (float ) 0.231373; RG = R2 = (float ) 0.231373; RB = R3 = (float ) 0.231373;
-       break;
-       case Quantity_NOC_GRAY24 :
-               RR = R1 = (float ) 0.239216; RG = R2 = (float ) 0.239216; RB = R3 = (float ) 0.239216;
-       break;
-       case Quantity_NOC_GRAY25 :
-               RR = R1 = (float ) 0.250980; RG = R2 = (float ) 0.250980; RB = R3 = (float ) 0.250980;
-       break;
-       case Quantity_NOC_GRAY26 :
-               RR = R1 = (float ) 0.258824; RG = R2 = (float ) 0.258824; RB = R3 = (float ) 0.258824;
-       break;
-       case Quantity_NOC_GRAY27 :
-               RR = R1 = (float ) 0.270588; RG = R2 = (float ) 0.270588; RB = R3 = (float ) 0.270588;
-       break;
-       case Quantity_NOC_GRAY28 :
-               RR = R1 = (float ) 0.278431; RG = R2 = (float ) 0.278431; RB = R3 = (float ) 0.278431;
-       break;
-       case Quantity_NOC_GRAY29 :
-               RR = R1 = (float ) 0.290196; RG = R2 = (float ) 0.290196; RB = R3 = (float ) 0.290196;
-       break;
-       case Quantity_NOC_GRAY3 :
-               RR = R1 = (float ) 0.031373; RG = R2 = (float ) 0.031373; RB = R3 = (float ) 0.031373;
-       break;
-       case Quantity_NOC_GRAY30 :
-               RR = R1 = (float ) 0.301961; RG = R2 = (float ) 0.301961; RB = R3 = (float ) 0.301961;
-       break;
-       case Quantity_NOC_GRAY31 :
-               RR = R1 = (float ) 0.309804; RG = R2 = (float ) 0.309804; RB = R3 = (float ) 0.309804;
-       break;
-       case Quantity_NOC_GRAY32 :
-               RR = R1 = (float ) 0.321569; RG = R2 = (float ) 0.321569; RB = R3 = (float ) 0.321569;
-       break;
-       case Quantity_NOC_GRAY33 :
-               RR = R1 = (float ) 0.329412; RG = R2 = (float ) 0.329412; RB = R3 = (float ) 0.329412;
-       break;
-       case Quantity_NOC_GRAY34 :
-               RR = R1 = (float ) 0.341176; RG = R2 = (float ) 0.341176; RB = R3 = (float ) 0.341176;
-       break;
-       case Quantity_NOC_GRAY35 :
-               RR = R1 = (float ) 0.349020; RG = R2 = (float ) 0.349020; RB = R3 = (float ) 0.349020;
-       break;
-       case Quantity_NOC_GRAY36 :
-               RR = R1 = (float ) 0.360784; RG = R2 = (float ) 0.360784; RB = R3 = (float ) 0.360784;
-       break;
-       case Quantity_NOC_GRAY37 :
-               RR = R1 = (float ) 0.368627; RG = R2 = (float ) 0.368627; RB = R3 = (float ) 0.368627;
-       break;
-       case Quantity_NOC_GRAY38 :
-               RR = R1 = (float ) 0.380392; RG = R2 = (float ) 0.380392; RB = R3 = (float ) 0.380392;
-       break;
-       case Quantity_NOC_GRAY39 :
-               RR = R1 = (float ) 0.388235; RG = R2 = (float ) 0.388235; RB = R3 = (float ) 0.388235;
-       break;
-       case Quantity_NOC_GRAY4 :
-               RR = R1 = (float ) 0.039216; RG = R2 = (float ) 0.039216; RB = R3 = (float ) 0.039216;
-       break;
-       case Quantity_NOC_GRAY40 :
-               RR = R1 = (float ) 0.400000; RG = R2 = (float ) 0.400000; RB = R3 = (float ) 0.400000;
-       break;
-       case Quantity_NOC_GRAY41 :
-               RR = R1 = (float ) 0.411765; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.411765;
-       break;
-       case Quantity_NOC_GRAY42 :
-               RR = R1 = (float ) 0.419608; RG = R2 = (float ) 0.419608; RB = R3 = (float ) 0.419608;
-       break;
-       case Quantity_NOC_GRAY43 :
-               RR = R1 = (float ) 0.431373; RG = R2 = (float ) 0.431373; RB = R3 = (float ) 0.431373;
-       break;
-       case Quantity_NOC_GRAY44 :
-               RR = R1 = (float ) 0.439216; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.439216;
-       break;
-       case Quantity_NOC_GRAY45 :
-               RR = R1 = (float ) 0.450980; RG = R2 = (float ) 0.450980; RB = R3 = (float ) 0.450980;
-       break;
-       case Quantity_NOC_GRAY46 :
-               RR = R1 = (float ) 0.458824; RG = R2 = (float ) 0.458824; RB = R3 = (float ) 0.458824;
-       break;
-       case Quantity_NOC_GRAY47 :
-               RR = R1 = (float ) 0.470588; RG = R2 = (float ) 0.470588; RB = R3 = (float ) 0.470588;
-       break;
-       case Quantity_NOC_GRAY48 :
-               RR = R1 = (float ) 0.478431; RG = R2 = (float ) 0.478431; RB = R3 = (float ) 0.478431;
-       break;
-       case Quantity_NOC_GRAY49 :
-               RR = R1 = (float ) 0.490196; RG = R2 = (float ) 0.490196; RB = R3 = (float ) 0.490196;
-       break;
-       case Quantity_NOC_GRAY5 :
-               RR = R1 = (float ) 0.050980; RG = R2 = (float ) 0.050980; RB = R3 = (float ) 0.050980;
-       break;
-       case Quantity_NOC_GRAY50 :
-               RR = R1 = (float ) 0.498039; RG = R2 = (float ) 0.498039; RB = R3 = (float ) 0.498039;
-       break;
-       case Quantity_NOC_GRAY51 :
-               RR = R1 = (float ) 0.509804; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.509804;
-       break;
-       case Quantity_NOC_GRAY52 :
-               RR = R1 = (float ) 0.521569; RG = R2 = (float ) 0.521569; RB = R3 = (float ) 0.521569;
-       break;
-       case Quantity_NOC_GRAY53 :
-               RR = R1 = (float ) 0.529412; RG = R2 = (float ) 0.529412; RB = R3 = (float ) 0.529412;
-       break;
-       case Quantity_NOC_GRAY54 :
-               RR = R1 = (float ) 0.541176; RG = R2 = (float ) 0.541176; RB = R3 = (float ) 0.541176;
-       break;
-       case Quantity_NOC_GRAY55 :
-               RR = R1 = (float ) 0.549020; RG = R2 = (float ) 0.549020; RB = R3 = (float ) 0.549020;
-       break;
-       case Quantity_NOC_GRAY56 :
-               RR = R1 = (float ) 0.560784; RG = R2 = (float ) 0.560784; RB = R3 = (float ) 0.560784;
-       break;
-       case Quantity_NOC_GRAY57 :
-               RR = R1 = (float ) 0.568627; RG = R2 = (float ) 0.568627; RB = R3 = (float ) 0.568627;
-       break;
-       case Quantity_NOC_GRAY58 :
-               RR = R1 = (float ) 0.580392; RG = R2 = (float ) 0.580392; RB = R3 = (float ) 0.580392;
-       break;
-       case Quantity_NOC_GRAY59 :
-               RR = R1 = (float ) 0.588235; RG = R2 = (float ) 0.588235; RB = R3 = (float ) 0.588235;
-       break;
-       case Quantity_NOC_GRAY6 :
-               RR = R1 = (float ) 0.058824; RG = R2 = (float ) 0.058824; RB = R3 = (float ) 0.058824;
-       break;
-       case Quantity_NOC_GRAY60 :
-               RR = R1 = (float ) 0.600000; RG = R2 = (float ) 0.600000; RB = R3 = (float ) 0.600000;
-       break;
-       case Quantity_NOC_GRAY61 :
-               RR = R1 = (float ) 0.611765; RG = R2 = (float ) 0.611765; RB = R3 = (float ) 0.611765;
-       break;
-       case Quantity_NOC_GRAY62 :
-               RR = R1 = (float ) 0.619608; RG = R2 = (float ) 0.619608; RB = R3 = (float ) 0.619608;
-       break;
-       case Quantity_NOC_GRAY63 :
-               RR = R1 = (float ) 0.631373; RG = R2 = (float ) 0.631373; RB = R3 = (float ) 0.631373;
-       break;
-       case Quantity_NOC_GRAY64 :
-               RR = R1 = (float ) 0.639216; RG = R2 = (float ) 0.639216; RB = R3 = (float ) 0.639216;
-       break;
-       case Quantity_NOC_GRAY65 :
-               RR = R1 = (float ) 0.650980; RG = R2 = (float ) 0.650980; RB = R3 = (float ) 0.650980;
-       break;
-       case Quantity_NOC_GRAY66 :
-               RR = R1 = (float ) 0.658824; RG = R2 = (float ) 0.658824; RB = R3 = (float ) 0.658824;
-       break;
-       case Quantity_NOC_GRAY67 :
-               RR = R1 = (float ) 0.670588; RG = R2 = (float ) 0.670588; RB = R3 = (float ) 0.670588;
-       break;
-       case Quantity_NOC_GRAY68 :
-               RR = R1 = (float ) 0.678431; RG = R2 = (float ) 0.678431; RB = R3 = (float ) 0.678431;
-       break;
-       case Quantity_NOC_GRAY69 :
-               RR = R1 = (float ) 0.690196; RG = R2 = (float ) 0.690196; RB = R3 = (float ) 0.690196;
-       break;
-       case Quantity_NOC_GRAY7 :
-               RR = R1 = (float ) 0.070588; RG = R2 = (float ) 0.070588; RB = R3 = (float ) 0.070588;
-       break;
-       case Quantity_NOC_GRAY70 :
-               RR = R1 = (float ) 0.701961; RG = R2 = (float ) 0.701961; RB = R3 = (float ) 0.701961;
-       break;
-       case Quantity_NOC_GRAY71 :
-               RR = R1 = (float ) 0.709804; RG = R2 = (float ) 0.709804; RB = R3 = (float ) 0.709804;
-       break;
-       case Quantity_NOC_GRAY72 :
-               RR = R1 = (float ) 0.721569; RG = R2 = (float ) 0.721569; RB = R3 = (float ) 0.721569;
-       break;
-       case Quantity_NOC_GRAY73 :
-               RR = R1 = (float ) 0.729412; RG = R2 = (float ) 0.729412; RB = R3 = (float ) 0.729412;
-       break;
-       case Quantity_NOC_GRAY74 :
-               RR = R1 = (float ) 0.741176; RG = R2 = (float ) 0.741176; RB = R3 = (float ) 0.741176;
-       break;
-       case Quantity_NOC_GRAY75 :
-               RR = R1 = (float ) 0.749020; RG = R2 = (float ) 0.749020; RB = R3 = (float ) 0.749020;
-       break;
-       case Quantity_NOC_GRAY76 :
-               RR = R1 = (float ) 0.760784; RG = R2 = (float ) 0.760784; RB = R3 = (float ) 0.760784;
-       break;
-       case Quantity_NOC_GRAY77 :
-               RR = R1 = (float ) 0.768627; RG = R2 = (float ) 0.768627; RB = R3 = (float ) 0.768627;
-       break;
-       case Quantity_NOC_GRAY78 :
-               RR = R1 = (float ) 0.780392; RG = R2 = (float ) 0.780392; RB = R3 = (float ) 0.780392;
-       break;
-       case Quantity_NOC_GRAY79 :
-               RR = R1 = (float ) 0.788235; RG = R2 = (float ) 0.788235; RB = R3 = (float ) 0.788235;
-       break;
-       case Quantity_NOC_GRAY8 :
-               RR = R1 = (float ) 0.078431; RG = R2 = (float ) 0.078431; RB = R3 = (float ) 0.078431;
-       break;
-       case Quantity_NOC_GRAY80 :
-               RR = R1 = (float ) 0.800000; RG = R2 = (float ) 0.800000; RB = R3 = (float ) 0.800000;
-       break;
-       case Quantity_NOC_GRAY81 :
-               RR = R1 = (float ) 0.811765; RG = R2 = (float ) 0.811765; RB = R3 = (float ) 0.811765;
-       break;
-       case Quantity_NOC_GRAY82 :
-               RR = R1 = (float ) 0.819608; RG = R2 = (float ) 0.819608; RB = R3 = (float ) 0.819608;
-       break;
-       case Quantity_NOC_GRAY83 :
-               RR = R1 = (float ) 0.831373; RG = R2 = (float ) 0.831373; RB = R3 = (float ) 0.831373;
-       break;
-       case Quantity_NOC_GRAY85 :
-               RR = R1 = (float ) 0.850980; RG = R2 = (float ) 0.850980; RB = R3 = (float ) 0.850980;
-       break;
-       case Quantity_NOC_GRAY86 :
-               RR = R1 = (float ) 0.858824; RG = R2 = (float ) 0.858824; RB = R3 = (float ) 0.858824;
-       break;
-       case Quantity_NOC_GRAY87 :
-               RR = R1 = (float ) 0.870588; RG = R2 = (float ) 0.870588; RB = R3 = (float ) 0.870588;
-       break;
-       case Quantity_NOC_GRAY88 :
-               RR = R1 = (float ) 0.878431; RG = R2 = (float ) 0.878431; RB = R3 = (float ) 0.878431;
-       break;
-       case Quantity_NOC_GRAY89 :
-               RR = R1 = (float ) 0.890196; RG = R2 = (float ) 0.890196; RB = R3 = (float ) 0.890196;
-       break;
-       case Quantity_NOC_GRAY9 :
-               RR = R1 = (float ) 0.090196; RG = R2 = (float ) 0.090196; RB = R3 = (float ) 0.090196;
-       break;
-       case Quantity_NOC_GRAY90 :
-               RR = R1 = (float ) 0.898039; RG = R2 = (float ) 0.898039; RB = R3 = (float ) 0.898039;
-       break;
-       case Quantity_NOC_GRAY91 :
-               RR = R1 = (float ) 0.909804; RG = R2 = (float ) 0.909804; RB = R3 = (float ) 0.909804;
-       break;
-       case Quantity_NOC_GRAY92 :
-               RR = R1 = (float ) 0.921569; RG = R2 = (float ) 0.921569; RB = R3 = (float ) 0.921569;
-       break;
-       case Quantity_NOC_GRAY93 :
-               RR = R1 = (float ) 0.929412; RG = R2 = (float ) 0.929412; RB = R3 = (float ) 0.929412;
-       break;
-       case Quantity_NOC_GRAY94 :
-               RR = R1 = (float ) 0.941176; RG = R2 = (float ) 0.941176; RB = R3 = (float ) 0.941176;
-       break;
-       case Quantity_NOC_GRAY95 :
-               RR = R1 = (float ) 0.949020; RG = R2 = (float ) 0.949020; RB = R3 = (float ) 0.949020;
-       break;
-       case Quantity_NOC_GREEN :
-               RR = R1 = 0.000000; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GREEN1 :
-               RR = R1 = 0.000000; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GREEN2 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.933333; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GREEN3 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.803922; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GREEN4 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.545098; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_GREENYELLOW :
-               RR = R1 = (float ) 0.678431; RG = R2 = 1.000000; RB = R3 = (float ) 0.184314;
-       break;
-       case Quantity_NOC_GRAY97 :
-               RR = R1 = (float ) 0.968627; RG = R2 = (float ) 0.968627; RB = R3 = (float ) 0.968627;
-       break;
-       case Quantity_NOC_GRAY98 :
-               RR = R1 = (float ) 0.980392; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_GRAY99 :
-               RR = R1 = (float ) 0.988235; RG = R2 = (float ) 0.988235; RB = R3 = (float ) 0.988235;
-       break;
-       case Quantity_NOC_HONEYDEW :
-               RR = R1 = (float ) 0.941176; RG = R2 = 1.000000; RB = R3 = (float ) 0.941176;
-       break;
-       case Quantity_NOC_HONEYDEW2 :
-               RR = R1 = (float ) 0.878431; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.878431;
-       break;
-       case Quantity_NOC_HONEYDEW3 :
-               RR = R1 = (float ) 0.756863; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.756863;
-       break;
-       case Quantity_NOC_HONEYDEW4 :
-               RR = R1 = (float ) 0.513725; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.513725;
-       break;
-       case Quantity_NOC_HOTPINK :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_HOTPINK1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.431373; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_HOTPINK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.415686; RB = R3 = (float ) 0.654902;
-       break;
-       case Quantity_NOC_HOTPINK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.376471; RB = R3 = (float ) 0.564706;
-       break;
-       case Quantity_NOC_HOTPINK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.227451; RB = R3 = (float ) 0.384314;
-       break;
-       case Quantity_NOC_INDIANRED :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.360784; RB = R3 = (float ) 0.360784;
-       break;
-       case Quantity_NOC_INDIANRED1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.415686; RB = R3 = (float ) 0.415686;
-       break;
-       case Quantity_NOC_INDIANRED2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.388235; RB = R3 = (float ) 0.388235;
-       break;
-       case Quantity_NOC_INDIANRED3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.333333; RB = R3 = (float ) 0.333333;
-       break;
-       case Quantity_NOC_INDIANRED4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.227451; RB = R3 = (float ) 0.227451;
-       break;
-       case Quantity_NOC_IVORY :
-               RR = R1 = 1.000000; RG = R2 = 1.000000; RB = R3 = (float ) 0.941176;
-       break;
-       case Quantity_NOC_IVORY2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.878431;
-       break;
-       case Quantity_NOC_IVORY3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.756863;
-       break;
-       case Quantity_NOC_IVORY4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.513725;
-       break;
-       case Quantity_NOC_KHAKI :
-               RR = R1 = (float ) 0.941176; RG = R2 = (float ) 0.901961; RB = R3 = (float ) 0.549020;
-       break;
-       case Quantity_NOC_KHAKI1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.964706; RB = R3 = (float ) 0.560784;
-       break;
-       case Quantity_NOC_KHAKI2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.901961; RB = R3 = (float ) 0.521569;
-       break;
-       case Quantity_NOC_KHAKI3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.776471; RB = R3 = (float ) 0.450980;
-       break;
-       case Quantity_NOC_KHAKI4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.305882;
-       break;
-       case Quantity_NOC_LAVENDER :
-               RR = R1 = (float ) 0.901961; RG = R2 = (float ) 0.901961; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_LAVENDERBLUSH1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.941176; RB = R3 = (float ) 0.960784;
-       break;
-       case Quantity_NOC_LAVENDERBLUSH2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.878431; RB = R3 = (float ) 0.898039;
-       break;
-       case Quantity_NOC_LAVENDERBLUSH3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.756863; RB = R3 = (float ) 0.772549;
-       break;
-       case Quantity_NOC_LAVENDERBLUSH4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.513725; RB = R3 = (float ) 0.525490;
-       break;
-       case Quantity_NOC_LAWNGREEN :
-               RR = R1 = (float ) 0.486275; RG = R2 = (float ) 0.988235; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_LEMONCHIFFON1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_LEMONCHIFFON2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.913725; RB = R3 = (float ) 0.749020;
-       break;
-       case Quantity_NOC_LEMONCHIFFON3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.788235; RB = R3 = (float ) 0.647059;
-       break;
-       case Quantity_NOC_LEMONCHIFFON4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.537255; RB = R3 = (float ) 0.439216;
-       break;
-       case Quantity_NOC_LIGHTBLUE :
-               RR = R1 = (float ) 0.678431; RG = R2 = (float ) 0.847059; RB = R3 = (float ) 0.901961;
-       break;
-       case Quantity_NOC_LIGHTBLUE1 :
-               RR = R1 = (float ) 0.749020; RG = R2 = (float ) 0.937255; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_LIGHTBLUE2 :
-               RR = R1 = (float ) 0.698039; RG = R2 = (float ) 0.874510; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_LIGHTBLUE3 :
-               RR = R1 = (float ) 0.603922; RG = R2 = (float ) 0.752941; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_LIGHTBLUE4 :
-               RR = R1 = (float ) 0.407843; RG = R2 = (float ) 0.513725; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_LIGHTCORAL :
-               RR = R1 = (float ) 0.941176; RG = R2 = (float ) 0.501961; RB = R3 = (float ) 0.501961;
-       break;
-       case Quantity_NOC_LIGHTCYAN1 :
-               RR = R1 = (float ) 0.878431; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_LIGHTCYAN2 :
-               RR = R1 = (float ) 0.819608; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_LIGHTCYAN3 :
-               RR = R1 = (float ) 0.705882; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_LIGHTCYAN4 :
-               RR = R1 = (float ) 0.478431; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.866667; RB = R3 = (float ) 0.509804;
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.925490; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.862745; RB = R3 = (float ) 0.509804;
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.745098; RB = R3 = (float ) 0.439216;
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.505882; RB = R3 = (float ) 0.298039;
-       break;
-       case Quantity_NOC_LIGHTGOLDENRODYELLOW :
-               RR = R1 = (float ) 0.980392; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.823529;
-       break;
-       case Quantity_NOC_LIGHTGRAY :
-               RR = R1 = (float ) 0.827451; RG = R2 = (float ) 0.827451; RB = R3 = (float ) 0.827451;
-       break;
-       case Quantity_NOC_LIGHTPINK :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.713725; RB = R3 = (float ) 0.756863;
-       break;
-       case Quantity_NOC_LIGHTPINK1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.682353; RB = R3 = (float ) 0.725490;
-       break;
-       case Quantity_NOC_LIGHTPINK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.635294; RB = R3 = (float ) 0.678431;
-       break;
-       case Quantity_NOC_LIGHTPINK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.549020; RB = R3 = (float ) 0.584314;
-       break;
-       case Quantity_NOC_LIGHTPINK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.372549; RB = R3 = (float ) 0.396078;
-       break;
-       case Quantity_NOC_LIGHTSALMON1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.627451; RB = R3 = (float ) 0.478431;
-       break;
-       case Quantity_NOC_LIGHTSALMON2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.584314; RB = R3 = (float ) 0.447059;
-       break;
-       case Quantity_NOC_LIGHTSALMON3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.505882; RB = R3 = (float ) 0.384314;
-       break;
-       case Quantity_NOC_LIGHTSALMON4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.341176; RB = R3 = (float ) 0.258824;
-       break;
-       case Quantity_NOC_LIGHTSEAGREEN :
-               RR = R1 = (float ) 0.125490; RG = R2 = (float ) 0.698039; RB = R3 = (float ) 0.666667;
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE :
-               RR = R1 = (float ) 0.529412; RG = R2 = (float ) 0.807843; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE1 :
-               RR = R1 = (float ) 0.690196; RG = R2 = (float ) 0.886275; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE2 :
-               RR = R1 = (float ) 0.643137; RG = R2 = (float ) 0.827451; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE3 :
-               RR = R1 = (float ) 0.552941; RG = R2 = (float ) 0.713725; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE4 :
-               RR = R1 = (float ) 0.376471; RG = R2 = (float ) 0.482353; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_LIGHTSLATEBLUE :
-               RR = R1 = (float ) 0.517647; RG = R2 = (float ) 0.439216; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_LIGHTSLATEGRAY :
-               RR = R1 = (float ) 0.466667; RG = R2 = (float ) 0.533333; RB = R3 = (float ) 0.600000;
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE :
-               RR = R1 = (float ) 0.690196; RG = R2 = (float ) 0.768627; RB = R3 = (float ) 0.870588;
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE1 :
-               RR = R1 = (float ) 0.792157; RG = R2 = (float ) 0.882353; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE2 :
-               RR = R1 = (float ) 0.737255; RG = R2 = (float ) 0.823529; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE3 :
-               RR = R1 = (float ) 0.635294; RG = R2 = (float ) 0.709804; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE4 :
-               RR = R1 = (float ) 0.431373; RG = R2 = (float ) 0.482353; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_LIGHTYELLOW :
-               RR = R1 = 1.000000; RG = R2 = 1.000000; RB = R3 = (float ) 0.878431;
-       break;
-       case Quantity_NOC_LIGHTYELLOW2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.819608;
-       break;
-       case Quantity_NOC_LIGHTYELLOW3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_LIGHTYELLOW4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.478431;
-       break;
-       case Quantity_NOC_LIMEGREEN :
-               RR = R1 = (float ) 0.196078; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.196078;
-       break;
-       case Quantity_NOC_LINEN :
-               RR = R1 = (float ) 0.980392; RG = R2 = (float ) 0.941176; RB = R3 = (float ) 0.901961;
-       break;
-       case Quantity_NOC_MAGENTA1 :
-               RR = R1 = 1.000000; RG = R2 = 0.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_MAGENTA2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = 0.000000; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_MAGENTA3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = 0.000000; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_MAGENTA4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = 0.000000; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_MAROON :
-               RR = R1 = (float ) 0.690196; RG = R2 = (float ) 0.188235; RB = R3 = (float ) 0.376471;
-       break;
-       case Quantity_NOC_MAROON1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.203922; RB = R3 = (float ) 0.701961;
-       break;
-       case Quantity_NOC_MAROON2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.188235; RB = R3 = (float ) 0.654902;
-       break;
-       case Quantity_NOC_MAROON3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.160784; RB = R3 = (float ) 0.564706;
-       break;
-       case Quantity_NOC_MAROON4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.109804; RB = R3 = (float ) 0.384314;
-       break;
-       case Quantity_NOC_MEDIUMAQUAMARINE :
-               RR = R1 = (float ) 0.400000; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.666667;
-       break;
-       case Quantity_NOC_MEDIUMORCHID :
-               RR = R1 = (float ) 0.729412; RG = R2 = (float ) 0.333333; RB = R3 = (float ) 0.827451;
-       break;
-       case Quantity_NOC_MEDIUMORCHID1 :
-               RR = R1 = (float ) 0.878431; RG = R2 = (float ) 0.400000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_MEDIUMORCHID2 :
-               RR = R1 = (float ) 0.819608; RG = R2 = (float ) 0.372549; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_MEDIUMORCHID3 :
-               RR = R1 = (float ) 0.705882; RG = R2 = (float ) 0.321569; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_MEDIUMORCHID4 :
-               RR = R1 = (float ) 0.478431; RG = R2 = (float ) 0.215686; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_MEDIUMPURPLE :
-               RR = R1 = (float ) 0.576471; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.858824;
-       break;
-       case Quantity_NOC_MEDIUMPURPLE1 :
-               RR = R1 = (float ) 0.670588; RG = R2 = (float ) 0.509804; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_MEDIUMPURPLE2 :
-               RR = R1 = (float ) 0.623529; RG = R2 = (float ) 0.474510; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_MEDIUMPURPLE3 :
-               RR = R1 = (float ) 0.537255; RG = R2 = (float ) 0.407843; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_MEDIUMPURPLE4 :
-               RR = R1 = (float ) 0.364706; RG = R2 = (float ) 0.278431; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_MEDIUMSEAGREEN :
-               RR = R1 = (float ) 0.235294; RG = R2 = (float ) 0.701961; RB = R3 = (float ) 0.443137;
-       break;
-       case Quantity_NOC_MEDIUMSLATEBLUE :
-               RR = R1 = (float ) 0.482353; RG = R2 = (float ) 0.407843; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_MEDIUMSPRINGGREEN :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.603922;
-       break;
-       case Quantity_NOC_MEDIUMTURQUOISE :
-               RR = R1 = (float ) 0.282353; RG = R2 = (float ) 0.819608; RB = R3 = (float ) 0.800000;
-       break;
-       case Quantity_NOC_MEDIUMVIOLETRED :
-               RR = R1 = (float ) 0.780392; RG = R2 = (float ) 0.082353; RB = R3 = (float ) 0.521569;
-       break;
-       case Quantity_NOC_MIDNIGHTBLUE :
-               RR = R1 = (float ) 0.098039; RG = R2 = (float ) 0.098039; RB = R3 = (float ) 0.439216;
-       break;
-       case Quantity_NOC_MINTCREAM :
-               RR = R1 = (float ) 0.960784; RG = R2 = 1.000000; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_MISTYROSE :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.894118; RB = R3 = (float ) 0.882353;
-       break;
-       case Quantity_NOC_MISTYROSE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.835294; RB = R3 = (float ) 0.823529;
-       break;
-       case Quantity_NOC_MISTYROSE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.717647; RB = R3 = (float ) 0.709804;
-       break;
-       case Quantity_NOC_MISTYROSE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.490196; RB = R3 = (float ) 0.482353;
-       break;
-       case Quantity_NOC_MOCCASIN :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.894118; RB = R3 = (float ) 0.709804;
-       break;
-       case Quantity_NOC_NAVAJOWHITE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.870588; RB = R3 = (float ) 0.678431;
-       break;
-       case Quantity_NOC_NAVAJOWHITE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.811765; RB = R3 = (float ) 0.631373;
-       break;
-       case Quantity_NOC_NAVAJOWHITE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.701961; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_NAVAJOWHITE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.474510; RB = R3 = (float ) 0.368627;
-       break;
-       case Quantity_NOC_NAVYBLUE :
-               RR = R1 = 0.000000; RG = R2 = 0.000000; RB = R3 = (float ) 0.501961;
-       break;
-       case Quantity_NOC_OLDLACE :
-               RR = R1 = (float ) 0.992157; RG = R2 = (float ) 0.960784; RB = R3 = (float ) 0.901961;
-       break;
-       case Quantity_NOC_OLIVEDRAB :
-               RR = R1 = (float ) 0.419608; RG = R2 = (float ) 0.556863; RB = R3 = (float ) 0.137255;
-       break;
-       case Quantity_NOC_OLIVEDRAB1 :
-               RR = R1 = (float ) 0.752941; RG = R2 = 1.000000; RB = R3 = (float ) 0.243137;
-       break;
-       case Quantity_NOC_OLIVEDRAB2 :
-               RR = R1 = (float ) 0.701961; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.227451;
-       break;
-       case Quantity_NOC_OLIVEDRAB3 :
-               RR = R1 = (float ) 0.603922; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.196078;
-       break;
-       case Quantity_NOC_OLIVEDRAB4 :
-               RR = R1 = (float ) 0.411765; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.133333;
-       break;
-       case Quantity_NOC_ORANGE :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.647059; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.647059; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.603922; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.521569; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.352941; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGERED :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.270588; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGERED1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.270588; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGERED2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.250980; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGERED3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.215686; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORANGERED4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.145098; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ORCHID :
-               RR = R1 = (float ) 0.854902; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.839216;
-       break;
-       case Quantity_NOC_ORCHID1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.513725; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_ORCHID2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.478431; RB = R3 = (float ) 0.913725;
-       break;
-       case Quantity_NOC_ORCHID3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.788235;
-       break;
-       case Quantity_NOC_ORCHID4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.278431; RB = R3 = (float ) 0.537255;
-       break;
-       case Quantity_NOC_PALEGOLDENROD :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.909804; RB = R3 = (float ) 0.666667;
-       break;
-       case Quantity_NOC_PALEGREEN :
-               RR = R1 = (float ) 0.596078; RG = R2 = (float ) 0.984314; RB = R3 = (float ) 0.596078;
-       break;
-       case Quantity_NOC_PALEGREEN1 :
-               RR = R1 = (float ) 0.603922; RG = R2 = 1.000000; RB = R3 = (float ) 0.603922;
-       break;
-       case Quantity_NOC_PALEGREEN2 :
-               RR = R1 = (float ) 0.564706; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.564706;
-       break;
-       case Quantity_NOC_PALEGREEN3 :
-               RR = R1 = (float ) 0.486275; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.486275;
-       break;
-       case Quantity_NOC_PALEGREEN4 :
-               RR = R1 = (float ) 0.329412; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.329412;
-       break;
-       case Quantity_NOC_PALETURQUOISE :
-               RR = R1 = (float ) 0.686275; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_PALETURQUOISE1 :
-               RR = R1 = (float ) 0.733333; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_PALETURQUOISE2 :
-               RR = R1 = (float ) 0.682353; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_PALETURQUOISE3 :
-               RR = R1 = (float ) 0.588235; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_PALETURQUOISE4 :
-               RR = R1 = (float ) 0.400000; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_PALEVIOLETRED :
-               RR = R1 = (float ) 0.858824; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.576471;
-       break;
-       case Quantity_NOC_PALEVIOLETRED1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.670588;
-       break;
-       case Quantity_NOC_PALEVIOLETRED2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.474510; RB = R3 = (float ) 0.623529;
-       break;
-       case Quantity_NOC_PALEVIOLETRED3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.407843; RB = R3 = (float ) 0.537255;
-       break;
-       case Quantity_NOC_PALEVIOLETRED4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.278431; RB = R3 = (float ) 0.364706;
-       break;
-       case Quantity_NOC_PAPAYAWHIP :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.937255; RB = R3 = (float ) 0.835294;
-       break;
-       case Quantity_NOC_PEACHPUFF :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.854902; RB = R3 = (float ) 0.725490;
-       break;
-       case Quantity_NOC_PEACHPUFF2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.796078; RB = R3 = (float ) 0.678431;
-       break;
-       case Quantity_NOC_PEACHPUFF3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.686275; RB = R3 = (float ) 0.584314;
-       break;
-       case Quantity_NOC_PEACHPUFF4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.466667; RB = R3 = (float ) 0.396078;
-       break;
-       case Quantity_NOC_PERU :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.521569; RB = R3 = (float ) 0.247059;
-       break;
-       case Quantity_NOC_PINK :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.752941; RB = R3 = (float ) 0.796078;
-       break;
-       case Quantity_NOC_PINK1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.709804; RB = R3 = (float ) 0.772549;
-       break;
-       case Quantity_NOC_PINK2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.662745; RB = R3 = (float ) 0.721569;
-       break;
-       case Quantity_NOC_PINK3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.568627; RB = R3 = (float ) 0.619608;
-       break;
-       case Quantity_NOC_PINK4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.388235; RB = R3 = (float ) 0.423529;
-       break;
-       case Quantity_NOC_PLUM :
-               RR = R1 = (float ) 0.866667; RG = R2 = (float ) 0.627451; RB = R3 = (float ) 0.866667;
-       break;
-       case Quantity_NOC_PLUM1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.733333; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_PLUM2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.682353; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_PLUM3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.588235; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_PLUM4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.400000; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_POWDERBLUE :
-               RR = R1 = (float ) 0.690196; RG = R2 = (float ) 0.878431; RB = R3 = (float ) 0.901961;
-       break;
-       case Quantity_NOC_PURPLE :
-               RR = R1 = (float ) 0.627451; RG = R2 = (float ) 0.125490; RB = R3 = (float ) 0.941176;
-       break;
-       case Quantity_NOC_PURPLE1 :
-               RR = R1 = (float ) 0.607843; RG = R2 = (float ) 0.188235; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_PURPLE2 :
-               RR = R1 = (float ) 0.568627; RG = R2 = (float ) 0.172549; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_PURPLE3 :
-               RR = R1 = (float ) 0.490196; RG = R2 = (float ) 0.149020; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_PURPLE4 :
-               RR = R1 = (float ) 0.333333; RG = R2 = (float ) 0.101961; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_RED :
-               RR = R1 = 1.000000; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_RED1 :
-               RR = R1 = 1.000000; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_RED2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_RED3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_RED4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = 0.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_ROSYBROWN :
-               RR = R1 = (float ) 0.737255; RG = R2 = (float ) 0.560784; RB = R3 = (float ) 0.560784;
-       break;
-       case Quantity_NOC_ROSYBROWN1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.756863; RB = R3 = (float ) 0.756863;
-       break;
-       case Quantity_NOC_ROSYBROWN2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.705882; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_ROSYBROWN3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.607843; RB = R3 = (float ) 0.607843;
-       break;
-       case Quantity_NOC_ROSYBROWN4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.411765;
-       break;
-       case Quantity_NOC_ROYALBLUE :
-               RR = R1 = (float ) 0.254902; RG = R2 = (float ) 0.411765; RB = R3 = (float ) 0.882353;
-       break;
-       case Quantity_NOC_ROYALBLUE1 :
-               RR = R1 = (float ) 0.282353; RG = R2 = (float ) 0.462745; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_ROYALBLUE2 :
-               RR = R1 = (float ) 0.262745; RG = R2 = (float ) 0.431373; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_ROYALBLUE3 :
-               RR = R1 = (float ) 0.227451; RG = R2 = (float ) 0.372549; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_ROYALBLUE4 :
-               RR = R1 = (float ) 0.152941; RG = R2 = (float ) 0.250980; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_SADDLEBROWN :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.270588; RB = R3 = (float ) 0.074510;
-       break;
-       case Quantity_NOC_SALMON :
-               RR = R1 = (float ) 0.980392; RG = R2 = (float ) 0.501961; RB = R3 = (float ) 0.447059;
-       break;
-       case Quantity_NOC_SALMON1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.549020; RB = R3 = (float ) 0.411765;
-       break;
-       case Quantity_NOC_SALMON2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.384314;
-       break;
-       case Quantity_NOC_SALMON3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.329412;
-       break;
-       case Quantity_NOC_SALMON4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.298039; RB = R3 = (float ) 0.223529;
-       break;
-       case Quantity_NOC_SANDYBROWN :
-               RR = R1 = (float ) 0.956863; RG = R2 = (float ) 0.643137; RB = R3 = (float ) 0.376471;
-       break;
-       case Quantity_NOC_SEAGREEN :
-               RR = R1 = (float ) 0.180392; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.341176;
-       break;
-       case Quantity_NOC_SEAGREEN1 :
-               RR = R1 = (float ) 0.329412; RG = R2 = 1.000000; RB = R3 = (float ) 0.623529;
-       break;
-       case Quantity_NOC_SEAGREEN2 :
-               RR = R1 = (float ) 0.305882; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.580392;
-       break;
-       case Quantity_NOC_SEAGREEN3 :
-               RR = R1 = (float ) 0.262745; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.501961;
-       break;
-       case Quantity_NOC_SEAGREEN4 :
-               RR = R1 = (float ) 0.180392; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.341176;
-       break;
-       case Quantity_NOC_SEASHELL :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.960784; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_SEASHELL2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.898039; RB = R3 = (float ) 0.870588;
-       break;
-       case Quantity_NOC_SEASHELL3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.772549; RB = R3 = (float ) 0.749020;
-       break;
-       case Quantity_NOC_SEASHELL4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.509804;
-       break;
-       case Quantity_NOC_BEET :
-               RR = R1 = (float ) 0.556863; RG = R2 = (float ) 0.219608; RB = R3 = (float ) 0.556863;
-       break;
-       case Quantity_NOC_TEAL :
-               RR = R1 = (float ) 0.219608; RG = R2 = (float ) 0.556863; RB = R3 = (float ) 0.556863;
-       break;
-       case Quantity_NOC_SIENNA :
-               RR = R1 = (float ) 0.627451; RG = R2 = (float ) 0.321569; RB = R3 = (float ) 0.176471;
-       break;
-       case Quantity_NOC_SIENNA1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.278431;
-       break;
-       case Quantity_NOC_SIENNA2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.474510; RB = R3 = (float ) 0.258824;
-       break;
-       case Quantity_NOC_SIENNA3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.407843; RB = R3 = (float ) 0.223529;
-       break;
-       case Quantity_NOC_SIENNA4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.278431; RB = R3 = (float ) 0.149020;
-       break;
-       case Quantity_NOC_SKYBLUE :
-               RR = R1 = (float ) 0.529412; RG = R2 = (float ) 0.807843; RB = R3 = (float ) 0.921569;
-       break;
-       case Quantity_NOC_SKYBLUE1 :
-               RR = R1 = (float ) 0.529412; RG = R2 = (float ) 0.807843; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_SKYBLUE2 :
-               RR = R1 = (float ) 0.494118; RG = R2 = (float ) 0.752941; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_SKYBLUE3 :
-               RR = R1 = (float ) 0.423529; RG = R2 = (float ) 0.650980; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_SKYBLUE4 :
-               RR = R1 = (float ) 0.290196; RG = R2 = (float ) 0.439216; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_SLATEBLUE :
-               RR = R1 = (float ) 0.415686; RG = R2 = (float ) 0.352941; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_SLATEBLUE1 :
-               RR = R1 = (float ) 0.513725; RG = R2 = (float ) 0.435294; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_SLATEBLUE2 :
-               RR = R1 = (float ) 0.478431; RG = R2 = (float ) 0.403922; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_SLATEBLUE3 :
-               RR = R1 = (float ) 0.411765; RG = R2 = (float ) 0.349020; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_SLATEBLUE4 :
-               RR = R1 = (float ) 0.278431; RG = R2 = (float ) 0.235294; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_SLATEGRAY1 :
-               RR = R1 = (float ) 0.776471; RG = R2 = (float ) 0.886275; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_SLATEGRAY2 :
-               RR = R1 = (float ) 0.725490; RG = R2 = (float ) 0.827451; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_SLATEGRAY3 :
-               RR = R1 = (float ) 0.623529; RG = R2 = (float ) 0.713725; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_SLATEGRAY4 :
-               RR = R1 = (float ) 0.423529; RG = R2 = (float ) 0.482353; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_SLATEGRAY :
-               RR = R1 = (float ) 0.439216; RG = R2 = (float ) 0.501961; RB = R3 = (float ) 0.564706;
-       break;
-       case Quantity_NOC_SNOW :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.980392; RB = R3 = (float ) 0.980392;
-       break;
-       case Quantity_NOC_SNOW2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.913725; RB = R3 = (float ) 0.913725;
-       break;
-       case Quantity_NOC_SNOW3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.788235; RB = R3 = (float ) 0.788235;
-       break;
-       case Quantity_NOC_SNOW4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.537255; RB = R3 = (float ) 0.537255;
-       break;
-       case Quantity_NOC_SPRINGGREEN :
-               RR = R1 = 0.000000; RG = R2 = 1.000000; RB = R3 = (float ) 0.498039;
-       break;
-       case Quantity_NOC_SPRINGGREEN2 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.933333; RB = R3 = (float ) 0.462745;
-       break;
-       case Quantity_NOC_SPRINGGREEN3 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.400000;
-       break;
-       case Quantity_NOC_SPRINGGREEN4 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.545098; RB = R3 = (float ) 0.270588;
-       break;
-       case Quantity_NOC_STEELBLUE :
-               RR = R1 = (float ) 0.274510; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.705882;
-       break;
-       case Quantity_NOC_STEELBLUE1 :
-               RR = R1 = (float ) 0.388235; RG = R2 = (float ) 0.721569; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_STEELBLUE2 :
-               RR = R1 = (float ) 0.360784; RG = R2 = (float ) 0.674510; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_STEELBLUE3 :
-               RR = R1 = (float ) 0.309804; RG = R2 = (float ) 0.580392; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_STEELBLUE4 :
-               RR = R1 = (float ) 0.211765; RG = R2 = (float ) 0.392157; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_TAN :
-               RR = R1 = (float ) 0.823529; RG = R2 = (float ) 0.705882; RB = R3 = (float ) 0.549020;
-       break;
-       case Quantity_NOC_TAN1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.647059; RB = R3 = (float ) 0.309804;
-       break;
-       case Quantity_NOC_TAN2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.603922; RB = R3 = (float ) 0.286275;
-       break;
-       case Quantity_NOC_TAN3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.521569; RB = R3 = (float ) 0.247059;
-       break;
-       case Quantity_NOC_TAN4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.352941; RB = R3 = (float ) 0.168627;
-       break;
-       case Quantity_NOC_THISTLE :
-               RR = R1 = (float ) 0.847059; RG = R2 = (float ) 0.749020; RB = R3 = (float ) 0.847059;
-       break;
-       case Quantity_NOC_THISTLE1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.882353; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_THISTLE2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.823529; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_THISTLE3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.709804; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_THISTLE4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.482353; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_TOMATO :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.388235; RB = R3 = (float ) 0.278431;
-       break;
-       case Quantity_NOC_TOMATO1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.388235; RB = R3 = (float ) 0.278431;
-       break;
-       case Quantity_NOC_TOMATO2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.360784; RB = R3 = (float ) 0.258824;
-       break;
-       case Quantity_NOC_TOMATO3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.309804; RB = R3 = (float ) 0.223529;
-       break;
-       case Quantity_NOC_TOMATO4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.211765; RB = R3 = (float ) 0.149020;
-       break;
-       case Quantity_NOC_TURQUOISE :
-               RR = R1 = (float ) 0.250980; RG = R2 = (float ) 0.878431; RB = R3 = (float ) 0.815686;
-       break;
-       case Quantity_NOC_TURQUOISE1 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.960784; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_TURQUOISE2 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.898039; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_TURQUOISE3 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.772549; RB = R3 = (float ) 0.803922;
-       break;
-       case Quantity_NOC_TURQUOISE4 :
-               RR = R1 = 0.000000; RG = R2 = (float ) 0.525490; RB = R3 = (float ) 0.545098;
-       break;
-       case Quantity_NOC_VIOLET :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.509804; RB = R3 = (float ) 0.933333;
-       break;
-       case Quantity_NOC_VIOLETRED :
-               RR = R1 = (float ) 0.815686; RG = R2 = (float ) 0.125490; RB = R3 = (float ) 0.564706;
-       break;
-       case Quantity_NOC_VIOLETRED1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.243137; RB = R3 = (float ) 0.588235;
-       break;
-       case Quantity_NOC_VIOLETRED2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.227451; RB = R3 = (float ) 0.549020;
-       break;
-       case Quantity_NOC_VIOLETRED3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.196078; RB = R3 = (float ) 0.470588;
-       break;
-       case Quantity_NOC_VIOLETRED4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.133333; RB = R3 = (float ) 0.321569;
-       break;
-       case Quantity_NOC_WHEAT :
-               RR = R1 = (float ) 0.960784; RG = R2 = (float ) 0.870588; RB = R3 = (float ) 0.701961;
-       break;
-       case Quantity_NOC_WHEAT1 :
-               RR = R1 = 1.000000; RG = R2 = (float ) 0.905882; RB = R3 = (float ) 0.729412;
-       break;
-       case Quantity_NOC_WHEAT2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.847059; RB = R3 = (float ) 0.682353;
-       break;
-       case Quantity_NOC_WHEAT3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.729412; RB = R3 = (float ) 0.588235;
-       break;
-       case Quantity_NOC_WHEAT4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.494118; RB = R3 = (float ) 0.400000;
-       break;
-       case Quantity_NOC_WHITE :
-               RR = R1 = 1.000000; RG = R2 = 1.000000; RB = R3 = 1.000000;
-       break;
-       case Quantity_NOC_WHITESMOKE :
-               RR = R1 = (float ) 0.960784; RG = R2 = (float ) 0.960784; RB = R3 = (float ) 0.960784;
-       break;
-       case Quantity_NOC_YELLOW :
-               RR = R1 = 1.000000; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_YELLOW1 :
-               RR = R1 = 1.000000; RG = R2 = 1.000000; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_YELLOW2 :
-               RR = R1 = (float ) 0.933333; RG = R2 = (float ) 0.933333; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_YELLOW3 :
-               RR = R1 = (float ) 0.803922; RG = R2 = (float ) 0.803922; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_YELLOW4 :
-               RR = R1 = (float ) 0.545098; RG = R2 = (float ) 0.545098; RB = R3 = 0.000000;
-       break;
-       case Quantity_NOC_YELLOWGREEN :
-               RR = R1 = (float ) 0.603922; RG = R2 = (float ) 0.803922; RB = R3 = (float ) 0.196078;
-       break;
-       default :
-               throw Standard_OutOfRange("Bad name");
-       break;
-}
-       if (AType == Quantity_TOC_HLS)
-           Quantity_Color::rgbhls (RR, RG, RB, R1, R2, R3);
-}
-
-Standard_CString Quantity_Color::StringName (
-                                 const Quantity_NameOfColor AName) {
+  const float aDelta = aMax - min;
 
-Standard_CString TheName;
-switch (AName) {
+  // compute saturation
+  float aSaturation = 0.0f;
+  if (aMax != 0.0f) aSaturation = aDelta / aMax;
 
-       case Quantity_NOC_BLACK :
-               TheName = "BLACK";
-       break;
-       case Quantity_NOC_MATRAGRAY :
-               TheName = "MATRAGRAY";
-       break;
-       case Quantity_NOC_MATRABLUE :
-               TheName = "MATRABLUE";
-       break;
-       case Quantity_NOC_ALICEBLUE :
-               TheName = "ALICEBLUE";
-       break;
-       case Quantity_NOC_ANTIQUEWHITE :
-               TheName = "ANTIQUEWHITE";
-       break;
-       case Quantity_NOC_ANTIQUEWHITE1 :
-               TheName = "ANTIQUEWHITE1";
-       break;
-       case Quantity_NOC_ANTIQUEWHITE2 :
-               TheName = "ANTIQUEWHITE2";
-       break;
-       case Quantity_NOC_ANTIQUEWHITE3 :
-               TheName = "ANTIQUEWHITE3";
-       break;
-       case Quantity_NOC_ANTIQUEWHITE4 :
-               TheName = "ANTIQUEWHITE4";
-       break;
-       case Quantity_NOC_AQUAMARINE1 :
-               TheName = "AQUAMARINE1";
-       break;
-       case Quantity_NOC_AQUAMARINE2 :
-               TheName = "AQUAMARINE2";
-       break;
-       case Quantity_NOC_AQUAMARINE4 :
-               TheName = "AQUAMARINE4";
-       break;
-       case Quantity_NOC_AZURE :
-               TheName = "AZURE";
-       break;
-       case Quantity_NOC_AZURE2 :
-               TheName = "AZURE2";
-       break;
-       case Quantity_NOC_AZURE3 :
-               TheName = "AZURE3";
-       break;
-       case Quantity_NOC_AZURE4 :
-               TheName = "AZURE4";
-       break;
-       case Quantity_NOC_BEIGE :
-               TheName = "BEIGE";
-       break;
-       case Quantity_NOC_BISQUE :
-               TheName = "BISQUE";
-       break;
-       case Quantity_NOC_BISQUE2 :
-               TheName = "BISQUE2";
-       break;
-       case Quantity_NOC_BISQUE3 :
-               TheName = "BISQUE3";
-       break;
-       case Quantity_NOC_BISQUE4 :
-               TheName = "BISQUE4";
-       break;
-       case Quantity_NOC_BLANCHEDALMOND :
-               TheName = "BLANCHEDALMOND";
-       break;
-       case Quantity_NOC_BLUE1 :
-               TheName = "BLUE1";
-       break;
-       case Quantity_NOC_BLUE2 :
-               TheName = "BLUE2";
-       break;
-       case Quantity_NOC_BLUE3 :
-               TheName = "BLUE3";
-       break;
-       case Quantity_NOC_BLUE4 :
-               TheName = "BLUE4";
-       break;
-       case Quantity_NOC_BLUEVIOLET :
-               TheName = "BLUEVIOLET";
-       break;
-       case Quantity_NOC_BROWN :
-               TheName = "BROWN";
-       break;
-       case Quantity_NOC_BROWN1 :
-               TheName = "BROWN1";
-       break;
-       case Quantity_NOC_BROWN2 :
-               TheName = "BROWN2";
-       break;
-       case Quantity_NOC_BROWN3 :
-               TheName = "BROWN3";
-       break;
-       case Quantity_NOC_BROWN4 :
-               TheName = "BROWN4";
-       break;
-       case Quantity_NOC_BURLYWOOD :
-               TheName = "BURLYWOOD";
-       break;
-       case Quantity_NOC_BURLYWOOD1 :
-               TheName = "BURLYWOOD1";
-       break;
-       case Quantity_NOC_BURLYWOOD2 :
-               TheName = "BURLYWOOD2";
-       break;
-       case Quantity_NOC_BURLYWOOD3 :
-               TheName = "BURLYWOOD3";
-       break;
-       case Quantity_NOC_BURLYWOOD4 :
-               TheName = "BURLYWOOD4";
-       break;
-       case Quantity_NOC_CADETBLUE :
-               TheName = "CADETBLUE";
-       break;
-       case Quantity_NOC_CADETBLUE1 :
-               TheName = "CADETBLUE1";
-       break;
-       case Quantity_NOC_CADETBLUE2 :
-               TheName = "CADETBLUE2";
-       break;
-       case Quantity_NOC_CADETBLUE3 :
-               TheName = "CADETBLUE3";
-       break;
-       case Quantity_NOC_CADETBLUE4 :
-               TheName = "CADETBLUE4";
-       break;
-       case Quantity_NOC_CHARTREUSE :
-               TheName = "CHARTREUSE";
-       break;
-       case Quantity_NOC_CHARTREUSE1 :
-               TheName = "CHARTREUSE1";
-       break;
-       case Quantity_NOC_CHARTREUSE2 :
-               TheName = "CHARTREUSE2";
-       break;
-       case Quantity_NOC_CHARTREUSE3 :
-               TheName = "CHARTREUSE3";
-       break;
-       case Quantity_NOC_CHARTREUSE4 :
-               TheName = "CHARTREUSE4";
-       break;
-       case Quantity_NOC_CHOCOLATE :
-               TheName = "CHOCOLATE";
-       break;
-       case Quantity_NOC_CHOCOLATE1 :
-               TheName = "CHOCOLATE1";
-       break;
-       case Quantity_NOC_CHOCOLATE2 :
-               TheName = "CHOCOLATE2";
-       break;
-       case Quantity_NOC_CHOCOLATE3 :
-               TheName = "CHOCOLATE3";
-       break;
-       case Quantity_NOC_CHOCOLATE4 :
-               TheName = "CHOCOLATE4";
-       break;
-       case Quantity_NOC_CORAL :
-               TheName = "CORAL";
-       break;
-       case Quantity_NOC_CORAL1 :
-               TheName = "CORAL1";
-       break;
-       case Quantity_NOC_CORAL2 :
-               TheName = "CORAL2";
-       break;
-       case Quantity_NOC_CORAL3 :
-               TheName = "CORAL3";
-       break;
-       case Quantity_NOC_CORAL4 :
-               TheName = "CORAL4";
-       break;
-       case Quantity_NOC_CORNFLOWERBLUE :
-               TheName = "CORNFLOWERBLUE";
-       break;
-       case Quantity_NOC_CORNSILK1 :
-               TheName = "CORNSILK1";
-       break;
-       case Quantity_NOC_CORNSILK2 :
-               TheName = "CORNSILK2";
-       break;
-       case Quantity_NOC_CORNSILK3 :
-               TheName = "CORNSILK3";
-       break;
-       case Quantity_NOC_CORNSILK4 :
-               TheName = "CORNSILK4";
-       break;
-       case Quantity_NOC_CYAN1 :
-               TheName = "CYAN1";
-       break;
-       case Quantity_NOC_CYAN2 :
-               TheName = "CYAN2";
-       break;
-       case Quantity_NOC_CYAN3 :
-               TheName = "CYAN3";
-       break;
-       case Quantity_NOC_CYAN4 :
-               TheName = "CYAN4";
-       break;
-       case Quantity_NOC_DARKGOLDENROD :
-               TheName = "DARKGOLDENROD";
-       break;
-       case Quantity_NOC_DARKGOLDENROD1 :
-               TheName = "DARKGOLDENROD1";
-       break;
-       case Quantity_NOC_DARKGOLDENROD2 :
-               TheName = "DARKGOLDENROD2";
-       break;
-       case Quantity_NOC_DARKGOLDENROD3 :
-               TheName = "DARKGOLDENROD3";
-       break;
-       case Quantity_NOC_DARKGOLDENROD4 :
-               TheName = "DARKGOLDENROD4";
-       break;
-       case Quantity_NOC_DARKGREEN :
-               TheName = "DARKGREEN";
-       break;
-       case Quantity_NOC_DARKKHAKI :
-               TheName = "DARKKHAKI";
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN :
-               TheName = "DARKOLIVEGREEN";
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN1 :
-               TheName = "DARKOLIVEGREEN1";
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN2 :
-               TheName = "DARKOLIVEGREEN2";
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN3 :
-               TheName = "DARKOLIVEGREEN3";
-       break;
-       case Quantity_NOC_DARKOLIVEGREEN4 :
-               TheName = "DARKOLIVEGREEN4";
-       break;
-       case Quantity_NOC_DARKORANGE :
-               TheName = "DARKORANGE";
-       break;
-       case Quantity_NOC_DARKORANGE1 :
-               TheName = "DARKORANGE1";
-       break;
-       case Quantity_NOC_DARKORANGE2 :
-               TheName = "DARKORANGE2";
-       break;
-       case Quantity_NOC_DARKORANGE3 :
-               TheName = "DARKORANGE3";
-       break;
-       case Quantity_NOC_DARKORANGE4 :
-               TheName = "DARKORANGE4";
-       break;
-       case Quantity_NOC_DARKORCHID :
-               TheName = "DARKORCHID";
-       break;
-       case Quantity_NOC_DARKORCHID1 :
-               TheName = "DARKORCHID1";
-       break;
-       case Quantity_NOC_DARKORCHID2 :
-               TheName = "DARKORCHID2";
-       break;
-       case Quantity_NOC_DARKORCHID3 :
-               TheName = "DARKORCHID3";
-       break;
-       case Quantity_NOC_DARKORCHID4 :
-               TheName = "DARKORCHID4";
-       break;
-       case Quantity_NOC_DARKSALMON :
-               TheName = "DARKSALMON";
-       break;
-       case Quantity_NOC_DARKSEAGREEN :
-               TheName = "DARKSEAGREEN";
-       break;
-       case Quantity_NOC_DARKSEAGREEN1 :
-               TheName = "DARKSEAGREEN1";
-       break;
-       case Quantity_NOC_DARKSEAGREEN2 :
-               TheName = "DARKSEAGREEN2";
-       break;
-       case Quantity_NOC_DARKSEAGREEN3 :
-               TheName = "DARKSEAGREEN3";
-       break;
-       case Quantity_NOC_DARKSEAGREEN4 :
-               TheName = "DARKSEAGREEN4";
-       break;
-       case Quantity_NOC_DARKSLATEBLUE :
-               TheName = "DARKSLATEBLUE";
-       break;
-       case Quantity_NOC_DARKSLATEGRAY1 :
-               TheName = "DARKSLATEGRAY1";
-       break;
-       case Quantity_NOC_DARKSLATEGRAY2 :
-               TheName = "DARKSLATEGRAY2";
-       break;
-       case Quantity_NOC_DARKSLATEGRAY3 :
-               TheName = "DARKSLATEGRAY3";
-       break;
-       case Quantity_NOC_DARKSLATEGRAY4 :
-               TheName = "DARKSLATEGRAY4";
-       break;
-       case Quantity_NOC_DARKSLATEGRAY :
-               TheName = "DARKSLATEGRAY";
-       break;
-       case Quantity_NOC_DARKTURQUOISE :
-               TheName = "DARKTURQUOISE";
-       break;
-       case Quantity_NOC_DARKVIOLET :
-               TheName = "DARKVIOLET";
-       break;
-       case Quantity_NOC_DEEPPINK :
-               TheName = "DEEPPINK";
-       break;
-       case Quantity_NOC_DEEPPINK2 :
-               TheName = "DEEPPINK2";
-       break;
-       case Quantity_NOC_DEEPPINK3 :
-               TheName = "DEEPPINK3";
-       break;
-       case Quantity_NOC_DEEPPINK4 :
-               TheName = "DEEPPINK4";
-       break;
-       case Quantity_NOC_DEEPSKYBLUE1 :
-               TheName = "DEEPSKYBLUE1";
-       break;
-       case Quantity_NOC_DEEPSKYBLUE2 :
-               TheName = "DEEPSKYBLUE2";
-       break;
-       case Quantity_NOC_DEEPSKYBLUE3 :
-               TheName = "DEEPSKYBLUE3";
-       break;
-       case Quantity_NOC_DEEPSKYBLUE4 :
-               TheName = "DEEPSKYBLUE4";
-       break;
-       case Quantity_NOC_DODGERBLUE1 :
-               TheName = "DODGERBLUE1";
-       break;
-       case Quantity_NOC_DODGERBLUE2 :
-               TheName = "DODGERBLUE2";
-       break;
-       case Quantity_NOC_DODGERBLUE3 :
-               TheName = "DODGERBLUE3";
-       break;
-       case Quantity_NOC_DODGERBLUE4 :
-               TheName = "DODGERBLUE4";
-       break;
-       case Quantity_NOC_FIREBRICK :
-               TheName = "FIREBRICK";
-       break;
-       case Quantity_NOC_FIREBRICK1 :
-               TheName = "FIREBRICK1";
-       break;
-       case Quantity_NOC_FIREBRICK2 :
-               TheName = "FIREBRICK2";
-       break;
-       case Quantity_NOC_FIREBRICK3 :
-               TheName = "FIREBRICK3";
-       break;
-       case Quantity_NOC_FIREBRICK4 :
-               TheName = "FIREBRICK4";
-       break;
-       case Quantity_NOC_FLORALWHITE :
-               TheName = "FLORALWHITE";
-       break;
-       case Quantity_NOC_FORESTGREEN :
-               TheName = "FORESTGREEN";
-       break;
-       case Quantity_NOC_GAINSBORO :
-               TheName = "GAINSBORO";
-       break;
-       case Quantity_NOC_GHOSTWHITE :
-               TheName = "GHOSTWHITE";
-       break;
-       case Quantity_NOC_GOLD :
-               TheName = "GOLD";
-       break;
-       case Quantity_NOC_GOLD1 :
-               TheName = "GOLD1";
-       break;
-       case Quantity_NOC_GOLD2 :
-               TheName = "GOLD2";
-       break;
-       case Quantity_NOC_GOLD3 :
-               TheName = "GOLD3";
-       break;
-       case Quantity_NOC_GOLD4 :
-               TheName = "GOLD4";
-       break;
-       case Quantity_NOC_GOLDENROD :
-               TheName = "GOLDENROD";
-       break;
-       case Quantity_NOC_GOLDENROD1 :
-               TheName = "GOLDENROD1";
-       break;
-       case Quantity_NOC_GOLDENROD2 :
-               TheName = "GOLDENROD2";
-       break;
-       case Quantity_NOC_GOLDENROD3 :
-               TheName = "GOLDENROD3";
-       break;
-       case Quantity_NOC_GOLDENROD4 :
-               TheName = "GOLDENROD4";
-       break;
-       case Quantity_NOC_GRAY :
-               TheName = "GRAY";
-       break;
-       case Quantity_NOC_GRAY0 :
-               TheName = "GRAY0";
-       break;
-       case Quantity_NOC_GRAY1 :
-               TheName = "GRAY1";
-       break;
-       case Quantity_NOC_GRAY10 :
-               TheName = "GRAY10";
-       break;
-       case Quantity_NOC_GRAY11 :
-               TheName = "GRAY11";
-       break;
-       case Quantity_NOC_GRAY12 :
-               TheName = "GRAY12";
-       break;
-       case Quantity_NOC_GRAY13 :
-               TheName = "GRAY13";
-       break;
-       case Quantity_NOC_GRAY14 :
-               TheName = "GRAY14";
-       break;
-       case Quantity_NOC_GRAY15 :
-               TheName = "GRAY15";
-       break;
-       case Quantity_NOC_GRAY16 :
-               TheName = "GRAY16";
-       break;
-       case Quantity_NOC_GRAY17 :
-               TheName = "GRAY17";
-       break;
-       case Quantity_NOC_GRAY18 :
-               TheName = "GRAY18";
-       break;
-       case Quantity_NOC_GRAY19 :
-               TheName = "GRAY19";
-       break;
-       case Quantity_NOC_GRAY2 :
-               TheName = "GRAY2";
-       break;
-       case Quantity_NOC_GRAY20 :
-               TheName = "GRAY20";
-       break;
-       case Quantity_NOC_GRAY21 :
-               TheName = "GRAY21";
-       break;
-       case Quantity_NOC_GRAY22 :
-               TheName = "GRAY22";
-       break;
-       case Quantity_NOC_GRAY23 :
-               TheName = "GRAY23";
-       break;
-       case Quantity_NOC_GRAY24 :
-               TheName = "GRAY24";
-       break;
-       case Quantity_NOC_GRAY25 :
-               TheName = "GRAY25";
-       break;
-       case Quantity_NOC_GRAY26 :
-               TheName = "GRAY26";
-       break;
-       case Quantity_NOC_GRAY27 :
-               TheName = "GRAY27";
-       break;
-       case Quantity_NOC_GRAY28 :
-               TheName = "GRAY28";
-       break;
-       case Quantity_NOC_GRAY29 :
-               TheName = "GRAY29";
-       break;
-       case Quantity_NOC_GRAY3 :
-               TheName = "GRAY3";
-       break;
-       case Quantity_NOC_GRAY30 :
-               TheName = "GRAY30";
-       break;
-       case Quantity_NOC_GRAY31 :
-               TheName = "GRAY31";
-       break;
-       case Quantity_NOC_GRAY32 :
-               TheName = "GRAY32";
-       break;
-       case Quantity_NOC_GRAY33 :
-               TheName = "GRAY33";
-       break;
-       case Quantity_NOC_GRAY34 :
-               TheName = "GRAY34";
-       break;
-       case Quantity_NOC_GRAY35 :
-               TheName = "GRAY35";
-       break;
-       case Quantity_NOC_GRAY36 :
-               TheName = "GRAY36";
-       break;
-       case Quantity_NOC_GRAY37 :
-               TheName = "GRAY37";
-       break;
-       case Quantity_NOC_GRAY38 :
-               TheName = "GRAY38";
-       break;
-       case Quantity_NOC_GRAY39 :
-               TheName = "GRAY39";
-       break;
-       case Quantity_NOC_GRAY4 :
-               TheName = "GRAY4";
-       break;
-       case Quantity_NOC_GRAY40 :
-               TheName = "GRAY40";
-       break;
-       case Quantity_NOC_GRAY41 :
-               TheName = "GRAY41";
-       break;
-       case Quantity_NOC_GRAY42 :
-               TheName = "GRAY42";
-       break;
-       case Quantity_NOC_GRAY43 :
-               TheName = "GRAY43";
-       break;
-       case Quantity_NOC_GRAY44 :
-               TheName = "GRAY44";
-       break;
-       case Quantity_NOC_GRAY45 :
-               TheName = "GRAY45";
-       break;
-       case Quantity_NOC_GRAY46 :
-               TheName = "GRAY46";
-       break;
-       case Quantity_NOC_GRAY47 :
-               TheName = "GRAY47";
-       break;
-       case Quantity_NOC_GRAY48 :
-               TheName = "GRAY48";
-       break;
-       case Quantity_NOC_GRAY49 :
-               TheName = "GRAY49";
-       break;
-       case Quantity_NOC_GRAY5 :
-               TheName = "GRAY5";
-       break;
-       case Quantity_NOC_GRAY50 :
-               TheName = "GRAY50";
-       break;
-       case Quantity_NOC_GRAY51 :
-               TheName = "GRAY51";
-       break;
-       case Quantity_NOC_GRAY52 :
-               TheName = "GRAY52";
-       break;
-       case Quantity_NOC_GRAY53 :
-               TheName = "GRAY53";
-       break;
-       case Quantity_NOC_GRAY54 :
-               TheName = "GRAY54";
-       break;
-       case Quantity_NOC_GRAY55 :
-               TheName = "GRAY55";
-       break;
-       case Quantity_NOC_GRAY56 :
-               TheName = "GRAY56";
-       break;
-       case Quantity_NOC_GRAY57 :
-               TheName = "GRAY57";
-       break;
-       case Quantity_NOC_GRAY58 :
-               TheName = "GRAY58";
-       break;
-       case Quantity_NOC_GRAY59 :
-               TheName = "GRAY59";
-       break;
-       case Quantity_NOC_GRAY6 :
-               TheName = "GRAY6";
-       break;
-       case Quantity_NOC_GRAY60 :
-               TheName = "GRAY60";
-       break;
-       case Quantity_NOC_GRAY61 :
-               TheName = "GRAY61";
-       break;
-       case Quantity_NOC_GRAY62 :
-               TheName = "GRAY62";
-       break;
-       case Quantity_NOC_GRAY63 :
-               TheName = "GRAY63";
-       break;
-       case Quantity_NOC_GRAY64 :
-               TheName = "GRAY64";
-       break;
-       case Quantity_NOC_GRAY65 :
-               TheName = "GRAY65";
-       break;
-       case Quantity_NOC_GRAY66 :
-               TheName = "GRAY66";
-       break;
-       case Quantity_NOC_GRAY67 :
-               TheName = "GRAY67";
-       break;
-       case Quantity_NOC_GRAY68 :
-               TheName = "GRAY68";
-       break;
-       case Quantity_NOC_GRAY69 :
-               TheName = "GRAY69";
-       break;
-       case Quantity_NOC_GRAY7 :
-               TheName = "GRAY7";
-       break;
-       case Quantity_NOC_GRAY70 :
-               TheName = "GRAY70";
-       break;
-       case Quantity_NOC_GRAY71 :
-               TheName = "GRAY71";
-       break;
-       case Quantity_NOC_GRAY72 :
-               TheName = "GRAY72";
-       break;
-       case Quantity_NOC_GRAY73 :
-               TheName = "GRAY73";
-       break;
-       case Quantity_NOC_GRAY74 :
-               TheName = "GRAY74";
-       break;
-       case Quantity_NOC_GRAY75 :
-               TheName = "GRAY75";
-       break;
-       case Quantity_NOC_GRAY76 :
-               TheName = "GRAY76";
-       break;
-       case Quantity_NOC_GRAY77 :
-               TheName = "GRAY77";
-       break;
-       case Quantity_NOC_GRAY78 :
-               TheName = "GRAY78";
-       break;
-       case Quantity_NOC_GRAY79 :
-               TheName = "GRAY79";
-       break;
-       case Quantity_NOC_GRAY8 :
-               TheName = "GRAY8";
-       break;
-       case Quantity_NOC_GRAY80 :
-               TheName = "GRAY80";
-       break;
-       case Quantity_NOC_GRAY81 :
-               TheName = "GRAY81";
-       break;
-       case Quantity_NOC_GRAY82 :
-               TheName = "GRAY82";
-       break;
-       case Quantity_NOC_GRAY83 :
-               TheName = "GRAY83";
-       break;
-       case Quantity_NOC_GRAY85 :
-               TheName = "GRAY85";
-       break;
-       case Quantity_NOC_GRAY86 :
-               TheName = "GRAY86";
-       break;
-       case Quantity_NOC_GRAY87 :
-               TheName = "GRAY87";
-       break;
-       case Quantity_NOC_GRAY88 :
-               TheName = "GRAY88";
-       break;
-       case Quantity_NOC_GRAY89 :
-               TheName = "GRAY89";
-       break;
-       case Quantity_NOC_GRAY9 :
-               TheName = "GRAY9";
-       break;
-       case Quantity_NOC_GRAY90 :
-               TheName = "GRAY90";
-       break;
-       case Quantity_NOC_GRAY91 :
-               TheName = "GRAY91";
-       break;
-       case Quantity_NOC_GRAY92 :
-               TheName = "GRAY92";
-       break;
-       case Quantity_NOC_GRAY93 :
-               TheName = "GRAY93";
-       break;
-       case Quantity_NOC_GRAY94 :
-               TheName = "GRAY94";
-       break;
-       case Quantity_NOC_GRAY95 :
-               TheName = "GRAY95";
-       break;
-       case Quantity_NOC_GREEN :
-               TheName = "GREEN";
-       break;
-       case Quantity_NOC_GREEN1 :
-               TheName = "GREEN1";
-       break;
-       case Quantity_NOC_GREEN2 :
-               TheName = "GREEN2";
-       break;
-       case Quantity_NOC_GREEN3 :
-               TheName = "GREEN3";
-       break;
-       case Quantity_NOC_GREEN4 :
-               TheName = "GREEN4";
-       break;
-       case Quantity_NOC_GREENYELLOW :
-               TheName = "GREENYELLOW";
-       break;
-       case Quantity_NOC_GRAY97 :
-               TheName = "GRAY97";
-       break;
-       case Quantity_NOC_GRAY98 :
-               TheName = "GRAY98";
-       break;
-       case Quantity_NOC_GRAY99 :
-               TheName = "GRAY99";
-       break;
-       case Quantity_NOC_HONEYDEW :
-               TheName = "HONEYDEW";
-       break;
-       case Quantity_NOC_HONEYDEW2 :
-               TheName = "HONEYDEW2";
-       break;
-       case Quantity_NOC_HONEYDEW3 :
-               TheName = "HONEYDEW3";
-       break;
-       case Quantity_NOC_HONEYDEW4 :
-               TheName = "HONEYDEW4";
-       break;
-       case Quantity_NOC_HOTPINK :
-               TheName = "HOTPINK";
-       break;
-       case Quantity_NOC_HOTPINK1 :
-               TheName = "HOTPINK1";
-       break;
-       case Quantity_NOC_HOTPINK2 :
-               TheName = "HOTPINK2";
-       break;
-       case Quantity_NOC_HOTPINK3 :
-               TheName = "HOTPINK3";
-       break;
-       case Quantity_NOC_HOTPINK4 :
-               TheName = "HOTPINK4";
-       break;
-       case Quantity_NOC_INDIANRED :
-               TheName = "INDIANRED";
-       break;
-       case Quantity_NOC_INDIANRED1 :
-               TheName = "INDIANRED1";
-       break;
-       case Quantity_NOC_INDIANRED2 :
-               TheName = "INDIANRED2";
-       break;
-       case Quantity_NOC_INDIANRED3 :
-               TheName = "INDIANRED3";
-       break;
-       case Quantity_NOC_INDIANRED4 :
-               TheName = "INDIANRED4";
-       break;
-       case Quantity_NOC_IVORY :
-               TheName = "IVORY";
-       break;
-       case Quantity_NOC_IVORY2 :
-               TheName = "IVORY2";
-       break;
-       case Quantity_NOC_IVORY3 :
-               TheName = "IVORY3";
-       break;
-       case Quantity_NOC_IVORY4 :
-               TheName = "IVORY4";
-       break;
-       case Quantity_NOC_KHAKI :
-               TheName = "KHAKI";
-       break;
-       case Quantity_NOC_KHAKI1 :
-               TheName = "KHAKI1";
-       break;
-       case Quantity_NOC_KHAKI2 :
-               TheName = "KHAKI2";
-       break;
-       case Quantity_NOC_KHAKI3 :
-               TheName = "KHAKI3";
-       break;
-       case Quantity_NOC_KHAKI4 :
-               TheName = "KHAKI4";
-       break;
-       case Quantity_NOC_LAVENDER :
-               TheName = "LAVENDER";
-       break;
-       case Quantity_NOC_LAVENDERBLUSH1 :
-               TheName = "LAVENDERBLUSH1";
-       break;
-       case Quantity_NOC_LAVENDERBLUSH2 :
-               TheName = "LAVENDERBLUSH2";
-       break;
-       case Quantity_NOC_LAVENDERBLUSH3 :
-               TheName = "LAVENDERBLUSH3";
-       break;
-       case Quantity_NOC_LAVENDERBLUSH4 :
-               TheName = "LAVENDERBLUSH4";
-       break;
-       case Quantity_NOC_LAWNGREEN :
-               TheName = "LAWNGREEN";
-       break;
-       case Quantity_NOC_LEMONCHIFFON1 :
-               TheName = "LEMONCHIFFON1";
-       break;
-       case Quantity_NOC_LEMONCHIFFON2 :
-               TheName = "LEMONCHIFFON2";
-       break;
-       case Quantity_NOC_LEMONCHIFFON3 :
-               TheName = "LEMONCHIFFON3";
-       break;
-       case Quantity_NOC_LEMONCHIFFON4 :
-               TheName = "LEMONCHIFFON4";
-       break;
-       case Quantity_NOC_LIGHTBLUE :
-               TheName = "LIGHTBLUE";
-       break;
-       case Quantity_NOC_LIGHTBLUE1 :
-               TheName = "LIGHTBLUE1";
-       break;
-       case Quantity_NOC_LIGHTBLUE2 :
-               TheName = "LIGHTBLUE2";
-       break;
-       case Quantity_NOC_LIGHTBLUE3 :
-               TheName = "LIGHTBLUE3";
-       break;
-       case Quantity_NOC_LIGHTBLUE4 :
-               TheName = "LIGHTBLUE4";
-       break;
-       case Quantity_NOC_LIGHTCORAL :
-               TheName = "LIGHTCORAL";
-       break;
-       case Quantity_NOC_LIGHTCYAN1 :
-               TheName = "LIGHTCYAN1";
-       break;
-       case Quantity_NOC_LIGHTCYAN2 :
-               TheName = "LIGHTCYAN2";
-       break;
-       case Quantity_NOC_LIGHTCYAN3 :
-               TheName = "LIGHTCYAN3";
-       break;
-       case Quantity_NOC_LIGHTCYAN4 :
-               TheName = "LIGHTCYAN4";
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD :
-               TheName = "LIGHTGOLDENROD";
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD1 :
-               TheName = "LIGHTGOLDENROD1";
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD2 :
-               TheName = "LIGHTGOLDENROD2";
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD3 :
-               TheName = "LIGHTGOLDENROD3";
-       break;
-       case Quantity_NOC_LIGHTGOLDENROD4 :
-               TheName = "LIGHTGOLDENROD4";
-       break;
-       case Quantity_NOC_LIGHTGOLDENRODYELLOW :
-               TheName = "LIGHTGOLDENRODYELLOW";
-       break;
-       case Quantity_NOC_LIGHTGRAY :
-               TheName = "LIGHTGRAY";
-       break;
-       case Quantity_NOC_LIGHTPINK :
-               TheName = "LIGHTPINK";
-       break;
-       case Quantity_NOC_LIGHTPINK1 :
-               TheName = "LIGHTPINK1";
-       break;
-       case Quantity_NOC_LIGHTPINK2 :
-               TheName = "LIGHTPINK2";
-       break;
-       case Quantity_NOC_LIGHTPINK3 :
-               TheName = "LIGHTPINK3";
-       break;
-       case Quantity_NOC_LIGHTPINK4 :
-               TheName = "LIGHTPINK4";
-       break;
-       case Quantity_NOC_LIGHTSALMON1 :
-               TheName = "LIGHTSALMON1";
-       break;
-       case Quantity_NOC_LIGHTSALMON2 :
-               TheName = "LIGHTSALMON2";
-       break;
-       case Quantity_NOC_LIGHTSALMON3 :
-               TheName = "LIGHTSALMON3";
-       break;
-       case Quantity_NOC_LIGHTSALMON4 :
-               TheName = "LIGHTSALMON4";
-       break;
-       case Quantity_NOC_LIGHTSEAGREEN :
-               TheName = "LIGHTSEAGREEN";
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE :
-               TheName = "LIGHTSKYBLUE";
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE1 :
-               TheName = "LIGHTSKYBLUE1";
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE2 :
-               TheName = "LIGHTSKYBLUE2";
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE3 :
-               TheName = "LIGHTSKYBLUE3";
-       break;
-       case Quantity_NOC_LIGHTSKYBLUE4 :
-               TheName = "LIGHTSKYBLUE4";
-       break;
-       case Quantity_NOC_LIGHTSLATEBLUE :
-               TheName = "LIGHTSLATEBLUE";
-       break;
-       case Quantity_NOC_LIGHTSLATEGRAY :
-               TheName = "LIGHTSLATEGRAY";
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE :
-               TheName = "LIGHTSTEELBLUE";
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE1 :
-               TheName = "LIGHTSTEELBLUE1";
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE2 :
-               TheName = "LIGHTSTEELBLUE2";
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE3 :
-               TheName = "LIGHTSTEELBLUE3";
-       break;
-       case Quantity_NOC_LIGHTSTEELBLUE4 :
-               TheName = "LIGHTSTEELBLUE4";
-       break;
-       case Quantity_NOC_LIGHTYELLOW :
-               TheName = "LIGHTYELLOW";
-       break;
-       case Quantity_NOC_LIGHTYELLOW2 :
-               TheName = "LIGHTYELLOW2";
-       break;
-       case Quantity_NOC_LIGHTYELLOW3 :
-               TheName = "LIGHTYELLOW3";
-       break;
-       case Quantity_NOC_LIGHTYELLOW4 :
-               TheName = "LIGHTYELLOW4";
-       break;
-       case Quantity_NOC_LIMEGREEN :
-               TheName = "LIMEGREEN";
-       break;
-       case Quantity_NOC_LINEN :
-               TheName = "LINEN";
-       break;
-       case Quantity_NOC_MAGENTA1 :
-               TheName = "MAGENTA1";
-       break;
-       case Quantity_NOC_MAGENTA2 :
-               TheName = "MAGENTA2";
-       break;
-       case Quantity_NOC_MAGENTA3 :
-               TheName = "MAGENTA3";
-       break;
-       case Quantity_NOC_MAGENTA4 :
-               TheName = "MAGENTA4";
-       break;
-       case Quantity_NOC_MAROON :
-               TheName = "MAROON";
-       break;
-       case Quantity_NOC_MAROON1 :
-               TheName = "MAROON1";
-       break;
-       case Quantity_NOC_MAROON2 :
-               TheName = "MAROON2";
-       break;
-       case Quantity_NOC_MAROON3 :
-               TheName = "MAROON3";
-       break;
-       case Quantity_NOC_MAROON4 :
-               TheName = "MAROON4";
-       break;
-       case Quantity_NOC_MEDIUMAQUAMARINE :
-               TheName = "MEDIUMAQUAMARINE";
-       break;
-       case Quantity_NOC_MEDIUMORCHID :
-               TheName = "MEDIUMORCHID";
-       break;
-       case Quantity_NOC_MEDIUMORCHID1 :
-               TheName = "MEDIUMORCHID1";
-       break;
-       case Quantity_NOC_MEDIUMORCHID2 :
-               TheName = "MEDIUMORCHID2";
-       break;
-       case Quantity_NOC_MEDIUMORCHID3 :
-               TheName = "MEDIUMORCHID3";
-       break;
-       case Quantity_NOC_MEDIUMORCHID4 :
-               TheName = "MEDIUMORCHID4";
-       break;
-       case Quantity_NOC_MEDIUMPURPLE :
-               TheName = "MEDIUMPURPLE";
-       break;
-       case Quantity_NOC_MEDIUMPURPLE1 :
-               TheName = "MEDIUMPURPLE1";
-       break;
-       case Quantity_NOC_MEDIUMPURPLE2 :
-               TheName = "MEDIUMPURPLE2";
-       break;
-       case Quantity_NOC_MEDIUMPURPLE3 :
-               TheName = "MEDIUMPURPLE3";
-       break;
-       case Quantity_NOC_MEDIUMPURPLE4 :
-               TheName = "MEDIUMPURPLE4";
-       break;
-       case Quantity_NOC_MEDIUMSEAGREEN :
-               TheName = "MEDIUMSEAGREEN";
-       break;
-       case Quantity_NOC_MEDIUMSLATEBLUE :
-               TheName = "MEDIUMSLATEBLUE";
-       break;
-       case Quantity_NOC_MEDIUMSPRINGGREEN :
-               TheName = "MEDIUMSPRINGGREEN";
-       break;
-       case Quantity_NOC_MEDIUMTURQUOISE :
-               TheName = "MEDIUMTURQUOISE";
-       break;
-       case Quantity_NOC_MEDIUMVIOLETRED :
-               TheName = "MEDIUMVIOLETRED";
-       break;
-       case Quantity_NOC_MIDNIGHTBLUE :
-               TheName = "MIDNIGHTBLUE";
-       break;
-       case Quantity_NOC_MINTCREAM :
-               TheName = "MINTCREAM";
-       break;
-       case Quantity_NOC_MISTYROSE :
-               TheName = "MISTYROSE";
-       break;
-       case Quantity_NOC_MISTYROSE2 :
-               TheName = "MISTYROSE2";
-       break;
-       case Quantity_NOC_MISTYROSE3 :
-               TheName = "MISTYROSE3";
-       break;
-       case Quantity_NOC_MISTYROSE4 :
-               TheName = "MISTYROSE4";
-       break;
-       case Quantity_NOC_MOCCASIN :
-               TheName = "MOCCASIN";
-       break;
-       case Quantity_NOC_NAVAJOWHITE1 :
-               TheName = "NAVAJOWHITE1";
-       break;
-       case Quantity_NOC_NAVAJOWHITE2 :
-               TheName = "NAVAJOWHITE2";
-       break;
-       case Quantity_NOC_NAVAJOWHITE3 :
-               TheName = "NAVAJOWHITE3";
-       break;
-       case Quantity_NOC_NAVAJOWHITE4 :
-               TheName = "NAVAJOWHITE4";
-       break;
-       case Quantity_NOC_NAVYBLUE :
-               TheName = "NAVYBLUE";
-       break;
-       case Quantity_NOC_OLDLACE :
-               TheName = "OLDLACE";
-       break;
-       case Quantity_NOC_OLIVEDRAB :
-               TheName = "OLIVEDRAB";
-       break;
-       case Quantity_NOC_OLIVEDRAB1 :
-               TheName = "OLIVEDRAB1";
-       break;
-       case Quantity_NOC_OLIVEDRAB2 :
-               TheName = "OLIVEDRAB2";
-       break;
-       case Quantity_NOC_OLIVEDRAB3 :
-               TheName = "OLIVEDRAB3";
-       break;
-       case Quantity_NOC_OLIVEDRAB4 :
-               TheName = "OLIVEDRAB4";
-       break;
-       case Quantity_NOC_ORANGE :
-               TheName = "ORANGE";
-       break;
-       case Quantity_NOC_ORANGE1 :
-               TheName = "ORANGE1";
-       break;
-       case Quantity_NOC_ORANGE2 :
-               TheName = "ORANGE2";
-       break;
-       case Quantity_NOC_ORANGE3 :
-               TheName = "ORANGE3";
-       break;
-       case Quantity_NOC_ORANGE4 :
-               TheName = "ORANGE4";
-       break;
-       case Quantity_NOC_ORANGERED :
-               TheName = "ORANGERED";
-       break;
-       case Quantity_NOC_ORANGERED1 :
-               TheName = "ORANGERED1";
-       break;
-       case Quantity_NOC_ORANGERED2 :
-               TheName = "ORANGERED2";
-       break;
-       case Quantity_NOC_ORANGERED3 :
-               TheName = "ORANGERED3";
-       break;
-       case Quantity_NOC_ORANGERED4 :
-               TheName = "ORANGERED4";
-       break;
-       case Quantity_NOC_ORCHID :
-               TheName = "ORCHID";
-       break;
-       case Quantity_NOC_ORCHID1 :
-               TheName = "ORCHID1";
-       break;
-       case Quantity_NOC_ORCHID2 :
-               TheName = "ORCHID2";
-       break;
-       case Quantity_NOC_ORCHID3 :
-               TheName = "ORCHID3";
-       break;
-       case Quantity_NOC_ORCHID4 :
-               TheName = "ORCHID4";
-       break;
-       case Quantity_NOC_PALEGOLDENROD :
-               TheName = "PALEGOLDENROD";
-       break;
-       case Quantity_NOC_PALEGREEN :
-               TheName = "PALEGREEN";
-       break;
-       case Quantity_NOC_PALEGREEN1 :
-               TheName = "PALEGREEN1";
-       break;
-       case Quantity_NOC_PALEGREEN2 :
-               TheName = "PALEGREEN2";
-       break;
-       case Quantity_NOC_PALEGREEN3 :
-               TheName = "PALEGREEN3";
-       break;
-       case Quantity_NOC_PALEGREEN4 :
-               TheName = "PALEGREEN4";
-       break;
-       case Quantity_NOC_PALETURQUOISE :
-               TheName = "PALETURQUOISE";
-       break;
-       case Quantity_NOC_PALETURQUOISE1 :
-               TheName = "PALETURQUOISE1";
-       break;
-       case Quantity_NOC_PALETURQUOISE2 :
-               TheName = "PALETURQUOISE2";
-       break;
-       case Quantity_NOC_PALETURQUOISE3 :
-               TheName = "PALETURQUOISE3";
-       break;
-       case Quantity_NOC_PALETURQUOISE4 :
-               TheName = "PALETURQUOISE4";
-       break;
-       case Quantity_NOC_PALEVIOLETRED :
-               TheName = "PALEVIOLETRED";
-       break;
-       case Quantity_NOC_PALEVIOLETRED1 :
-               TheName = "PALEVIOLETRED1";
-       break;
-       case Quantity_NOC_PALEVIOLETRED2 :
-               TheName = "PALEVIOLETRED2";
-       break;
-       case Quantity_NOC_PALEVIOLETRED3 :
-               TheName = "PALEVIOLETRED3";
-       break;
-       case Quantity_NOC_PALEVIOLETRED4 :
-               TheName = "PALEVIOLETRED4";
-       break;
-       case Quantity_NOC_PAPAYAWHIP :
-               TheName = "PAPAYAWHIP";
-       break;
-       case Quantity_NOC_PEACHPUFF :
-               TheName = "PEACHPUFF";
-       break;
-       case Quantity_NOC_PEACHPUFF2 :
-               TheName = "PEACHPUFF2";
-       break;
-       case Quantity_NOC_PEACHPUFF3 :
-               TheName = "PEACHPUFF3";
-       break;
-       case Quantity_NOC_PEACHPUFF4 :
-               TheName = "PEACHPUFF4";
-       break;
-       case Quantity_NOC_PERU :
-               TheName = "PERU";
-       break;
-       case Quantity_NOC_PINK :
-               TheName = "PINK";
-       break;
-       case Quantity_NOC_PINK1 :
-               TheName = "PINK1";
-       break;
-       case Quantity_NOC_PINK2 :
-               TheName = "PINK2";
-       break;
-       case Quantity_NOC_PINK3 :
-               TheName = "PINK3";
-       break;
-       case Quantity_NOC_PINK4 :
-               TheName = "PINK4";
-       break;
-       case Quantity_NOC_PLUM :
-               TheName = "PLUM";
-       break;
-       case Quantity_NOC_PLUM1 :
-               TheName = "PLUM1";
-       break;
-       case Quantity_NOC_PLUM2 :
-               TheName = "PLUM2";
-       break;
-       case Quantity_NOC_PLUM3 :
-               TheName = "PLUM3";
-       break;
-       case Quantity_NOC_PLUM4 :
-               TheName = "PLUM4";
-       break;
-       case Quantity_NOC_POWDERBLUE :
-               TheName = "POWDERBLUE";
-       break;
-       case Quantity_NOC_PURPLE :
-               TheName = "PURPLE";
-       break;
-       case Quantity_NOC_PURPLE1 :
-               TheName = "PURPLE1";
-       break;
-       case Quantity_NOC_PURPLE2 :
-               TheName = "PURPLE2";
-       break;
-       case Quantity_NOC_PURPLE3 :
-               TheName = "PURPLE3";
-       break;
-       case Quantity_NOC_PURPLE4 :
-               TheName = "PURPLE4";
-       break;
-       case Quantity_NOC_RED :
-               TheName = "RED";
-       break;
-       case Quantity_NOC_RED1 :
-               TheName = "RED1";
-       break;
-       case Quantity_NOC_RED2 :
-               TheName = "RED2";
-       break;
-       case Quantity_NOC_RED3 :
-               TheName = "RED3";
-       break;
-       case Quantity_NOC_RED4 :
-               TheName = "RED4";
-       break;
-       case Quantity_NOC_ROSYBROWN :
-               TheName = "ROSYBROWN";
-       break;
-       case Quantity_NOC_ROSYBROWN1 :
-               TheName = "ROSYBROWN1";
-       break;
-       case Quantity_NOC_ROSYBROWN2 :
-               TheName = "ROSYBROWN2";
-       break;
-       case Quantity_NOC_ROSYBROWN3 :
-               TheName = "ROSYBROWN3";
-       break;
-       case Quantity_NOC_ROSYBROWN4 :
-               TheName = "ROSYBROWN4";
-       break;
-       case Quantity_NOC_ROYALBLUE :
-               TheName = "ROYALBLUE";
-       break;
-       case Quantity_NOC_ROYALBLUE1 :
-               TheName = "ROYALBLUE1";
-       break;
-       case Quantity_NOC_ROYALBLUE2 :
-               TheName = "ROYALBLUE2";
-       break;
-       case Quantity_NOC_ROYALBLUE3 :
-               TheName = "ROYALBLUE3";
-       break;
-       case Quantity_NOC_ROYALBLUE4 :
-               TheName = "ROYALBLUE4";
-       break;
-       case Quantity_NOC_SADDLEBROWN :
-               TheName = "SADDLEBROWN";
-       break;
-       case Quantity_NOC_SALMON :
-               TheName = "SALMON";
-       break;
-       case Quantity_NOC_SALMON1 :
-               TheName = "SALMON1";
-       break;
-       case Quantity_NOC_SALMON2 :
-               TheName = "SALMON2";
-       break;
-       case Quantity_NOC_SALMON3 :
-               TheName = "SALMON3";
-       break;
-       case Quantity_NOC_SALMON4 :
-               TheName = "SALMON4";
-       break;
-       case Quantity_NOC_SANDYBROWN :
-               TheName = "SANDYBROWN";
-       break;
-       case Quantity_NOC_SEAGREEN :
-               TheName = "SEAGREEN";
-       break;
-       case Quantity_NOC_SEAGREEN1 :
-               TheName = "SEAGREEN1";
-       break;
-       case Quantity_NOC_SEAGREEN2 :
-               TheName = "SEAGREEN2";
-       break;
-       case Quantity_NOC_SEAGREEN3 :
-               TheName = "SEAGREEN3";
-       break;
-       case Quantity_NOC_SEAGREEN4 :
-               TheName = "SEAGREEN4";
-       break;
-       case Quantity_NOC_SEASHELL :
-               TheName = "SEASHELL";
-       break;
-       case Quantity_NOC_SEASHELL2 :
-               TheName = "SEASHELL2";
-       break;
-       case Quantity_NOC_SEASHELL3 :
-               TheName = "SEASHELL3";
-       break;
-       case Quantity_NOC_SEASHELL4 :
-               TheName = "SEASHELL4";
-       break;
-       case Quantity_NOC_BEET :
-               TheName = "BEET";
-       break;
-       case Quantity_NOC_TEAL :
-               TheName = "TEAL";
-       break;
-       case Quantity_NOC_SIENNA :
-               TheName = "SIENNA";
-       break;
-       case Quantity_NOC_SIENNA1 :
-               TheName = "SIENNA1";
-       break;
-       case Quantity_NOC_SIENNA2 :
-               TheName = "SIENNA2";
-       break;
-       case Quantity_NOC_SIENNA3 :
-               TheName = "SIENNA3";
-       break;
-       case Quantity_NOC_SIENNA4 :
-               TheName = "SIENNA4";
-       break;
-       case Quantity_NOC_SKYBLUE :
-               TheName = "SKYBLUE";
-       break;
-       case Quantity_NOC_SKYBLUE1 :
-               TheName = "SKYBLUE1";
-       break;
-       case Quantity_NOC_SKYBLUE2 :
-               TheName = "SKYBLUE2";
-       break;
-       case Quantity_NOC_SKYBLUE3 :
-               TheName = "SKYBLUE3";
-       break;
-       case Quantity_NOC_SKYBLUE4 :
-               TheName = "SKYBLUE4";
-       break;
-       case Quantity_NOC_SLATEBLUE :
-               TheName = "SLATEBLUE";
-       break;
-       case Quantity_NOC_SLATEBLUE1 :
-               TheName = "SLATEBLUE1";
-       break;
-       case Quantity_NOC_SLATEBLUE2 :
-               TheName = "SLATEBLUE2";
-       break;
-       case Quantity_NOC_SLATEBLUE3 :
-               TheName = "SLATEBLUE3";
-       break;
-       case Quantity_NOC_SLATEBLUE4 :
-               TheName = "SLATEBLUE4";
-       break;
-       case Quantity_NOC_SLATEGRAY1 :
-               TheName = "SLATEGRAY1";
-       break;
-       case Quantity_NOC_SLATEGRAY2 :
-               TheName = "SLATEGRAY2";
-       break;
-       case Quantity_NOC_SLATEGRAY3 :
-               TheName = "SLATEGRAY3";
-       break;
-       case Quantity_NOC_SLATEGRAY4 :
-               TheName = "SLATEGRAY4";
-       break;
-       case Quantity_NOC_SLATEGRAY :
-               TheName = "SLATEGRAY";
-       break;
-       case Quantity_NOC_SNOW :
-               TheName = "SNOW";
-       break;
-       case Quantity_NOC_SNOW2 :
-               TheName = "SNOW2";
-       break;
-       case Quantity_NOC_SNOW3 :
-               TheName = "SNOW3";
-       break;
-       case Quantity_NOC_SNOW4 :
-               TheName = "SNOW4";
-       break;
-       case Quantity_NOC_SPRINGGREEN :
-               TheName = "SPRINGGREEN";
-       break;
-       case Quantity_NOC_SPRINGGREEN2 :
-               TheName = "SPRINGGREEN2";
-       break;
-       case Quantity_NOC_SPRINGGREEN3 :
-               TheName = "SPRINGGREEN3";
-       break;
-       case Quantity_NOC_SPRINGGREEN4 :
-               TheName = "SPRINGGREEN4";
-       break;
-       case Quantity_NOC_STEELBLUE :
-               TheName = "STEELBLUE";
-       break;
-       case Quantity_NOC_STEELBLUE1 :
-               TheName = "STEELBLUE1";
-       break;
-       case Quantity_NOC_STEELBLUE2 :
-               TheName = "STEELBLUE2";
-       break;
-       case Quantity_NOC_STEELBLUE3 :
-               TheName = "STEELBLUE3";
-       break;
-       case Quantity_NOC_STEELBLUE4 :
-               TheName = "STEELBLUE4";
-       break;
-       case Quantity_NOC_TAN :
-               TheName = "TAN";
-       break;
-       case Quantity_NOC_TAN1 :
-               TheName = "TAN1";
-       break;
-       case Quantity_NOC_TAN2 :
-               TheName = "TAN2";
-       break;
-       case Quantity_NOC_TAN3 :
-               TheName = "TAN3";
-       break;
-       case Quantity_NOC_TAN4 :
-               TheName = "TAN4";
-       break;
-       case Quantity_NOC_THISTLE :
-               TheName = "THISTLE";
-       break;
-       case Quantity_NOC_THISTLE1 :
-               TheName = "THISTLE1";
-       break;
-       case Quantity_NOC_THISTLE2 :
-               TheName = "THISTLE2";
-       break;
-       case Quantity_NOC_THISTLE3 :
-               TheName = "THISTLE3";
-       break;
-       case Quantity_NOC_THISTLE4 :
-               TheName = "THISTLE4";
-       break;
-       case Quantity_NOC_TOMATO :
-               TheName = "TOMATO";
-       break;
-       case Quantity_NOC_TOMATO1 :
-               TheName = "TOMATO1";
-       break;
-       case Quantity_NOC_TOMATO2 :
-               TheName = "TOMATO2";
-       break;
-       case Quantity_NOC_TOMATO3 :
-               TheName = "TOMATO3";
-       break;
-       case Quantity_NOC_TOMATO4 :
-               TheName = "TOMATO4";
-       break;
-       case Quantity_NOC_TURQUOISE :
-               TheName = "TURQUOISE";
-       break;
-       case Quantity_NOC_TURQUOISE1 :
-               TheName = "TURQUOISE1";
-       break;
-       case Quantity_NOC_TURQUOISE2 :
-               TheName = "TURQUOISE2";
-       break;
-       case Quantity_NOC_TURQUOISE3 :
-               TheName = "TURQUOISE3";
-       break;
-       case Quantity_NOC_TURQUOISE4 :
-               TheName = "TURQUOISE4";
-       break;
-       case Quantity_NOC_VIOLET :
-               TheName = "VIOLET";
-       break;
-       case Quantity_NOC_VIOLETRED :
-               TheName = "VIOLETRED";
-       break;
-       case Quantity_NOC_VIOLETRED1 :
-               TheName = "VIOLETRED1";
-       break;
-       case Quantity_NOC_VIOLETRED2 :
-               TheName = "VIOLETRED2";
-       break;
-       case Quantity_NOC_VIOLETRED3 :
-               TheName = "VIOLETRED3";
-       break;
-       case Quantity_NOC_VIOLETRED4 :
-               TheName = "VIOLETRED4";
-       break;
-       case Quantity_NOC_WHEAT :
-               TheName = "WHEAT";
-       break;
-       case Quantity_NOC_WHEAT1 :
-               TheName = "WHEAT1";
-       break;
-       case Quantity_NOC_WHEAT2 :
-               TheName = "WHEAT2";
-       break;
-       case Quantity_NOC_WHEAT3 :
-               TheName = "WHEAT3";
-       break;
-       case Quantity_NOC_WHEAT4 :
-               TheName = "WHEAT4";
-       break;
-       case Quantity_NOC_WHITE :
-               TheName = "WHITE";
-       break;
-       case Quantity_NOC_WHITESMOKE :
-               TheName = "WHITESMOKE";
-       break;
-       case Quantity_NOC_YELLOW :
-               TheName = "YELLOW";
-       break;
-       case Quantity_NOC_YELLOW1 :
-               TheName = "YELLOW1";
-       break;
-       case Quantity_NOC_YELLOW2 :
-               TheName = "YELLOW2";
-       break;
-       case Quantity_NOC_YELLOW3 :
-               TheName = "YELLOW3";
-       break;
-       case Quantity_NOC_YELLOW4 :
-               TheName = "YELLOW4";
-       break;
-       case Quantity_NOC_YELLOWGREEN :
-               TheName = "YELLOWGREEN";
-       break;
-       default :
-               TheName = "UNDEFINED";
-               throw Standard_OutOfRange("Bad name");
-       break;
-}
-return (TheName);
+  // compute hue
+  float aHue = RGBHLS_H_UNDEFINED;
+  if (aSaturation != 0.0f)
+  {
+    aHue = 60.0f * (aPlus + aDiff / aDelta);
+    if (aHue < 0.0f) aHue += 360.0f;
+  }
+  return NCollection_Vec3<float> (aHue, aMax, aSaturation);
 }
 
-//\f
 ///////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////// TESTS ////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
+static void TestOfColor()
+{
+  Standard_Real H, L, S;
+  Standard_Real R, G, B;
+  Standard_Real DC, DI;
+  Standard_Integer i;
 
-void Quantity_Color::Test () {
-
-void TestOfColor ();
-
-       try {
-         OCC_CATCH_SIGNALS
-               TestOfColor ();
-       }
-
-       catch (Standard_Failure const& anException) {
-               std::cout << anException << std::endl;
-       }
-
-}
-
-void TestOfColor () {
-
-Standard_Real H, L, S;
-Standard_Real R, G, B;
-Standard_Real DC, DI;
-Standard_Integer i;
-
-std::cout << "definition color tests\n----------------------\n";
-
-Quantity_Color C1;
-Quantity_Color C2 (Quantity_NOC_ROYALBLUE2);
-Quantity_Color C3 (Quantity_NOC_SANDYBROWN);
-
-// An Introduction to Standard_Object-Oriented Programming and C++ p43
-// a comment for the "const char *const" declaration
-const char *const cyan = "YELLOW";
-const char *const blue = "ROYALBLUE2";
-const char *const brown = "SANDYBROWN";
-
-Standard_Real RR, GG, BB;
-
-const Standard_Real DELTA = 1.0e-4;
-
-std::cout << "Get values and names of color tests\n-----------------------------------\n";
-
-       C1.Values (R, G, B, Quantity_TOC_RGB);
-       if ( (R!=1.0) || (G!=1.0) || (B!=0.0) ) {
-               std::cout << "TEST_ERROR : Values () bad default color\n";
-               std::cout << "R, G, B values: " << R << " " << G << " " << B << "\n";
-       }
-       if ( (C1.Red ()!=1.0) || (C1.Green ()!=1.0) || (C1.Blue ()!=0.0) ) {
-               std::cout << "TEST_ERROR : Values () bad default color\n";
-               std::cout << "R, G, B values: " << C1.Red () << " " << C1.Green ()
-                       << " " << C1.Blue () << "\n";
-       }
-       if (strcmp (Quantity_Color::StringName (C1.Name()), cyan) != 0)
-               std::cout << "TEST_ERROR : StringName () " <<
-                       Quantity_Color::StringName (C1.Name()) << 
-                                        " != YELLOW\n";
-
-       RR=0.262745; GG=0.431373; BB=0.933333;
-       C1.SetValues (RR, GG, BB, Quantity_TOC_RGB);
-       C2.Values (R, G, B, Quantity_TOC_RGB);
-       if ( (Abs (RR-R) > DELTA) ||
-            (Abs (GG-G) > DELTA) ||
-            (Abs (BB-B) > DELTA) ) {
-               std::cout << "TEST_ERROR : Values () bad default color\n";
-               std::cout << "R, G, B values: " << R << " " << G << " " << B << "\n";
-       }
+  std::cout << "definition color tests\n----------------------\n";
 
-       if (C2 != C1) {
-               std::cout << "TEST_ERROR : IsDifferent ()\n";
-       }
-       if (C3 == C1) {
-               std::cout << "TEST_ERROR : IsEqual ()\n";
-       }
+  Quantity_Color C1;
+  Quantity_Color C2 (Quantity_NOC_ROYALBLUE2);
+  Quantity_Color C3 (Quantity_NOC_SANDYBROWN);
 
-       std::cout << "Distance C1,C2 " << C1.Distance (C2) << "\n";
-       std::cout << "Distance C1,C3 " << C1.Distance (C3) << "\n";
-       std::cout << "Distance C2,C3 " << C2.Distance (C3) << "\n";
-       std::cout << "SquareDistance C1,C2 " << C1.SquareDistance (C2) << "\n";
-       std::cout << "SquareDistance C1,C3 " << C1.SquareDistance (C3) << "\n";
-       std::cout << "SquareDistance C2,C3 " << C2.SquareDistance (C3) << "\n";
+  // An Introduction to Standard_Object-Oriented Programming and C++ p43
+  // a comment for the "const char *const" declaration
+  const char *const cyan = "YELLOW";
+  const char *const blue = "ROYALBLUE2";
+  const char *const brown = "SANDYBROWN";
 
-       if (strcmp (Quantity_Color::StringName (C2.Name()), blue) != 0)
-               std::cout << "TEST_ERROR : StringName () " <<
-                       Quantity_Color::StringName (C2.Name()) << 
-                        " != ROYALBLUE2\n";
+  Standard_Real RR, GG, BB;
 
-std::cout << "conversion rgbhls tests\n-----------------------\n";
-       Quantity_Color::RgbHls (R, G, B, H, L, S);
-       Quantity_Color::HlsRgb (H, L, S, R, G, B);
-       RR=0.262745; GG=0.431373; BB=0.933333;
-       if ( (Abs (RR-R) > DELTA) ||
-            (Abs (GG-G) > DELTA) ||
-            (Abs (BB-B) > DELTA) ) {
-               std::cout << "TEST_ERROR : RgbHls or HlsRgb bad conversion\n";
-               std::cout << "RGB init : " << RR << " " << GG << " " << BB << "\n";
-               std::cout << "RGB values : " << R << " " << G << " " << B << "\n";
-               std::cout << "Difference RGB : "
-                       << RR-R << " " << GG-G << " " << BB-B << "\n";
-       }
+  const Standard_Real DELTA = 1.0e-4;
 
-std::cout << "distance tests\n--------------\n";
-       R = (float ) 0.9568631; G = (float ) 0.6431371; B = (float ) 0.3764711;
-       C2.SetValues (R, G, B, Quantity_TOC_RGB);
-       if (C2.Distance (C3) > DELTA) {
-               std::cout << "TEST_ERROR : Distance () bad result\n";
-               std::cout << "Distance C2 and C3 : " << C2.Distance (C3) << "\n";
-       }
+  std::cout << "Get values and names of color tests\n-----------------------------------\n";
 
-       C2.Delta (C3, DC, DI);
-       if (Abs (DC) > DELTA)
-               std::cout << "TEST_ERROR : Delta () bad result for DC\n";
-       if (Abs (DI) > DELTA)
-               std::cout << "TEST_ERROR : Delta () bad result for DI\n";
+  C1.Values (R, G, B, Quantity_TOC_RGB);
+  if ((R!=1.0) || (G!=1.0) || (B!=0.0))
+  {
+    std::cout << "TEST_ERROR : Values () bad default color\n";
+    std::cout << "R, G, B values: " << R << " " << G << " " << B << "\n";
+  }
+  if ( (C1.Red ()!=1.0) || (C1.Green ()!=1.0) || (C1.Blue ()!=0.0) )
+  {
+    std::cout << "TEST_ERROR : Values () bad default color\n";
+    std::cout << "R, G, B values: " << C1.Red () << " " << C1.Green () << " " << C1.Blue () << "\n";
+  }
+  if (strcmp (Quantity_Color::StringName (C1.Name()), cyan) != 0)
+  {
+    std::cout << "TEST_ERROR : StringName () " << Quantity_Color::StringName (C1.Name()) <<  " != YELLOW\n";
+  }
 
-std::cout << "name tests\n----------\n";
-       R = (float ) 0.9568631; G = (float ) 0.6431371; B = (float ) 0.3764711;
-       C2.SetValues (R, G, B, Quantity_TOC_RGB);
-       if (strcmp (Quantity_Color::StringName (C2.Name()), brown) != 0)
-               std::cout << "TEST_ERROR : StringName () " <<
-                       Quantity_Color::StringName (C2.Name()) << 
-                        " != SANDYBROWN\n";
+  RR=0.262745; GG=0.431373; BB=0.933333;
+  C1.SetValues (RR, GG, BB, Quantity_TOC_RGB);
+  C2.Values (R, G, B, Quantity_TOC_RGB);
+  if ((Abs (RR-R) > DELTA)
+   || (Abs (GG-G) > DELTA)
+   || (Abs (BB-B) > DELTA))
+  {
+    std::cout << "TEST_ERROR : Values () bad default color\n";
+    std::cout << "R, G, B values: " << R << " " << G << " " << B << "\n";
+  }
 
-std::cout << "contrast change tests\n---------------------\n";
-       for (i=1; i<=10; i++) {
-               C2.ChangeContrast (10.);
-               C2.ChangeContrast (-9.09090909);
-       }
-       C2.Values (R, G, B, Quantity_TOC_RGB);
-       RR=0.956863; GG=0.6431371; BB=0.3764711;
-       if ( (Abs (RR-R) > DELTA) ||
-            (Abs (GG-G) > DELTA) ||
-            (Abs (BB-B) > DELTA) ) {
-               std::cout << "TEST_ERROR : ChangeContrast () bad values\n";
-               std::cout << "RGB init : " << RR << " " << GG << " " << BB << "\n";
-               std::cout << "RGB values : " << R << " " << G << " " << B << "\n";
-       }
+  if (C2 != C1)
+  {
+    std::cout << "TEST_ERROR : IsDifferent ()\n";
+  }
+  if (C3 == C1)
+  {
+    std::cout << "TEST_ERROR : IsEqual ()\n";
+  }
 
-}
+  std::cout << "Distance C1,C2 " << C1.Distance (C2) << "\n";
+  std::cout << "Distance C1,C3 " << C1.Distance (C3) << "\n";
+  std::cout << "Distance C2,C3 " << C2.Distance (C3) << "\n";
+  std::cout << "SquareDistance C1,C2 " << C1.SquareDistance (C2) << "\n";
+  std::cout << "SquareDistance C1,C3 " << C1.SquareDistance (C3) << "\n";
+  std::cout << "SquareDistance C2,C3 " << C2.SquareDistance (C3) << "\n";
 
-/*
- *
- * Objet       :       Algorithme de conversion HLS vers RGB
- *
- * Rappels     :       RGB et HLS sont 2 modeles de representation
- *                     des couleurs
- *
- * Parametres  :       h, l, s connus avec h dans [0,360] et l et s dans [0,1]
- *                     r, g, b dans [0,1]
- *
- * Reference   :       La synthese d'images, Collection Hermes
- *
- * Adaptation  :       Cal     07 fevrier 1992
- *
- * Modification        :       ?
- */
+  if (strcmp (Quantity_Color::StringName (C2.Name()), blue) != 0)
+  {
+    std::cout << "TEST_ERROR : StringName () " << Quantity_Color::StringName (C2.Name()) <<  " != ROYALBLUE2\n";
+  }
 
-void call_hlsrgb (float h, float l, float s, float& r, float& g, float& b)
-/* parametres d'entree : h, l, s connus avec h dans [0,360]
- * et l et s dans [0,1] */
-/* parametres de sortie : r, g, b dans [0,1] */
-{
+  std::cout << "conversion rgbhls tests\n-----------------------\n";
+  Quantity_Color::RgbHls (R, G, B, H, L, S);
+  Quantity_Color::HlsRgb (H, L, S, R, G, B);
+  RR=0.262745; GG=0.431373; BB=0.933333;
+  if ((Abs (RR-R) > DELTA)
+   || (Abs (GG-G) > DELTA)
+   || (Abs (BB-B) > DELTA))
+  {
+    std::cout << "TEST_ERROR : RgbHls or HlsRgb bad conversion\n";
+    std::cout << "RGB init : " << RR << " " << GG << " " << BB << "\n";
+    std::cout << "RGB values : " << R << " " << G << " " << B << "\n";
+    std::cout << "Difference RGB : " << RR-R << " " << GG-G << " " << BB-B << "\n";
+  }
 
-       float hcopy;
-       float lmuls;
-       int hi;
+  std::cout << "distance tests\n--------------\n";
+  R = (float ) 0.9568631; G = (float ) 0.6431371; B = (float ) 0.3764711;
+  C2.SetValues (R, G, B, Quantity_TOC_RGB);
+  if (C2.Distance (C3) > DELTA)
+  {
+    std::cout << "TEST_ERROR : Distance () bad result\n";
+    std::cout << "Distance C2 and C3 : " << C2.Distance (C3) << "\n";
+  }
 
-       hcopy = h;
-       lmuls = l * s;
+  C2.Delta (C3, DC, DI);
+  if (Abs (DC) > DELTA)
+  {
+    std::cout << "TEST_ERROR : Delta () bad result for DC\n";
+  }
+  if (Abs (DI) > DELTA)
+  {
+    std::cout << "TEST_ERROR : Delta () bad result for DI\n";
+  }
 
-       if (s == 0.0 && h == RGBHLS_H_UNDEFINED) {
-             /* cas achromatique */
-             r = g = b = l;
-       }
-       else {
-          /* cas chromatique */
-          if (hcopy == 360.0) {
-             hcopy = 0.0;
-             hi = 0;
-          }
-          else {
-             hcopy /= 60.0;
-             hi = (int)hcopy;
-          }
+  std::cout << "name tests\n----------\n";
+  R = (float ) 0.9568631; G = (float ) 0.6431371; B = (float ) 0.3764711;
+  C2.SetValues (R, G, B, Quantity_TOC_RGB);
+  if (strcmp (Quantity_Color::StringName (C2.Name()), brown) != 0)
+  {
+    std::cout << "TEST_ERROR : StringName () " << Quantity_Color::StringName (C2.Name()) <<  " != SANDYBROWN\n";
+  }
 
-          switch (hi) {
-             case 0 :
-                       /*
-                          r = l;
-                          g = l * (1 - (s * (1 - (hcopy - hi))));
-                          b = l * (1 - s);
-                        */
-                       r = l;
-                       b = l - lmuls;
-                       g = b + lmuls * hcopy;
-             break;
-             case 1 :
-                       /*
-                          r = l * (1 - (s * (hcopy - hi)));
-                          g = l;
-                          b = l * (1 - s);
-                        */
-                       r = l + lmuls - lmuls * hcopy;
-                       g = l;
-                       b = l - lmuls;
-             break;
-             case 2 :
-                       /*
-                          r = l * (1 - s);
-                          g = l;
-                          b = l * (1 - (s * (1 - (hcopy - hi))));
-                        */
-                       r = l - lmuls;
-                       g = l;
-                       b = l - 3 * lmuls + lmuls * hcopy;
-             break;
-             case 3 :
-                       /*
-                          r = l * (1 - s);
-                          g = l * (1 - (s * (hcopy - hi)));
-                          b = l;
-                        */
-                       r = l - lmuls;
-                       g = l + 3 * lmuls - lmuls * hcopy;
-                       b = l;
-             break;
-             case 4 :
-                       /*
-                          r = l * (1 - (s * (1 - (hcopy - hi))));
-                          g = l * (1 - s);
-                          b = l;
-                        */
-                       r = l - 5 * lmuls + lmuls * hcopy;
-                       g = l - lmuls;
-                       b = l;
-             break;
-             case 5 :
-                       /*
-                          r = l;
-                          g = l * (1 - s);
-                          b = l * (1 - (s * (hcopy - hi)));
-                        */
-                       r = l;
-                       g = l - lmuls;
-                       b = l + 5 * lmuls - lmuls * hcopy;
-             break;
-          }
-       }
+  std::cout << "contrast change tests\n---------------------\n";
+  for (i=1; i<=10; i++)
+  {
+    C2.ChangeContrast (10.);
+    C2.ChangeContrast (-9.09090909);
+  }
+  C2.Values (R, G, B, Quantity_TOC_RGB);
+  RR=0.956863; GG=0.6431371; BB=0.3764711;
+  if ((Abs (RR-R) > DELTA)
+   || (Abs (GG-G) > DELTA)
+   || (Abs (BB-B) > DELTA))
+  {
+    std::cout << "TEST_ERROR : ChangeContrast () bad values\n";
+    std::cout << "RGB init : " << RR << " " << GG << " " << BB << "\n";
+    std::cout << "RGB values : " << R << " " << G << " " << B << "\n";
+  }
 }
 
-/*
- * Objet       :       Algorithme de conversion RGB vers HLS
- *
- * Rappels     :       RGB et HLS sont 2 modeles de representation
- *                     des couleurs
- *
- * Parametres  :       r, g, b connus dans [0,1]
- *                     h, l, s avec h dans [0,360] et l et s dans [0,1]
- *
- * Reference   :       La synthese d'images, Collection Hermes
- *
- * Creation    :       Cal     04 fevrier 1992
- *
- * Modification        :       ?
- */
-
-void call_rgbhls (float r, float g, float b, float& h, float& l, float& s)
-/* parametres d'entree : r, g, b connus dans [0,1] */
-/* parametres de sortie : h, l, s avec h dans [0,360] et l et s dans [0,1] */
+// =======================================================================
+// function : Test
+// purpose  :
+// =======================================================================
+void Quantity_Color::Test()
 {
-
-       float max, min;
-       float plus, diff;
-       float delta;
-
-       /* calcul du max entre r, g et b */
-                    { plus = 0.0; diff = g - b; max = r; }
-       if (g > max) { plus = 2.0; diff = b - r; max = g; }
-       if (b > max) { plus = 4.0; diff = r - g; max = b; }
-
-       /* calcul du min entre r, g et b */
-       min = r;
-       if (g < min) min = g;
-       if (b < min) min = b;
-
-       delta = max - min;
-
-       /* calcul de la luminance */
-       l = max;
-
-       /* calcul de la saturation */
-       s = 0.0;
-       if (max != 0.0) s = delta / max;
-
-       /* calcul de la teinte */
-       if (s == 0.0)
-          /* cas des gris */
-          h = RGBHLS_H_UNDEFINED;
-       else {
-          h = (float ) 60.0 * ( plus + diff / delta );
-          if (h < 0.0) h += 360.0;
-       }
+  try
+  {
+    OCC_CATCH_SIGNALS
+    TestOfColor();
+  }
+  catch (Standard_Failure const& anException)
+  {
+    std::cout << anException << std::endl;
+  }
 }
 
 //=======================================================================
@@ -3933,5 +573,5 @@ void call_rgbhls (float r, float g, float b, float& h, float& l, float& s)
 void Quantity_Color::DumpJson (Standard_OStream& theOStream, const Standard_Integer) const
 {
   OCCT_DUMP_CLASS_BEGIN (theOStream, Quantity_Color);
-  OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGB", 3, MyRed, MyGreen, MyBlue)
+  OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGB", 3, myRgb.r(), myRgb.g(), myRgb.b())
 }