Also fix landscape printing under GNOME print.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-05-17 10:51:34 +00:00
parent 36b8149e59
commit 9ac12a7a79
2 changed files with 16 additions and 45 deletions

View File

@@ -179,10 +179,7 @@ public:
virtual wxDC* PrintDialog(wxWindow *parent); virtual wxDC* PrintDialog(wxWindow *parent);
virtual bool Setup(wxWindow *parent); virtual bool Setup(wxWindow *parent);
GnomePrintContext *GetPrintContext() { return m_gpc; }
private: private:
GnomePrintContext *m_gpc;
bool m_native_preview; bool m_native_preview;
private: private:
@@ -197,7 +194,6 @@ private:
class wxGnomePrintDC: public wxDC class wxGnomePrintDC: public wxDC
{ {
public: public:
wxGnomePrintDC( wxGnomePrinter *printer );
wxGnomePrintDC( const wxPrintData& data ); wxGnomePrintDC( const wxPrintData& data );
virtual ~wxGnomePrintDC(); virtual ~wxGnomePrintDC();
@@ -262,8 +258,8 @@ protected:
void DoGetSize(int* width, int* height) const; void DoGetSize(int* width, int* height) const;
void DoGetSizeMM(int *width, int *height) const; void DoGetSizeMM(int *width, int *height) const;
void SetPrintData(const wxPrintData& data);
wxPrintData& GetPrintData() { return m_printData; } wxPrintData& GetPrintData() { return m_printData; }
void SetPrintData(const wxPrintData& data) { m_printData = data; }
private: private:
static float ms_PSScaleFactor; static float ms_PSScaleFactor;
@@ -280,7 +276,6 @@ private:
int m_deviceOffsetY; int m_deviceOffsetY;
wxGnomePrinter *m_printer;
GnomePrintContext *m_gpc; GnomePrintContext *m_gpc;
GnomePrintJob* m_job; // only used and destroyed when created with wxPrintData GnomePrintJob* m_job; // only used and destroyed when created with wxPrintData

View File

@@ -728,14 +728,6 @@ int wxGnomePageSetupDialog::ShowModal()
m_pageDialogData.SetPaperSize( wxSize( (int)(pw+0.5), (int)(ph+0.5) ) ); m_pageDialogData.SetPaperSize( wxSize( (int)(pw+0.5), (int)(ph+0.5) ) );
#if 1
wxPrintf( wxT("paper %d %d, top,left margin %d,%d\n"),
m_pageDialogData.GetPaperSize().x,
m_pageDialogData.GetPaperSize().y,
m_pageDialogData.GetMarginTopLeft().x,
m_pageDialogData.GetMarginTopLeft().y );
#endif
ret = wxID_OK; ret = wxID_OK;
} }
else else
@@ -773,7 +765,6 @@ IMPLEMENT_CLASS(wxGnomePrinter, wxPrinterBase)
wxGnomePrinter::wxGnomePrinter( wxPrintDialogData *data ) : wxGnomePrinter::wxGnomePrinter( wxPrintDialogData *data ) :
wxPrinterBase( data ) wxPrinterBase( data )
{ {
m_gpc = NULL;
m_native_preview = false; m_native_preview = false;
} }
@@ -790,11 +781,11 @@ bool wxGnomePrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt )
} }
wxPrintData printdata = GetPrintDialogData().GetPrintData(); wxPrintData printdata = GetPrintDialogData().GetPrintData();
wxGnomePrintNativeData *native = wxGnomePrintNativeData *native =
(wxGnomePrintNativeData*) printdata.GetNativeData(); (wxGnomePrintNativeData*) printdata.GetNativeData();
GnomePrintJob *job = gs_lgp->gnome_print_job_new( native->GetPrintConfig() ); GnomePrintJob *job = gs_lgp->gnome_print_job_new( native->GetPrintConfig() );
m_gpc = gs_lgp->gnome_print_job_get_context (job);
// The GnomePrintJob is temporarily stored in the // The GnomePrintJob is temporarily stored in the
// native print data as the native print dialog // native print data as the native print dialog
@@ -813,7 +804,7 @@ bool wxGnomePrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt )
if (prompt) if (prompt)
dc = PrintDialog( parent ); dc = PrintDialog( parent );
else else
dc = new wxGnomePrintDC( this ); dc = new wxGnomePrintDC( printdata );
if (m_native_preview) if (m_native_preview)
printout->SetIsPreview(true); printout->SetIsPreview(true);
@@ -931,7 +922,7 @@ wxDC* wxGnomePrinter::PrintDialog( wxWindow *parent )
m_native_preview = ret == wxID_PREVIEW; m_native_preview = ret == wxID_PREVIEW;
m_printDialogData = dialog.GetPrintDialogData(); m_printDialogData = dialog.GetPrintDialogData();
return new wxGnomePrintDC( this ); return new wxGnomePrintDC( m_printDialogData.GetPrintData() );
} }
bool wxGnomePrinter::Setup( wxWindow *parent ) bool wxGnomePrinter::Setup( wxWindow *parent )
@@ -945,38 +936,15 @@ bool wxGnomePrinter::Setup( wxWindow *parent )
IMPLEMENT_CLASS(wxGnomePrintDC, wxDC) IMPLEMENT_CLASS(wxGnomePrintDC, wxDC)
wxGnomePrintDC::wxGnomePrintDC( wxGnomePrinter *printer )
{
m_printer = printer;
m_gpc = printer->GetPrintContext();
m_job = NULL; // only used and destroyed when created with wxPrintData
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
GetSize( NULL, &m_deviceOffsetY );
}
wxGnomePrintDC::wxGnomePrintDC( const wxPrintData& data ) wxGnomePrintDC::wxGnomePrintDC( const wxPrintData& data )
{ {
m_printer = NULL;
m_printData = data; m_printData = data;
wxGnomePrintNativeData *native = wxGnomePrintNativeData *native =
(wxGnomePrintNativeData*) m_printData.GetNativeData(); (wxGnomePrintNativeData*) m_printData.GetNativeData();
GnomePrintJob *job = gs_lgp->gnome_print_job_new( native->GetPrintConfig() ); m_job = native->GetPrintJob();
m_gpc = gs_lgp->gnome_print_job_get_context (job); m_gpc = gs_lgp->gnome_print_job_get_context (m_job);
m_job = job; // only used and destroyed when created with wxPrintData
m_layout = gs_lgp->gnome_print_pango_create_layout( m_gpc ); m_layout = gs_lgp->gnome_print_pango_create_layout( m_gpc );
m_fontdesc = pango_font_description_from_string( "Sans 12" ); m_fontdesc = pango_font_description_from_string( "Sans 12" );
@@ -994,8 +962,6 @@ wxGnomePrintDC::wxGnomePrintDC( const wxPrintData& data )
wxGnomePrintDC::~wxGnomePrintDC() wxGnomePrintDC::~wxGnomePrintDC()
{ {
if (m_job)
g_object_unref (m_job);
} }
bool wxGnomePrintDC::IsOk() const bool wxGnomePrintDC::IsOk() const
@@ -1948,6 +1914,16 @@ void wxGnomePrintDC::SetDeviceOrigin( wxCoord x, wxCoord y )
wxDC::SetDeviceOrigin( x, y ); wxDC::SetDeviceOrigin( x, y );
} }
void wxGnomePrintDC::SetPrintData(const wxPrintData& data)
{
m_printData = data;
if (m_printData.GetOrientation() == wxPORTRAIT)
GetSize( NULL, &m_deviceOffsetY );
else
GetSize( &m_deviceOffsetY, NULL );
}
void wxGnomePrintDC::SetResolution(int ppi) void wxGnomePrintDC::SetResolution(int ppi)
{ {
} }