adding alpha to gtk colour

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2006-10-03 16:45:33 +00:00
parent e808cf8a0a
commit dc8883366b
2 changed files with 17 additions and 5 deletions

View File

@@ -35,6 +35,7 @@ public:
unsigned char Red() const; unsigned char Red() const;
unsigned char Green() const; unsigned char Green() const;
unsigned char Blue() const; unsigned char Blue() const;
unsigned char Alpha() const;
// Implementation part // Implementation part
void CalcPixel( GdkColormap *cmap ); void CalcPixel( GdkColormap *cmap );

View File

@@ -23,7 +23,7 @@
class wxColourRefData: public wxObjectRefData class wxColourRefData: public wxObjectRefData
{ {
public: public:
wxColourRefData(guint16 red, guint16 green, guint16 blue) wxColourRefData(guint16 red, guint16 green, guint16 blue, guint16 alpha)
{ {
m_color.red = m_color.red =
m_red = red; m_red = red;
@@ -31,6 +31,7 @@ public:
m_green = green; m_green = green;
m_color.blue = m_color.blue =
m_blue = blue; m_blue = blue;
m_alpha = alpha;
m_color.pixel = 0; m_color.pixel = 0;
m_colormap = NULL; m_colormap = NULL;
} }
@@ -49,6 +50,7 @@ public:
guint16 m_red; guint16 m_red;
guint16 m_green; guint16 m_green;
guint16 m_blue; guint16 m_blue;
guint16 m_alpha;
DECLARE_NO_COPY_CLASS(wxColourRefData) DECLARE_NO_COPY_CLASS(wxColourRefData)
}; };
@@ -90,7 +92,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject)
wxColour::wxColour(const GdkColor& gdkColor) wxColour::wxColour(const GdkColor& gdkColor)
{ {
m_refData = new wxColourRefData(gdkColor.red, gdkColor.green, gdkColor.blue); m_refData = new wxColourRefData(gdkColor.red, gdkColor.green, gdkColor.blue, 0xFFFF /*opaque alpha in 16 bit*/);
} }
wxColour::~wxColour() wxColour::~wxColour()
@@ -109,18 +111,20 @@ bool wxColour::operator == ( const wxColour& col ) const
wxColourRefData* that_refData = wx_static_cast(wxColourRefData*, col.m_refData); wxColourRefData* that_refData = wx_static_cast(wxColourRefData*, col.m_refData);
return refData->m_red == that_refData->m_red && return refData->m_red == that_refData->m_red &&
refData->m_green == that_refData->m_green && refData->m_green == that_refData->m_green &&
refData->m_blue == that_refData->m_blue; refData->m_blue == that_refData->m_blue &&
refData->m_alpha == that_refData->m_alpha;
} }
void wxColour::InitRGBA(unsigned char red, unsigned char green, unsigned char blue, void wxColour::InitRGBA(unsigned char red, unsigned char green, unsigned char blue,
unsigned char WXUNUSED(alpha)) unsigned char alpha)
{ {
UnRef(); UnRef();
m_refData = new wxColourRefData( m_refData = new wxColourRefData(
(guint16(red) << SHIFT) + red, (guint16(red) << SHIFT) + red,
(guint16(green) << SHIFT) + green, (guint16(green) << SHIFT) + green,
(guint16(blue) << SHIFT) + blue); (guint16(blue) << SHIFT) + blue,
(guint16(alpha) << SHIFT) + alpha);
} }
unsigned char wxColour::Red() const unsigned char wxColour::Red() const
@@ -144,6 +148,13 @@ unsigned char wxColour::Blue() const
return wxByte(M_COLDATA->m_blue >> SHIFT); return wxByte(M_COLDATA->m_blue >> SHIFT);
} }
unsigned char wxColour::Alpha() const
{
wxCHECK_MSG( Ok(), 0, wxT("invalid colour") );
return wxByte(M_COLDATA->m_alpha >> SHIFT);
}
void wxColour::CalcPixel( GdkColormap *cmap ) void wxColour::CalcPixel( GdkColormap *cmap )
{ {
if (!Ok()) return; if (!Ok()) return;