/****************************************************************************\
Datei : Color.cpp
Projekt: Farbverwaltung
Inhalt : CColor Implementierung
Datum : 10.01.1999
Autor : Christian Rodemeyer
Hinweis: � 1999 by Christian Rodemeyer
Info �ber HLS Konvertierungsfunktion
- Foley and Van Dam: "Fundamentals of Interactive Computer Graphics"
- MSDN: 'HLS Color Spaces'
- MSDN: 'Converting Colors Between RGB and HLS'
\****************************************************************************/
#include "StdAfx.h"
#include "Color.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/****************************************************************************\
CColor: Implementierung
\****************************************************************************/
const CColor::DNamedColor CColor::m_namedColor[CColor::numNamedColors] =
{
{aliceblue , "aliceblue"},
{antiquewhite , "antiquewhite"},
{aqua , "aqua"},
{aquamarine , "aquamarine"},
{azure , "azure"},
{beige , "beige"},
{bisque , "bisque"},
{black , "black"},
{blanchedalmond , "blanchedalmond"},
{blue , "blue"},
{blueviolet , "blueviolet"},
{brown , "brown"},
{burlywood , "burlywood"},
{cadetblue , "cadetblue"},
{chartreuse , "chartreuse"},
{chocolate , "chocolate"},
{coral , "coral"},
{cornflower , "cornflower"},
{cornsilk , "cornsilk"},
{crimson , "crimson"},
{cyan , "cyan"},
{darkblue , "darkblue"},
{darkcyan , "darkcyan"},
{darkgoldenrod , "darkgoldenrod"},
{darkgray , "darkgray"},
{darkgreen , "darkgreen"},
{darkkhaki , "darkkhaki"},
{darkmagenta , "darkmagenta"},
{darkolivegreen , "darkolivegreen"},
{darkorange , "darkorange"},
{darkorchid , "darkorchid"},
{darkred , "darkred"},
{darksalmon , "darksalmon"},
{darkseagreen , "darkseagreen"},
{darkslateblue , "darkslateblue"},
{darkslategray , "darkslategray"},
{darkturquoise , "darkturquoise"},
{darkviolet , "darkviolet"},
{deeppink , "deeppink"},
{deepskyblue , "deepskyblue"},
{dimgray , "dimgray"},
{dodgerblue , "dodgerblue"},
{firebrick , "firebrick"},
{floralwhite , "floralwhite"},
{forestgreen , "forestgreen"},
{fuchsia , "fuchsia"},
{gainsboro , "gainsboro"},
{ghostwhite , "ghostwhite"},
{gold , "gold"},
{goldenrod , "goldenrod"},
{gray , "gray"},
{green , "green"},
{greenyellow , "greenyellow"},
{honeydew , "honeydew"},
{hotpink , "hotpink"},
{indianred , "indianred"},
{indigo , "indigo"},
{ivory , "ivory"},
{khaki , "khaki"},
{lavender , "lavender"},
{lavenderblush , "lavenderblush"},
{lawngreen , "lawngreen"},
{lemonchiffon , "lemonchiffon"},
{lightblue , "lightblue"},
{lightcoral , "lightcoral"},
{lightcyan , "lightcyan"},
{lightgoldenrodyellow , "lightgoldenrodyellow"},
{lightgreen , "lightgreen"},
{lightgrey , "lightgrey"},
{lightpink , "lightpink"},
{lightsalmon , "lightsalmon"},
{lightseagreen , "lightseagreen"},
{lightskyblue , "lightskyblue"},
{lightslategray , "lightslategray"},
{lightsteelblue , "lightsteelblue"},
{lightyellow , "lightyellow"},
{lime , "lime"},
{limegreen , "limegreen"},
{linen , "linen"},
{magenta , "magenta"},
{maroon , "maroon"},
{mediumaquamarine , "mediumaquamarine"},
{mediumblue , "mediumblue"},
{mediumorchid , "mediumorchid"},
{mediumpurple , "mediumpurple"},
{mediumseagreen , "mediumseagreen"},
{mediumslateblue , "mediumslateblue"},
{mediumspringgreen , "mediumspringgreen"},
{mediumturquoise , "mediumturquoise"},
{mediumvioletred , "mediumvioletred"},
{midnightblue , "midnightblue"},
{mintcream , "mintcream"},
{mistyrose , "mistyrose"},
{moccasin , "moccasin"},
{navajowhite , "navajowhite"},
{navy , "navy"},
{oldlace , "oldlace"},
{olive , "olive"},
{olivedrab , "olivedrab"},
{orange , "orange"},
{orangered , "orangered"},
{orchid , "orchid"},
{palegoldenrod , "palegoldenrod"},
{palegreen , "palegreen"},
{paleturquoise , "paleturquoise"},
{palevioletred , "palevioletred"},
{papayawhip , "papayawhip"},
{peachpuff , "peachpuff"},
{peru , "peru"},
{pink , "pink"},
{plum , "plum"},
{powderblue , "powderblue"},
{purple , "purple"},
{red , "red"},
{rosybrown , "rosybrown"},
{royalblue , "royalblue"},
{saddlebrown , "saddlebrown"},
{salmon , "salmon"},
{sandybrown , "sandybrown"},
{seagreen , "seagreen"},
{seashell , "seashell"},
{sienna , "sienna"},
{silver , "silver"},
{skyblue , "skyblue"},
{slateblue , "slateblue"},
{slategray , "slategray"},
{snow , "snow"},
{springgreen , "springgreen"},
{steelblue , "steelblue"},
{tan , "tan"},
{teal , "teal"},
{thistle , "thistle"},
{tomato , "tomato"},
{turquoise , "turquoise"},
{violet , "violet"},
{wheat , "wheat"},
{white , "white"},
{whitesmoke , "whitesmoke"},
{yellow , "yellow"},
{yellowgreen , "yellowgreen"}
};
LPCSTR CColor::GetNameFromIndex(int i)
{
ASSERT(0 <= i && i < numNamedColors);
return m_namedColor[i].name;
}
CColor CColor::GetColorFromIndex(int i)
{
ASSERT(0 <= i && i < numNamedColors);
return m_namedColor[i].color;
}
CColor CColor::FromString(LPCSTR pcColor)
{
CColor t;
t.SetString(pcColor);
return t;
}
CColor::CColor(COLORREF cr)
: m_bIsRGB(true), m_bIsHLS(false), m_colorref(cr)
{}
CColor::operator COLORREF() const
{
const_cast<CColor*>(this)->ToRGB();
return m_colorref;
}
// RGB
void CColor::SetRed(int red)
{
ASSERT(0 <= red && red <= 255);
ToRGB();
m_color[c_red] = static_cast<unsigned char>(red);
m_bIsHLS = false;
}
void CColor::SetGreen(int green)
{
ASSERT(0 <= green && green <= 255);
ToRGB();
m_color[c_green] = static_cast<unsigned char>(green);
m_bIsHLS = false;
}
void CColor::SetBlue(int blue)
{
ASSERT(0 <= blue && blue <= 255);
ToRGB();
m_color[c_blue] = static_cast<unsigned char>(blue);
m_bIsHLS = false;
}
void CColor::SetRGB(int red, int blue, int green)
{
ASSERT(0 <= red && red <= 255);
ASSERT(0 <= green && green <= 255);
ASSERT(0 <= blue && blue <= 255);
m_color[c_red] = static_cast<unsigned char>(red);
m_color[c_green] = static_cast<unsigned char>(
- 1
- 2
前往页