X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c77a67962c2f50a872491869fcf1a6c082fdc6c6..9fd8f2dd3df305448a0c2d56508c04e26385a76d:/src/generic/dcpsg.cpp diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index 63d3c4bbab..177330a25c 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -15,29 +15,28 @@ #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/utils.h" + #include "wx/dcmemory.h" + #include "wx/math.h" + #include "wx/image.h" + #include "wx/icon.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 @@ -305,7 +304,7 @@ wxPostScriptDC::~wxPostScriptDC () } } -bool wxPostScriptDC::Ok() const +bool wxPostScriptDC::IsOk() const { return m_ok; } @@ -874,14 +873,14 @@ void wxPostScriptDC::DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, 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++) @@ -1039,12 +1038,26 @@ void wxPostScriptDC::SetPen( const wxPen& pen ) 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" ); @@ -1075,7 +1088,6 @@ void wxPostScriptDC::SetPen( const wxPen& pen ) 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 ); @@ -1247,7 +1259,7 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) } 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 ) @@ -1352,7 +1364,6 @@ void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord { wxCoord uy = (wxCoord)(y + size - m_underlinePosition); wxCoord w, h; - char buffer[100]; GetTextExtent(text, &w, &h); sprintf( buffer, @@ -1373,7 +1384,7 @@ void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord } 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) @@ -1592,20 +1603,20 @@ bool wxPostScriptDC::StartDoc( const wxString& message ) 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 ); @@ -1975,9 +1986,9 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, // 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; @@ -1987,10 +1998,6 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, if ( !afmName.empty() ) afmFile = wxFopen(afmName, wxT("r")); - if ( !afmFile ) - { - } - if ( !afmFile ) { #if defined(__UNIX__) && !defined(__VMS__) @@ -2252,11 +2259,6 @@ void wxPostScriptDC::PsPrint( int ch ) } } -#endif - // wxUSE_POSTSCRIPT - -#endif - // wxUSE_PRINTING_ARCHITECTURE - +#endif // wxUSE_PRINTING_ARCHITECTURE && wxUSE_POSTSCRIPT // vi:sts=4:sw=4:et