X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0569df0fc965c911275f9015e1774b37a7f8f064..8de28db94f9d03acfcbbbac841c26a2c40223618:/wxPython/src/gdi.i?ds=inline diff --git a/wxPython/src/gdi.i b/wxPython/src/gdi.i index da68e21f23..3feb977640 100644 --- a/wxPython/src/gdi.i +++ b/wxPython/src/gdi.i @@ -20,6 +20,10 @@ #ifndef __WXMSW__ #include #endif +#include +#include +#include +#include %} //---------------------------------------------------------------------- @@ -31,34 +35,30 @@ %import _defs.i %import misc.i - %{ static wxString wxPyEmptyStr(""); %} //--------------------------------------------------------------------------- -// class wxGDIImage { -// public: -// long GetHandle(); -// void SetHandle(long handle); -// bool Ok(); -// int GetWidth(); -// int GetHeight(); -// int GetDepth(); -// void SetWidth(int w); -// void SetHeight(int h); -// void SetDepth(int d); -// void SetSize(const wxSize& size); -// }; +class wxGDIObject : public wxObject { +public: + wxGDIObject(); + ~wxGDIObject(); + + bool GetVisible(); + void SetVisible( bool visible ); + + bool IsNull(); + +}; //--------------------------------------------------------------------------- -class wxBitmap -//: public wxGDIImage +class wxBitmap : public wxGDIObject { public: - wxBitmap(const wxString& name, long type); + wxBitmap(const wxString& name, wxBitmapType type); ~wxBitmap(); wxPalette* GetPalette(); @@ -105,37 +105,87 @@ public: }; +// Declarations of some alternate "constructors" %new wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1); +%new wxBitmap* wxBitmapFromXPMData(PyObject* listOfStrings); +%new wxBitmap* wxBitmapFromIcon(const wxIcon& icon); +%new wxBitmap* wxBitmapFromBits(char* bits, int width, int height, int depth = 1 ); -#ifdef __WXMSW__ -%new wxBitmap* wxBitmapFromData(PyObject* data, long type, - int width, int height, int depth = 1); -#endif +// #ifdef __WXMSW__ +// %new wxBitmap* wxBitmapFromData(PyObject* data, long type, +// int width, int height, int depth = 1); +// #endif + + + +%{ // Implementations of some alternate "constructors" -%{ // Alternate 'constructor' wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1) { return new wxBitmap(width, height, depth); } -#ifdef __WXMSW__ - wxBitmap* wxBitmapFromData(PyObject* data, long type, - int width, int height, int depth = 1) { - if (! PyString_Check(data)) { - PyErr_SetString(PyExc_TypeError, "Expected string object"); + static char** ConvertListOfStrings(PyObject* listOfStrings) { + char** cArray = NULL; + int count; + + if (!PyList_Check(listOfStrings)) { + PyErr_SetString(PyExc_TypeError, "Expected a list of strings."); return NULL; } + count = PyList_Size(listOfStrings); + cArray = new char*[count]; - return new wxBitmap((void*)PyString_AsString(data), type, width, height, depth); + for(int x=0; xToString(); + } + } +}; + + +// wxFontMapper manages user-definable correspondence between logical font +// names and the fonts present on the machine. +// +// The default implementations of all functions will ask the user if they are +// not capable of finding the answer themselves and store the answer in a +// config file (configurable via SetConfigXXX functions). This behaviour may +// be disabled by giving the value of FALSE to "interactive" parameter. +// However, the functions will always consult the config file to allow the +// user-defined values override the default logic and there is no way to +// disable this - which shouldn't be ever needed because if "interactive" was +// never TRUE, the config file is never created anyhow. +class wxFontMapper +{ +public: + wxFontMapper(); + ~wxFontMapper(); + + + // find an alternative for the given encoding (which is supposed to not be + // available on this system). If successful, return TRUE and rwxFontEcoding + // that can be used it wxFont ctor otherwise return FALSE + //bool GetAltForEncoding(wxFontEncoding encoding, + // wxFontEncoding *alt_encoding, + // const wxString& facename = wxEmptyString, + // bool interactive = TRUE); + + + // Find an alternative for the given encoding (which is supposed to not be + // available on this system). If successful, returns the encoding otherwise + // returns None. + %addmethods { + PyObject* GetAltForEncoding(wxFontEncoding encoding, + const wxString& facename = wxEmptyString, + bool interactive = TRUE) { + wxFontEncoding alt_enc; + if (self->GetAltForEncoding(encoding, &alt_enc, facename, interactive)) + return PyInt_FromLong(alt_enc); + else { + Py_INCREF(Py_None); + return Py_None; + } + } + } + + + // checks whether given encoding is available in given face or not. + // If no facename is given, + bool IsEncodingAvailable(wxFontEncoding encoding, + const wxString& facename = wxEmptyString); + + // returns the encoding for the given charset (in the form of RFC 2046) or + // wxFONTENCODING_SYSTEM if couldn't decode it + wxFontEncoding CharsetToEncoding(const wxString& charset, + bool interactive = TRUE); + + // return internal string identifier for the encoding (see also + // GetEncodingDescription()) + static wxString GetEncodingName(wxFontEncoding encoding); + + // return user-readable string describing the given encoding + // + // NB: hard-coded now, but might change later (read it from config?) + static wxString GetEncodingDescription(wxFontEncoding encoding); + + // the parent window for modal dialogs + void SetDialogParent(wxWindow *parent); + + // the title for the dialogs (note that default is quite reasonable) + void SetDialogTitle(const wxString& title); + + // functions which allow to configure the config object used: by default, + // the global one (from wxConfigBase::Get() will be used) and the default + // root path for the config settings is the string returned by + // GetDefaultConfigPath() + + + // set the config object to use (may be NULL to use default) + void SetConfig(wxConfigBase *config); + + // set the root config path to use (should be an absolute path) + void SetConfigPath(const wxString& prefix); + + // return default config path + static const wxChar *GetDefaultConfigPath(); +}; + + + + +class wxFont : public wxGDIObject { public: wxFont( int pointSize, int family, int style, int weight, int underline=FALSE, char* faceName = "", wxFontEncoding encoding=wxFONTENCODING_DEFAULT); + + %name(wxFontFromNativeInfo)wxFont(const wxNativeFontInfo& info); + ~wxFont(); - bool Ok(); - wxString GetFaceName(); - int GetFamily(); -#ifdef __WXMSW__ - int GetFontId(); -#endif - int GetPointSize(); - int GetStyle(); - bool GetUnderlined(); - int GetWeight(); - wxFontEncoding GetEncoding(); - void SetFaceName(const wxString& faceName); - void SetFamily(int family); + bool Ok() const; + int GetPointSize() const; + int GetFamily() const; + int GetStyle() const; + int GetWeight() const; + bool GetUnderlined() const; + wxString GetFaceName() const; + wxFontEncoding GetEncoding() const; + wxNativeFontInfo* GetNativeFontInfo() const; + void SetPointSize(int pointSize); + void SetFamily(int family); void SetStyle(int style); - void SetUnderlined(bool underlined); void SetWeight(int weight); + void SetFaceName(const wxString& faceName); + void SetUnderlined(bool underlined); void SetEncoding(wxFontEncoding encoding); - wxString GetFamilyString(); - wxString GetStyleString(); - wxString GetWeightString(); -}; + void SetNativeFontInfo(const wxNativeFontInfo& info); -%inline %{ - wxFontEncoding wxFont_GetDefaultEncoding() { - return wxFont::GetDefaultEncoding(); - } + wxString GetFamilyString() const; + wxString GetStyleString() const; + wxString GetWeightString() const; - void wxFont_SetDefaultEncoding(wxFontEncoding encoding) { - wxFont::SetDefaultEncoding(encoding); - } -%} + static wxFontEncoding GetDefaultEncoding(); + static void SetDefaultEncoding(wxFontEncoding encoding); + +}; -class wxFontList { +class wxFontList : public wxObject { public: void AddFont(wxFont* font); @@ -323,7 +548,7 @@ public: //---------------------------------------------------------------------- -class wxColour { +class wxColour : public wxObject { public: wxColour(unsigned char red=0, unsigned char green=0, unsigned char blue=0); ~wxColour(); @@ -357,7 +582,7 @@ public: -class wxColourDatabase { +class wxColourDatabase : public wxObject { public: wxColour *FindColour(const wxString& colour); @@ -374,13 +599,13 @@ public: //---------------------------------------------------------------------- -class wxPen { +class wxPen : public wxGDIObject { public: wxPen(wxColour& colour, int width=1, int style=wxSOLID); ~wxPen(); int GetCap(); - wxColour& GetColour(); + wxColour GetColour(); int GetJoin(); int GetStyle(); @@ -403,7 +628,7 @@ public: }; -class wxPenList { +class wxPenList : public wxObject { public: void AddPen(wxPen* pen); @@ -415,12 +640,12 @@ public: //---------------------------------------------------------------------- -class wxBrush { +class wxBrush : public wxGDIObject { public: wxBrush(const wxColour& colour, int style=wxSOLID); ~wxBrush(); - wxColour& GetColour(); + wxColour GetColour(); wxBitmap * GetStipple(); int GetStyle(); bool Ok(); @@ -442,7 +667,7 @@ public: -class wxDC { +class wxDC : public wxObject { public: // wxDC(); **** abstract base class, can't instantiate. ~wxDC(); @@ -505,12 +730,12 @@ public: %name(GetSizeTuple)void GetSize(int* OUTPUT, int* OUTPUT); wxSize GetSize(); wxSize GetSizeMM(); - wxColour& GetTextBackground(); + wxColour GetTextBackground(); void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT); %name(GetFullTextExtent)void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT, long *OUTPUT, long* OUTPUT, const wxFont* font = NULL); - wxColour& GetTextForeground(); + wxColour GetTextForeground(); void GetUserScale(double *OUTPUT, double *OUTPUT); long LogicalToDeviceX(long x); long LogicalToDeviceXRel(long x); @@ -556,6 +781,10 @@ public: void CalcBoundingBox(int x, int y); void ResetBoundingBox(); + +#ifdef __WXMSW__ + long GetHDC(); +#endif }; @@ -698,7 +927,7 @@ extern wxColourDatabase* wxTheColourDatabase; //--------------------------------------------------------------------------- -class wxPalette { +class wxPalette : public wxGDIObject { public: wxPalette(int LCOUNT, byte* choices, byte* choices, byte* choices); ~wxPalette(); @@ -720,7 +949,7 @@ enum { wxIMAGE_LIST_STATE }; -class wxImageList { +class wxImageList : public wxObject { public: wxImageList(int width, int height, int mask=TRUE, int initialCount=1); ~wxImageList(); @@ -746,5 +975,70 @@ public: }; +//--------------------------------------------------------------------------- +// Regions, etc. + +enum wxRegionContain { + wxOutRegion, wxPartRegion, wxInRegion +}; + + +class wxRegion : public wxGDIObject { +public: + wxRegion(long x=0, long y=0, long width=0, long height=0); + ~wxRegion(); + + void Clear(); + wxRegionContain Contains(long x, long y); + %name(ContainsPoint)wxRegionContain Contains(const wxPoint& pt); + %name(ContainsRect)wxRegionContain Contains(const wxRect& rect); + %name(ContainsRectDim)wxRegionContain Contains(long x, long y, long w, long h); + + wxRect GetBox(); + + bool Intersect(long x, long y, long width, long height); + %name(IntersectRect)bool Intersect(const wxRect& rect); + %name(IntersectRegion)bool Intersect(const wxRegion& region); + + bool IsEmpty(); + + bool Union(long x, long y, long width, long height); + %name(UnionRect)bool Union(const wxRect& rect); + %name(UnionRegion)bool Union(const wxRegion& region); + + bool Subtract(long x, long y, long width, long height); + %name(SubtractRect)bool Subtract(const wxRect& rect); + %name(SubtractRegion)bool Subtract(const wxRegion& region); + + bool Xor(long x, long y, long width, long height); + %name(XorRect)bool Xor(const wxRect& rect); + %name(XorRegion)bool Xor(const wxRegion& region); +}; + + + +class wxRegionIterator : public wxObject { +public: + wxRegionIterator(const wxRegion& region); + ~wxRegionIterator(); + + long GetX(); + long GetY(); + long GetW(); + long GetWidth(); + long GetH(); + long GetHeight(); + wxRect GetRect(); + bool HaveRects(); + void Reset(); + + %addmethods { + void Next() { + (*self) ++; + } + }; +}; + + //---------------------------------------------------------------------------