+void wxGraphicsPath::AddEllipse( wxDouble x, wxDouble y, wxDouble w, wxDouble h)
+{
+ wxDouble rw = w/2;
+ wxDouble rh = h/2;
+ wxDouble xc = x + rw;
+ wxDouble yc = y + rh;
+ wxGraphicsMatrix* m = GetRenderer()->CreateMatrix();
+ m->Translate(xc,yc);
+ m->Scale(rw/rh,1.0);
+ wxGraphicsPath* p = GetRenderer()->CreatePath();
+ p->AddCircle(0,0,rh);
+ p->Transform(m);
+ AddPath(p);
+ delete p;
+ delete m;
+}
+
+void wxGraphicsPath::AddRoundedRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h, wxDouble radius)
+{
+ if ( radius == 0 )
+ AddRectangle(x,y,w,h);
+ else
+ {
+ MoveToPoint( x + w, y + h / 2);
+ AddArcToPoint(x + w, y + h, x + w / 2, y + h, radius);
+ AddArcToPoint(x, y + h, x, y + h / 2, radius);
+ AddArcToPoint(x, y , x + w / 2, y, radius);
+ AddArcToPoint(x + w, y, x + w, y + h / 2, radius);
+ CloseSubpath();
+ }
+}
+