#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 w, h;
dc->GetSize(&w, &h);
printout->SetPageSizePixels((int)w, (int)h);
- dc->GetSizeMM(&w, &h);
- printout->SetPageSizeMM((int)w, (int)h);
-
+ printout->SetPaperRectPixels(wxRect(0, 0, w, h));
+ 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;
}
(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);
m_pageWidth = sizeDevUnits.y;
m_pageHeight = sizeDevUnits.x;
m_previewPrintout->SetPageSizeMM(sizeMM.y, sizeMM.x);
- m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight);
}
else
{
m_pageWidth = sizeDevUnits.x;
m_pageHeight = sizeDevUnits.y;
m_previewPrintout->SetPageSizeMM(sizeMM.x, sizeMM.y);
- m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight);
}
+ m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight);
+ m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
// At 100%, the page should look about page-size on the screen.
- m_previewScale = (float)0.8 * 72.0 / (float)wxGnomePrintDC::GetResolution();
+ m_previewScaleX = (float)0.8 * 72.0 / (float)wxGnomePrintDC::GetResolution();
+ m_previewScaleY = m_previewScaleX;
}
}