Added color lookups when assigning colors and reworked documentation
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2493 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -31,17 +31,26 @@
|
|||||||
// Local Includes --------------------------------------------------------------
|
// Local Includes --------------------------------------------------------------
|
||||||
#include "RGBColor.h"
|
#include "RGBColor.h"
|
||||||
#include "SystemPalette.h"
|
#include "SystemPalette.h"
|
||||||
|
#include <ColorUtils.h>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
\brief Create an RGBColor from specified values
|
||||||
|
\param red
|
||||||
|
\param green
|
||||||
|
\param blue
|
||||||
|
\param alpha, defaults to 255
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
RGBColor::RGBColor(uint8 r, uint8 g, uint8 b, uint8 a)
|
||||||
{
|
{
|
||||||
SetColor(r,g,b,a);
|
SetColor(r,g,b,a);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(int r, int g, int b, int a=255)
|
\brief Create an RGBColor from specified values
|
||||||
|
\param red
|
||||||
|
\param green
|
||||||
|
\param blue
|
||||||
|
\param alpha, defaults to 255
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(int r, int g, int b, int a=255)
|
RGBColor::RGBColor(int r, int g, int b, int a=255)
|
||||||
{
|
{
|
||||||
@@ -49,7 +58,8 @@ RGBColor::RGBColor(int r, int g, int b, int a=255)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(const rgb_color &col)
|
\brief Create an RGBColor from an rgb_color
|
||||||
|
\param color to initialize from
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(const rgb_color &col)
|
RGBColor::RGBColor(const rgb_color &col)
|
||||||
{
|
{
|
||||||
@@ -57,7 +67,8 @@ RGBColor::RGBColor(const rgb_color &col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(uint16 col)
|
\brief Create an RGBColor from a 16-bit RGBA color
|
||||||
|
\param color to initialize from
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(uint16 col)
|
RGBColor::RGBColor(uint16 col)
|
||||||
{
|
{
|
||||||
@@ -65,7 +76,8 @@ RGBColor::RGBColor(uint16 col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(uint8 col)
|
\brief Create an RGBColor from an index color
|
||||||
|
\param color to initialize from
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(uint8 col)
|
RGBColor::RGBColor(uint8 col)
|
||||||
{
|
{
|
||||||
@@ -73,7 +85,8 @@ RGBColor::RGBColor(uint8 col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(const RGBColor &col)
|
\brief Copy Contructor
|
||||||
|
\param color to initialize from
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(const RGBColor &col)
|
RGBColor::RGBColor(const RGBColor &col)
|
||||||
{
|
{
|
||||||
@@ -83,7 +96,7 @@ RGBColor::RGBColor(const RGBColor &col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor::RGBColor(void)
|
\brief Create an RGBColor with the values(0,0,0,0)
|
||||||
*/
|
*/
|
||||||
RGBColor::RGBColor(void)
|
RGBColor::RGBColor(void)
|
||||||
{
|
{
|
||||||
@@ -91,7 +104,7 @@ RGBColor::RGBColor(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn uint8 RGBColor::GetColor8(void)
|
\brief Returns the color as the closest 8-bit color in the palette
|
||||||
\return The palette index for the current color
|
\return The palette index for the current color
|
||||||
*/
|
*/
|
||||||
uint8 RGBColor::GetColor8(void)
|
uint8 RGBColor::GetColor8(void)
|
||||||
@@ -100,7 +113,7 @@ uint8 RGBColor::GetColor8(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn uint16 RGBColor::GetColor16(void)
|
\brief Returns the color as the closest 16-bit color
|
||||||
\return 16-bit value of the current color, including alpha
|
\return 16-bit value of the current color, including alpha
|
||||||
*/
|
*/
|
||||||
uint16 RGBColor::GetColor16(void)
|
uint16 RGBColor::GetColor16(void)
|
||||||
@@ -109,8 +122,8 @@ uint16 RGBColor::GetColor16(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn rgb_color RGBColor::GetColor32(void)
|
\brief Returns the color as a 32-bit color
|
||||||
\return current color
|
\return current color, including alpha
|
||||||
*/
|
*/
|
||||||
rgb_color RGBColor::GetColor32(void)
|
rgb_color RGBColor::GetColor32(void)
|
||||||
{
|
{
|
||||||
@@ -118,7 +131,11 @@ rgb_color RGBColor::GetColor32(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
\brief Set the object to specified values
|
||||||
|
\param red
|
||||||
|
\param green
|
||||||
|
\param blue
|
||||||
|
\param alpha, defaults to 255
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
void RGBColor::SetColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
||||||
{
|
{
|
||||||
@@ -129,7 +146,11 @@ void RGBColor::SetColor(uint8 r, uint8 g, uint8 b, uint8 a=255)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(int r, int g, int b, int a=255)
|
\brief Set the object to specified values
|
||||||
|
\param red
|
||||||
|
\param green
|
||||||
|
\param blue
|
||||||
|
\param alpha, defaults to 255
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(int r, int g, int b, int a=255)
|
void RGBColor::SetColor(int r, int g, int b, int a=255)
|
||||||
{
|
{
|
||||||
@@ -140,42 +161,41 @@ void RGBColor::SetColor(int r, int g, int b, int a=255)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(uint16 col16)
|
\brief Set the object to specified value
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(uint16 col16)
|
void RGBColor::SetColor(uint16 col16)
|
||||||
{
|
{
|
||||||
color16=col16;
|
color16=col16;
|
||||||
|
SetRGBColor(&color32,col16);
|
||||||
// TODO: convert and set the 32-bit and 8-bit values
|
color8=FindClosestColor(system_palette,color32);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(uint8 col8)
|
\brief Set the object to specified index in the palette
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(uint8 col8)
|
void RGBColor::SetColor(uint8 col8)
|
||||||
{
|
{
|
||||||
// Pared-down version from what is used in the app_server to
|
|
||||||
// eliminate some dependencies
|
|
||||||
color8=col8;
|
color8=col8;
|
||||||
|
color32=system_palette[col8];
|
||||||
// TODO: convert and set the 32-bit and 16-bit values
|
color16=FindClosestColor16(color32);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(const rgb_color &color)
|
\brief Set the object to specified color
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(const rgb_color &color)
|
void RGBColor::SetColor(const rgb_color &color)
|
||||||
{
|
{
|
||||||
// Pared-down version from what is used in the app_server to
|
|
||||||
// eliminate some dependencies
|
|
||||||
color32=color;
|
color32=color;
|
||||||
|
color16=FindClosestColor16(color32);
|
||||||
|
color8=FindClosestColor(system_palette,color32);
|
||||||
// TODO: convert and set the 16-bit and 8-bit values
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::SetColor(const RGBColor &col)
|
\brief Set the object to specified color
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
void RGBColor::SetColor(const RGBColor &col)
|
void RGBColor::SetColor(const RGBColor &col)
|
||||||
{
|
{
|
||||||
@@ -185,7 +205,8 @@ void RGBColor::SetColor(const RGBColor &col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor & RGBColor::operator=(const RGBColor &col)
|
\brief Set the object to specified color
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
RGBColor & RGBColor::operator=(const RGBColor &col)
|
RGBColor & RGBColor::operator=(const RGBColor &col)
|
||||||
{
|
{
|
||||||
@@ -196,22 +217,28 @@ RGBColor & RGBColor::operator=(const RGBColor &col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn RGBColor & RGBColor::operator=(const rgb_color &col)
|
\brief Set the object to specified color
|
||||||
|
\param color to copy
|
||||||
*/
|
*/
|
||||||
RGBColor & RGBColor::operator=(const rgb_color &col)
|
RGBColor & RGBColor::operator=(const rgb_color &col)
|
||||||
{
|
{
|
||||||
color32=col;
|
color32=col;
|
||||||
|
color16=FindClosestColor16(color32);
|
||||||
|
color8=FindClosestColor(system_palette,color32);
|
||||||
|
|
||||||
// TODO: convert and set the 16-bit and 8-bit values
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Returns a color blended between the object's value and
|
/*!
|
||||||
|
\brief Returns a color blended between the object's value and
|
||||||
another color.
|
another color.
|
||||||
|
|
||||||
\param The other color to be blended with.
|
\param The other color to be blended with.
|
||||||
\param A weighted percentage of the second color to use. 0 <= value <= 1.0
|
\param A weighted percentage of the second color to use. 0 <= value <= 1.0
|
||||||
\return The blended color
|
\return The blended color
|
||||||
|
|
||||||
|
If the position passed to this function is invalid, the starting
|
||||||
|
color will be returned.
|
||||||
*/
|
*/
|
||||||
RGBColor RGBColor::MakeBlendColor(RGBColor color, float position)
|
RGBColor RGBColor::MakeBlendColor(RGBColor color, float position)
|
||||||
{
|
{
|
||||||
@@ -222,7 +249,7 @@ RGBColor RGBColor::MakeBlendColor(RGBColor color, float position)
|
|||||||
float mod=0;
|
float mod=0;
|
||||||
int16 delta;
|
int16 delta;
|
||||||
if(position<0 || position>1)
|
if(position<0 || position>1)
|
||||||
return newcol;
|
return *this;
|
||||||
|
|
||||||
delta=int16(col2.red)-int16(col.red);
|
delta=int16(col2.red)-int16(col.red);
|
||||||
mod=col.red + (position * delta);
|
mod=col.red + (position * delta);
|
||||||
@@ -260,7 +287,7 @@ RGBColor RGBColor::MakeBlendColor(RGBColor color, float position)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void RGBColor::PrintToStream(void)
|
\brief Prints the 32-bit values of the color to standard out
|
||||||
*/
|
*/
|
||||||
void RGBColor::PrintToStream(void)
|
void RGBColor::PrintToStream(void)
|
||||||
{
|
{
|
||||||
@@ -268,21 +295,22 @@ void RGBColor::PrintToStream(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn bool RGBColor::operator==(const rgb_color &col)
|
\brief Overloaded comaparison
|
||||||
\return true if all color elements are exactly equal
|
\return true if all color elements are exactly equal
|
||||||
*/
|
*/
|
||||||
bool RGBColor::operator==(const rgb_color &col)
|
bool RGBColor::operator==(const rgb_color &col)
|
||||||
{
|
{
|
||||||
return (color32.red==col.red && color32.green==col.green
|
return (color32.red==col.red && color32.green==col.green
|
||||||
&& color32.blue==col.blue)?true:false;
|
&& color32.blue==col.blue && color32.alpha==col.alpha)?true:false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn bool RGBColor::operator==(const RGBColor &col)
|
\brief Overloaded comaparison
|
||||||
\return true if all color elements are exactly equal
|
\return true if all color elements are exactly equal
|
||||||
*/
|
*/
|
||||||
bool RGBColor::operator==(const RGBColor &col)
|
bool RGBColor::operator==(const RGBColor &col)
|
||||||
{
|
{
|
||||||
return (color32.red==col.color32.red && color32.green==col.color32.green
|
return (color32.red==col.color32.red && color32.green==col.color32.green
|
||||||
&& color32.blue==col.color32.blue)?true:false;
|
&& color32.blue==col.color32.blue
|
||||||
|
&& color32.alpha==col.color32.alpha)?true:false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user