#pragma hdrstop
#endif
-#ifndef WX_PRECOMP
-#endif // WX_PRECOMP
-
-#if wxUSE_PRINTING_ARCHITECTURE
+#if wxUSE_PRINTING_ARCHITECTURE && wxUSE_POSTSCRIPT
-#if wxUSE_POSTSCRIPT
+#include "wx/generic/dcpsg.h"
-#include "wx/setup.h"
+#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"
+#endif // WX_PRECOMP
-#include "wx/dcmemory.h"
-#include "wx/utils.h"
-#include "wx/intl.h"
-#include "wx/app.h"
-#include "wx/image.h"
-#include "wx/log.h"
-#include "wx/generic/dcpsg.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;
+
#ifdef __WXMSW__
#ifdef DrawText
unsigned char* data = image.GetData();
- /* buffer = line = width*rgb(3)*hexa(2)+'\n'(1)+null(1) */
- char* buffer = new char[ w*6+2 ];
+ // size of the buffer = width*rgb(3)*hexa(2)+'\n'
+ wxCharBuffer buffer(w*6 + 1);
int firstDigit, secondDigit;
//rows
for (int j = 0; j < h; j++)
{
- char* bufferindex = buffer;
+ char* bufferindex = buffer.data();
//cols
for (int i = 0; i < w*3; i++)
case wxSHORT_DASH: psdash = short_dashed; break;
case wxLONG_DASH: psdash = wxCoord_dashed; break;
case wxDOT_DASH: psdash = dotted_dashed; break;
+ case wxUSER_DASH:
+ {
+ wxDash *dashes;
+ int nDashes = m_pen.GetDashes (&dashes);
+ PsPrint ("[");
+ for (int i = 0; i < nDashes; ++i)
+ {
+ sprintf( buffer, "%d ", dashes [i] );
+ PsPrint( buffer );
+ }
+ PsPrint ("] 0 setdash\n");
+ psdash = 0;
+ }
+ break;
case wxSOLID:
case wxTRANSPARENT:
default: psdash = "[] 0"; break;
}
- if ( (oldStyle != m_pen.GetStyle()) )
+ if ( psdash && (oldStyle != m_pen.GetStyle()) )
{
PsPrint( psdash );
PsPrint( " setdash\n" );
double bluePS = (double)(blue) / 255.0;
double greenPS = (double)(green) / 255.0;
- char buffer[100];
sprintf( buffer,
"%.8f %.8f %.8f setrgbcolor\n",
redPS, greenPS, bluePS );
}
CalcBoundingBox( x, y );
- CalcBoundingBox( x + size * text.Length() * 2/3 , y );
+ CalcBoundingBox( x + size * text.length() * 2/3 , y );
}
void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord y, double angle )
{
wxCoord uy = (wxCoord)(y + size - m_underlinePosition);
wxCoord w, h;
- char buffer[100];
GetTextExtent(text, &w, &h);
sprintf( buffer,
}
CalcBoundingBox( x, y );
- CalcBoundingBox( x + size * text.Length() * 2/3 , y );
+ CalcBoundingBox( x + size * text.length() * 2/3 , y );
}
void wxPostScriptDC::SetBackground (const wxBrush& brush)
const wxChar *paper;
switch (m_printData.GetPaperId())
{
- case wxPAPER_LETTER: paper = wxT("Letter"); break; // Letter: paper ""; 8 1/2 by 11 inches
- case wxPAPER_LEGAL: paper = wxT("Legal"); break; // Legal, 8 1/2 by 14 inches
- case wxPAPER_A4: paper = wxT("A4"); break; // A4 Sheet, 210 by 297 millimeters
+ case wxPAPER_LETTER: paper = wxT("Letter"); break; // Letter: paper ""; 8 1/2 by 11 inches
+ case wxPAPER_LEGAL: paper = wxT("Legal"); break; // Legal, 8 1/2 by 14 inches
+ case wxPAPER_A4: paper = wxT("A4"); break; // A4 Sheet, 210 by 297 millimeters
case wxPAPER_TABLOID: paper = wxT("Tabloid"); break; // Tabloid, 11 by 17 inches
- case wxPAPER_LEDGER: paper = wxT("Ledger"); break; // Ledger, 17 by 11 inches
- case wxPAPER_STATEMENT: paper = wxT("Statement"); break; // Statement, 5 1/2 by 8 1/2 inches
- case wxPAPER_EXECUTIVE: paper = wxT("Executive"); break; // Executive, 7 1/4 by 10 1/2 inches
- case wxPAPER_A3: paper = wxT("A3"); break; // A3 sheet, 297 by 420 millimeters
- case wxPAPER_A5: paper = wxT("A5"); break; // A5 sheet, 148 by 210 millimeters
- case wxPAPER_B4: paper = wxT("B4"); break; // B4 sheet, 250 by 354 millimeters
- case wxPAPER_B5: paper = wxT("B5"); break; // B5 sheet, 182-by-257-millimeter paper
- case wxPAPER_FOLIO: paper = wxT("Folio"); break; // Folio, 8-1/2-by-13-inch paper
- case wxPAPER_QUARTO: paper = wxT("Quaro"); break; // Quarto, 215-by-275-millimeter paper
- case wxPAPER_10X14: paper = wxT("10x14"); break; // 10-by-14-inch sheet
+ case wxPAPER_LEDGER: paper = wxT("Ledger"); break; // Ledger, 17 by 11 inches
+ case wxPAPER_STATEMENT: paper = wxT("Statement"); break; // Statement, 5 1/2 by 8 1/2 inches
+ case wxPAPER_EXECUTIVE: paper = wxT("Executive"); break; // Executive, 7 1/4 by 10 1/2 inches
+ case wxPAPER_A3: paper = wxT("A3"); break; // A3 sheet, 297 by 420 millimeters
+ case wxPAPER_A5: paper = wxT("A5"); break; // A5 sheet, 148 by 210 millimeters
+ case wxPAPER_B4: paper = wxT("B4"); break; // B4 sheet, 250 by 354 millimeters
+ case wxPAPER_B5: paper = wxT("B5"); break; // B5 sheet, 182-by-257-millimeter paper
+ case wxPAPER_FOLIO: paper = wxT("Folio"); break; // Folio, 8-1/2-by-13-inch paper
+ case wxPAPER_QUARTO: paper = wxT("Quaro"); break; // Quarto, 215-by-275-millimeter paper
+ case wxPAPER_10X14: paper = wxT("10x14"); break; // 10-by-14-inch sheet
default: paper = wxT("A4");
}
PsPrintf( wxT("%%%%DocumentPaperSizes: %s\n"), paper );
// it just crashes
#ifndef __WIN32__
wxPostScriptPrintNativeData *data =
- (wxPostScriptPrintNativeData *) m_printData.GetNativeData();
+ wxDynamicCast(m_printData.GetNativeData(), wxPostScriptPrintNativeData);
- if (!data->GetFontMetricPath().empty())
+ if (data && !data->GetFontMetricPath().empty())
{
afmName = data->GetFontMetricPath();
afmName << wxFILE_SEP_PATH << name;
if ( !afmName.empty() )
afmFile = wxFopen(afmName, wxT("r"));
- if ( !afmFile )
- {
- }
-
if ( !afmFile )
{
#if defined(__UNIX__) && !defined(__VMS__)
}
}
-#endif
- // wxUSE_POSTSCRIPT
-
-#endif
- // wxUSE_PRINTING_ARCHITECTURE
-
+#endif // wxUSE_PRINTING_ARCHITECTURE && wxUSE_POSTSCRIPT
// vi:sts=4:sw=4:et