Hopefully fixed misplaced printout in libgnomeprint.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2006-11-18 00:08:52 +00:00
parent ea7fb468ce
commit 649707a506
2 changed files with 8 additions and 16 deletions

View File

@ -261,7 +261,6 @@ public:
void DoGetSizeMM(int *width, int *height) const;
wxSize GetPPI() const;
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
void SetDeviceOrigin( wxCoord x, wxCoord y );
virtual int GetDepth() const { return 24; }
@ -287,6 +286,8 @@ private:
unsigned char m_currentGreen;
unsigned char m_currentBlue;
int m_deviceOffsetY;
wxGnomePrinter *m_printer;
GnomePrintContext *m_gpc;
GnomePrintJob* m_job; // only used and destroyed when created with wxPrintData
@ -304,7 +305,7 @@ private:
}
wxCoord YDEV2LOG(wxCoord y) const
{
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
return wxRound((double)(y + m_deviceOriginY - m_deviceOffsetY) / m_scaleY) * m_signY + m_logicalOriginY;
}
wxCoord YDEV2LOGREL(wxCoord y) const
{
@ -320,7 +321,7 @@ private:
}
wxCoord YLOG2DEV(wxCoord y) const
{
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY - m_deviceOriginY + m_deviceOffsetY;
}
wxCoord YLOG2DEVREL(wxCoord y) const
{

View File

@ -736,7 +736,6 @@ bool wxGnomePrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt )
int mw, mh;
dc->GetSizeMM(&mw, &mh);
printout->SetPageSizeMM((int)mw, (int)mh);
printout->OnPreparePrinting();
// Get some parameters from the printout, if defined
@ -854,6 +853,8 @@ wxGnomePrintDC::wxGnomePrintDC( wxGnomePrinter *printer )
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 )
@ -877,6 +878,8 @@ wxGnomePrintDC::wxGnomePrintDC( const wxPrintData& data )
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()
@ -1669,8 +1672,6 @@ void wxGnomePrintDC::DestroyClippingRegion()
bool wxGnomePrintDC::StartDoc(const wxString& message)
{
SetDeviceOrigin( 0,0 );
return true;
}
@ -1782,7 +1783,6 @@ void wxGnomePrintDC::DoGetSize(int* width, int* height) const
(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 );
@ -1828,15 +1828,6 @@ void wxGnomePrintDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp )
ComputeScaleAndOrigin();
}
void wxGnomePrintDC::SetDeviceOrigin( wxCoord x, wxCoord y )
{
int h = 0;
int w = 0;
GetSize( &w, &h );
wxDC::SetDeviceOrigin( x, h-y );
}
void wxGnomePrintDC::SetResolution(int ppi)
{
}