]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_dc.i
All platforms have the same GLCanvas API now
[wxWidgets.git] / wxPython / src / _dc.i
index 7c24e09d2a7f481b508f7bb083a0ad344e9ede54..30f8df8e22c6fbdf4882422823c1bc689c92a2d7 100644 (file)
@@ -352,6 +352,63 @@ position.", "
     :param srcPtMask:   Source position on the mask. 
 ",
         BlitPointSize);
+
+
+    DocDeclStr(
+        bool , StretchBlit(wxCoord dstX, wxCoord dstY, 
+                           wxCoord dstWidth, wxCoord dstHeight,
+                           wxDC *source, 
+                           wxCoord srcX, wxCoord srcY,
+                           wxCoord srcWidth, wxCoord srcHeight,
+                           int rop = wxCOPY, bool useMask = false, 
+                           wxCoord srcMaskX = wxDefaultCoord,
+                           wxCoord srcMaskY = wxDefaultCoord),
+        "Copy from a source DC to this DC, specifying the destination
+coordinates, destination size, source DC, source coordinates, size of
+source area to copy, logical function, whether to use a bitmap mask,
+and mask source position.", "
+
+    :param xdest:       Destination device context x position.
+    :param ydest:       Destination device context y position.
+    :param dstWidth:    Width of destination area.
+    :param dstHeight:   Height of destination area.
+    :param source:      Source device context.
+    :param xsrc:        Source device context x position.
+    :param ysrc:        Source device context y position.
+    :param srcWidth:    Width of source area to be copied.
+    :param srcHeight:   Height of source area to be copied.
+    :param logicalFunc: Logical function to use: see `SetLogicalFunction`.
+    :param useMask:     If true, StretchBlit does a transparent blit using
+                        the mask that is associated with the bitmap selected
+                        into the source device context.
+    :param xsrcMask:    Source x position on the mask. If both xsrcMask and
+                        ysrcMask are -1, xsrc and ysrc will be assumed for
+                        the mask source position. Currently only implemented
+                        on Windows.
+    :param ysrcMask:    Source y position on the mask. 
+");
+    
+
+
+    DocDeclStrName(
+        bool , StretchBlit(const wxPoint& dstPt, const wxSize& dstSize,
+                           wxDC *source, const wxPoint& srcPt, const wxSize& srcSize,
+                           int rop = wxCOPY, bool useMask = false,
+                           const wxPoint& srcMaskPt = wxDefaultPosition),
+        "Copy from a source DC to this DC, specifying the destination
+coordinates, destination size, source DC, source coordinates, size of
+source area to copy, logical function, whether to use a bitmap mask,
+and mask source position.  This version is the same as `StretchBlit`
+except `wx.Point` and `wx.Size` objects are used instead of individual
+position and size components.", "",
+        StretchBlitPointSize);
+    
+   
+
+    DocDeclStr(
+        wxBitmap , GetAsBitmap(const wxRect *subrect = NULL) const,
+        "", "");
+    
     
 
     DocStr(
@@ -1238,56 +1295,61 @@ static void wxDC_GetBoundingBox(wxDC* dc, int* x1, int* y1, int* x2, int* y2) {
 //---------------------------------------------------------------------------
 %newgroup
 
-MustHaveApp(wxMemoryDC);
+DocStr(wxDCTextColourChanger,
+"wx.DCTextColourChanger can be used to temporarily change the DC text
+colour and restore it automatically when the object goes out of scope", "");
 
-DocStr(wxMemoryDC,
-"A memory device context provides a means to draw graphics onto a
-bitmap. A bitmap must be selected into the new memory DC before it may
-be used for anything. Typical usage is as follows::
+class wxDCTextColourChanger
+{
+public:
+    wxDCTextColourChanger(wxDC& dc, const wxColour& col);
+    ~wxDCTextColourChanger();
+};
 
-    dc = wx.MemoryDC()
-    dc.SelectObject(bitmap)
-    # draw on the dc using any of the Draw methods
-    dc.SelectObject(wx.NullBitmap)
-    # the bitmap now contains wahtever was drawn upon it
 
-Note that the memory DC *must* be deleted (or the bitmap selected out
-of it) before a bitmap can be reselected into another memory DC.
-", "");
+DocStr(wxDCPenChanger,
+"wx.DCPenChanger can be used to temporarily change the DC pen and
+restore it automatically when the object goes out of scope", "");
 
-class wxMemoryDC : public wxDC {
+class  wxDCPenChanger
+{
 public:
-    DocCtorStr(
-        wxMemoryDC(const wxBitmap& bitmap = wxNullBitmap),
-        "Constructs a new memory device context.
+    wxDCPenChanger(wxDC& dc, const wxPen& pen);
+    ~wxDCPenChanger();
+};
 
-Use the Ok member to test whether the constructor was successful in
-creating a usable device context. If a bitmap is not given to this
-constructor then don't forget to select a bitmap into the DC before
-drawing on it.", "
 
-:see: `MemoryDCFromDC`");
 
-    DocCtorStrName(
-        wxMemoryDC(wxDC* oldDC),
-        "Creates a DC that is compatible with the oldDC.", "",
-        MemoryDCFromDC);
+DocStr(wxDCBrushChanger,
+"wx.DCBrushChanger can be used to temporarily change the DC brush and
+restore it automatically when the object goes out of scope", "");
 
-    
-    DocDeclStr(
-        void , SelectObject(const wxBitmap& bitmap),
-        "Selects the bitmap into the device context, to use as the memory
-bitmap. Selecting the bitmap into a memory DC allows you to draw into
-the DC, and therefore the bitmap, and also to use Blit to copy the
-bitmap to a window.
+class wxDCBrushChanger
+{
+public:
+    wxDCBrushChanger(wxDC& dc, const wxBrush& brush);
+    ~wxDCBrushChanger();
+};
 
-If the argument is wx.NullBitmap (or some other uninitialised
-`wx.Bitmap`) the current bitmap is selected out of the device context,
-and the original bitmap restored, allowing the current bitmap to be
-destroyed safely.", "");
-    
+
+DocStr(wxDCClipper,
+"wx.wxDCClipper sets the DC's clipping region when it is constructed,
+and then automatically destroys the clipping region when the clipper
+goes out of scope.", "");
+
+class wxDCClipper
+{
+public:
+    %nokwargs wxDCClipper;
+    wxDCClipper(wxDC& dc, const wxRegion& r);
+    wxDCClipper(wxDC& dc, const wxRect& r);
+    wxDCClipper(wxDC& dc, wxCoord x, wxCoord y, wxCoord w, wxCoord h);
+    ~wxDCClipper();
 };
 
+
+
+
 //---------------------------------------------------------------------------
 %newgroup
 
@@ -1406,6 +1468,66 @@ public:
 
 
 
+//---------------------------------------------------------------------------
+%newgroup
+
+MustHaveApp(wxMemoryDC);
+
+DocStr(wxMemoryDC,
+"A memory device context provides a means to draw graphics onto a
+bitmap. A bitmap must be selected into the new memory DC before it may
+be used for anything. Typical usage is as follows::
+
+    dc = wx.MemoryDC()
+    dc.SelectObject(bitmap)
+    # draw on the dc using any of the Draw methods
+    dc.SelectObject(wx.NullBitmap)
+    # the bitmap now contains wahtever was drawn upon it
+
+Note that the memory DC *must* be deleted (or the bitmap selected out
+of it) before a bitmap can be reselected into another memory DC.
+", "");
+
+class wxMemoryDC : public wxWindowDC {
+public:
+    DocCtorStr(
+        wxMemoryDC(wxBitmap& bitmap = wxNullBitmap),
+        "Constructs a new memory device context.
+
+Use the Ok member to test whether the constructor was successful in
+creating a usable device context. If a bitmap is not given to this
+constructor then don't forget to select a bitmap into the DC before
+drawing on it.", "
+
+:see: `MemoryDCFromDC`");
+
+    DocCtorStrName(
+        wxMemoryDC(wxDC* oldDC),
+        "Creates a DC that is compatible with the oldDC.", "",
+        MemoryDCFromDC);
+
+    
+    DocDeclStr(
+        void , SelectObject(wxBitmap& bitmap),
+        "Selects the bitmap into the device context, to use as the memory
+bitmap. Selecting the bitmap into a memory DC allows you to draw into
+the DC, and therefore the bitmap, and also to use Blit to copy the
+bitmap to a window.
+
+If the argument is wx.NullBitmap (or some other uninitialised
+`wx.Bitmap`) the current bitmap is selected out of the device context,
+and the original bitmap restored, allowing the current bitmap to be
+destroyed safely.", "");
+
+    
+    DocDeclStr(
+        void , SelectObjectAsSource(const wxBitmap& bmp),
+        "", "");
+    
+    
+};
+
+
 //---------------------------------------------------------------------------
 %newgroup
 
@@ -1416,7 +1538,8 @@ public:
 
 enum {
     wxBUFFER_VIRTUAL_AREA,
-    wxBUFFER_CLIENT_AREA
+    wxBUFFER_CLIENT_AREA,
+    wxBUFFER_USES_SHARED_BUFFER
 };
 
 MustHaveApp(wxBufferedDC);
@@ -1425,25 +1548,31 @@ DocStr(wxBufferedDC,
 "This simple class provides a simple way to avoid flicker: when drawing
 on it, everything is in fact first drawn on an in-memory buffer (a
 `wx.Bitmap`) and then copied to the screen only once, when this object
-is destroyed.
+is destroyed.  You can either provide a buffer bitmap yourself, and
+reuse it the next time something needs painted, or you can let the
+buffered DC create and provide a buffer bitmap itself.
 
-It can be used in the same way as any other device context.
+Buffered DCs can be used in the same way as any other device context.
 wx.BufferedDC itself typically replaces `wx.ClientDC`, if you want to
 use it in your EVT_PAINT handler, you should look at
-`wx.BufferedPaintDC`.
+`wx.BufferedPaintDC`.  You can also use a wx.BufferedDC without
+providing a target DC.  In this case the operations done on the dc
+will only be written to the buffer bitmap and *not* to any window, so
+you will want to have provided the buffer bitmap and then reuse it
+when it needs painted to the window.
 
 Please note that GTK+ 2.0 and OS X provide double buffering themselves
-natively. wxBufferedDC is aware of this however, and will bypass the buffering
-unless an explicit buffer bitmap is given.
+natively.  You may want to use `wx.Window.IsDoubleBuffered` to
+determine whether you need to use buffering or not, or use
+`wx.AutoBufferedPaintDC` to avoid needless double buffering on systems
+that already do it automatically.
+
+
 ", "");
 
 class wxBufferedDC : public wxMemoryDC
 {
 public:
-    %pythonAppend wxBufferedDC
-        "self.__dc = args[0] # save a ref so the other dc will not be deleted before self";
-    
-    %nokwargs wxBufferedDC;
 
     DocStr(
         wxBufferedDC,
@@ -1469,10 +1598,18 @@ public:
         intended to cover the entire virtual size of a `wx.ScrolledWindow` or
         if it only covers the client area.  Acceptable values are
         ``wx.BUFFER_VIRTUAL_AREA`` and ``wx.BUFFER_CLIENT_AREA``.
-
 ");
+
+    %nokwargs wxBufferedDC;
+    %pythonAppend wxBufferedDC
+"# save a ref so the other dc will not be deleted before self
+        self.__dc = args[0] 
+        # also save a ref to the bitmap
+        if len(args) > 1: self.__bmp = args[1]
+";
+    
     wxBufferedDC( wxDC* dc,
-                  const wxBitmap& buffer=wxNullBitmap,
+                  wxBitmap& buffer=wxNullBitmap,
                   int style = wxBUFFER_CLIENT_AREA );
     wxBufferedDC( wxDC* dc,
                   const wxSize& area,
@@ -1494,7 +1631,10 @@ associated with this object, if any.", "");
         "Blits the buffer to the dc, and detaches the dc from the buffer (so it
 can be effectively used once only).  This is usually only called in
 the destructor.", "");
-    
+
+    // Set and get the style
+    void SetStyle(int style);
+    int GetStyle() const;    
 };
 
 
@@ -1526,9 +1666,11 @@ class wxBufferedPaintDC : public wxBufferedDC
 {
 public:
 
+    %pythonAppend wxBufferedPaintDC  "if len(args) > 1: self.__bmp = args[1]";
+
     DocCtorStr(
         wxBufferedPaintDC( wxWindow *window,
-                           const wxBitmap &buffer = wxNullBitmap,
+                           wxBitmap &buffer = wxNullBitmap,
                            int style = wxBUFFER_CLIENT_AREA),
         "Create a buffered paint DC.  As with `wx.BufferedDC`, you may either
 provide the bitmap to be used for buffering or let this object create