Link to: source code | other
interface directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages red/green/blue style colors in the
Goldenseal small business accounting software,
project management software, construction
accounting software
and construction software.
class CTCS_RGBColor
{
public:
// construction/destruction
CTCS_RGBColor() {}
CTCS_RGBColor(const CTCS_RGBColor &src) { Assign(src); }
CTCS_RGBColor(const TCS_RGBColor &inNativeRGB) { Assign(inNativeRGB); }
CTCS_RGBColor(const TCS_ColorType inRed, const TCS_ColorType inGreen,
const TCS_ColorType inBlue)
{ Assign(inRed, inGreen, inBlue); }
CTCS_RGBColor(const UInt8 colorIndex) // TCS 9/18/02
{
SetColorFromIndex(*this, colorIndex);
}
~CTCS_RGBColor() {}
static void SetColorFromIndex(CTCS_RGBColor &theColor, const UInt8 inIndex);
// we keep a few very commonly used colors as statics.
// for less common "standard" colors, use SetColorFromIndex
static CTCS_RGBColor GetWhiteColor() { return gWhiteColor; } // TCS 9/18/02
static CTCS_RGBColor GetLightGrayColor() { return gLtGrayColor; }
static CTCS_RGBColor GetGrayColor() { return gGrayColor; }
static CTCS_RGBColor GetDarkGrayColor() { return gTCSGrayColor; }
static CTCS_RGBColor GetBlackColor() { return gBlackColor; }
static CTCS_RGBColor GetRedColor() { return gRedColor; }
// accessors
TCS_ColorType GetRed() const { return mRed; }
TCS_ColorType GetGreen() const { return mGreen; }
TCS_ColorType GetBlue() const { return mBlue; }
void UpdateColors();
TCS_RGBColor GetNativeRGB() const
{
TCS_RGBColor nativeRGB;
GetNativeRGB (&nativeRGB);
return nativeRGB;
}
// Assignment
inline void Assign(const CTCS_RGBColor &inColor)
{
mRed = inColor.mRed;
mGreen = inColor.mGreen;
mBlue = inColor.mBlue;
}
inline void Assign(const TCS_ColorType inRed, const TCS_ColorType inGreen,
const TCS_ColorType inBlue)
{
mRed = inRed;
mGreen = inGreen;
mBlue = inBlue;
}
// operator overloads
inline CTCS_RGBColor& operator=(const CTCS_RGBColor &inColor)
{
Assign(inColor);
return *this;
}
inline CTCS_RGBColor& operator=(const TCS_RGBColor &inNativeRGB)
{
Assign (inNativeRGB);
return *this;
}
inline Boolean operator==(const CTCS_RGBColor &inColor) const
{
return (mRed == inColor.mRed) &&
(mGreen == inColor.mGreen) &&
(mBlue == inColor.mBlue);
}
inline Boolean operator!=(const CTCS_RGBColor &inColor) const
{
return (mRed != inColor.mRed) ||
(mGreen != inColor.mGreen) ||
(mBlue != inColor.mBlue);
}
// environment-specific
#if TCS_CANUSE_QUICKTIME
// MacOS methods
void GetNativeRGB (TCS_RGBColor *inMacRGB) const
{
inMacRGB->red = mRed;
inMacRGB->blue = mBlue;
inMacRGB->green = mGreen;
}
void Assign (const TCS_RGBColor &inMacRGB)
{
mRed = inMacRGB.red;
mBlue = inMacRGB.blue;
mGreen = inMacRGB.green;
}
#elif TCS_FOR_WINDOWS
// Windows OS methods
void GetNativeRGB (TCS_RGBColor *inWinRGB) const
{
inWinRGB->rgbRed = mRed;
inWinRGB->rgbBlue = mBlue;
inWinRGB->rgbGreen = mGreen;
}
void Assign (const TCS_RGBColor &inWinRGB)
{
mRed = inWinRGB.rgbRed;
mBlue = inWinRGB.rgbBlue;
mGreen = inWinRGB.rgbGreen;
}
#endif
protected:
TCS_ColorType mRed,
mGreen,
mBlue;
}; |