X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/152368158133e94581e4fc15e43b3230292af69c..b40a9d371f0e89e2e43c5d6ec440fefcd3d1a434:/src/gtk1/gnome/gprint.cpp diff --git a/src/gtk1/gnome/gprint.cpp b/src/gtk1/gnome/gprint.cpp index d776d44acd..2511848240 100644 --- a/src/gtk1/gnome/gprint.cpp +++ b/src/gtk1/gnome/gprint.cpp @@ -22,8 +22,7 @@ #if wxUSE_LIBGNOMEPRINT -#include "math.h" - +#include "wx/math.h" #include "wx/fontutil.h" #include "wx/printdlg.h" #include "wx/gtk/private.h" @@ -38,6 +37,10 @@ #include #include + +#include "wx/html/forcelnk.h" +FORCE_LINK_ME(gnome_print) + //---------------------------------------------------------------------------- // wxGnomePrintLibrary //---------------------------------------------------------------------------- @@ -792,7 +795,7 @@ wxDC* wxGnomePrinter::PrintDialog( wxWindow *parent ) int ret = dialog.ShowModal(); if (ret == wxID_CANCEL) { - sm_lastError = wxPRINTER_ERROR; + sm_lastError = wxPRINTER_CANCELLED; return NULL; } @@ -811,7 +814,7 @@ bool wxGnomePrinter::Setup( wxWindow *parent ) // wxGnomePrintDC //----------------------------------------------------------------------------- -IMPLEMENT_CLASS(wxGnomePrintDC, wxDCBase) +IMPLEMENT_CLASS(wxGnomePrintDC, wxDC) wxGnomePrintDC::wxGnomePrintDC( wxGnomePrinter *printer ) { @@ -944,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)