]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/gdi.i
Some tweaks and updates
[wxWidgets.git] / utils / wxPython / src / gdi.i
index 6784b6eba31b6f42fa112e57811876e50b3e061f..123515128cfbf00ba1762cc40ab7543629b7b108 100644 (file)
 %{
 #include "helpers.h"
 #include <wx/metafile.h>
+#include <wx/imaglist.h>
+#ifndef __WXMSW__
+#include <wx/dcps.h>
+#endif
 %}
 
 //----------------------------------------------------------------------
@@ -49,24 +53,38 @@ public:
     void SetHeight(int height);
     void SetMask(wxMask* mask);
 #ifdef __WXMSW__
-    void SetPalette(wxPalette* palette);
+    void SetPalette(wxPalette& palette);
 #endif
     void SetWidth(int width);
 };
 
 %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);
     }
 
-                                // 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.
+                                // 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
 %}
 
 //---------------------------------------------------------------------------
@@ -90,10 +108,8 @@ public:
 
 class wxIcon : public wxBitmap {
 public:
-#ifdef __WXMSW__
     wxIcon(const wxString& name, long flags,
            int desiredWidth = -1, int desiredHeight = -1);
-#endif
     ~wxIcon();
 
     int GetDepth();
@@ -106,6 +122,7 @@ public:
     void SetWidth(int width);
 };
 
+
 //---------------------------------------------------------------------------
 
 class wxCursor : public wxBitmap {
@@ -117,9 +134,9 @@ public:
     bool Ok();
 };
 
-%new wxCursor* wxStockCursor(int id);
+%name(wxStockCursor) %new wxCursor* wxPyStockCursor(int id);
 %{                              // Alternate 'constructor'
-    wxCursor* wxStockCursor(int id) {
+    wxCursor* wxPyStockCursor(int id) {
         return new wxCursor(id);
     }
 %}
@@ -143,19 +160,19 @@ public:
 
     wxString GetFaceName();
     int GetFamily();
+#ifdef __WXMSW__
     int GetFontId();
+#endif
     int GetPointSize();
     int GetStyle();
     bool GetUnderlined();
     int GetWeight();
-#ifdef __WXMSW__
     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);
-#endif
 };
 
 //----------------------------------------------------------------------
@@ -206,24 +223,23 @@ public:
     int GetCap();
     wxColour& GetColour();
 
-#ifdef __WXMSW__
-            // **** This one needs to return a list of ints (wxDash)
-    int GetDashes(wxDash **dashes);
-    wxBitmap* GetStipple();
-#endif
     int GetJoin();
     int GetStyle();
     int GetWidth();
     bool Ok();
     void SetCap(int cap_style);
     void SetColour(wxColour& colour);
-#ifdef __WXMSW__
-    void SetDashes(int LCOUNT, wxDash* LIST);
-    void SetStipple(wxBitmap * stipple);
-#endif
     void SetJoin(int join_style);
     void SetStyle(int style);
     void SetWidth(int width);
+
+#ifdef __WXMSW__
+            // **** This one needs to return a list of ints (wxDash)
+    int GetDashes(wxDash **dashes);
+    wxBitmap* GetStipple();
+    void SetDashes(int LCOUNT, wxDash* LIST);
+    void SetStipple(wxBitmap& stipple);
+#endif
 };
 
 //----------------------------------------------------------------------
@@ -243,11 +259,9 @@ public:
     wxBitmap * GetStipple();
     int GetStyle();
     bool Ok();
-#ifdef __WXMSW__
     void SetColour(wxColour &colour);
-    void SetStipple(wxBitmap *bitmap);
+    void SetStipple(wxBitmapbitmap);
     void SetStyle(int style);
-#endif
 };
 
 //----------------------------------------------------------------------
@@ -260,8 +274,15 @@ public:
     ~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();
@@ -270,6 +291,7 @@ public:
     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);
@@ -285,23 +307,18 @@ public:
     void EndDoc();
     void EndDrawing();
     void EndPage();
-#ifdef __WXWIN__
     void FloodFill(long x, long y, const wxColour& colour, int style=wxFLOOD_SURFACE);
-#endif
-#ifdef __WXGTK__
-    void FloodFill(long x, long y, wxColour* colour, int style=wxFLOOD_SURFACE);
-#endif
-    wxBrush * GetBackground();
-    wxBrush * GetBrush();
+    wxBrush&  GetBackground();
+    wxBrush&  GetBrush();
     long GetCharHeight();
     long GetCharWidth();
     void GetClippingBox(long *OUTPUT, long *OUTPUT,
                         long *OUTPUT, long *OUTPUT);
-    wxFont * GetFont();
+    wxFont& GetFont();
     int GetLogicalFunction();
     int GetMapMode();
     bool GetOptimization();
-    wxPen * GetPen();
+    wxPen& GetPen();
     %addmethods {
         %new wxColour* GetPixel(long x, long y) {
             wxColour* wc = new wxColour();
@@ -309,10 +326,13 @@ public:
             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,
-                       long *OUTPUT, long *OUTPUT);
+    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();
     long LogicalToDeviceX(long x);
     long LogicalToDeviceXRel(long x);
@@ -341,19 +361,26 @@ public:
     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);
+
 };
 
 
@@ -401,10 +428,19 @@ public:
 
 //---------------------------------------------------------------------------
 
+class wxWindowDC : public wxDC {
+public:
+      wxWindowDC(wxWindow* win);
+};
+
+//---------------------------------------------------------------------------
+
+#ifndef __WXMSW__
 class wxPostScriptDC : public wxDC {
 public:
       wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow* win = NULL);
 };
+#endif
 
 //---------------------------------------------------------------------------
 
@@ -431,12 +467,15 @@ public:
 
 
 %readonly
+%{
+#if 0
+%}
 extern wxFont *wxNORMAL_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;
@@ -479,24 +518,59 @@ extern wxPalette wxNullPalette;
 extern wxFont   wxNullFont;
 extern wxColour wxNullColour;
 
+%readwrite
+%{
+#endif
+%}
+
+//---------------------------------------------------------------------------
+
+class wxPalette {
+public:
+    wxPalette(int LCOUNT, byte* LIST, byte* LIST, byte* LIST);
+    ~wxPalette();
+
+    int GetPixel(byte red, byte green, byte blue);
+    bool GetRGB(int pixel, byte* OUTPUT, byte* OUTPUT, byte* OUTPUT);
+    bool Ok();
+};
+
+//---------------------------------------------------------------------------
+
+enum {
+    wxIMAGELIST_DRAW_NORMAL ,
+    wxIMAGELIST_DRAW_TRANSPARENT,
+    wxIMAGELIST_DRAW_SELECTED,
+    wxIMAGELIST_DRAW_FOCUSED,
+    wxIMAGE_LIST_NORMAL,
+    wxIMAGE_LIST_SMALL,
+    wxIMAGE_LIST_STATE
+};
+
+class wxImageList {
+public:
+    wxImageList(int width, int height, const bool mask=TRUE, int initialCount=1);
+    ~wxImageList();
+
+#ifdef __WXMSW__
+    int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap);
+    %name(AddWithColourMask)int Add(const wxBitmap& bitmap, const wxColour& maskColour);
+    %name(AddIcon)int Add(const wxIcon& icon);
+    bool Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap);
+    %name(ReplaceIcon)bool Replace(int index, const wxIcon& icon);
+#else
+    int Add(const wxBitmap& bitmap);
+    bool Replace(int index, const wxBitmap& bitmap);
+#endif
+
+    bool Draw(int index, wxDC& dc, int x, int x, int flags = wxIMAGELIST_DRAW_NORMAL,
+              const bool solidBackground = FALSE);
+
+    int GetImageCount();
+    bool Remove(int index);
+    bool RemoveAll();
+};
+
+
 //---------------------------------------------------------------------------
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// $Log$
-// Revision 1.3  1998/08/18 19:48:16  RD
-// more wxGTK compatibility things.
-//
-// It builds now but there are serious runtime problems...
-//
-// Revision 1.2  1998/08/15 07:36:35  RD
-// - Moved the header in the .i files out of the code that gets put into
-// the .cpp files.  It caused CVS conflicts because of the RCS ID being
-// different each time.
-//
-// - A few minor fixes.
-//
-// Revision 1.1  1998/08/09 08:25:50  RD
-// Initial version
-//
-//