]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/graphics.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / graphics.h
index 971df3c422207d3d1fc39bebf4ece2fa791c63c3..ac46f91a3135155f0cb71b76f9f4b0a3a8aaded1 100644 (file)
@@ -269,11 +269,11 @@ enum wxCompositionMode
     Represents a bitmap.
 
     The objects of this class are not created directly but only via
     Represents a bitmap.
 
     The objects of this class are not created directly but only via
-    wxGraphicsContext or wxGraphicsRenderer CreateBitmap() and
-    CreateSubBitmap() methods. They can subsequently be used with
-    wxGraphicsContext::DrawBitmap(). The only other operation is testing for
-    the bitmap validity which can be performed using IsNull() method inherited
-    from the base class.
+    wxGraphicsContext or wxGraphicsRenderer CreateBitmap(),
+    CreateBitmapFromImage() or CreateSubBitmap() methods. They can subsequently
+    be used with wxGraphicsContext::DrawBitmap(). The only other operation is
+    testing for the bitmap validity which can be performed using IsNull()
+    method inherited from the base class.
  */
 class wxGraphicsBitmap : public wxGraphicsObject
 {
  */
 class wxGraphicsBitmap : public wxGraphicsObject
 {
@@ -296,6 +296,14 @@ public:
         @since 2.9.3
      */
     wxImage ConvertToImage() const;
         @since 2.9.3
      */
     wxImage ConvertToImage() const;
+
+    /**
+        Return the pointer to the native bitmap data. (CGImageRef for Core Graphics, 
+        cairo_surface_t for Cairo, Bitmap* for GDI+.)
+
+        @since 2.9.4
+     */
+    void* GetNativeBitmap() const;
 };
 
 /**
 };
 
 /**
@@ -356,14 +364,14 @@ public:
 
         @see wxGraphicsRenderer::CreateContext()
     */
 
         @see wxGraphicsRenderer::CreateContext()
     */
-    static wxGraphicsContext* Create(const wxWindowDC& dc);
+    static wxGraphicsContext* Create(const wxWindowDC& windowDC);
 
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
 
         @see wxGraphicsRenderer::CreateContext()
     */
 
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
 
         @see wxGraphicsRenderer::CreateContext()
     */
-    static wxGraphicsContext* Create(const wxMemoryDC& dc);
+    static wxGraphicsContext* Create(const wxMemoryDC& memoryDC);
 
     /**
         Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
 
     /**
         Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
@@ -372,7 +380,7 @@ public:
 
         @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
     */
 
         @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
     */
-    static wxGraphicsContext* Create(const wxPrinterDC& dc);
+    static wxGraphicsContext* Create(const wxPrinterDC& printerDC);
 
     /**
         Creates a wxGraphicsContext from a wxEnhMetaFileDC.
 
     /**
         Creates a wxGraphicsContext from a wxEnhMetaFileDC.
@@ -382,7 +390,20 @@ public:
 
         @see wxGraphicsRenderer::CreateContext()
     */
 
         @see wxGraphicsRenderer::CreateContext()
     */
-    static wxGraphicsContext* Create(const wxEnhMetaFileDC& dc);
+    static wxGraphicsContext* Create(const wxEnhMetaFileDC& metaFileDC);
+
+    /**
+        Creates a wxGraphicsContext associated with a wxImage.
+
+        The image specifies the size of the context as well as whether alpha is
+        supported (if wxImage::HasAlpha()) or not and the initial contents of
+        the context. The @a image object must have a life time greater than
+        that of the new context as the context copies its contents back to the
+        image when it is destroyed.
+
+        @since 2.9.3
+     */
+    static wxGraphicsContext* Create(wxImage& image);
 
     /**
         Clips drawings to the specified region.
 
     /**
         Clips drawings to the specified region.
@@ -407,6 +428,18 @@ public:
      */
     virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) = 0;
 
      */
     virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) = 0;
 
+    /**
+        Creates wxGraphicsBitmap from an existing wxImage.
+
+        This method is more efficient than converting wxImage to wxBitmap first
+        and then calling CreateBitmap() but otherwise has the same effect.
+
+        Returns an invalid wxNullGraphicsBitmap on failure.
+
+        @since 2.9.3
+     */
+    virtual wxGraphicsBitmap CreateBitmapFromImage(const wxImage& image);
+
     /**
         Extracts a sub-bitmap from an existing bitmap.
 
     /**
         Extracts a sub-bitmap from an existing bitmap.
 
@@ -428,6 +461,19 @@ public:
     virtual wxGraphicsFont CreateFont(const wxFont& font,
                                       const wxColour& col = *wxBLACK) const;
 
     virtual wxGraphicsFont CreateFont(const wxFont& font,
                                       const wxColour& col = *wxBLACK) const;
 
+    /**
+        Creates a font object with the specified attributes.
+
+        The use of overload taking wxFont is preferred, see
+        wxGraphicsRenderer::CreateFont() for more details.
+
+        @since 2.9.3
+     */
+    virtual wxGraphicsFont CreateFont(double sizeInPixels,
+                                      const wxString& facename,
+                                      int flags = wxFONTFLAG_DEFAULT,
+                                      const wxColour& col = *wxBLACK) const;
+
     /**
         Creates a wxGraphicsContext from a native context. This native context
         must be a CGContextRef for Core Graphics, a Graphics pointer for
     /**
         Creates a wxGraphicsContext from a native context. This native context
         must be a CGContextRef for Core Graphics, a Graphics pointer for
@@ -474,6 +520,14 @@ public:
                                           wxDouble tx = 0.0,
                                           wxDouble ty = 0.0) const;
 
                                           wxDouble tx = 0.0,
                                           wxDouble ty = 0.0) const;
 
+    /**
+        Creates a native affine transformation matrix from the passed
+        generic one.
+
+        @since 2.9.4
+    */
+    wxGraphicsMatrix CreateMatrix(const wxAffineMatrix2DBase& mat) const;
+
     /**
         Creates a native graphics path which is initially empty.
     */
     /**
         Creates a native graphics path which is initially empty.
     */
@@ -749,15 +803,17 @@ public:
     virtual wxAntialiasMode GetAntialiasMode() const ;
 
     /**
     virtual wxAntialiasMode GetAntialiasMode() const ;
 
     /**
-        Sets the interpolation quality, returns true if it supported
+        Sets the interpolation quality, returns true if it is supported.
+
+        Not implemented in Cairo backend currently.
      */
     virtual bool SetInterpolationQuality(wxInterpolationQuality interpolation) = 0;
      */
     virtual bool SetInterpolationQuality(wxInterpolationQuality interpolation) = 0;
-    
+
     /**
     /**
-        Returns the current interpolation quality
+        Returns the current interpolation quality.
      */
     virtual wxInterpolationQuality GetInterpolationQuality() const;
      */
     virtual wxInterpolationQuality GetInterpolationQuality() const;
-    
+
     /**
         Sets the compositing operator, returns true if it supported
     */
     /**
         Sets the compositing operator, returns true if it supported
     */
@@ -768,6 +824,28 @@ public:
     */
     virtual wxCompositionMode GetCompositionMode() const;
 
     */
     virtual wxCompositionMode GetCompositionMode() const;
 
+
+    /**
+       Push the current state of the context's transformation matrix on a
+       stack.
+
+       @see wxGraphicsContext::PopState
+    */
+    virtual void PushState() = 0;
+
+    /**
+       Pops a stored state from the stack and sets the current transformation
+       matrix to that state.
+
+       @see wxGraphicsContext::PopState
+    */
+    virtual void PopState() = 0;
+
+
+    virtual void EnableOffset(bool enable = true);
+    void DisableOffset();
+    bool OffsetEnabled();
+
 };
 
 /**
 };
 
 /**
@@ -914,6 +992,25 @@ public:
      */
     virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) = 0;
 
      */
     virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) = 0;
 
+    /**
+        Creates wxGraphicsBitmap from an existing wxImage.
+
+        This method is more efficient than converting wxImage to wxBitmap first
+        and then calling CreateBitmap() but otherwise has the same effect.
+
+        Returns an invalid wxNullGraphicsBitmap on failure.
+
+        @since 2.9.3
+     */
+    virtual wxGraphicsBitmap CreateBitmapFromImage(const wxImage& image) = 0;
+
+    /**
+       Creates a wxImage from a wxGraphicsBitmap.
+
+       This method is used by the more convenient wxGraphicsBitmap::ConvertToImage.
+    */
+    virtual wxImage CreateImageFromBitmap(const wxGraphicsBitmap& bmp) = 0;
+
     /**
         Creates wxGraphicsBitmap from a native bitmap handle.
 
     /**
         Creates wxGraphicsBitmap from a native bitmap handle.
 
@@ -931,17 +1028,17 @@ public:
     /**
         Creates a wxGraphicsContext from a wxWindowDC
     */
     /**
         Creates a wxGraphicsContext from a wxWindowDC
     */
-    virtual wxGraphicsContext* CreateContext(const wxWindowDC& dc) = 0 ;
+    virtual wxGraphicsContext* CreateContext(const wxWindowDC& windowDC) = 0 ;
 
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
     */
 
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
     */
-    virtual wxGraphicsContext* CreateContext(const wxMemoryDC& dc) = 0 ;
+    virtual wxGraphicsContext* CreateContext(const wxMemoryDC& memoryDC) = 0 ;
 
     /**
         Creates a wxGraphicsContext from a wxPrinterDC
     */
 
     /**
         Creates a wxGraphicsContext from a wxPrinterDC
     */
-    virtual wxGraphicsContext* CreateContext(const wxPrinterDC& dc) = 0 ;
+    virtual wxGraphicsContext* CreateContext(const wxPrinterDC& printerDC) = 0 ;
 
     /**
         Creates a wxGraphicsContext from a wxEnhMetaFileDC.
 
     /**
         Creates a wxGraphicsContext from a wxEnhMetaFileDC.
@@ -949,7 +1046,17 @@ public:
         This function, as wxEnhMetaFileDC class itself, is only available only
         under MSW.
     */
         This function, as wxEnhMetaFileDC class itself, is only available only
         under MSW.
     */
-    virtual wxGraphicsContext* CreateContext(const wxEnhMetaFileDC& dc) = 0;
+    virtual wxGraphicsContext* CreateContext(const wxEnhMetaFileDC& metaFileDC) = 0;
+
+    /**
+        Creates a wxGraphicsContext associated with a wxImage.
+
+        This function is used by wxContext::CreateFromImage() and is not
+        normally called directly.
+
+        @since 2.9.3
+     */
+    wxGraphicsContext* CreateContextFromImage(wxImage& image);
 
     /**
         Creates a native brush from a wxBrush.
 
     /**
         Creates a native brush from a wxBrush.
@@ -980,6 +1087,35 @@ public:
     virtual wxGraphicsFont CreateFont(const wxFont& font,
                                       const wxColour& col = *wxBLACK) = 0;
 
     virtual wxGraphicsFont CreateFont(const wxFont& font,
                                       const wxColour& col = *wxBLACK) = 0;
 
+    /**
+        Creates a graphics font with the given characteristics.
+
+        If possible, the CreateFont() overload taking wxFont should be used
+        instead. The main advantage of this overload is that it can be used
+        without X server connection under Unix when using Cairo.
+
+        @param sizeInPixels
+            Height of the font in user space units, i.e. normally pixels.
+            Notice that this is different from the overload taking wxFont as
+            wxFont size is specified in points.
+        @param facename
+            The name of the font. The same font name might not be available
+            under all platforms so the font name can also be empty to use the
+            default platform font.
+        @param flags
+            Combination of wxFontFlag enum elements. Currently only
+            @c wxFONTFLAG_ITALIC and @c wxFONTFLAG_BOLD are supported. By
+            default the normal font version is used.
+        @param col
+            The font colour, black by default.
+
+        @since 2.9.3
+     */
+    virtual wxGraphicsFont CreateFont(double sizeInPixels,
+                                      const wxString& facename,
+                                      int flags = wxFONTFLAG_DEFAULT,
+                                      const wxColour& col = *wxBLACK) = 0;
+
 
     /**
         Creates a native brush with a linear gradient.
 
     /**
         Creates a native brush with a linear gradient.
@@ -1039,6 +1175,8 @@ public:
         on GTK we currently default to the cairo renderer.
     */
     static wxGraphicsRenderer* GetDefaultRenderer();
         on GTK we currently default to the cairo renderer.
     */
     static wxGraphicsRenderer* GetDefaultRenderer();
+    static wxGraphicsRenderer* GetCairoRenderer();
+
 };
 
 
 };
 
 
@@ -1161,7 +1299,10 @@ public:
     virtual bool IsIdentity() const;
 
     /**
     virtual bool IsIdentity() const;
 
     /**
-        Rotates this matrix (in radians).
+        Rotates this matrix clockwise (in radians).
+
+        @param radians
+            Rotation angle in radians, clockwise.
     */
     virtual void Rotate(wxDouble angle);
 
     */
     virtual void Rotate(wxDouble angle);
 
@@ -1194,3 +1335,10 @@ public:
     virtual void Translate(wxDouble dx, wxDouble dy);
 };
 
     virtual void Translate(wxDouble dx, wxDouble dy);
 };
 
+
+const wxGraphicsPen     wxNullGraphicsPen;
+const wxGraphicsBrush   wxNullGraphicsBrush;
+const wxGraphicsFont    wxNullGraphicsFont;
+const wxGraphicsBitmap  wxNullGraphicsBitmap;
+const wxGraphicsMatrix  wxNullGraphicsMatrix;
+const wxGraphicsPath    wxNullGraphicsPath;