X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/888dde65f43d5f57e8fb2028b27191cca1741403..e6ba38871f6cc5c02391c04e37e481d0428cef3f:/src/generic/dcpsg.cpp?ds=sidebyside diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index aa8def57a1..119340cad2 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -236,23 +236,18 @@ static char wxPostScriptHeaderReencodeISO2[] = //------------------------------------------------------------------------------- -#if wxUSE_NEW_DC - IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) wxPostScriptDC::wxPostScriptDC() + : wxDC(new wxPostScriptDCImpl(this)) { - m_pimpl = new wxPostScriptDCImpl( this ); } wxPostScriptDC::wxPostScriptDC(const wxPrintData& printData) + : wxDC(new wxPostScriptDCImpl(this, printData)) { - m_pimpl = new wxPostScriptDCImpl( this, printData ); } -#endif - - // conversion static const double RAD2DEG = 180.0 / M_PI; @@ -267,22 +262,17 @@ static const double DEV2PS = 72.0 / 600.0; #define YLOG2DEVREL(x) ((double)(LogicalToDeviceYRel(x)) * DEV2PS) -#if wxUSE_NEW_DC IMPLEMENT_ABSTRACT_CLASS(wxPostScriptDCImpl, wxDCImpl) -#else -IMPLEMENT_ABSTRACT_CLASS(wxPostScriptDC, wxDC) -#endif //------------------------------------------------------------------------------- -#if wxUSE_NEW_DC wxPostScriptDCImpl::wxPostScriptDCImpl( wxPostScriptDC *owner ) : wxDCImpl( owner ) { Init(); m_pageHeight = 842 * PS2DEV; - + m_ok = true; } @@ -290,39 +280,30 @@ wxPostScriptDCImpl::wxPostScriptDCImpl( wxPostScriptDC *owner, const wxPrintData wxDCImpl( owner ) { Init(); - + // this calculates m_pageHeight required for // taking the inverted Y axis into account SetPrintData( data ); m_ok = true; } -#endif -#if wxUSE_NEW_DC wxPostScriptDCImpl::wxPostScriptDCImpl( wxPrinterDC *owner ) : wxDCImpl( owner ) -#else -wxPostScriptDC::wxPostScriptDC() -#endif { Init(); m_pageHeight = 842 * PS2DEV; - + m_ok = true; } -#if wxUSE_NEW_DC wxPostScriptDCImpl::wxPostScriptDCImpl( wxPrinterDC *owner, const wxPrintData& data ) : wxDCImpl( owner ) -#else -wxPostScriptDC::wxPostScriptDC( const wxPrintData& data ) -#endif { Init(); - + // this calculates m_pageHeight required for // taking the inverted Y axis into account SetPrintData( data ); @@ -381,14 +362,10 @@ void wxPostScriptDCImpl::DoSetClippingRegion (wxCoord x, wxCoord y, wxCoord w, w if (m_clipping) DestroyClippingRegion(); -#if wxUSE_NEW_DC m_clipX1 = x; m_clipY1 = y; m_clipX2 = x + w; m_clipY2 = y + h; -#else - wxDC::DoSetClippingRegion(x, y, w, h); -#endif m_clipping = true; @@ -419,11 +396,7 @@ void wxPostScriptDCImpl::DestroyClippingRegion() PsPrint( "grestore\n" ); } -#if wxUSE_NEW_DC wxDCImpl::DestroyClippingRegion(); -#else - wxDC::DestroyClippingRegion(); -#endif } void wxPostScriptDCImpl::Clear() @@ -454,7 +427,7 @@ void wxPostScriptDCImpl::DoDrawLine (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxTRANSPARENT) return; + if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; SetPen( m_pen ); @@ -507,7 +480,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord int i_radius = wxRound( radius ); - if (m_brush.GetStyle() != wxTRANSPARENT) + if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -528,7 +501,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord CalcBoundingBox( xc+i_radius, yc+i_radius ); } - if (m_pen.GetStyle() != wxTRANSPARENT) + if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) { SetPen( m_pen ); @@ -569,7 +542,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord return; } - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -586,7 +559,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord CalcBoundingBox( x+w, y+h ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen( m_pen ); @@ -608,7 +581,7 @@ void wxPostScriptDCImpl::DoDrawPoint (wxCoord x, wxCoord y) { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxTRANSPARENT) return; + if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; SetPen (m_pen); @@ -631,7 +604,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset if (n <= 0) return; - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -662,7 +635,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen( m_pen ); @@ -701,7 +674,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[] if (n <= 0) return; - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -735,7 +708,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[] PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen( m_pen ); @@ -775,7 +748,7 @@ void wxPostScriptDCImpl::DoDrawLines (int n, wxPoint points[], wxCoord xoffset, { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxTRANSPARENT) return; + if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if (n <= 0) return; @@ -812,7 +785,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w width--; height--; - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -835,7 +808,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen (m_pen); @@ -876,7 +849,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w wxCoord rad = (wxCoord) radius; - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush( m_brush ); @@ -908,7 +881,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen (m_pen); @@ -948,7 +921,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC width--; height--; - if (m_brush.GetStyle () != wxTRANSPARENT) + if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) { SetBrush (m_brush); @@ -965,7 +938,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxTRANSPARENT) + if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) { SetPen (m_pen); @@ -1198,11 +1171,11 @@ void wxPostScriptDCImpl::SetPen( const wxPen& pen ) switch (m_pen.GetStyle()) { - case wxDOT: psdash = dotted; break; - case wxSHORT_DASH: psdash = short_dashed; break; - case wxLONG_DASH: psdash = wxCoord_dashed; break; - case wxDOT_DASH: psdash = dotted_dashed; break; - case wxUSER_DASH: + case wxPENSTYLE_DOT: psdash = dotted; break; + case wxPENSTYLE_SHORT_DASH: psdash = short_dashed; break; + case wxPENSTYLE_LONG_DASH: psdash = wxCoord_dashed; break; + case wxPENSTYLE_DOT_DASH: psdash = dotted_dashed; break; + case wxPENSTYLE_USER_DASH: { wxDash *dashes; int nDashes = m_pen.GetDashes (&dashes); @@ -1216,8 +1189,8 @@ void wxPostScriptDCImpl::SetPen( const wxPen& pen ) psdash = 0; } break; - case wxSOLID: - case wxTRANSPARENT: + case wxPENSTYLE_SOLID: + case wxPENSTYLE_TRANSPARENT: default: psdash = "[] 0"; break; } @@ -1369,11 +1342,9 @@ void wxPostScriptDCImpl::DoDrawText( const wxString& text, wxCoord x, wxCoord y PsPrint( buffer ); PsPrint( "(" ); - size_t len = strlen(textbuf); - size_t i; - for (i = 0; i < len; i++) + for ( const char *p = textbuf; *p != '\0'; p++ ) { - int c = (unsigned char) textbuf[i]; + int c = (unsigned char)*p; if (c == ')' || c == '(' || c == '\\') { /* Cope with special characters */ @@ -1477,26 +1448,27 @@ void wxPostScriptDCImpl::DoDrawRotatedText( const wxString& text, wxCoord x, wxC PsPrint( "(" ); const wxWX2MBbuf textbuf = text.mb_str(); - size_t len = strlen(textbuf); - size_t i; - for (i = 0; i < len; i++) + if ( textbuf ) { - int c = (unsigned char) textbuf[i]; - if (c == ')' || c == '(' || c == '\\') - { - /* Cope with special characters */ - PsPrint( "\\" ); - PsPrint( (char) c ); - } - else if ( c >= 128 ) - { - /* Cope with character codes > 127 */ - buffer.Printf( "\\%o", c); - PsPrint( buffer ); - } - else + for ( const char *p = textbuf; *p != '\0'; p++ ) { - PsPrint( (char) c ); + int c = (unsigned char)*p; + if (c == ')' || c == '(' || c == '\\') + { + /* Cope with special characters */ + PsPrint( "\\" ); + PsPrint( (char) c ); + } + else if ( c >= 128 ) + { + /* Cope with character codes > 127 */ + buffer.Printf( "\\%o", c); + PsPrint( buffer ); + } + else + { + PsPrint( (char) c ); + } } } @@ -1649,48 +1621,11 @@ void wxPostScriptDCImpl::SetPrintData(const wxPrintData& data) m_pageHeight = h * PS2DEV; } -#if wxUSE_NEW_DC -#else -void wxPostScriptDCImpl::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - wxDCBase::SetAxisOrientation(xLeftRight,yBottomUp); -} - -void wxPostScriptDCImpl::SetMapMode(int mode) -{ - wxDCBase::SetMapMode(mode); -} - -void wxPostScriptDCImpl::SetUserScale(double x, double y) -{ - wxDCBase::SetUserScale(x,y); -} - -void wxPostScriptDCImpl::SetLogicalScale(double x, double y) -{ - wxDCBase::SetLogicalScale(x,y); -} - -void wxPostScriptDCImpl::SetLogicalOrigin(wxCoord x, wxCoord y) -{ - wxDCBase::SetLogicalOrigin(x,y); -} - -void wxPostScriptDCImpl::SetDeviceOrigin(wxCoord x, wxCoord y) -{ - wxDCBase::SetDeviceOrigin(x,y); -} -#endif - void wxPostScriptDCImpl::ComputeScaleAndOrigin() { const wxRealPoint origScale(m_scaleX, m_scaleY); -#if wxUSE_NEW_DC wxDCImpl::ComputeScaleAndOrigin(); -#else - wxDC::ComputeScaleAndOrigin(); -#endif // If scale has changed call SetPen to recalulate the line width // and SetFont to recalculate font size @@ -1765,7 +1700,7 @@ wxSize wxPostScriptDCImpl::GetPPI(void) const } -bool wxPostScriptDCImpl::StartDoc( const wxString& message ) +bool wxPostScriptDCImpl::StartDoc( const wxString& WXUNUSED(message) ) { wxCHECK_MSG( m_ok, false, wxT("invalid postscript dc") ); @@ -1788,14 +1723,11 @@ bool wxPostScriptDCImpl::StartDoc( const wxString& message ) } m_ok = true; - m_title = message; wxString buffer; PsPrint( "%!PS-Adobe-2.0\n" ); - buffer.Printf( "%%%%Title: %s\n", m_title ); - PsPrint( buffer ); PsPrint( "%%Creator: wxWidgets PostScript renderer\n" ); buffer.Printf( "%%%%CreationDate: %s\n", wxNow() ); @@ -2352,13 +2284,13 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string, / these values from AFM files, too. Maybe later ... */ // NB: casts to int are needed to suppress gcc 3.3 warnings - lastWidths[196] = lastWidths[(int)'A']; // Ä - lastWidths[228] = lastWidths[(int)'a']; // ä - lastWidths[214] = lastWidths[(int)'O']; // Ö - lastWidths[246] = lastWidths[(int)'o']; // ö - lastWidths[220] = lastWidths[(int)'U']; // Ü - lastWidths[252] = lastWidths[(int)'u']; // ü - lastWidths[223] = lastWidths[(int)251]; // ß + lastWidths[196] = lastWidths[(int)'A']; // U+00C4 A Umlaute + lastWidths[228] = lastWidths[(int)'a']; // U+00E4 a Umlaute + lastWidths[214] = lastWidths[(int)'O']; // U+00D6 O Umlaute + lastWidths[246] = lastWidths[(int)'o']; // U+00F6 o Umlaute + lastWidths[220] = lastWidths[(int)'U']; // U+00DC U Umlaute + lastWidths[252] = lastWidths[(int)'u']; // U+00FC u Umlaute + lastWidths[223] = lastWidths[(int)251]; // U+00DF eszett (scharfes s) /* JC: calculate UnderlineThickness/UnderlinePosition */