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:
@@ -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 );
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user