]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/gdi.i
added carbonaccessors.o
[wxWidgets.git] / wxPython / src / gdi.i
index da68e21f2384e4806de0befeed94391f4fbe943a..21f67f0232a798604980ece4baf7672bbc7d6608 100644 (file)
 %import _defs.i
 %import misc.i
 
 %import _defs.i
 %import misc.i
 
-
 %{
     static wxString wxPyEmptyStr("");
 %}
 
 //---------------------------------------------------------------------------
 
 %{
     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:
 {
 public:
-    wxBitmap(const wxString& name, long type);
+    wxBitmap(const wxString& name, wxBitmapType type);
     ~wxBitmap();
 
     wxPalette* GetPalette();
     ~wxBitmap();
 
     wxPalette* GetPalette();
@@ -105,37 +101,87 @@ public:
 };
 
 
 };
 
 
+// Declarations of some alternate "constructors"
 %new wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1);
 %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);
     }
 
     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;
         }
             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; x<count; x++) {
+            // TODO: Need some validation and error checking here
+            cArray[x] = PyString_AsString(PyList_GET_ITEM(listOfStrings, x));
+        }
+        return cArray;
     }
     }
-#endif
+
+
+    wxBitmap* wxBitmapFromXPMData(PyObject* listOfStrings) {
+        char**    cArray = NULL;
+        wxBitmap* bmp;
+
+        cArray = ConvertListOfStrings(listOfStrings);
+        if (! cArray)
+            return NULL;
+        bmp = new wxBitmap(cArray);
+        delete [] cArray;
+        return bmp;
+    }
+
+
+    wxBitmap* wxBitmapFromIcon(const wxIcon& icon) {
+        return new wxBitmap(icon);
+    }
+
+
+    wxBitmap* wxBitmapFromBits(char* bits, int width, int height, int depth = 1 ) {
+        return new wxBitmap(bits, 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");
+//              return NULL;
+//          }
+//          return new wxBitmap((void*)PyString_AsString(data), type, width, height, depth);
+//      }
+//  #endif
 %}
 
 //---------------------------------------------------------------------------
 
 %}
 
 //---------------------------------------------------------------------------
 
-class wxMask {
+class wxMask : public wxObject {
 public:
     wxMask(const wxBitmap& bitmap);
     //~wxMask();
 public:
     wxMask(const wxBitmap& bitmap);
     //~wxMask();
+
+    %addmethods { void Destroy() { delete self; } }
 };
 
 %new wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour);
 };
 
 %new wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour);
@@ -149,8 +195,7 @@ public:
 //---------------------------------------------------------------------------
 
 
 //---------------------------------------------------------------------------
 
 
-class wxIcon
-//: public wxGDIImage
+class wxIcon : public wxGDIObject
 {
 public:
     wxIcon(const wxString& name, long flags,
 {
 public:
     wxIcon(const wxString& name, long flags,
@@ -174,6 +219,8 @@ public:
 #ifdef __WXMSW__
     void SetSize(const wxSize& size);
 #endif
 #ifdef __WXMSW__
     void SetSize(const wxSize& size);
 #endif
+    void CopyFromBitmap(const wxBitmap& bmp);
+
     %pragma(python) addtoclass = "
     def __del__(self,gdic=gdic):
         try:
     %pragma(python) addtoclass = "
     def __del__(self,gdic=gdic):
         try:
@@ -182,14 +229,34 @@ public:
         except:
             pass
 "
         except:
             pass
 "
-
 };
 
 
 };
 
 
+// Declarations of some alternate "constructors"
+%new wxIcon* wxEmptyIcon();
+%new wxIcon* wxIconFromXPMData(PyObject* listOfStrings);
+
+%{ // Implementations of some alternate "constructors"
+    wxIcon* wxEmptyIcon() {
+        return new wxIcon();
+    }
+
+    wxIcon* wxIconFromXPMData(PyObject* listOfStrings) {
+        char**  cArray = NULL;
+        wxIcon* icon;
+
+        cArray = ConvertListOfStrings(listOfStrings);
+        if (! cArray)
+            return NULL;
+        icon = new wxIcon(cArray);
+        delete [] cArray;
+        return icon;
+    }
+%}
+
 //---------------------------------------------------------------------------
 
 //---------------------------------------------------------------------------
 
-class wxCursor
-//: public wxGDIImage
+class wxCursor : public wxGDIObject
 {
 public:
 #ifdef __WXMSW__
 {
 public:
 #ifdef __WXMSW__
@@ -269,7 +336,7 @@ enum wxFontEncoding
 };
 
 
 };
 
 
-class wxFont {
+class wxFont : public wxGDIObject {
 public:
     wxFont( int pointSize, int family, int style, int weight,
             int underline=FALSE, char* faceName = "",
 public:
     wxFont( int pointSize, int family, int style, int weight,
             int underline=FALSE, char* faceName = "",
@@ -310,7 +377,7 @@ public:
 %}
 
 
 %}
 
 
-class wxFontList {
+class wxFontList : public wxObject {
 public:
 
     void AddFont(wxFont* font);
 public:
 
     void AddFont(wxFont* font);
@@ -323,7 +390,7 @@ public:
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
-class wxColour {
+class wxColour : public wxObject {
 public:
     wxColour(unsigned char red=0, unsigned char green=0, unsigned char blue=0);
     ~wxColour();
 public:
     wxColour(unsigned char red=0, unsigned char green=0, unsigned char blue=0);
     ~wxColour();
@@ -357,7 +424,7 @@ public:
 
 
 
 
 
 
-class wxColourDatabase {
+class wxColourDatabase : public wxObject {
 public:
 
     wxColour *FindColour(const wxString& colour);
 public:
 
     wxColour *FindColour(const wxString& colour);
@@ -374,13 +441,13 @@ public:
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
 
-class wxPen {
+class wxPen : public wxGDIObject {
 public:
     wxPen(wxColour& colour, int width=1, int style=wxSOLID);
     ~wxPen();
 
     int GetCap();
 public:
     wxPen(wxColour& colour, int width=1, int style=wxSOLID);
     ~wxPen();
 
     int GetCap();
-    wxColour& GetColour();
+    wxColour GetColour();
 
     int GetJoin();
     int GetStyle();
 
     int GetJoin();
     int GetStyle();
@@ -403,7 +470,7 @@ public:
 };
 
 
 };
 
 
-class wxPenList {
+class wxPenList : public wxObject {
 public:
 
     void AddPen(wxPen* pen);
 public:
 
     void AddPen(wxPen* pen);
@@ -415,12 +482,12 @@ public:
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
-class wxBrush {
+class wxBrush : public wxGDIObject {
 public:
     wxBrush(const wxColour& colour, int style=wxSOLID);
     ~wxBrush();
 
 public:
     wxBrush(const wxColour& colour, int style=wxSOLID);
     ~wxBrush();
 
-    wxColour& GetColour();
+    wxColour GetColour();
     wxBitmap * GetStipple();
     int GetStyle();
     bool Ok();
     wxBitmap * GetStipple();
     int GetStyle();
     bool Ok();
@@ -442,7 +509,7 @@ public:
 
 
 
 
 
 
-class wxDC {
+class wxDC : public wxObject {
 public:
 //    wxDC(); **** abstract base class, can't instantiate.
     ~wxDC();
 public:
 //    wxDC(); **** abstract base class, can't instantiate.
     ~wxDC();
@@ -505,12 +572,12 @@ public:
     %name(GetSizeTuple)void GetSize(int* OUTPUT, int* OUTPUT);
     wxSize GetSize();
     wxSize GetSizeMM();
     %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);
     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);
     void GetUserScale(double *OUTPUT, double *OUTPUT);
     long LogicalToDeviceX(long x);
     long LogicalToDeviceXRel(long x);
@@ -556,6 +623,10 @@ public:
 
     void CalcBoundingBox(int x, int y);
     void ResetBoundingBox();
 
     void CalcBoundingBox(int x, int y);
     void ResetBoundingBox();
+
+#ifdef __WXMSW__
+    long GetHDC();
+#endif
 };
 
 
 };
 
 
@@ -698,7 +769,7 @@ extern wxColourDatabase* wxTheColourDatabase;
 
 //---------------------------------------------------------------------------
 
 
 //---------------------------------------------------------------------------
 
-class wxPalette {
+class wxPalette : public wxGDIObject {
 public:
     wxPalette(int LCOUNT, byte* choices, byte* choices, byte* choices);
     ~wxPalette();
 public:
     wxPalette(int LCOUNT, byte* choices, byte* choices, byte* choices);
     ~wxPalette();
@@ -720,7 +791,7 @@ enum {
     wxIMAGE_LIST_STATE
 };
 
     wxIMAGE_LIST_STATE
 };
 
-class wxImageList {
+class wxImageList : public wxObject {
 public:
     wxImageList(int width, int height, int mask=TRUE, int initialCount=1);
     ~wxImageList();
 public:
     wxImageList(int width, int height, int mask=TRUE, int initialCount=1);
     ~wxImageList();
@@ -746,5 +817,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) ++;
+        }
+    };
+};
+
+
 //---------------------------------------------------------------------------
 
 //---------------------------------------------------------------------------