1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/x11/palette.h
3 // Purpose:     wxPalette class
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     17/09/98
7 // Copyright:   (c) Julian Smart
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_PALETTE_H_
12 #define _WX_PALETTE_H_
13 
14 #include "wx/list.h"
15 
16 class WXDLLIMPEXP_FWD_CORE wxPalette;
17 
18 // Palette for one display
19 class wxXPalette : public wxObject
20 {
21     DECLARE_DYNAMIC_CLASS(wxXPalette)
22 
23 public:
24     wxXPalette();
25 
26     WXDisplay*        m_display;
27     int               m_pix_array_n;
28     unsigned long*    m_pix_array;
29     WXColormap        m_cmap;
30     bool              m_destroyable;
31 };
32 
33 class WXDLLIMPEXP_CORE wxPaletteRefData: public wxGDIRefData
34 {
35     friend class WXDLLIMPEXP_FWD_CORE wxPalette;
36 public:
37     wxPaletteRefData();
38     virtual ~wxPaletteRefData();
39 
40 protected:
41     wxList  m_palettes;
42 };
43 
44 #define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
45 
46 class WXDLLIMPEXP_CORE wxPalette : public wxPaletteBase
47 {
48     DECLARE_DYNAMIC_CLASS(wxPalette)
49 
50 public:
51     wxPalette();
52 
53     wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
54     virtual ~wxPalette();
55     bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
56     int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
57     bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
58 
59     // X-specific
60     WXColormap GetXColormap(WXDisplay* display = NULL) const;
61     bool TransferBitmap(void *data, int depth, int size);
62     bool TransferBitmap8(unsigned char *data, unsigned long size, void *dest, unsigned int bpp);
63     unsigned long *GetXPixArray(WXDisplay* display, int *pix_array_n);
64     void PutXColormap(WXDisplay* display, WXColormap cmap, bool destroyable);
65 
66 protected:
67     virtual wxGDIRefData *CreateGDIRefData() const;
68     virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
69 };
70 
71 #endif // _WX_PALETTE_H_
72