]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/gdi.i
Fixed wxWindowCreateEvent and wxWindowDestroyEvent to set m_eventType
[wxWidgets.git] / utils / wxPython / src / gdi.i
index 85260b6db1de80877dd11eb1303e15cc413448e4..e926551ddab4b0715881f2c5677a93813705e5a4 100644 (file)
 
 //---------------------------------------------------------------------------
 
 
 //---------------------------------------------------------------------------
 
-class wxBitmap {
+//  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 wxBitmap
+//: public wxGDIImage
+{
 public:
     wxBitmap(const wxString& name, long type);
     ~wxBitmap();
 
 public:
     wxBitmap(const wxString& name, long type);
     ~wxBitmap();
 
-#ifdef __WXMSW__
-    void Create(int width, int height, int depth = -1);
-#endif
-    int GetDepth();
-    int GetHeight();
     wxPalette* GetPalette();
     wxMask* GetMask();
     wxPalette* GetPalette();
     wxMask* GetMask();
-    int GetWidth();
     bool LoadFile(const wxString& name, long flags);
     bool LoadFile(const wxString& name, long flags);
-    bool Ok();
     bool SaveFile(const wxString& name, int type, wxPalette* palette = NULL);
     bool SaveFile(const wxString& name, int type, wxPalette* palette = NULL);
-    void SetDepth(int depth);
-    void SetHeight(int height);
     void SetMask(wxMask* mask);
 #ifdef __WXMSW__
     void SetPalette(wxPalette& palette);
 #endif
     void SetMask(wxMask* mask);
 #ifdef __WXMSW__
     void SetPalette(wxPalette& palette);
 #endif
-    void SetWidth(int width);
+
+    // wxGDIImage methods
+#ifdef __WXMSW__
+    long GetHandle();
+    void SetHandle(long handle);
+#endif
+    bool Ok();
+    int GetWidth();
+    int GetHeight();
+    int GetDepth();
+    void SetWidth(int w);
+    void SetHeight(int h);
+    void SetDepth(int d);
+#ifdef __WXMSW__
+    void SetSize(const wxSize& size);
+#endif
 };
 
 };
 
+
 %new wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1);
 %new wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1);
-wxBitmap* wxNoRefBitmap(char* name, long flags);
+
+#ifdef __WXMSW__
+%new wxBitmap* wxBitmapFromData(char* data, long type,
+                                int width, int height, int depth = 1);
+#endif
 
 %{                              // Alternate 'constructor'
     wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1) {
         return new wxBitmap(width, height, depth);
     }
 
 
 %{                              // Alternate 'constructor'
     wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1) {
         return new wxBitmap(width, height, depth);
     }
 
-                                // This one won't own the reference, so Python
-                                // won't call the dtor, this is good for
-                                // toolbars and such where the parent will
-                                // manage the bitmap.
-    wxBitmap* wxNoRefBitmap(char* name, long flags) {
-        return new wxBitmap(name, flags);
+#ifdef __WXMSW__
+    wxBitmap* wxBitmapFromData(char* data, long type,
+                               int width, int height, int depth = 1) {
+        return new wxBitmap((void*)data, type, width, height, depth);
     }
     }
+#endif
 %}
 
 //---------------------------------------------------------------------------
 %}
 
 //---------------------------------------------------------------------------
@@ -80,7 +108,7 @@ wxBitmap* wxNoRefBitmap(char* name, long flags);
 class wxMask {
 public:
     wxMask(const wxBitmap& bitmap);
 class wxMask {
 public:
     wxMask(const wxBitmap& bitmap);
-    ~wxMask();
+    //~wxMask();
 };
 
 %new wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour);
 };
 
 %new wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour);
@@ -94,33 +122,60 @@ public:
 //---------------------------------------------------------------------------
 
 
 //---------------------------------------------------------------------------
 
 
-class wxIcon : public wxBitmap {
+class wxIcon
+//: public wxGDIImage
+{
 public:
 public:
-#ifdef __WXMSW__
     wxIcon(const wxString& name, long flags,
            int desiredWidth = -1, int desiredHeight = -1);
     wxIcon(const wxString& name, long flags,
            int desiredWidth = -1, int desiredHeight = -1);
-#endif
     ~wxIcon();
 
     ~wxIcon();
 
-    int GetDepth();
-    int GetHeight();
-    int GetWidth();
     bool LoadFile(const wxString& name, long flags);
     bool LoadFile(const wxString& name, long flags);
+
+    // wxGDIImage methods
+#ifdef __WXMSW__
+    long GetHandle();
+    void SetHandle(long handle);
+#endif
     bool Ok();
     bool Ok();
-    void SetDepth(int depth);
-    void SetHeight(int height);
-    void SetWidth(int width);
+    int GetWidth();
+    int GetHeight();
+    int GetDepth();
+    void SetWidth(int w);
+    void SetHeight(int h);
+    void SetDepth(int d);
+#ifdef __WXMSW__
+    void SetSize(const wxSize& size);
+#endif
 };
 
 };
 
+
 //---------------------------------------------------------------------------
 
 //---------------------------------------------------------------------------
 
-class wxCursor : public wxBitmap {
+class wxCursor
+//: public wxGDIImage
+{
 public:
 #ifdef __WXMSW__
     wxCursor(const wxString& cursorName, long flags, int hotSpotX=0, int hotSpotY=0);
 #endif
     ~wxCursor();
 public:
 #ifdef __WXMSW__
     wxCursor(const wxString& cursorName, long flags, int hotSpotX=0, int hotSpotY=0);
 #endif
     ~wxCursor();
+
+    // wxGDIImage methods
+#ifdef __WXMSW__
+    long GetHandle();
+    void SetHandle(long handle);
+#endif
     bool Ok();
     bool Ok();
+#ifdef __WXMSW__
+    int GetWidth();
+    int GetHeight();
+    int GetDepth();
+    void SetWidth(int w);
+    void SetHeight(int h);
+    void SetDepth(int d);
+    void SetSize(const wxSize& size);
+#endif
 };
 
 %name(wxStockCursor) %new wxCursor* wxPyStockCursor(int id);
 };
 
 %name(wxStockCursor) %new wxCursor* wxPyStockCursor(int id);
@@ -132,20 +187,67 @@ public:
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
+
+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 languages (Estonian) (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,      // Latin7
+    wxFONTENCODING_ISO8859_14,      // Latin8
+    wxFONTENCODING_ISO8859_15,      // Latin9 (a.k.a. Latin0, includes euro)
+
+    // 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_CP1250,          // WinLatin2
+    wxFONTENCODING_CP1251,          // WinCyrillic
+    wxFONTENCODING_CP1252,          // WinLatin1
+
+    wxFONTENCODING_MAX
+};
+
 class wxFont {
 public:
     // I'll do it this way to use long-lived objects and not have to
     // worry about when python may delete the object.
     %addmethods {
         wxFont( int pointSize, int family, int style, int weight,
 class wxFont {
 public:
     // I'll do it this way to use long-lived objects and not have to
     // worry about when python may delete the object.
     %addmethods {
         wxFont( int pointSize, int family, int style, int weight,
-                int underline=FALSE, char* faceName = "") {
+                int underline=FALSE, char* faceName = "",
+                wxFontEncoding encoding=wxFONTENCODING_DEFAULT) {
 
             return wxTheFontList->FindOrCreateFont(pointSize, family, style, weight,
 
             return wxTheFontList->FindOrCreateFont(pointSize, family, style, weight,
-                                                   underline, faceName);
+                                                   underline, faceName, encoding);
         }
         // NO Destructor.
     }
 
         }
         // NO Destructor.
     }
 
+    bool Ok();
 
     wxString GetFaceName();
     int GetFamily();
 
     wxString GetFaceName();
     int GetFamily();
@@ -156,14 +258,29 @@ public:
     int GetStyle();
     bool GetUnderlined();
     int GetWeight();
     int GetStyle();
     bool GetUnderlined();
     int GetWeight();
+    wxFontEncoding GetEncoding();
     void SetFaceName(const wxString& faceName);
     void SetFamily(int family);
     void SetPointSize(int pointSize);
     void SetStyle(int style);
     void SetUnderlined(bool underlined);
     void SetWeight(int weight);
     void SetFaceName(const wxString& faceName);
     void SetFamily(int family);
     void SetPointSize(int pointSize);
     void SetStyle(int style);
     void SetUnderlined(bool underlined);
     void SetWeight(int weight);
+    void SetEncoding(wxFontEncoding encoding);
+    wxString GetFamilyString();
+    wxString GetStyleString();
+    wxString GetWeightString();
 };
 
 };
 
+%inline %{
+    wxFontEncoding wxFont_GetDefaultEncoding() {
+        return wxFont::GetDefaultEncoding();
+    }
+
+    void wxFont_SetDefaultEncoding(wxFontEncoding encoding) {
+        wxFont::SetDefaultEncoding(encoding);
+    }
+%}
+
 //----------------------------------------------------------------------
 
 class wxColour {
 //----------------------------------------------------------------------
 
 class wxColour {
@@ -184,6 +301,10 @@ public:
             return rv;
         }
     }
             return rv;
         }
     }
+    %pragma(python) addtoclass = "asTuple = Get"
+    %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())"
+    %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())"
+
 };
 
 %new wxColour* wxNamedColour(const wxString& colorName);
 };
 
 %new wxColour* wxNamedColour(const wxString& colorName);
@@ -196,7 +317,12 @@ public:
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
+#ifdef __WXMSW__
 typedef unsigned long wxDash;
 typedef unsigned long wxDash;
+#else
+typedef char wxDash;
+#endif
+
 
 class wxPen {
 public:
 
 class wxPen {
 public:
@@ -222,11 +348,12 @@ public:
     void SetStyle(int style);
     void SetWidth(int width);
 
     void SetStyle(int style);
     void SetWidth(int width);
 
-#ifdef __WXMSW__
             // **** This one needs to return a list of ints (wxDash)
     int GetDashes(wxDash **dashes);
             // **** This one needs to return a list of ints (wxDash)
     int GetDashes(wxDash **dashes);
-    wxBitmap* GetStipple();
     void SetDashes(int LCOUNT, wxDash* LIST);
     void SetDashes(int LCOUNT, wxDash* LIST);
+
+#ifdef __WXMSW__
+    wxBitmap* GetStipple();
     void SetStipple(wxBitmap& stipple);
 #endif
 };
     void SetStipple(wxBitmap& stipple);
 #endif
 };
@@ -263,8 +390,15 @@ public:
     ~wxDC();
 
     void BeginDrawing();
     ~wxDC();
 
     void BeginDrawing();
-    bool Blit(long xdest, long ydest, long width, long height,
-                wxDC *source, long xsrc, long ysrc, long logical_func);
+//  %name(BlitXY)
+    bool Blit(long xdest, long ydest,
+              long width, long height,
+              wxDC *source, long xsrc, long ysrc,
+              int logicalFunc = wxCOPY, int useMask = FALSE);
+//      bool Blit(const wxPoint& destPt, const wxSize& sz,
+//                wxDC *source, const wxPoint& srcPt,
+//                int logicalFunc = wxCOPY, int useMask = FALSE);
+
     void Clear();
     void CrossHair(long x, long y);
     void DestroyClippingRegion();
     void Clear();
     void CrossHair(long x, long y);
     void DestroyClippingRegion();
@@ -273,6 +407,7 @@ public:
     long DeviceToLogicalY(long y);
     long DeviceToLogicalYRel(long y);
     void DrawArc(long x1, long y1, long x2, long y2, long xc, long yc);
     long DeviceToLogicalY(long y);
     long DeviceToLogicalYRel(long y);
     void DrawArc(long x1, long y1, long x2, long y2, long xc, long yc);
+    void DrawCircle(long x, long y, long radius);
     void DrawEllipse(long x, long y, long width, long height);
     void DrawEllipticArc(long x, long y, long width, long height, long start, long end);
     void DrawIcon(const wxIcon& icon, long x, long y);
     void DrawEllipse(long x, long y, long width, long height);
     void DrawEllipticArc(long x, long y, long width, long height, long start, long end);
     void DrawIcon(const wxIcon& icon, long x, long y);
@@ -282,6 +417,7 @@ public:
                      int fill_style=wxODDEVEN_RULE);
     void DrawPoint(long x, long y);
     void DrawRectangle(long x, long y, long width, long height);
                      int fill_style=wxODDEVEN_RULE);
     void DrawPoint(long x, long y);
     void DrawRectangle(long x, long y, long width, long height);
+    void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle);
     void DrawRoundedRectangle(long x, long y, long width, long height, long radius=20);
     void DrawSpline(int LCOUNT, wxPoint* LIST);
     void DrawText(const wxString& text, long x, long y);
     void DrawRoundedRectangle(long x, long y, long width, long height, long radius=20);
     void DrawSpline(int LCOUNT, wxPoint* LIST);
     void DrawText(const wxString& text, long x, long y);
@@ -307,7 +443,8 @@ public:
             return wc;
         }
     }
             return wc;
         }
     }
-    void GetSize(int* OUTPUT, int* OUTPUT); //void GetSize(long* OUTPUT, long* OUTPUT);
+    %name(GetSizeTuple)void GetSize(int* OUTPUT, int* OUTPUT);
+    wxSize GetSize();
     wxColour& GetTextBackground();
     void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT);
     %name(GetFullTextExtent)void GetTextExtent(const wxString& string,
     wxColour& GetTextBackground();
     void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT);
     %name(GetFullTextExtent)void GetTextExtent(const wxString& string,
@@ -341,19 +478,26 @@ public:
     void StartPage();
 
 
     void StartPage();
 
 
-    %addmethods {
-            // This one is my own creation...
-        void DrawBitmap(wxBitmap& bitmap, long x, long y, bool swapPalette=TRUE) {
-            wxMemoryDC* memDC = new wxMemoryDC;
-            memDC->SelectObject(bitmap);
-            if (swapPalette)
-                self->SetPalette(*bitmap.GetPalette());
-            self->Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), memDC,
-                    0, 0, self->GetLogicalFunction());
-            memDC->SelectObject(wxNullBitmap);
-            delete memDC;
-        }
-    }
+//  Don't need this one anymore as wxWindows has one...
+//      %addmethods {
+//              // This one is my own creation...
+//          void DrawBitmap(wxBitmap& bitmap, long x, long y, bool swapPalette=TRUE) {
+//              wxMemoryDC* memDC = new wxMemoryDC;
+//              memDC->SelectObject(bitmap);
+//  #ifdef __WXMSW__
+//              if (swapPalette)
+//                  self->SetPalette(*bitmap.GetPalette());
+//  #endif
+//              self->Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), memDC,
+//                      0, 0, self->GetLogicalFunction());
+//              memDC->SelectObject(wxNullBitmap);
+//              delete memDC;
+//          }
+//      }
+
+    void DrawBitmap(const wxBitmap& bitmap, long x, long y,
+                    int useMask = FALSE);
+
 };
 
 
 };
 
 
@@ -447,8 +591,8 @@ extern wxFont *wxNORMAL_FONT;
 extern wxFont *wxSMALL_FONT;
 extern wxFont *wxITALIC_FONT;
 extern wxFont *wxSWISS_FONT;
 extern wxFont *wxSMALL_FONT;
 extern wxFont *wxITALIC_FONT;
 extern wxFont *wxSWISS_FONT;
-extern wxPen *wxRED_PEN;
 
 
+extern wxPen *wxRED_PEN;
 extern wxPen *wxCYAN_PEN;
 extern wxPen *wxGREEN_PEN;
 extern wxPen *wxBLACK_PEN;
 extern wxPen *wxCYAN_PEN;
 extern wxPen *wxGREEN_PEN;
 extern wxPen *wxBLACK_PEN;
@@ -522,7 +666,7 @@ enum {
 
 class wxImageList {
 public:
 
 class wxImageList {
 public:
-    wxImageList(int width, int height, const bool mask=TRUE, int initialCount=1);
+    wxImageList(int width, int height, int mask=TRUE, int initialCount=1);
     ~wxImageList();
 
 #ifdef __WXMSW__
     ~wxImageList();
 
 #ifdef __WXMSW__