X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d063802fcf03b37dddaa2e58347e07fbeb857458..e422162882bf4c5ae743fd618864e97206765fca:/wxPython/src/gdi.i diff --git a/wxPython/src/gdi.i b/wxPython/src/gdi.i index 29aca1dcac..a47f4a3362 100644 --- a/wxPython/src/gdi.i +++ b/wxPython/src/gdi.i @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: gdi.i -// Purpose: SWIG interface file for wxDC, wxBrush, wxPen, wxFont, etc. +// Purpose: SWIG interface file for wxDC, wxBrush, wxPen, etc. // // Author: Robin Dunn // @@ -20,6 +20,8 @@ #include #include #include +#include +#include %} //---------------------------------------------------------------------- @@ -30,8 +32,14 @@ // Import some definitions of other classes, etc. %import _defs.i %import misc.i +%import fonts.i +//--------------------------------------------------------------------------- +%{ + // Put some wx default wxChar* values into wxStrings. + static const wxString wxPyEmptyString(wxT("")); +%} //--------------------------------------------------------------------------- class wxGDIObject : public wxObject { @@ -51,12 +59,12 @@ public: class wxBitmap : public wxGDIObject { public: - wxBitmap(const wxString& name, wxBitmapType type=wxBITMAP_TYPE_BMP); + wxBitmap(const wxString& name, wxBitmapType type=wxBITMAP_TYPE_ANY); ~wxBitmap(); wxPalette* GetPalette(); wxMask* GetMask(); - bool LoadFile(const wxString& name, wxBitmapType type=wxBITMAP_TYPE_BMP); + bool LoadFile(const wxString& name, wxBitmapType type=wxBITMAP_TYPE_ANY); bool SaveFile(const wxString& name, wxBitmapType type, wxPalette* palette = NULL); void SetMask(wxMask* mask); #ifdef __WXMSW__ @@ -102,7 +110,7 @@ public: %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 ); +%new wxBitmap* wxBitmapFromBits(PyObject* bits, int width, int height, int depth = 1 ); // #ifdef __WXMSW__ // %new wxBitmap* wxBitmapFromData(PyObject* data, long type, @@ -154,8 +162,11 @@ public: } - wxBitmap* wxBitmapFromBits(char* bits, int width, int height, int depth = 1 ) { - return new wxBitmap(bits, width, height, depth); + wxBitmap* wxBitmapFromBits(PyObject* bits, int width, int height, int depth = 1 ) { + char* buf; + int length; + PyString_AsStringAndSize(bits, &buf, &length); + return new wxBitmap(buf, width, height, depth); } @@ -234,6 +245,7 @@ public: // Declarations of some alternate "constructors" %new wxIcon* wxEmptyIcon(); %new wxIcon* wxIconFromXPMData(PyObject* listOfStrings); +%new wxIcon* wxIconFromBitmap(const wxBitmap& bmp); %{ // Implementations of some alternate "constructors" wxIcon* wxEmptyIcon() { @@ -251,10 +263,48 @@ public: delete [] cArray; return icon; } + + wxIcon* wxIconFromBitmap(const wxBitmap& bmp) { + wxIcon* icon = new wxIcon(); + icon->CopyFromBitmap(bmp); + return icon; + } %} //--------------------------------------------------------------------------- +class wxIconBundle +{ +public: + // default constructor + wxIconBundle(); + + // initializes the bundle with the icon(s) found in the file + %name(wxIconBundleFromFile) wxIconBundle( const wxString& file, long type ); + + // initializes the bundle with a single icon + %name(wxIconBundleFromIcon)wxIconBundle( const wxIcon& icon ); + + ~wxIconBundle(); + + // adds the icon to the collection, if the collection already + // contains an icon with the same width and height, it is + // replaced + void AddIcon( const wxIcon& icon ); + + // adds all the icons contained in the file to the collection, + // if the collection already contains icons with the same + // width and height, they are replaced + %name(AddIconFromFile)void AddIcon( const wxString& file, long type ); + + // returns the icon with the given size; if no such icon exists, + // returns the icon with size wxSYS_ICON_[XY]; if no such icon exists, + // returns the first icon in the bundle + const wxIcon& GetIcon( const wxSize& size ) const; +}; + +//--------------------------------------------------------------------------- + class wxCursor : public wxGDIObject { public: @@ -287,318 +337,6 @@ public: } %} -//---------------------------------------------------------------------- - - -enum wxFontFamily -{ - wxFONTFAMILY_DEFAULT = wxDEFAULT, - wxFONTFAMILY_DECORATIVE = wxDECORATIVE, - wxFONTFAMILY_ROMAN = wxROMAN, - wxFONTFAMILY_SCRIPT = wxSCRIPT, - wxFONTFAMILY_SWISS = wxSWISS, - wxFONTFAMILY_MODERN = wxMODERN, - wxFONTFAMILY_TELETYPE = wxTELETYPE, - wxFONTFAMILY_MAX, - wxFONTFAMILY_UNKNOWN -}; - -// font styles -enum wxFontStyle -{ - wxFONTSTYLE_NORMAL = wxNORMAL, - wxFONTSTYLE_ITALIC = wxITALIC, - wxFONTSTYLE_SLANT = wxSLANT, - wxFONTSTYLE_MAX -}; - -// font weights -enum wxFontWeight -{ - wxFONTWEIGHT_NORMAL = wxNORMAL, - wxFONTWEIGHT_LIGHT = wxLIGHT, - wxFONTWEIGHT_BOLD = wxBOLD, - wxFONTWEIGHT_MAX -}; - - -// font encodings -enum wxFontEncoding -{ - wxFONTENCODING_SYSTEM = -1, // system default - wxFONTENCODING_DEFAULT, // current default encoding - - // ISO8859 standard defines a number of single-byte charsets - wxFONTENCODING_ISO8859_1, // West European (Latin1) - wxFONTENCODING_ISO8859_2, // Central and East European (Latin2) - wxFONTENCODING_ISO8859_3, // Esperanto (Latin3) - wxFONTENCODING_ISO8859_4, // Baltic (old) (Latin4) - wxFONTENCODING_ISO8859_5, // Cyrillic - wxFONTENCODING_ISO8859_6, // Arabic - wxFONTENCODING_ISO8859_7, // Greek - wxFONTENCODING_ISO8859_8, // Hebrew - wxFONTENCODING_ISO8859_9, // Turkish (Latin5) - wxFONTENCODING_ISO8859_10, // Variation of Latin4 (Latin6) - wxFONTENCODING_ISO8859_11, // Thai - wxFONTENCODING_ISO8859_12, // doesn't exist currently, but put it - // here anyhow to make all ISO8859 - // consecutive numbers - wxFONTENCODING_ISO8859_13, // Baltic (Latin7) - wxFONTENCODING_ISO8859_14, // Latin8 - wxFONTENCODING_ISO8859_15, // Latin9 (a.k.a. Latin0, includes euro) - wxFONTENCODING_ISO8859_MAX, - - // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html) - wxFONTENCODING_KOI8, // we don't support any of KOI8 variants - wxFONTENCODING_ALTERNATIVE, // same as MS-DOS CP866 - wxFONTENCODING_BULGARIAN, // used under Linux in Bulgaria - - // what would we do without Microsoft? They have their own encodings - // for DOS - wxFONTENCODING_CP437, // original MS-DOS codepage - wxFONTENCODING_CP850, // CP437 merged with Latin1 - wxFONTENCODING_CP852, // CP437 merged with Latin2 - wxFONTENCODING_CP855, // another cyrillic encoding - wxFONTENCODING_CP866, // and another one - // and for Windows - wxFONTENCODING_CP874, // WinThai - wxFONTENCODING_CP932, // Japanese (shift-JIS) - wxFONTENCODING_CP936, // Chiniese simplified (GB) - wxFONTENCODING_CP949, // Korean (Hangul charset) - wxFONTENCODING_CP950, // Chinese (traditional - Big5) - wxFONTENCODING_CP1250, // WinLatin2 - wxFONTENCODING_CP1251, // WinCyrillic - wxFONTENCODING_CP1252, // WinLatin1 - wxFONTENCODING_CP1253, // WinGreek (8859-7) - wxFONTENCODING_CP1254, // WinTurkish - wxFONTENCODING_CP1255, // WinHebrew - wxFONTENCODING_CP1256, // WinArabic - wxFONTENCODING_CP1257, // WinBaltic (same as Latin 7) - wxFONTENCODING_CP12_MAX, - - wxFONTENCODING_UTF7, // UTF-7 Unicode encoding - wxFONTENCODING_UTF8, // UTF-8 Unicode encoding - - wxFONTENCODING_UNICODE, // Unicode - currently used only by - // wxEncodingConverter class - - wxFONTENCODING_MAX -}; - - - -// wxNativeFontInfo is platform-specific font representation: this struct -// should be considered as opaque font description only used by the native -// functions, the user code can only get the objects of this type from -// somewhere and pass it somewhere else (possibly save them somewhere using -// ToString() and restore them using FromString()) -struct wxNativeFontInfo -{ -#ifdef __WXGTK__ - // init the elements from an XLFD, return TRUE if ok - bool FromXFontName(const wxString& xFontName); - - // return false if we were never initialized with a valid XLFD - bool IsDefault() const; - - // generate an XLFD using the fontElements - wxString GetXFontName() const; - - // set the XFLD - void SetXFontName(const wxString& xFontName); -#endif - - wxNativeFontInfo() { Init(); } - - // reset to the default state - void Init(); - -#ifndef __WXGTK__ - // accessors and modifiers for the font elements - int GetPointSize() const; - wxFontStyle GetStyle() const; - wxFontWeight GetWeight() const; - bool GetUnderlined() const; - wxString GetFaceName() const; - wxFontFamily GetFamily() const; - wxFontEncoding GetEncoding() const; - - void SetPointSize(int pointsize); - void SetStyle(wxFontStyle style); - void SetWeight(wxFontWeight weight); - void SetUnderlined(bool underlined); - void SetFaceName(wxString facename); - void SetFamily(wxFontFamily family); - void SetEncoding(wxFontEncoding encoding); -#endif - - // it is important to be able to serialize wxNativeFontInfo objects to be - // able to store them (in config file, for example) - bool FromString(const wxString& s); - wxString ToString() const; - - %addmethods { - wxString __str__() { - return self->ToString(); - } - } - - // we also want to present the native font descriptions to the user in some - // human-readable form (it is not platform independent neither, but can - // hopefully be understood by the user) - bool FromUserString(const wxString& s); - wxString ToUserString() const; -}; - - -// 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() const; - int GetPointSize() const; - int GetFamily() const; - int GetStyle() const; - int GetWeight() const; - bool GetUnderlined() const; - wxString GetFaceName() const; - wxFontEncoding GetEncoding() const; - - bool IsFixedWidth(); - - wxNativeFontInfo* GetNativeFontInfo() const; - wxString GetNativeFontInfoDesc() const; - wxString GetNativeFontInfoUserDesc() const; - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - void SetEncoding(wxFontEncoding encoding); - void SetNativeFontInfo(const wxNativeFontInfo& info); - // void SetNativeFontInfo(const wxString& info); - void SetNativeFontInfoUserDesc(const wxString& info); - - wxString GetFamilyString() const; - wxString GetStyleString() const; - wxString GetWeightString() const; - - static wxFontEncoding GetDefaultEncoding(); - static void SetDefaultEncoding(wxFontEncoding encoding); - -}; - - -class wxFontList : public wxObject { -public: - - void AddFont(wxFont* font); - wxFont * FindOrCreateFont(int point_size, int family, int style, int weight, - bool underline = FALSE, const char* facename = NULL, - wxFontEncoding encoding = wxFONTENCODING_DEFAULT); - void RemoveFont(wxFont *font); - - int GetCount(); -}; - - //---------------------------------------------------------------------- class wxColour : public wxObject { @@ -647,7 +385,7 @@ public: wxString cName = name; cName.MakeUpper(); wxString cName2 = cName; - if ( !cName2.Replace("GRAY", "GREY") ) + if ( !cName2.Replace(wxT("GRAY"), wxT("GREY")) ) cName2.clear(); wxNode *node = self->First(); @@ -688,9 +426,21 @@ public: void SetStyle(int style); void SetWidth(int width); - // **** This one needs to return a list of ints (wxDash) - //int GetDashes(wxDash **dashes); + void SetDashes(int LCOUNT, wxDash* choices); + //int GetDashes(wxDash **dashes); + %addmethods { + PyObject* GetDashes() { + wxDash* dashes; + int count = self->GetDashes(&dashes); + wxPyBeginBlockThreads(); + PyObject* retval = PyList_New(0); + for (int x=0; x