Moved all the coordinate system calculation to wxDCBase

and thus removed all the duplicated code in all wxDC
   classes.
  Problematic is that wxSVGFileDC and wxPostscriptDC inherit
   from wxDC and therefore include platform specific code
   (also before this change) so I chose to override all
   SetLogicalOrigin() etc. methods in these classes and
   call their wxDCBase methods thereby circumventing the
   platform dependent code.
  I'm afraid the Mac code will require updating, too.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-05-02 11:05:45 +00:00
parent 1e50d914af
commit 04ab8b6ddf
27 changed files with 455 additions and 1796 deletions

View File

@@ -270,6 +270,7 @@ wxPostScriptDC::wxPostScriptDC ()
m_signX = 1; // default x-axis left to right
m_signY = -1; // default y-axis bottom up -> top down
}
wxPostScriptDC::wxPostScriptDC (const wxPrintData& printData)
@@ -292,6 +293,10 @@ wxPostScriptDC::wxPostScriptDC (const wxPrintData& printData)
m_printData = printData;
int h = 0;
GetSize( NULL, &h );
SetDeviceLocalOrigin( 0, h );
m_ok = true;
}
@@ -1480,6 +1485,14 @@ wxCoord wxPostScriptDC::GetCharWidth() const
return (wxCoord) (GetCharHeight() * 72.0 / 120.0);
}
void wxPostScriptDC::SetPrintData(const wxPrintData& data)
{
m_printData = data;
int h = 0;
GetSize( NULL, &h );
SetDeviceLocalOrigin( 0, h );
}
void wxPostScriptDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp )
{
@@ -1491,15 +1504,29 @@ void wxPostScriptDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp )
ComputeScaleAndOrigin();
}
void wxPostScriptDC::SetDeviceOrigin( wxCoord x, wxCoord y )
void wxPostScriptDC::SetMapMode(int mode)
{
wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
wxDCBase::SetMapMode(mode);
}
int h = 0;
int w = 0;
GetSize( &w, &h );
void wxPostScriptDC::SetUserScale(double x, double y)
{
wxDCBase::SetUserScale(x,y);
}
wxDC::SetDeviceOrigin( x, h-y );
void wxPostScriptDC::SetLogicalScale(double x, double y)
{
wxDCBase::SetLogicalScale(x,y);
}
void wxPostScriptDC::SetLogicalOrigin(wxCoord x, wxCoord y)
{
wxDCBase::SetLogicalOrigin(x,y);
}
void wxPostScriptDC::SetDeviceOrigin(wxCoord x, wxCoord y)
{
wxDCBase::SetDeviceOrigin(x,y);
}
void wxPostScriptDC::DoGetSize(int* width, int* height) const