1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/colour.h 3// Purpose: wxColourBase definition 4// Author: Julian Smart 5// Modified by: Francesco Montorsi 6// Created: 7// RCS-ID: $Id: colour.h 53135 2008-04-12 02:31:04Z VZ $ 8// Copyright: Julian Smart 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_COLOUR_H_BASE_ 13#define _WX_COLOUR_H_BASE_ 14 15#include "wx/defs.h" 16#include "wx/gdiobj.h" 17 18 19class WXDLLIMPEXP_FWD_CORE wxColour; 20 21// the standard wxColour constructors; 22// this macro avoids to repeat these lines across all colour.h files, since 23// Set() is a virtual function and thus cannot be called by wxColourBase 24// constructors 25#define DEFINE_STD_WXCOLOUR_CONSTRUCTORS \ 26 wxColour( ChannelType red, ChannelType green, ChannelType blue, \ 27 ChannelType alpha = wxALPHA_OPAQUE ) \ 28 { Set(red, green, blue, alpha); } \ 29 wxColour( unsigned long colRGB ) { Set(colRGB); } \ 30 wxColour(const wxString &colourName) { Set(colourName); } \ 31 wxColour(const wxChar *colourName) { Set(colourName); } 32 33 34// flags for wxColour -> wxString conversion (see wxColour::GetAsString) 35#define wxC2S_NAME 1 // return colour name, when possible 36#define wxC2S_CSS_SYNTAX 2 // return colour in rgb(r,g,b) syntax 37#define wxC2S_HTML_SYNTAX 4 // return colour in #rrggbb syntax 38 39 40const unsigned char wxALPHA_TRANSPARENT = 0; 41const unsigned char wxALPHA_OPAQUE = 0xff; 42 43// ---------------------------------------------------------------------------- 44// wxVariant support 45// ---------------------------------------------------------------------------- 46 47#if wxUSE_VARIANT 48#include "wx/variant.h" 49DECLARE_VARIANT_OBJECT_EXPORTED(wxColour,WXDLLEXPORT) 50#endif 51 52//----------------------------------------------------------------------------- 53// wxColourBase: this class has no data members, just some functions to avoid 54// code redundancy in all native wxColour implementations 55//----------------------------------------------------------------------------- 56 57class WXDLLEXPORT wxColourBase : public wxGDIObject 58{ 59public: 60 // type of a single colour component 61 typedef unsigned char ChannelType; 62 63 wxColourBase() {} 64 virtual ~wxColourBase() {} 65 66 67 // Set() functions 68 // --------------- 69 70 void Set(ChannelType red, 71 ChannelType green, 72 ChannelType blue, 73 ChannelType alpha = wxALPHA_OPAQUE) 74 { InitRGBA(red,green,blue, alpha); } 75 76 // implemented in colourcmn.cpp 77 bool Set(const wxChar *str) 78 { return FromString(str); } 79 80 bool Set(const wxString &str) 81 { return FromString(str); } 82 83 void Set(unsigned long colRGB) 84 { 85 // we don't need to know sizeof(long) here because we assume that the three 86 // least significant bytes contain the R, G and B values 87 Set((ChannelType)(0xFF & colRGB), 88 (ChannelType)(0xFF & (colRGB >> 8)), 89 (ChannelType)(0xFF & (colRGB >> 16))); 90 } 91 92 93 94 // accessors 95 // --------- 96 97 virtual bool Ok() const { return IsOk(); } 98 virtual bool IsOk() const = 0; 99 100 virtual ChannelType Red() const = 0; 101 virtual ChannelType Green() const = 0; 102 virtual ChannelType Blue() const = 0; 103 virtual ChannelType Alpha() const 104 { return wxALPHA_OPAQUE ; } 105 106 // implemented in colourcmn.cpp 107 virtual wxString GetAsString(long flags = wxC2S_NAME | wxC2S_CSS_SYNTAX) const; 108 109 110 111 // old, deprecated 112 // --------------- 113 114#if WXWIN_COMPATIBILITY_2_6 115 wxDEPRECATED( static wxColour CreateByName(const wxString& name) ); 116 wxDEPRECATED( void InitFromName(const wxString& col) ); 117#endif 118 119protected: 120 virtual void 121 InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) = 0; 122 123 virtual bool FromString(const wxChar *s); 124}; 125 126 127 128#if defined(__WXPALMOS__) 129 #include "wx/generic/colour.h" 130#elif defined(__WXMSW__) 131 #include "wx/msw/colour.h" 132#elif defined(__WXMOTIF__) 133 #include "wx/motif/colour.h" 134#elif defined(__WXGTK20__) 135 #include "wx/gtk/colour.h" 136#elif defined(__WXGTK__) 137 #include "wx/gtk1/colour.h" 138#elif defined(__WXMGL__) 139 #include "wx/generic/colour.h" 140#elif defined(__WXDFB__) 141 #include "wx/generic/colour.h" 142#elif defined(__WXX11__) 143 #include "wx/x11/colour.h" 144#elif defined(__WXMAC__) 145 #include "wx/mac/colour.h" 146#elif defined(__WXCOCOA__) 147 #include "wx/cocoa/colour.h" 148#elif defined(__WXPM__) 149 #include "wx/os2/colour.h" 150#endif 151 152#define wxColor wxColour 153 154#endif // _WX_COLOUR_H_BASE_ 155