From 5633b968f51434b88d52e0e3bdda6ab447487e12 Mon Sep 17 00:00:00 2001 From: Robert Roebling <robert@roebling.de> Date: Sat, 23 Sep 2006 09:35:09 +0000 Subject: [PATCH] [ 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 --- include/wx/msw/palette.h | 32 ++++++++++++++++++-------------- include/wx/palette.h | 2 +- src/msw/palette.cpp | 17 ++++++++++++++--- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/include/wx/msw/palette.h b/include/wx/msw/palette.h index 8dc61757f4..35e5555fb3 100644 --- a/include/wx/msw/palette.h +++ b/include/wx/msw/palette.h @@ -30,26 +30,30 @@ protected: class WXDLLEXPORT wxPalette: public wxPaletteBase { - DECLARE_DYNAMIC_CLASS(wxPalette) - public: - wxPalette(void); + wxPalette(); + wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); + virtual ~wxPalette(void); + 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; + bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - virtual ~wxPalette(void); - 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; - 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; } + 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; } - virtual bool FreeResource(bool force = false); + virtual bool FreeResource(bool force = false); - inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } - void SetHPALETTE(WXHPALETTE pal); + // implemetation + inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } + void SetHPALETTE(WXHPALETTE pal); + +private: + DECLARE_DYNAMIC_CLASS(wxPalette) }; #endif diff --git a/include/wx/palette.h b/include/wx/palette.h index 28951a21ce..658c32f976 100644 --- a/include/wx/palette.h +++ b/include/wx/palette.h @@ -26,7 +26,7 @@ public: virtual ~wxPaletteBase() { } 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__) diff --git a/src/msw/palette.cpp b/src/msw/palette.cpp index aeb874150e..d72f0adc40 100644 --- a/src/msw/palette.cpp +++ b/src/msw/palette.cpp @@ -43,13 +43,13 @@ wxPaletteRefData::~wxPaletteRefData(void) ::DeleteObject((HPALETTE) m_hPalette); } -wxPalette::wxPalette(void) +wxPalette::wxPalette() { } wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) { - Create(n, red, green, blue); + Create(n, red, green, blue); } wxPalette::~wxPalette(void) @@ -61,11 +61,22 @@ bool wxPalette::FreeResource(bool WXUNUSED(force)) { if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette) { - DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette); + DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette); } + 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) { UnRef(); -- 2.45.2