[ 1557935 ] wxPalette::GetColoursCount implementation

I commited the version which MSDN claims to be
     available since Windows 95. No idea why MFC
     doesn't use it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2006-09-23 09:35:09 +00:00
parent c86d8baad7
commit 5633b968f5
3 changed files with 33 additions and 18 deletions

View File

@@ -30,17 +30,17 @@ protected:
class WXDLLEXPORT wxPalette: public wxPaletteBase class WXDLLEXPORT wxPalette: public wxPaletteBase
{ {
DECLARE_DYNAMIC_CLASS(wxPalette)
public: public:
wxPalette(void); wxPalette();
wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
virtual ~wxPalette(void); virtual ~wxPalette(void);
bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const; int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
virtual int GetColoursCount() const;
virtual bool Ok(void) const { return (m_refData != NULL) ; } virtual bool Ok(void) const { return (m_refData != NULL) ; }
inline bool operator == (const wxPalette& palette) const { return m_refData == palette.m_refData; } inline bool operator == (const wxPalette& palette) const { return m_refData == palette.m_refData; }
@@ -48,8 +48,12 @@ public:
virtual bool FreeResource(bool force = false); virtual bool FreeResource(bool force = false);
// implemetation
inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
void SetHPALETTE(WXHPALETTE pal); void SetHPALETTE(WXHPALETTE pal);
private:
DECLARE_DYNAMIC_CLASS(wxPalette)
}; };
#endif #endif

View File

@@ -26,7 +26,7 @@ public:
virtual ~wxPaletteBase() { } virtual ~wxPaletteBase() { }
virtual bool Ok() const = 0; virtual bool Ok() const = 0;
virtual int GetColoursCount() const { wxFAIL_MSG( _T("not implemented") ); return 0; }; virtual int GetColoursCount() const { wxFAIL_MSG( _T("not implemented") ); return 0; }
}; };
#if defined(__WXPALMOS__) #if defined(__WXPALMOS__)

View File

@@ -43,7 +43,7 @@ wxPaletteRefData::~wxPaletteRefData(void)
::DeleteObject((HPALETTE) m_hPalette); ::DeleteObject((HPALETTE) m_hPalette);
} }
wxPalette::wxPalette(void) wxPalette::wxPalette()
{ {
} }
@@ -63,9 +63,20 @@ bool wxPalette::FreeResource(bool WXUNUSED(force))
{ {
DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette); DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette);
} }
return true; return true;
} }
int wxPalette::GetColoursCount() const
{
if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette)
{
return ::GetPaletteEntries((HPALETTE) M_PALETTEDATA->m_hPalette, 0, 0, NULL );
}
return 0;
}
bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
{ {
UnRef(); UnRef();