From af9ee9f4e7b0b79b5082541f57191a4dac36afe0 Mon Sep 17 00:00:00 2001 From: Jacobo Aragunde Perez Date: Fri, 15 Feb 2013 12:53:16 +0100 Subject: [PATCH] Plot dxf format: fix issue for some non latin1 chars. --- common/common_plotDXF_functions.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/common/common_plotDXF_functions.cpp b/common/common_plotDXF_functions.cpp index c1f4967080..583a7623c0 100644 --- a/common/common_plotDXF_functions.cpp +++ b/common/common_plotDXF_functions.cpp @@ -528,6 +528,25 @@ void DXF_PLOTTER::FlashPadTrapez( const wxPoint& aPadPos, const wxPoint *aCorner FinishTo( coord[0] ); } +/** + * Checks if a given string contains non-ASCII characters. + * FIXME: the performance of this code is really poor, but in this case it can be + * acceptable because the plot operation is not called very often. + * @param string String to check + * @return true if it contains some non-ASCII character, false if all characters are + * inside ASCII range (<=255). + */ +bool containsNonAsciiChars( const wxString& string ) +{ + for( unsigned i = 0; i < string.length(); i++ ) + { + wchar_t ch = string[i]; + if( ch > 255 ) + return true; + } + return false; +} + void DXF_PLOTTER::Text( const wxPoint& aPos, enum EDA_COLOR_T aColor, const wxString& aText, @@ -539,7 +558,8 @@ void DXF_PLOTTER::Text( const wxPoint& aPos, bool aItalic, bool aBold ) { - if( textAsLines ) + if( textAsLines || containsNonAsciiChars( aText ) ) + /* output text as graphics */ PLOTTER::Text( aPos, aColor, aText, aOrient, aSize, aH_justify, aV_justify, aWidth, aItalic, aBold ); else