+bool wxGraphicsObject::IsNull() const
+{
+ return m_refData == NULL;
+}
+
+wxGraphicsRenderer* wxGraphicsObject::GetRenderer() const
+{
+ return ( IsNull() ? NULL : GetGraphicsData()->GetRenderer() );
+}
+
+wxGraphicsObjectRefData* wxGraphicsObject::GetGraphicsData() const
+{
+ return (wxGraphicsObjectRefData*) m_refData;
+}
+
+wxObjectRefData* wxGraphicsObject::CreateRefData() const
+{
+ wxLogDebug(wxT("A Null Object cannot be changed"));
+ return NULL;
+}
+
+wxObjectRefData* wxGraphicsObject::CloneRefData(const wxObjectRefData* data) const
+{
+ const wxGraphicsObjectRefData* ptr = (const wxGraphicsObjectRefData*) data;
+ return ptr->Clone();
+}
+
+//-----------------------------------------------------------------------------
+// pens etc.
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxGraphicsPen, wxGraphicsObject)
+IMPLEMENT_DYNAMIC_CLASS(wxGraphicsBrush, wxGraphicsObject)
+IMPLEMENT_DYNAMIC_CLASS(wxGraphicsFont, wxGraphicsObject)
+WXDLLIMPEXP_DATA_CORE(wxGraphicsPen) wxNullGraphicsPen;
+WXDLLIMPEXP_DATA_CORE(wxGraphicsBrush) wxNullGraphicsBrush;
+WXDLLIMPEXP_DATA_CORE(wxGraphicsFont) wxNullGraphicsFont;
+
+IMPLEMENT_ABSTRACT_CLASS(wxGraphicsRenderer, wxObject)
+IMPLEMENT_ABSTRACT_CLASS(wxGraphicsMatrix, wxGraphicsObject)
+IMPLEMENT_ABSTRACT_CLASS(wxGraphicsPath, wxGraphicsObject)