X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e7445ff8ee26e39fab1e35455e1bef954bdf636f..01a9232b5e06fc1e24cbd051661d37a46827379d:/src/generic/dcpsg.cpp diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index f57daec342..4f7be92ace 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -22,17 +22,17 @@ #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/log.h" - #include "wx/app.h" #include "wx/utils.h" #include "wx/dcmemory.h" + #include "wx/math.h" + #include "wx/image.h" + #include "wx/icon.h" #endif // WX_PRECOMP -#include "wx/image.h" #include "wx/prntbase.h" #include "wx/generic/prntdlgg.h" #include "wx/paper.h" #include "wx/filefn.h" -#include "wx/math.h" #include "wx/stdpaths.h" WXDLLIMPEXP_DATA_CORE(int) wxPageNumber; @@ -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; } @@ -304,7 +309,7 @@ wxPostScriptDC::~wxPostScriptDC () } } -bool wxPostScriptDC::Ok() const +bool wxPostScriptDC::IsOk() const { return m_ok; } @@ -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); +} + +void wxPostScriptDC::SetLogicalScale(double x, double y) +{ + wxDCBase::SetLogicalScale(x,y); +} - wxDC::SetDeviceOrigin( x, h-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 @@ -1835,11 +1862,11 @@ wxCoord wxPostScriptDC::GetCharHeight() const void wxPostScriptDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y, wxCoord *descent, wxCoord *externalLeading, - wxFont *theFont ) const + const wxFont *theFont ) const { - wxFont *fontToUse = theFont; + const wxFont *fontToUse = theFont; - if (!fontToUse) fontToUse = (wxFont*) &m_font; + if (!fontToUse) fontToUse = &m_font; wxCHECK_RET( fontToUse, wxT("GetTextExtent: no font defined") ); @@ -2201,16 +2228,30 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, } // print postscript datas via required method (file, stream) -void wxPostScriptDC::PsPrintf( const wxChar* fmt, ... ) +#if !wxUSE_UTF8_LOCALE_ONLY +void wxPostScriptDC::DoPsPrintfFormatWchar(const wxChar *fmt, ...) { va_list argptr; va_start(argptr, fmt); - PsPrint( wxString::FormatV( fmt, argptr ).c_str() ); + PsPrint( wxString::FormatV( fmt, argptr ) ); } +#endif // !wxUSE_UTF8_LOCALE_ONLY -void wxPostScriptDC::PsPrint( const char* psdata ) +#if wxUSE_UNICODE_UTF8 +void wxPostScriptDC::DoPsPrintfFormatUtf8(const char *fmt, ...) { + va_list argptr; + va_start(argptr, fmt); + + PsPrint( wxString::FormatV( fmt, argptr ) ); +} +#endif // wxUSE_UNICODE_UTF8 + +void wxPostScriptDC::PsPrint( const wxString& str ) +{ + const wxWX2MBbuf psdata(str.mb_str(wxConvUTF8)); + wxPostScriptPrintNativeData *data = (wxPostScriptPrintNativeData *) m_printData.GetNativeData();