#pragma hdrstop
#endif
-#include "wx/gtk/gnome/gprint.h"
-
#if wxUSE_LIBGNOMEPRINT
+#include "wx/gtk/gnome/gprint.h"
+
#ifndef WX_PRECOMP
#include "wx/log.h"
#include "wx/dcmemory.h"
static const double RAD2DEG = 180.0 / M_PI;
-#include "wx/html/forcelnk.h"
-FORCE_LINK_ME(gnome_print)
+#include "wx/link.h"
+wxFORCE_LINK_THIS_MODULE(gnome_print)
//----------------------------------------------------------------------------
// wxGnomePrintLibrary
wxDL_METHOD_DEFINE( GtkWidget*, gnome_print_job_preview_new,
(GnomePrintJob *gpm, const guchar *title), (gpm, title), NULL )
+
+ DECLARE_NO_COPY_CLASS(wxGnomePrintLibrary)
};
wxGnomePrintLibrary::wxGnomePrintLibrary()
{
gs_lgp->gnome_print_job_close( job );
g_object_unref (job);
- sm_lastError = wxPRINTER_ERROR;
+ if (sm_lastError != wxPRINTER_CANCELLED)
+ sm_lastError = wxPRINTER_ERROR;
return false;
}
int mw, mh;
dc->GetSizeMM(&mw, &mh);
printout->SetPageSizeMM((int)mw, (int)mh);
-
printout->OnPreparePrinting();
// Get some parameters from the printout, if defined
m_layout = gs_lgp->gnome_print_pango_create_layout( m_gpc );
m_fontdesc = pango_font_description_from_string( "Sans 12" );
+ m_context = NULL;
m_currentRed = 0;
m_currentBlue = 0;
m_signX = 1; // default x-axis left to right
m_signY = -1; // default y-axis bottom up -> top down
+
+ GetSize( NULL, &m_deviceOffsetY );
}
wxGnomePrintDC::wxGnomePrintDC( const wxPrintData& data )
m_layout = gs_lgp->gnome_print_pango_create_layout( m_gpc );
m_fontdesc = pango_font_description_from_string( "Sans 12" );
+ m_context = NULL;
m_currentRed = 0;
m_currentBlue = 0;
m_currentGreen = 0;
m_signX = 1; // default x-axis left to right
- m_signY = -1; // default y-axis bottom up -> top down
+ m_signY = -1; // default y-axis bottom up -> top down
+
+ GetSize( NULL, &m_deviceOffsetY );
}
wxGnomePrintDC::~wxGnomePrintDC()
while (alpha2 > 360) alpha2 -= 360;
}
- if (m_brush.GetStyle() != wxTRANSPARENT)
- {
- SetBrush( m_brush );
- gs_lgp->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) );
- gs_lgp->gnome_print_arcto( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc), XLOG2DEVREL((int)radius), alpha1, alpha2, 0 );
+ if (m_brush.GetStyle() != wxTRANSPARENT)
+ {
+ SetBrush( m_brush );
+ gs_lgp->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) );
+ gs_lgp->gnome_print_arcto( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc), XLOG2DEVREL((int)radius), alpha1, alpha2, 0 );
- gs_lgp->gnome_print_fill( m_gpc );
- }
+ gs_lgp->gnome_print_fill( m_gpc );
+ }
- if (m_pen.GetStyle() != wxTRANSPARENT)
- {
- SetPen (m_pen);
- gs_lgp->gnome_print_newpath( m_gpc );
- gs_lgp->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) );
- gs_lgp->gnome_print_arcto( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc), XLOG2DEVREL((int)radius), alpha1, alpha2, 0 );
- gs_lgp->gnome_print_closepath( m_gpc );
+ if (m_pen.GetStyle() != wxTRANSPARENT)
+ {
+ SetPen (m_pen);
+ gs_lgp->gnome_print_newpath( m_gpc );
+ gs_lgp->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) );
+ gs_lgp->gnome_print_arcto( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc), XLOG2DEVREL((int)radius), alpha1, alpha2, 0 );
+ gs_lgp->gnome_print_closepath( m_gpc );
- gs_lgp->gnome_print_stroke( m_gpc );
- }
+ gs_lgp->gnome_print_stroke( m_gpc );
+ }
CalcBoundingBox (x1, y1);
CalcBoundingBox (x2, y2);
bool wxGnomePrintDC::StartDoc(const wxString& message)
{
- SetDeviceOrigin( 0,0 );
-
return true;
}
void wxGnomePrintDC::DoGetTextExtent(const wxString& string, wxCoord *width, wxCoord *height,
wxCoord *descent,
wxCoord *externalLeading,
- wxFont *theFont ) const
+ const wxFont *theFont ) const
{
if ( width )
*width = 0;
(wxGnomePrintNativeData*) m_printData.GetNativeData();
// Query page size. This seems to omit the margins
- // right now, although it shouldn't
double pw,ph;
gs_lgp->gnome_print_job_get_page_size( native->GetPrintJob(), &pw, &ph );
ComputeScaleAndOrigin();
}
-void wxGnomePrintDC::SetDeviceOrigin( wxCoord x, wxCoord y )
+void wxGnomePrintDC::SetLogicalOrigin( wxCoord x, wxCoord y )
{
- int h = 0;
- int w = 0;
- GetSize( &w, &h );
+ wxDC::SetLogicalOrigin( x, y );
+}
- wxDC::SetDeviceOrigin( x, h-y );
+void wxGnomePrintDC::SetDeviceOrigin( wxCoord x, wxCoord y )
+{
+ wxDC::SetDeviceOrigin( x, y );
}
void wxGnomePrintDC::SetResolution(int ppi)
m_previewPrintout->SetPPIPrinter(wxGnomePrintDC::GetResolution(), wxGnomePrintDC::GetResolution());
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
-
+
// TODO: get better resolution information from wxGnomePrintDC, if possible.
sizeDevUnits.x = (wxCoord)((float)sizeDevUnits.x * wxGnomePrintDC::GetResolution() / 72.0);