+ bool IsNull() const ;
+
+ // returns the renderer that was used to create this instance, or NULL if it has not been initialized yet
+ wxGraphicsRenderer* GetRenderer() const ;
+ wxGraphicsObjectRefData* GetGraphicsData() const ;
+protected :
+ virtual wxObjectRefData* CreateRefData() const;
+ virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const;
+
+ DECLARE_DYNAMIC_CLASS(wxGraphicsObject);
+} ;
+
+class WXDLLIMPEXP_CORE wxGraphicsPen : public wxGraphicsObject
+{
+public :
+ wxGraphicsPen() {}
+ virtual ~wxGraphicsPen() {}
+private :
+ DECLARE_DYNAMIC_CLASS(wxGraphicsPen)
+} ;
+
+extern WXDLLEXPORT_DATA(wxGraphicsPen) wxNullGraphicsPen;
+
+class WXDLLIMPEXP_CORE wxGraphicsBrush : public wxGraphicsObject
+{
+public :
+ wxGraphicsBrush() {}
+ virtual ~wxGraphicsBrush() {}
+private :
+ DECLARE_DYNAMIC_CLASS(wxGraphicsBrush)
+} ;
+
+extern WXDLLEXPORT_DATA(wxGraphicsBrush) wxNullGraphicsBrush;
+
+class WXDLLIMPEXP_CORE wxGraphicsFont : public wxGraphicsObject
+{
+public :
+ wxGraphicsFont() {}
+ virtual ~wxGraphicsFont() {}
+private :
+ DECLARE_DYNAMIC_CLASS(wxGraphicsFont)
+} ;
+
+extern WXDLLEXPORT_DATA(wxGraphicsFont) wxNullGraphicsFont;
+
+
+class WXDLLIMPEXP_CORE wxGraphicsMatrixData : public wxGraphicsObjectRefData
+{
+public :
+ wxGraphicsMatrixData( wxGraphicsRenderer* renderer) :
+ wxGraphicsObjectRefData(renderer) {}
+
+ virtual ~wxGraphicsMatrixData() {}
+
+ // concatenates the matrix
+ virtual void Concat( const wxGraphicsMatrixData *t ) = 0;
+
+ // sets the matrix to the respective values
+ virtual void Set(wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
+ wxDouble tx=0.0, wxDouble ty=0.0) = 0;
+
+ // gets the component valuess of the matrix
+ virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL,
+ wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const = 0;
+
+ // makes this the inverse matrix
+ virtual void Invert() = 0;
+
+ // returns true if the elements of the transformation matrix are equal ?
+ virtual bool IsEqual( const wxGraphicsMatrixData* t) const = 0;
+
+ // return true if this is the identity matrix
+ virtual bool IsIdentity() const = 0;
+
+ //
+ // transformation
+ //
+
+ // add the translation to this matrix
+ virtual void Translate( wxDouble dx , wxDouble dy ) = 0;
+
+ // add the scale to this matrix
+ virtual void Scale( wxDouble xScale , wxDouble yScale ) = 0;
+
+ // add the rotation to this matrix (radians)
+ virtual void Rotate( wxDouble angle ) = 0;
+
+ //
+ // apply the transforms
+ //
+
+ // applies that matrix to the point
+ virtual void TransformPoint( wxDouble *x, wxDouble *y ) const = 0;
+
+ // applies the matrix except for translations
+ virtual void TransformDistance( wxDouble *dx, wxDouble *dy ) const =0;
+
+ // returns the native representation
+ virtual void * GetNativeMatrix() const = 0;
+} ;
+
+class WXDLLIMPEXP_CORE wxGraphicsMatrix : public wxGraphicsObject
+{
+public :
+ wxGraphicsMatrix() {}
+
+ virtual ~wxGraphicsMatrix() {}
+
+ // concatenates the matrix
+ virtual void Concat( const wxGraphicsMatrix *t );
+ void Concat( const wxGraphicsMatrix &t ) { Concat( &t ); }
+
+ // sets the matrix to the respective values
+ virtual void Set(wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
+ wxDouble tx=0.0, wxDouble ty=0.0);
+
+ // gets the component valuess of the matrix
+ virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL,
+ wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const;
+
+ // makes this the inverse matrix
+ virtual void Invert();
+
+ // returns true if the elements of the transformation matrix are equal ?
+ virtual bool IsEqual( const wxGraphicsMatrix* t) const;
+ bool IsEqual( const wxGraphicsMatrix& t) const { return IsEqual( &t ); }
+
+ // return true if this is the identity matrix
+ virtual bool IsIdentity() const;
+
+ //
+ // transformation
+ //
+
+ // add the translation to this matrix
+ virtual void Translate( wxDouble dx , wxDouble dy );
+
+ // add the scale to this matrix
+ virtual void Scale( wxDouble xScale , wxDouble yScale );
+
+ // add the rotation to this matrix (radians)
+ virtual void Rotate( wxDouble angle );
+
+ //
+ // apply the transforms
+ //
+
+ // applies that matrix to the point
+ virtual void TransformPoint( wxDouble *x, wxDouble *y ) const;
+
+ // applies the matrix except for translations
+ virtual void TransformDistance( wxDouble *dx, wxDouble *dy ) const;
+
+ // returns the native representation
+ virtual void * GetNativeMatrix() const;
+
+ const wxGraphicsMatrixData* GetMatrixData() const
+ { return (const wxGraphicsMatrixData*) GetRefData(); }
+ wxGraphicsMatrixData* GetMatrixData()
+ { return (wxGraphicsMatrixData*) GetRefData(); }
+
+private :
+ DECLARE_DYNAMIC_CLASS(wxGraphicsMatrix)
+} ;
+
+extern WXDLLEXPORT_DATA(wxGraphicsMatrix) wxNullGraphicsMatrix;
+
+class WXDLLIMPEXP_CORE wxGraphicsPathData : public wxGraphicsObjectRefData
+{
+public :
+ wxGraphicsPathData(wxGraphicsRenderer* renderer) : wxGraphicsObjectRefData(renderer) {}
+ virtual ~wxGraphicsPathData() {}
+