Applied gnome print rounded rect patch.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2005-04-06 16:26:13 +00:00
parent caa2490c0f
commit 9a2fe01017
2 changed files with 130 additions and 0 deletions

View File

@@ -947,6 +947,71 @@ void wxGnomePrintDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoor
void wxGnomePrintDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius)
{
wxCoord rad = (wxCoord) radius;
if (m_brush.GetStyle() != wxTRANSPARENT)
{
SetBrush(m_brush);
gs_lgp->gnome_print_newpath(m_gpc);
gs_lgp->gnome_print_moveto(m_gpc,XLOG2DEV(x + rad),YLOG2DEV(y));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + rad),YLOG2DEV(y),
XLOG2DEV(x),YLOG2DEV(y),
XLOG2DEV(x),YLOG2DEV(y + rad));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x),YLOG2DEV(y + height - rad));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x),YLOG2DEV(y + height - rad),
XLOG2DEV(x),YLOG2DEV(y + height),
XLOG2DEV(x + rad),YLOG2DEV(y + height));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + width - rad),YLOG2DEV(y + height));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + width - rad),YLOG2DEV(y + height),
XLOG2DEV(x + width),YLOG2DEV(y + height),
XLOG2DEV(x + width),YLOG2DEV(y + height - rad));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + width),YLOG2DEV(y + rad));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + width),YLOG2DEV(y + rad),
XLOG2DEV(x + width),YLOG2DEV(y),
XLOG2DEV(x + width - rad),YLOG2DEV(y));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + rad),YLOG2DEV(y));
gs_lgp->gnome_print_closepath(m_gpc);
gs_lgp->gnome_print_fill(m_gpc);
CalcBoundingBox(x,y);
CalcBoundingBox(x+width,y+height);
}
if (m_pen.GetStyle() != wxTRANSPARENT)
{
SetPen(m_pen);
gs_lgp->gnome_print_newpath(m_gpc);
gs_lgp->gnome_print_moveto(m_gpc,XLOG2DEV(x + rad),YLOG2DEV(y));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + rad),YLOG2DEV(y),
XLOG2DEV(x),YLOG2DEV(y),
XLOG2DEV(x),YLOG2DEV(y + rad));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x),YLOG2DEV(y + height - rad));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x),YLOG2DEV(y + height - rad),
XLOG2DEV(x),YLOG2DEV(y + height),
XLOG2DEV(x + rad),YLOG2DEV(y + height));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + width - rad),YLOG2DEV(y + height));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + width - rad),YLOG2DEV(y + height),
XLOG2DEV(x + width),YLOG2DEV(y + height),
XLOG2DEV(x + width),YLOG2DEV(y + height - rad));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + width),YLOG2DEV(y + rad));
gs_lgp->gnome_print_curveto(m_gpc,
XLOG2DEV(x + width),YLOG2DEV(y + rad),
XLOG2DEV(x + width),YLOG2DEV(y),
XLOG2DEV(x + width - rad),YLOG2DEV(y));
gs_lgp->gnome_print_lineto(m_gpc,XLOG2DEV(x + rad),YLOG2DEV(y));
gs_lgp->gnome_print_closepath(m_gpc);
gs_lgp->gnome_print_stroke(m_gpc);
CalcBoundingBox(x,y);
CalcBoundingBox(x+width,y+height);
}
}
void wxGnomePrintDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)