]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/graphics.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / graphics.h
index c0447f0c34f8765f9dae7404c657cb74df122d12..96b3457508871926925c15126a73571662925e13 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        graphics.h
 // Purpose:     interface of various wxGraphics* classes
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -296,6 +295,14 @@ public:
         @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 +363,14 @@ public:
 
         @see wxGraphicsRenderer::CreateContext()
     */
-    static wxGraphicsContext* Create(const wxWindowDC& dc);
+    static wxGraphicsContext* Create(const wxWindowDC& windowDC);
 
     /**
         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
@@ -372,7 +379,7 @@ public:
 
         @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
     */
-    static wxGraphicsContext* Create(const wxPrinterDC& dc);
+    static wxGraphicsContext* Create(const wxPrinterDC& printerDC);
 
     /**
         Creates a wxGraphicsContext from a wxEnhMetaFileDC.
@@ -382,7 +389,7 @@ public:
 
         @see wxGraphicsRenderer::CreateContext()
     */
-    static wxGraphicsContext* Create(const wxEnhMetaFileDC& dc);
+    static wxGraphicsContext* Create(const wxEnhMetaFileDC& metaFileDC);
 
     /**
         Creates a wxGraphicsContext associated with a wxImage.
@@ -397,6 +404,11 @@ public:
      */
     static wxGraphicsContext* Create(wxImage& image);
 
+    /**
+       Create a lightweight context that can be used only for measuring text.
+    */
+    static wxGraphicsContext* Create();
+
     /**
         Clips drawings to the specified region.
     */
@@ -512,6 +524,14 @@ public:
                                           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.
     */
@@ -787,15 +807,17 @@ public:
     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;
-    
+
     /**
-        Returns the current interpolation quality
+        Returns the current interpolation quality.
      */
     virtual wxInterpolationQuality GetInterpolationQuality() const;
-    
+
     /**
         Sets the compositing operator, returns true if it supported
     */
@@ -806,6 +828,66 @@ public:
     */
     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 bool ShouldOffset() const;
+    virtual void EnableOffset(bool enable = true);
+    void DisableOffset();
+    bool OffsetEnabled();
+
+    /**
+       Begin a new document (relevant only for printing / pdf etc.)
+       If there is a progress dialog, message will be shown.
+    */
+    virtual bool StartDoc( const wxString& message );
+
+    /**
+       Done with that document (relevant only for printing / pdf etc.)
+    */
+    virtual void EndDoc();
+
+    /**
+       Opens a new page (relevant only for printing / pdf etc.) with the given
+       size in points.  (If both are null the default page size will be used.)
+    */
+    virtual void StartPage( wxDouble width = 0, wxDouble height = 0 );
+
+    /**
+       Ends the current page  (relevant only for printing / pdf etc.)
+    */
+    virtual void EndPage();
+
+    /**
+       Make sure that the current content of this context is immediately visible.
+    */
+    virtual void Flush();
+
+    /**
+       Returns the size of the graphics context in device coordinates.
+    */
+    void GetSize(wxDouble* width, wxDouble* height) const;
+    
+    /**
+       Returns the resolution of the graphics context in device points per inch.
+    */
+    virtual void GetDPI( wxDouble* dpiX, wxDouble* dpiY);
+
 };
 
 /**
@@ -898,7 +980,7 @@ public:
     /**
         Returns the number of stops.
     */
-    unsigned GetCount() const;
+    size_t GetCount() const;
 
     /**
         Set the start colour to @a col
@@ -964,6 +1046,13 @@ public:
      */
     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.
 
@@ -981,17 +1070,17 @@ public:
     /**
         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
     */
-    virtual wxGraphicsContext* CreateContext(const wxMemoryDC& dc) = 0 ;
+    virtual wxGraphicsContext* CreateContext(const wxMemoryDC& memoryDC) = 0 ;
 
     /**
         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.
@@ -999,7 +1088,7 @@ public:
         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.
@@ -1128,6 +1217,8 @@ public:
         on GTK we currently default to the cairo renderer.
     */
     static wxGraphicsRenderer* GetDefaultRenderer();
+    static wxGraphicsRenderer* GetCairoRenderer();
+
 };
 
 
@@ -1250,7 +1341,10 @@ public:
     virtual bool IsIdentity() const;
 
     /**
-        Rotates this matrix (in radians).
+        Rotates this matrix clockwise (in radians).
+
+        @param angle
+            Rotation angle in radians, clockwise.
     */
     virtual void Rotate(wxDouble angle);
 
@@ -1283,3 +1377,10 @@ public:
     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;