adding alpha to wxColour

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40836 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2006-08-26 13:33:09 +00:00
parent f2a2796dae
commit fa8bc37bc2
3 changed files with 28 additions and 10 deletions

View File

@@ -20,11 +20,11 @@
// this macro avoids to repeat these lines across all colour.h files, since // this macro avoids to repeat these lines across all colour.h files, since
// Set() is a virtual function and thus cannot be called by wxColourBase // Set() is a virtual function and thus cannot be called by wxColourBase
// constructors // constructors
#define DEFINE_STD_WXCOLOUR_CONSTRUCTORS \ #define DEFINE_STD_WXCOLOUR_CONSTRUCTORS \
wxColour( unsigned char red, unsigned char green, unsigned char blue ) \ wxColour( unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha = 255 ) \
{ Set(red, green, blue); } \ { Set(red, green, blue, alpha); } \
wxColour( unsigned long colRGB ) { Set(colRGB); } \ wxColour( unsigned long colRGB ) { Set(colRGB); } \
wxColour(const wxString &colourName) { Set(colourName); } \ wxColour(const wxString &colourName) { Set(colourName); } \
wxColour(const wxChar *colourName) { Set(colourName); } wxColour(const wxChar *colourName) { Set(colourName); }
@@ -47,6 +47,13 @@ class WXDLLEXPORT wxColourBase : public wxGDIObject
protected: protected:
virtual void InitWith(unsigned char red, unsigned char green, unsigned char blue) = 0; virtual void InitWith(unsigned char red, unsigned char green, unsigned char blue) = 0;
// this will be overridden in alpha supporting classes
virtual void InitWith(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
{
InitWith( red, green, blue ) ;
}
virtual bool FromString(const wxChar *); virtual bool FromString(const wxChar *);
public: public:
@@ -57,8 +64,8 @@ public:
// Set() functions // Set() functions
// --------------- // ---------------
void Set(unsigned char red, unsigned char green, unsigned char blue) void Set(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha = 255)
{ InitWith(red,green,blue); } { InitWith(red,green,blue, alpha); }
// implemented in colourcmn.cpp // implemented in colourcmn.cpp
bool Set(const wxChar *str) bool Set(const wxChar *str)
@@ -86,6 +93,8 @@ public:
virtual unsigned char Red() const = 0; virtual unsigned char Red() const = 0;
virtual unsigned char Green() const = 0; virtual unsigned char Green() const = 0;
virtual unsigned char Blue() const = 0; virtual unsigned char Blue() const = 0;
virtual unsigned char Alpha() const
{ return 255 ; }
// implemented in colourcmn.cpp // implemented in colourcmn.cpp
virtual wxString GetAsString(long flags = wxC2S_NAME | wxC2S_CSS_SYNTAX) const; virtual wxString GetAsString(long flags = wxC2S_NAME | wxC2S_CSS_SYNTAX) const;

View File

@@ -35,6 +35,7 @@ public:
unsigned char Red() const { return m_red; } unsigned char Red() const { return m_red; }
unsigned char Green() const { return m_green; } unsigned char Green() const { return m_green; }
unsigned char Blue() const { return m_blue; } unsigned char Blue() const { return m_blue; }
unsigned char Alpha() const { return m_alpha; }
// comparison // comparison
bool operator == (const wxColour& colour) const bool operator == (const wxColour& colour) const
@@ -42,7 +43,8 @@ public:
return (m_isInit == colour.m_isInit return (m_isInit == colour.m_isInit
&& m_red == colour.m_red && m_red == colour.m_red
&& m_green == colour.m_green && m_green == colour.m_green
&& m_blue == colour.m_blue); && m_blue == colour.m_blue
&& m_alpha == colour.m_alpha);
} }
bool operator != (const wxColour& colour) const { return !(*this == colour); } bool operator != (const wxColour& colour) const { return !(*this == colour); }
@@ -53,13 +55,19 @@ protected :
// Helper function // Helper function
void Init(); void Init();
void InitWith( unsigned char red, unsigned char green, unsigned char blue ); void InitWith( unsigned char red, unsigned char green, unsigned char blue )
{
InitWith( red, green, blue , 255) ;
}
void InitWith( unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha );
private: private:
bool m_isInit; bool m_isInit;
unsigned char m_red; unsigned char m_red;
unsigned char m_blue; unsigned char m_blue;
unsigned char m_green; unsigned char m_green;
unsigned char m_alpha;
public: public:
WXCOLORREF m_pixel ; WXCOLORREF m_pixel ;

View File

@@ -44,11 +44,12 @@ wxColour::~wxColour ()
{ {
} }
void wxColour::InitWith (unsigned char r, unsigned char g, unsigned char b) void wxColour::InitWith (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{ {
m_red = r; m_red = r;
m_green = g; m_green = g;
m_blue = b; m_blue = b;
m_alpha = a ;
m_isInit = true; m_isInit = true;
wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green ); wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green );