#if wxUSE_POSTSCRIPT
+#include "wx/window.h"
#include "wx/dcmemory.h"
#include "wx/utils.h"
#include "wx/intl.h"
m_signY = -1; // default y-axis bottom up -> top down
// Compatibility only
+ // HH: Doesn't seem to work for wxMSW...
+ #ifndef __WXMSW__
m_printData = * wxThePrintSetupData;
+ #endif
}
wxPostScriptDC::wxPostScriptDC (const wxString& file, bool interactive, wxWindow *parent)
fprintf( m_pstream, " reencodeISO def\n" );
fprintf( m_pstream, buffer );
fprintf( m_pstream, " findfont\n" );
+ #ifdef __WXMSW__
+ fprintf( m_pstream, "%d scalefont setfont\n", YLOG2DEVREL(m_font.GetPointSize()) );
+ #else
fprintf( m_pstream, "%ld scalefont setfont\n", YLOG2DEVREL(m_font.GetPointSize()) );
+ #endif
}
void wxPostScriptDC::SetPen( const wxPen& pen )
m_pen = pen;
+ #ifdef __WXMSW__
+ fprintf( m_pstream, "%d setlinewidth\n", XLOG2DEVREL(m_pen.GetWidth()) );
+ #else
fprintf( m_pstream, "%ld setlinewidth\n", XLOG2DEVREL(m_pen.GetWidth()) );
-
+ #endif
/*
Line style - WRONG: 2nd arg is OFFSET
if (!paper) paper = wxThePrintPaperDatabase->FindPaperType(wxPAPER_A4);
+ int w = 595;
+ int h = 842;
if (paper)
{
- if (width) *width = paper->GetSizeDeviceUnits().x;
- if (height) *height = paper->GetSizeDeviceUnits().y;
+ w = paper->GetSizeDeviceUnits().x;
+ h = paper->GetSizeDeviceUnits().y;
}
- else
+
+ if (m_printData.GetOrientation() == wxLANDSCAPE)
{
- if (width) *width = 595;
- if (height) *height = 842;
+ int tmp = w;
+ w = h;
+ h = tmp;
}
+
+ if (width) *width = w;
+ if (height) *height = h;
}
void wxPostScriptDC::DoGetSizeMM(int *width, int *height) const
if (!paper) paper = wxThePrintPaperDatabase->FindPaperType(wxPAPER_A4);
+ int w = 210;
+ int h = 297;
if (paper)
{
- if (width) *width = paper->GetWidth() / 10;
- if (height) *height = paper->GetHeight() / 10;
+ w = paper->GetWidth() / 10;
+ h = paper->GetHeight() / 10;
}
- else
+
+ if (m_printData.GetOrientation() == wxLANDSCAPE)
{
- if (width) *width = 210;
- if (height) *height = 297;
+ int tmp = w;
+ w = h;
+ h = tmp;
}
+
+ if (width) *width = w;
+ if (height) *height = h;
}
// Resolution in pixels per logical inch
m_pstream = fopen( wxConvFile.cWX2MB(header_file) , "w+" );
fprintf( m_pstream, "%%!PS-Adobe-2.0\n" ); // PostScript magic strings
- fprintf( m_pstream, "%%%%Title: %s\n", m_title.mb_str() );
- fprintf( m_pstream, "%%%%Creator: %s\n", wxTheApp->argv[0] );
- fprintf( m_pstream, "%%%%CreationDate: %s\n", wxNow().mb_str() );
+ fprintf( m_pstream, "%%%%Title: %s\n", (const char *)m_title.mb_str() );
+ fprintf( m_pstream, "%%%%Creator: %s\n", (const char*)wxConvCurrent->cWX2MB(wxTheApp->argv[0]) );
+ fprintf( m_pstream, "%%%%CreationDate: %s\n", (const char *)wxNow().mb_str() );
wxChar userID[256];
if ( wxGetEmailAddress(userID, sizeof(userID)) )
fprintf( m_pstream, "%%%%Page: %d\n", wxPageNumber++ );
+ // What is this one supposed to do? RR.
// *m_pstream << "matrix currentmatrix\n";
// Added by Chris Breeze
// transformation and so we need to reset the origin
// (and rotate the page for landscape printing)
-/*
- m_scaleFactor = 1.0;
- m_logicalOriginX = 0;
- m_logicalOriginY = 0;
-*/
// Output scaling
long translate_x, translate_y;
double scale_x, scale_y;
if (m_printData.GetOrientation() == wxLANDSCAPE)
{
-// translate_y -= m_maxY;
-// fprintf( m_pstream, "90 rotate\n" );
-
- printf( "Hi.\n" );
+ int h;
+ GetSize( (int*) NULL, &h );
+ translate_y -= h;
+ fprintf( m_pstream, "90 rotate\n" );
- fprintf( m_pstream, "90 rotate llx neg ury nef translate\n" );
+ // I copied this one from a PostScript tutorial, but to no avail. RR.
+// fprintf( m_pstream, "90 rotate llx neg ury nef translate\n" );
}
-// fprintf( m_pstream, "%.8f %.8f scale\n", scale_x, scale_y );
-// fprintf( m_pstream, "%ld %ld translate\n", translate_x, translate_y );
+ fprintf( m_pstream, "%.8f %.8f scale\n", scale_x, scale_y );
+ fprintf( m_pstream, "%ld %ld translate\n", translate_x, translate_y );
}
void wxPostScriptDC::EndPage ()
# define PS_VIEWER_PROG "ghostview"
#else
// Windows ghostscript/ghostview
-# define PS_VIEWER_PROG NULL
+# define PS_VIEWER_PROG "gsview"
#endif
wxPrintSetupData *wxThePrintSetupData = (wxPrintSetupData *) NULL;
// wxUSE_POSTSCRIPT
#endif
- // wxUSE_PRINTING_ARCHITECTURE
\ No newline at end of file
+ // wxUSE_PRINTING_ARCHITECTURE