Commit 260ca0e7 authored by Lorenzo Marcantonio's avatar Lorenzo Marcantonio

Added support for decoupling stored text from shown text in EDA_TEXT

Factored out text ellipsing support to max 15 character (for generating menu items)
parent 3132690c
...@@ -129,7 +129,7 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock, ...@@ -129,7 +129,7 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
{ {
WS_DRAW_ITEM_TEXT* text = (WS_DRAW_ITEM_TEXT*) item; WS_DRAW_ITEM_TEXT* text = (WS_DRAW_ITEM_TEXT*) item;
plotter->Text( text->GetTextPosition(), text->GetColor(), plotter->Text( text->GetTextPosition(), text->GetColor(),
text->GetText(), text->GetOrientation(), text->GetShownText(), text->GetOrientation(),
text->GetSize(), text->GetSize(),
text->GetHorizJustify(), text->GetVertJustify(), text->GetHorizJustify(), text->GetVertJustify(),
text->GetPenWidth(), text->GetPenWidth(),
......
...@@ -90,6 +90,21 @@ int EDA_TEXT::LenSize( const wxString& aLine ) const ...@@ -90,6 +90,21 @@ int EDA_TEXT::LenSize( const wxString& aLine ) const
return GraphicTextWidth( aLine, m_Size.x, m_Italic, m_Bold ); return GraphicTextWidth( aLine, m_Size.x, m_Italic, m_Bold );
} }
wxString EDA_TEXT::ShortenedShownText() const
{
wxString tmp = GetShownText();
tmp.Replace( wxT( "\n" ), wxT( " " ) );
tmp.Replace( wxT( "\r" ), wxT( " " ) );
tmp.Replace( wxT( "\t" ), wxT( " " ) );
if( tmp.Length() > 15 )
tmp = tmp.Left( 12 ) + wxT( "..." );
return tmp;
}
/** /**
* Function GetInterline * Function GetInterline
* return the distance between 2 text lines * return the distance between 2 text lines
...@@ -106,13 +121,13 @@ EDA_RECT EDA_TEXT::GetTextBox( int aLine, int aThickness, bool aInvertY ) const ...@@ -106,13 +121,13 @@ EDA_RECT EDA_TEXT::GetTextBox( int aLine, int aThickness, bool aInvertY ) const
EDA_RECT rect; EDA_RECT rect;
wxPoint pos; wxPoint pos;
wxArrayString* list = NULL; wxArrayString* list = NULL;
wxString text = m_Text; wxString text = GetShownText();
int thickness = ( aThickness < 0 ) ? m_Thickness : aThickness; int thickness = ( aThickness < 0 ) ? m_Thickness : aThickness;
int linecount = 1; int linecount = 1;
if( m_MultilineAllowed ) if( m_MultilineAllowed )
{ {
list = wxStringSplit( m_Text, '\n' ); list = wxStringSplit( text, '\n' );
if ( list->GetCount() ) // GetCount() == 0 for void strings if ( list->GetCount() ) // GetCount() == 0 for void strings
{ {
...@@ -129,7 +144,7 @@ EDA_RECT EDA_TEXT::GetTextBox( int aLine, int aThickness, bool aInvertY ) const ...@@ -129,7 +144,7 @@ EDA_RECT EDA_TEXT::GetTextBox( int aLine, int aThickness, bool aInvertY ) const
int dx = LenSize( text ); int dx = LenSize( text );
int dy = GetInterline( aThickness ); int dy = GetInterline( aThickness );
/* Creates bounding box (rectangle) for an horizontal text */ // Creates bounding box (rectangle) for an horizontal text
wxSize textsize = wxSize( dx, dy ); wxSize textsize = wxSize( dx, dy );
if( aInvertY ) if( aInvertY )
...@@ -257,7 +272,7 @@ void EDA_TEXT::Draw( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aOffset, ...@@ -257,7 +272,7 @@ void EDA_TEXT::Draw( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aOffset,
if( m_MultilineAllowed ) if( m_MultilineAllowed )
{ {
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
wxArrayString* list = wxStringSplit( m_Text, '\n' ); wxArrayString* list = wxStringSplit( GetShownText(), '\n' );
positions.reserve( list->Count() ); positions.reserve( list->Count() );
GetPositionsOfLinesOfMultilineText(positions, list->Count() ); GetPositionsOfLinesOfMultilineText(positions, list->Count() );
...@@ -273,7 +288,7 @@ void EDA_TEXT::Draw( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aOffset, ...@@ -273,7 +288,7 @@ void EDA_TEXT::Draw( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aOffset,
} }
else else
drawOneLineOfText( aClipBox, aDC, aOffset, aColor, drawOneLineOfText( aClipBox, aDC, aOffset, aColor,
aDrawMode, aFillMode, m_Text, m_Pos ); aDrawMode, aFillMode, GetShownText(), m_Pos );
// Draw text anchor, if requested // Draw text anchor, if requested
if( aAnchor_color != UNSPECIFIED_COLOR ) if( aAnchor_color != UNSPECIFIED_COLOR )
...@@ -330,7 +345,7 @@ void EDA_TEXT::GetPositionsOfLinesOfMultilineText( ...@@ -330,7 +345,7 @@ void EDA_TEXT::GetPositionsOfLinesOfMultilineText(
void EDA_TEXT::drawOneLineOfText( EDA_RECT* aClipBox, wxDC* aDC, void EDA_TEXT::drawOneLineOfText( EDA_RECT* aClipBox, wxDC* aDC,
const wxPoint& aOffset, EDA_COLOR_T aColor, const wxPoint& aOffset, EDA_COLOR_T aColor,
GR_DRAWMODE aDrawMode, EDA_DRAW_MODE_T aFillMode, GR_DRAWMODE aDrawMode, EDA_DRAW_MODE_T aFillMode,
wxString& aText, wxPoint aPos ) const wxString& aText, const wxPoint &aPos )
{ {
int width = m_Thickness; int width = m_Thickness;
...@@ -474,7 +489,7 @@ void EDA_TEXT::TransformTextShapeToSegmentList( std::vector<wxPoint>& aCornerBuf ...@@ -474,7 +489,7 @@ void EDA_TEXT::TransformTextShapeToSegmentList( std::vector<wxPoint>& aCornerBuf
if( IsMultilineAllowed() ) if( IsMultilineAllowed() )
{ {
wxArrayString* list = wxStringSplit( GetText(), '\n' ); wxArrayString* list = wxStringSplit( GetShownText(), '\n' );
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
positions.reserve( list->Count() ); positions.reserve( list->Count() );
GetPositionsOfLinesOfMultilineText( positions, list->Count() ); GetPositionsOfLinesOfMultilineText( positions, list->Count() );
......
...@@ -192,7 +192,7 @@ void WORKSHEET_VIEWITEM::draw( const WS_DRAW_ITEM_TEXT* aItem, GAL* aGal ) const ...@@ -192,7 +192,7 @@ void WORKSHEET_VIEWITEM::draw( const WS_DRAW_ITEM_TEXT* aItem, GAL* aGal ) const
aGal->SetStrokeColor( COLOR4D( aItem->GetColor() ) ); aGal->SetStrokeColor( COLOR4D( aItem->GetColor() ) );
aGal->SetLineWidth( aItem->GetThickness() ); aGal->SetLineWidth( aItem->GetThickness() );
aGal->SetTextAttributes( aItem ); aGal->SetTextAttributes( aItem );
aGal->StrokeText( aItem->GetText(), VECTOR2D( 0, 0 ), 0.0 ); aGal->StrokeText( aItem->GetShownText(), VECTOR2D( 0, 0 ), 0.0 );
aGal->Restore(); aGal->Restore();
} }
......
...@@ -452,7 +452,7 @@ void LIB_PART::PlotLibFields( PLOTTER* aPlotter, int aUnit, int aConvert, ...@@ -452,7 +452,7 @@ void LIB_PART::PlotLibFields( PLOTTER* aPlotter, int aUnit, int aConvert,
// The reference is a special case: we shoud change the basic text // The reference is a special case: we shoud change the basic text
// to add '?' and the part id // to add '?' and the part id
LIB_FIELD& field = (LIB_FIELD&) item; LIB_FIELD& field = (LIB_FIELD&) item;
wxString tmp = field.GetText(); wxString tmp = field.GetShownText();
if( field.GetId() == REFERENCE ) if( field.GetId() == REFERENCE )
{ {
wxString text = field.GetFullText( aUnit ); wxString text = field.GetFullText( aUnit );
......
...@@ -110,7 +110,7 @@ SCH_ITEM* SCH_EDIT_FRAME::LocateAndShowItem( const wxPoint& aPosition, const KIC ...@@ -110,7 +110,7 @@ SCH_ITEM* SCH_EDIT_FRAME::LocateAndShowItem( const wxPoint& aPosition, const KIC
if( LibItem ) if( LibItem )
items.push_back( MSG_PANEL_ITEM( LibItem->GetRef( m_CurrentSheet ), items.push_back( MSG_PANEL_ITEM( LibItem->GetRef( m_CurrentSheet ),
LibItem->GetField( VALUE )->GetText(), DARKCYAN ) ); LibItem->GetField( VALUE )->GetShownText(), DARKCYAN ) );
SetMsgPanel( items ); SetMsgPanel( items );
......
...@@ -152,7 +152,7 @@ void DIALOG_LABEL_EDITOR::InitDialog() ...@@ -152,7 +152,7 @@ void DIALOG_LABEL_EDITOR::InitDialog()
if ( !multiLine ) if ( !multiLine )
{ {
max_len =m_CurrentText->GetText().Length(); max_len = m_CurrentText->GetText().Length();
} }
else else
{ {
......
...@@ -175,23 +175,25 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent ) ...@@ -175,23 +175,25 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent )
return; return;
SCH_TEXT* newtext; SCH_TEXT* newtext;
const wxPoint &position = text->GetPosition();
const wxString &txt = text->GetText();
switch( type ) switch( type )
{ {
case SCH_LABEL_T: case SCH_LABEL_T:
newtext = new SCH_LABEL( text->GetPosition(), text->GetText() ); newtext = new SCH_LABEL( position, txt );
break; break;
case SCH_GLOBAL_LABEL_T: case SCH_GLOBAL_LABEL_T:
newtext = new SCH_GLOBALLABEL( text->GetPosition(), text->GetText() ); newtext = new SCH_GLOBALLABEL( position, txt );
break; break;
case SCH_HIERARCHICAL_LABEL_T: case SCH_HIERARCHICAL_LABEL_T:
newtext = new SCH_HIERLABEL( text->GetPosition(), text->GetText() ); newtext = new SCH_HIERLABEL( position, txt );
break; break;
case SCH_TEXT_T: case SCH_TEXT_T:
newtext = new SCH_TEXT( text->GetPosition(), text->GetText() ); newtext = new SCH_TEXT( position, txt );
break; break;
default: default:
......
...@@ -173,7 +173,7 @@ SCH_ITEM* SCH_EDIT_FRAME::FindComponentAndItem( const wxString& aReference, ...@@ -173,7 +173,7 @@ SCH_ITEM* SCH_EDIT_FRAME::FindComponentAndItem( const wxString& aReference,
case FIND_VALUE: // find value case FIND_VALUE: // find value
pos = pSch->GetPosition(); pos = pSch->GetPosition();
if( aSearchText.CmpNoCase( pSch->GetField( VALUE )->GetText() ) != 0 ) if( aSearchText.CmpNoCase( pSch->GetField( VALUE )->GetShownText() ) != 0 )
break; break;
notFound = false; notFound = false;
......
...@@ -164,7 +164,7 @@ bool LIB_FIELD::Load( LINE_READER& aLineReader, wxString& errorMsg ) ...@@ -164,7 +164,7 @@ bool LIB_FIELD::Load( LINE_READER& aLineReader, wxString& errorMsg )
// Doctor the *.lib file field which has a "~" in blank fields. New saves will // Doctor the *.lib file field which has a "~" in blank fields. New saves will
// not save like this, and eventually these two lines can be removed. // not save like this, and eventually these two lines can be removed.
if( m_Text.size()==1 && m_Text[0]==wxChar( '~' ) ) if( m_Text.size() == 1 && m_Text[0] == wxChar( '~' ) )
m_Text.clear(); m_Text.clear();
memset( textVJustify, 0, sizeof( textVJustify ) ); memset( textVJustify, 0, sizeof( textVJustify ) );
...@@ -491,7 +491,7 @@ void LIB_FIELD::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill, ...@@ -491,7 +491,7 @@ void LIB_FIELD::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
wxPoint textpos = aTransform.TransformCoordinate( BoundaryBox.Centre() ) wxPoint textpos = aTransform.TransformCoordinate( BoundaryBox.Centre() )
+ aOffset; + aOffset;
aPlotter->Text( textpos, GetDefaultColor(), m_Text, orient, m_Size, aPlotter->Text( textpos, GetDefaultColor(), GetShownText(), orient, m_Size,
hjustify, vjustify, hjustify, vjustify,
GetPenSize(), m_Italic, m_Bold ); GetPenSize(), m_Italic, m_Bold );
} }
...@@ -500,9 +500,9 @@ void LIB_FIELD::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill, ...@@ -500,9 +500,9 @@ void LIB_FIELD::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
wxString LIB_FIELD::GetFullText( int unit ) wxString LIB_FIELD::GetFullText( int unit )
{ {
if( m_id != REFERENCE ) if( m_id != REFERENCE )
return m_Text; return GetText();
wxString text = m_Text; wxString text = GetText();
text << wxT( "?" ); text << wxT( "?" );
if( GetParent()->IsMulti() ) if( GetParent()->IsMulti() )
...@@ -642,7 +642,7 @@ void LIB_FIELD::SetName( const wxString& aName ) ...@@ -642,7 +642,7 @@ void LIB_FIELD::SetName( const wxString& aName )
void LIB_FIELD::SetText( const wxString& aText ) void LIB_FIELD::SetText( const wxString& aText )
{ {
if( aText == m_Text ) if( aText == GetText() )
return; return;
wxString oldName = m_Text; wxString oldName = m_Text;
...@@ -673,7 +673,7 @@ wxString LIB_FIELD::GetSelectMenuText() const ...@@ -673,7 +673,7 @@ wxString LIB_FIELD::GetSelectMenuText() const
{ {
return wxString::Format( _( "Field %s %s" ), return wxString::Format( _( "Field %s %s" ),
GetChars( GetName() ), GetChars( GetName() ),
GetChars( GetText() ) ); GetChars( ShortenedShownText() ) );
} }
...@@ -763,5 +763,5 @@ void LIB_FIELD::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList ) ...@@ -763,5 +763,5 @@ void LIB_FIELD::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
aList.push_back( MSG_PANEL_ITEM( _( "Field" ), msg, BROWN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Field" ), msg, BROWN ) );
// Display field text: // Display field text:
aList.push_back( MSG_PANEL_ITEM( _( "Value" ), m_Text, BROWN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Value" ), GetShownText(), BROWN ) );
} }
...@@ -226,7 +226,7 @@ EDA_ITEM* LIB_TEXT::Clone() const ...@@ -226,7 +226,7 @@ EDA_ITEM* LIB_TEXT::Clone() const
newitem->m_Bold = m_Bold; newitem->m_Bold = m_Bold;
newitem->m_HJustify = m_HJustify; newitem->m_HJustify = m_HJustify;
newitem->m_VJustify = m_VJustify; newitem->m_VJustify = m_VJustify;
return (EDA_ITEM*) newitem; return newitem;
} }
...@@ -320,7 +320,7 @@ void LIB_TEXT::Plot( PLOTTER* plotter, const wxPoint& offset, bool fill, ...@@ -320,7 +320,7 @@ void LIB_TEXT::Plot( PLOTTER* plotter, const wxPoint& offset, bool fill,
else else
color = BLACK; color = BLACK;
plotter->Text( pos, color, m_Text, plotter->Text( pos, color, GetShownText(),
t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT, t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT,
m_Size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, m_Size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
GetPenSize(), m_Italic, m_Bold ); GetPenSize(), m_Italic, m_Bold );
...@@ -394,7 +394,7 @@ void LIB_TEXT::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aO ...@@ -394,7 +394,7 @@ void LIB_TEXT::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aO
txtpos = aTransform.TransformCoordinate( txtpos ) + aOffset; txtpos = aTransform.TransformCoordinate( txtpos ) + aOffset;
EDA_RECT* clipbox = aPanel? aPanel->GetClipBox() : NULL; EDA_RECT* clipbox = aPanel? aPanel->GetClipBox() : NULL;
DrawGraphicText( clipbox, aDC, txtpos, (EDA_COLOR_T) color, m_Text, orient, m_Size, DrawGraphicText( clipbox, aDC, txtpos, color, GetShownText(), orient, m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, GetPenSize(), GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, GetPenSize(),
m_Italic, m_Bold ); m_Italic, m_Bold );
...@@ -478,14 +478,8 @@ void LIB_TEXT::SetText( const wxString& aText ) ...@@ -478,14 +478,8 @@ void LIB_TEXT::SetText( const wxString& aText )
wxString LIB_TEXT::GetSelectMenuText() const wxString LIB_TEXT::GetSelectMenuText() const
{ {
wxString tmp = GetText();
tmp.Replace( wxT( "\n" ), wxT( " " ) );
tmp.Replace( wxT( "\r" ), wxT( " " ) );
tmp.Replace( wxT( "\t" ), wxT( " " ) );
tmp =( tmp.Length() > 15 ) ? tmp.Left( 12 ) + wxT( "..." ) : tmp;
wxString msg; wxString msg;
msg.Printf( _( "Graphic Text %s" ), GetChars( tmp ) ); msg.Printf( _( "Graphic Text %s" ), GetChars( ShortenedShownText() ) );
return msg; return msg;
} }
......
...@@ -517,7 +517,7 @@ public: ...@@ -517,7 +517,7 @@ public:
wxString GetText() const wxString GetText() const
{ {
const SCH_TEXT* tmp = (SCH_TEXT*) m_label; const SCH_TEXT* tmp = static_cast<SCH_TEXT*>( m_label );
return tmp->GetText(); return tmp->GetText();
} }
}; };
......
...@@ -1496,7 +1496,7 @@ void SCH_COMPONENT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList ) ...@@ -1496,7 +1496,7 @@ void SCH_COMPONENT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
wxString msg = part->IsPower() ? _( "Power symbol" ) : _( "Value" ); wxString msg = part->IsPower() ? _( "Power symbol" ) : _( "Value" );
aList.push_back( MSG_PANEL_ITEM( msg, GetField( VALUE )->GetText(), DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( msg, GetField( VALUE )->GetShownText(), DARKCYAN ) );
// Display component reference in library and library // Display component reference in library and library
aList.push_back( MSG_PANEL_ITEM( _( "Component" ), GetPartName(), BROWN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Component" ), GetPartName(), BROWN ) );
...@@ -1508,7 +1508,7 @@ void SCH_COMPONENT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList ) ...@@ -1508,7 +1508,7 @@ void SCH_COMPONENT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
// Display the current associated footprint, if exists. // Display the current associated footprint, if exists.
if( !GetField( FOOTPRINT )->IsVoid() ) if( !GetField( FOOTPRINT )->IsVoid() )
msg = GetField( FOOTPRINT )->GetText(); msg = GetField( FOOTPRINT )->GetShownText();
else else
msg = _( "<Unknown>" ); msg = _( "<Unknown>" );
...@@ -1683,7 +1683,7 @@ wxString SCH_COMPONENT::GetSelectMenuText() const ...@@ -1683,7 +1683,7 @@ wxString SCH_COMPONENT::GetSelectMenuText() const
wxString tmp; wxString tmp;
tmp.Printf( _( "Component %s, %s" ), tmp.Printf( _( "Component %s, %s" ),
GetChars( GetPartName() ), GetChars( GetPartName() ),
GetChars( GetField( REFERENCE )->GetText() ) ); GetChars( GetField( REFERENCE )->GetShownText() ) );
return tmp; return tmp;
} }
......
...@@ -565,19 +565,8 @@ void SCH_FIELD::Plot( PLOTTER* aPlotter ) ...@@ -565,19 +565,8 @@ void SCH_FIELD::Plot( PLOTTER* aPlotter )
int thickness = GetPenSize(); int thickness = GetPenSize();
if( (parent->GetUnitCount() <= 1) || (m_id != REFERENCE) ) aPlotter->Text( textpos, color, GetFullyQualifiedText(), orient, m_Size, hjustify, vjustify,
{
aPlotter->Text( textpos, color, m_Text, orient, m_Size, hjustify, vjustify,
thickness, m_Italic, m_Bold );
}
else /* We plot the reference, for a multiple parts per package */
{
/* Adding A, B ... to the reference */
wxString Text = m_Text + LIB_PART::SubReference( parent->GetUnit() );
aPlotter->Text( textpos, color, Text, orient, m_Size, hjustify, vjustify,
thickness, m_Italic, m_Bold ); thickness, m_Italic, m_Bold );
}
} }
......
...@@ -368,7 +368,7 @@ void SCH_SHEET::RemovePin( SCH_SHEET_PIN* aSheetPin ) ...@@ -368,7 +368,7 @@ void SCH_SHEET::RemovePin( SCH_SHEET_PIN* aSheetPin )
} }
wxLogDebug( wxT( "Fix me: attempt to remove label %s which is not in sheet %s." ), wxLogDebug( wxT( "Fix me: attempt to remove label %s which is not in sheet %s." ),
GetChars( aSheetPin->GetText() ), GetChars( m_name ) ); GetChars( aSheetPin->GetShownText() ), GetChars( m_name ) );
} }
...@@ -401,14 +401,14 @@ bool SCH_SHEET::HasUndefinedPins() ...@@ -401,14 +401,14 @@ bool SCH_SHEET::HasUndefinedPins()
{ {
/* Search the schematic for a hierarchical label corresponding to this sheet label. */ /* Search the schematic for a hierarchical label corresponding to this sheet label. */
EDA_ITEM* DrawStruct = m_screen->GetDrawItems(); EDA_ITEM* DrawStruct = m_screen->GetDrawItems();
SCH_HIERLABEL* HLabel = NULL; const SCH_HIERLABEL* HLabel = NULL;
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() ) for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
{ {
if( DrawStruct->Type() != SCH_HIERARCHICAL_LABEL_T ) if( DrawStruct->Type() != SCH_HIERARCHICAL_LABEL_T )
continue; continue;
HLabel = (SCH_HIERLABEL*) DrawStruct; HLabel = static_cast<SCH_HIERLABEL*>( DrawStruct );
if( pin.GetText().CmpNoCase( HLabel->GetText() ) == 0 ) if( pin.GetText().CmpNoCase( HLabel->GetText() ) == 0 )
break; // Found! break; // Found!
...@@ -485,14 +485,14 @@ void SCH_SHEET::CleanupSheet() ...@@ -485,14 +485,14 @@ void SCH_SHEET::CleanupSheet()
{ {
/* Search the schematic for a hierarchical label corresponding to this sheet label. */ /* Search the schematic for a hierarchical label corresponding to this sheet label. */
EDA_ITEM* DrawStruct = m_screen->GetDrawItems(); EDA_ITEM* DrawStruct = m_screen->GetDrawItems();
SCH_HIERLABEL* HLabel = NULL; const SCH_HIERLABEL* HLabel = NULL;
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() ) for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
{ {
if( DrawStruct->Type() != SCH_HIERARCHICAL_LABEL_T ) if( DrawStruct->Type() != SCH_HIERARCHICAL_LABEL_T )
continue; continue;
HLabel = (SCH_HIERLABEL*) DrawStruct; HLabel = static_cast<SCH_HIERLABEL*>( DrawStruct );
if( i->GetText().CmpNoCase( HLabel->GetText() ) == 0 ) if( i->GetText().CmpNoCase( HLabel->GetText() ) == 0 )
break; // Found! break; // Found!
......
...@@ -479,7 +479,7 @@ void SCH_SHEET_PIN::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList ) ...@@ -479,7 +479,7 @@ void SCH_SHEET_PIN::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
wxString SCH_SHEET_PIN::GetSelectMenuText() const wxString SCH_SHEET_PIN::GetSelectMenuText() const
{ {
wxString tmp; wxString tmp;
tmp.Printf( _( "Hierarchical Sheet Pin %s" ), GetChars( GetText() ) ); tmp.Printf( _( "Hierarchical Sheet Pin %s" ), GetChars( ShortenedShownText() ) );
return tmp; return tmp;
} }
......
...@@ -601,14 +601,8 @@ const EDA_RECT SCH_TEXT::GetBoundingBox() const ...@@ -601,14 +601,8 @@ const EDA_RECT SCH_TEXT::GetBoundingBox() const
wxString SCH_TEXT::GetSelectMenuText() const wxString SCH_TEXT::GetSelectMenuText() const
{ {
wxString tmp = GetText();
tmp.Replace( wxT( "\n" ), wxT( " " ) );
tmp.Replace( wxT( "\r" ), wxT( " " ) );
tmp.Replace( wxT( "\t" ), wxT( " " ) );
tmp =( tmp.Length() > 15 ) ? tmp.Left( 12 ) + wxT( "..." ) : tmp;
wxString msg; wxString msg;
msg.Printf( _( "Graphic Text %s" ), GetChars( tmp ) ); msg.Printf( _( "Graphic Text %s" ), GetChars( ShortenedShownText() ) );
return msg; return msg;
} }
...@@ -674,7 +668,7 @@ void SCH_TEXT::Plot( PLOTTER* aPlotter ) ...@@ -674,7 +668,7 @@ void SCH_TEXT::Plot( PLOTTER* aPlotter )
if( m_MultilineAllowed ) if( m_MultilineAllowed )
{ {
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
wxArrayString* list = wxStringSplit( m_Text, '\n' ); wxArrayString* list = wxStringSplit( GetShownText(), '\n' );
positions.reserve( list->Count() ); positions.reserve( list->Count() );
GetPositionsOfLinesOfMultilineText(positions, list->Count() ); GetPositionsOfLinesOfMultilineText(positions, list->Count() );
...@@ -690,7 +684,7 @@ void SCH_TEXT::Plot( PLOTTER* aPlotter ) ...@@ -690,7 +684,7 @@ void SCH_TEXT::Plot( PLOTTER* aPlotter )
} }
else else
{ {
aPlotter->Text( textpos, color, m_Text, m_Orient, m_Size, m_HJustify, aPlotter->Text( textpos, color, GetShownText(), m_Orient, m_Size, m_HJustify,
m_VJustify, thickness, m_Italic, m_Bold ); m_VJustify, thickness, m_Italic, m_Bold );
} }
...@@ -737,7 +731,7 @@ void SCH_TEXT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList ) ...@@ -737,7 +731,7 @@ void SCH_TEXT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
return; return;
} }
aList.push_back( MSG_PANEL_ITEM( msg, GetText(), DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( msg, GetShownText(), DARKCYAN ) );
switch( GetOrientation() ) switch( GetOrientation() )
{ {
...@@ -973,7 +967,7 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const ...@@ -973,7 +967,7 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const
x = m_Pos.x; x = m_Pos.x;
y = m_Pos.y; y = m_Pos.y;
int width = (m_Thickness == 0) ? GetDefaultLineThickness() : m_Thickness; int width = (m_Thickness == 0) ? GetDefaultLineThickness() : m_Thickness;
length = LenSize( m_Text ); length = LenSize( GetShownText() );
height = m_Size.y + width; height = m_Size.y + width;
dx = dy = 0; dx = dy = 0;
...@@ -1016,10 +1010,8 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const ...@@ -1016,10 +1010,8 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const
wxString SCH_LABEL::GetSelectMenuText() const wxString SCH_LABEL::GetSelectMenuText() const
{ {
wxString tmp = ( GetText().Length() > 15 ) ? GetText().Left( 12 ) + wxT( "..." ) : GetText();
wxString msg; wxString msg;
msg.Printf( _( "Label %s" ), GetChars(tmp) ); msg.Printf( _( "Label %s" ), GetChars( ShortenedShownText() ) );
return msg; return msg;
} }
...@@ -1312,7 +1304,7 @@ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector <wxPoint>& aPoints, const ...@@ -1312,7 +1304,7 @@ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector <wxPoint>& aPoints, const
aPoints.clear(); aPoints.clear();
int symb_len = LenSize( m_Text ) + ( TXTMARGE * 2 ); int symb_len = LenSize( GetShownText() ) + ( TXTMARGE * 2 );
// Create outline shape : 6 points // Create outline shape : 6 points
int x = symb_len + linewidth + 3; int x = symb_len + linewidth + 3;
...@@ -1406,7 +1398,7 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const ...@@ -1406,7 +1398,7 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const
height = ( (m_Size.y * 15) / 10 ) + width + 2 * TXTMARGE; height = ( (m_Size.y * 15) / 10 ) + width + 2 * TXTMARGE;
// text X size add height for triangular shapes(bidirectional) // text X size add height for triangular shapes(bidirectional)
length = LenSize( m_Text ) + height + DANGLING_SYMBOL_SIZE; length = LenSize( GetShownText() ) + height + DANGLING_SYMBOL_SIZE;
switch( m_schematicOrientation ) // respect orientation switch( m_schematicOrientation ) // respect orientation
{ {
...@@ -1447,10 +1439,8 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const ...@@ -1447,10 +1439,8 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const
wxString SCH_GLOBALLABEL::GetSelectMenuText() const wxString SCH_GLOBALLABEL::GetSelectMenuText() const
{ {
wxString tmp = ( GetText().Length() > 15 ) ? GetText().Left( 12 ) + wxT( "..." ) : GetText();
wxString msg; wxString msg;
msg.Printf( _( "Global Label %s" ), GetChars(tmp) ); msg.Printf( _( "Global Label %s" ), GetChars( ShortenedShownText() ) );
return msg; return msg;
} }
...@@ -1670,7 +1660,7 @@ const EDA_RECT SCH_HIERLABEL::GetBoundingBox() const ...@@ -1670,7 +1660,7 @@ const EDA_RECT SCH_HIERLABEL::GetBoundingBox() const
int width = (m_Thickness == 0) ? GetDefaultLineThickness() : m_Thickness; int width = (m_Thickness == 0) ? GetDefaultLineThickness() : m_Thickness;
height = m_Size.y + width + 2 * TXTMARGE; height = m_Size.y + width + 2 * TXTMARGE;
length = LenSize( m_Text ) length = LenSize( GetShownText() )
+ height // add height for triangular shapes + height // add height for triangular shapes
+ 2 * DANGLING_SYMBOL_SIZE; + 2 * DANGLING_SYMBOL_SIZE;
...@@ -1794,9 +1784,7 @@ void SCH_HIERLABEL::Rotate( wxPoint aPosition ) ...@@ -1794,9 +1784,7 @@ void SCH_HIERLABEL::Rotate( wxPoint aPosition )
wxString SCH_HIERLABEL::GetSelectMenuText() const wxString SCH_HIERLABEL::GetSelectMenuText() const
{ {
wxString tmp = ( GetText().Length() > 15 ) ? GetText().Left( 12 ) + wxT( "..." ) : GetText();
wxString msg; wxString msg;
msg.Printf( _( "Hierarchical Label %s" ), GetChars( tmp ) ); msg.Printf( _( "Hierarchical Label %s" ), GetChars( ShortenedShownText() ) );
return msg; return msg;
} }
...@@ -80,7 +80,7 @@ enum EDA_DRAW_MODE_T { ...@@ -80,7 +80,7 @@ enum EDA_DRAW_MODE_T {
class EDA_TEXT class EDA_TEXT
{ {
protected: protected:
wxString m_Text; wxString m_Text; ///< The 'base' text, maybe later processed for display
int m_Thickness; ///< pen size used to draw this text int m_Thickness; ///< pen size used to draw this text
double m_Orient; ///< Orient in 0.1 degrees double m_Orient; ///< Orient in 0.1 degrees
wxPoint m_Pos; ///< XY position of anchor text. wxPoint m_Pos; ///< XY position of anchor text.
...@@ -104,14 +104,19 @@ public: ...@@ -104,14 +104,19 @@ public:
/** /**
* Function GetText * Function GetText
* returns the string associated with the text object. * returns the string associated with the text object.
* <p> *
* This function is virtual to allow derived classes to override getting the * @return a const wxString reference containing the string of the item.
* string to provide a way for modifying the base string by adding a suffix or
* prefix to the base string.
* </p>
* @return a const wxString object containing the string of the item.
*/ */
virtual const wxString& GetText() const { return m_Text; } const wxString& GetText() const { return m_Text; }
/**
* Returns the string actually shown after processing of the base
* text. Default is no processing */
virtual wxString GetShownText() const { return m_Text; }
/**
* Returns a shortened version (max 15 characters) of the shown text */
wxString ShortenedShownText() const;
virtual void SetText( const wxString& aText ) { m_Text = aText; } virtual void SetText( const wxString& aText ) { m_Text = aText; }
...@@ -320,7 +325,7 @@ private: ...@@ -320,7 +325,7 @@ private:
void drawOneLineOfText( EDA_RECT* aClipBox, wxDC* aDC, void drawOneLineOfText( EDA_RECT* aClipBox, wxDC* aDC,
const wxPoint& aOffset, EDA_COLOR_T aColor, const wxPoint& aOffset, EDA_COLOR_T aColor,
GR_DRAWMODE aDrawMode, EDA_DRAW_MODE_T aFillMode, GR_DRAWMODE aDrawMode, EDA_DRAW_MODE_T aFillMode,
wxString& aText, wxPoint aPos ); const wxString& aText, const wxPoint &aPos );
}; };
......
...@@ -250,7 +250,7 @@ void MODULE::TransformGraphicShapesWithClearanceToPolygonSet( ...@@ -250,7 +250,7 @@ void MODULE::TransformGraphicShapesWithClearanceToPolygonSet(
NEGATE( size.x ); NEGATE( size.x );
DrawGraphicText( NULL, NULL, textmod->GetTextPosition(), BLACK, DrawGraphicText( NULL, NULL, textmod->GetTextPosition(), BLACK,
textmod->GetText(), textmod->GetDrawRotation(), size, textmod->GetShownText(), textmod->GetDrawRotation(), size,
textmod->GetHorizJustify(), textmod->GetVertJustify(), textmod->GetHorizJustify(), textmod->GetVertJustify(),
textmod->GetThickness(), textmod->IsItalic(), textmod->GetThickness(), textmod->IsItalic(),
true, addTextSegmToPoly ); true, addTextSegmToPoly );
...@@ -379,7 +379,7 @@ void TEXTE_PCB::TransformShapeWithClearanceToPolygonSet( ...@@ -379,7 +379,7 @@ void TEXTE_PCB::TransformShapeWithClearanceToPolygonSet(
if( IsMultilineAllowed() ) if( IsMultilineAllowed() )
{ {
wxArrayString* list = wxStringSplit( GetText(), '\n' ); wxArrayString* list = wxStringSplit( GetShownText(), '\n' );
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
positions.reserve( list->Count() ); positions.reserve( list->Count() );
GetPositionsOfLinesOfMultilineText( positions, list->Count() ); GetPositionsOfLinesOfMultilineText( positions, list->Count() );
...@@ -399,7 +399,7 @@ void TEXTE_PCB::TransformShapeWithClearanceToPolygonSet( ...@@ -399,7 +399,7 @@ void TEXTE_PCB::TransformShapeWithClearanceToPolygonSet(
else else
{ {
DrawGraphicText( NULL, NULL, GetTextPosition(), color, DrawGraphicText( NULL, NULL, GetTextPosition(), color,
GetText(), GetOrientation(), size, GetShownText(), GetOrientation(), size,
GetHorizJustify(), GetVertJustify(), GetHorizJustify(), GetVertJustify(),
GetThickness(), IsItalic(), GetThickness(), IsItalic(),
true, addTextSegmToPoly ); true, addTextSegmToPoly );
......
...@@ -538,7 +538,7 @@ void MODULE::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList ) ...@@ -538,7 +538,7 @@ void MODULE::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList )
char bufcar[512], Line[512]; char bufcar[512], Line[512];
wxString msg; wxString msg;
aList.push_back( MSG_PANEL_ITEM( m_Reference->GetText(), m_Value->GetText(), DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( m_Reference->GetShownText(), m_Value->GetShownText(), DARKCYAN ) );
// Display last date the component was edited (useful in Module Editor). // Display last date the component was edited (useful in Module Editor).
time_t edit_time = m_LastEditTime; time_t edit_time = m_LastEditTime;
......
...@@ -131,9 +131,9 @@ void TEXTE_PCB::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList ) ...@@ -131,9 +131,9 @@ void TEXTE_PCB::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList )
#endif #endif
if( m_Parent && m_Parent->Type() == PCB_DIMENSION_T ) if( m_Parent && m_Parent->Type() == PCB_DIMENSION_T )
aList.push_back( MSG_PANEL_ITEM( _( "Dimension" ), m_Text, DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Dimension" ), GetShownText(), DARKGREEN ) );
else else
aList.push_back( MSG_PANEL_ITEM( _( "PCB Text" ), m_Text, DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( _( "PCB Text" ), GetShownText(), DARKGREEN ) );
aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), GetLayerName(), BLUE ) ); aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), GetLayerName(), BLUE ) );
...@@ -184,15 +184,10 @@ void TEXTE_PCB::Flip(const wxPoint& aCentre ) ...@@ -184,15 +184,10 @@ void TEXTE_PCB::Flip(const wxPoint& aCentre )
wxString TEXTE_PCB::GetSelectMenuText() const wxString TEXTE_PCB::GetSelectMenuText() const
{ {
wxString text, shorttxt; wxString text;
if( m_Text.Len() < 12 )
shorttxt << m_Text;
else
shorttxt += m_Text.Left( 10 ) + wxT( "..." );
text.Printf( _( "Pcb Text \"%s\" on %s"), text.Printf( _( "Pcb Text \"%s\" on %s"),
GetChars ( shorttxt ), GetChars( GetLayerName() ) ); GetChars ( ShortenedShownText() ), GetChars( GetLayerName() ) );
return text; return text;
} }
......
...@@ -319,7 +319,7 @@ void TEXTE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode, ...@@ -319,7 +319,7 @@ void TEXTE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
size.x = -size.x; size.x = -size.x;
EDA_RECT* clipbox = panel? panel->GetClipBox() : NULL; EDA_RECT* clipbox = panel? panel->GetClipBox() : NULL;
DrawGraphicText( clipbox, DC, pos, color, m_Text, orient, DrawGraphicText( clipbox, DC, pos, color, GetShownText(), orient,
size, m_HJustify, m_VJustify, width, m_Italic, m_Bold ); size, m_HJustify, m_VJustify, width, m_Italic, m_Bold );
// Enable these line to draw the bounding box (debug tests purposes only) // Enable these line to draw the bounding box (debug tests purposes only)
...@@ -387,7 +387,7 @@ void TEXTE_MODULE::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList ) ...@@ -387,7 +387,7 @@ void TEXTE_MODULE::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM >& aList )
Line = module->GetReference(); Line = module->GetReference();
aList.push_back( MSG_PANEL_ITEM( _( "Module" ), Line, DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Module" ), Line, DARKCYAN ) );
Line = m_Text; Line = GetShownText();
aList.push_back( MSG_PANEL_ITEM( _( "Text" ), Line, BROWN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Text" ), Line, BROWN ) );
wxASSERT( m_Type >= TEXT_is_REFERENCE && m_Type <= TEXT_is_DIVERS ); wxASSERT( m_Type >= TEXT_is_REFERENCE && m_Type <= TEXT_is_DIVERS );
...@@ -436,11 +436,11 @@ wxString TEXTE_MODULE::GetSelectMenuText() const ...@@ -436,11 +436,11 @@ wxString TEXTE_MODULE::GetSelectMenuText() const
break; break;
case TEXT_is_VALUE: case TEXT_is_VALUE:
text.Printf( _( "Value %s of %s" ), GetChars( m_Text ), reference ); text.Printf( _( "Value %s of %s" ), GetChars( GetShownText() ), reference );
break; break;
default: // wrap this one in quotes: default: // wrap this one in quotes:
text.Printf( _( "Text \"%s\" on %s of %s" ), GetChars( m_Text ), text.Printf( _( "Text \"%s\" on %s of %s" ), GetChars( ShortenedShownText() ),
GetChars( GetLayerName() ), reference ); GetChars( GetLayerName() ), reference );
break; break;
} }
......
...@@ -124,7 +124,6 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() ...@@ -124,7 +124,6 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties()
m_valueCopy->Copy( &m_currentModule->Value() ); m_valueCopy->Copy( &m_currentModule->Value() );
m_ReferenceCtrl->SetValue( m_referenceCopy->GetText() ); m_ReferenceCtrl->SetValue( m_referenceCopy->GetText() );
m_ValueCtrl->SetValue( m_valueCopy->GetText() ); m_ValueCtrl->SetValue( m_valueCopy->GetText() );
m_ValueCtrl->SetValue( m_valueCopy->GetText() );
m_FootprintNameCtrl->SetValue( m_currentModule->GetFPID().Format() ); m_FootprintNameCtrl->SetValue( m_currentModule->GetFPID().Format() );
m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD components" ) ); m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD components" ) );
......
...@@ -640,7 +640,7 @@ static void export_vrml_pcbtext( MODEL_VRML& aModel, TEXTE_PCB* text ) ...@@ -640,7 +640,7 @@ static void export_vrml_pcbtext( MODEL_VRML& aModel, TEXTE_PCB* text )
if( text->IsMultilineAllowed() ) if( text->IsMultilineAllowed() )
{ {
wxArrayString* list = wxStringSplit( text->GetText(), '\n' ); wxArrayString* list = wxStringSplit( text->GetShownText(), '\n' );
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
positions.reserve( list->Count() ); positions.reserve( list->Count() );
text->GetPositionsOfLinesOfMultilineText( positions, list->Count() ); text->GetPositionsOfLinesOfMultilineText( positions, list->Count() );
...@@ -661,7 +661,7 @@ static void export_vrml_pcbtext( MODEL_VRML& aModel, TEXTE_PCB* text ) ...@@ -661,7 +661,7 @@ static void export_vrml_pcbtext( MODEL_VRML& aModel, TEXTE_PCB* text )
else else
{ {
DrawGraphicText( NULL, NULL, text->GetTextPosition(), color, DrawGraphicText( NULL, NULL, text->GetTextPosition(), color,
text->GetText(), text->GetOrientation(), size, text->GetShownText(), text->GetOrientation(), size,
text->GetHorizJustify(), text->GetVertJustify(), text->GetHorizJustify(), text->GetVertJustify(),
text->GetThickness(), text->IsItalic(), text->GetThickness(), text->IsItalic(),
true, true,
...@@ -941,7 +941,7 @@ static void export_vrml_text_module( TEXTE_MODULE* module ) ...@@ -941,7 +941,7 @@ static void export_vrml_text_module( TEXTE_MODULE* module )
model_vrml->s_text_width = module->GetThickness(); model_vrml->s_text_width = module->GetThickness();
DrawGraphicText( NULL, NULL, module->GetTextPosition(), BLACK, DrawGraphicText( NULL, NULL, module->GetTextPosition(), BLACK,
module->GetText(), module->GetDrawRotation(), size, module->GetShownText(), module->GetDrawRotation(), size,
module->GetHorizJustify(), module->GetVertJustify(), module->GetHorizJustify(), module->GetVertJustify(),
module->GetThickness(), module->IsItalic(), module->GetThickness(), module->IsItalic(),
true, true,
......
...@@ -767,7 +767,8 @@ void PCB_PAINTER::draw( const DRAWSEGMENT* aSegment, int aLayer ) ...@@ -767,7 +767,8 @@ void PCB_PAINTER::draw( const DRAWSEGMENT* aSegment, int aLayer )
void PCB_PAINTER::draw( const TEXTE_PCB* aText, int aLayer ) void PCB_PAINTER::draw( const TEXTE_PCB* aText, int aLayer )
{ {
if( aText->GetText().Length() == 0 ) wxString shownText( aText->GetShownText() );
if( shownText.Length() == 0 )
return; return;
const COLOR4D& color = m_pcbSettings.GetColor( aText, aText->GetLayer() ); const COLOR4D& color = m_pcbSettings.GetColor( aText, aText->GetLayer() );
...@@ -789,13 +790,14 @@ void PCB_PAINTER::draw( const TEXTE_PCB* aText, int aLayer ) ...@@ -789,13 +790,14 @@ void PCB_PAINTER::draw( const TEXTE_PCB* aText, int aLayer )
m_gal->SetIsStroke( true ); m_gal->SetIsStroke( true );
m_gal->SetStrokeColor( color ); m_gal->SetStrokeColor( color );
m_gal->SetTextAttributes( aText ); m_gal->SetTextAttributes( aText );
m_gal->StrokeText( aText->GetText(), position, orientation ); m_gal->StrokeText( shownText, position, orientation );
} }
void PCB_PAINTER::draw( const TEXTE_MODULE* aText, int aLayer ) void PCB_PAINTER::draw( const TEXTE_MODULE* aText, int aLayer )
{ {
if( aText->GetLength() == 0 ) wxString shownText( aText->GetShownText() );
if( shownText.Length() == 0 )
return; return;
const COLOR4D& color = m_pcbSettings.GetColor( aText, aLayer ); const COLOR4D& color = m_pcbSettings.GetColor( aText, aLayer );
...@@ -817,7 +819,7 @@ void PCB_PAINTER::draw( const TEXTE_MODULE* aText, int aLayer ) ...@@ -817,7 +819,7 @@ void PCB_PAINTER::draw( const TEXTE_MODULE* aText, int aLayer )
m_gal->SetIsStroke( true ); m_gal->SetIsStroke( true );
m_gal->SetStrokeColor( color ); m_gal->SetStrokeColor( color );
m_gal->SetTextAttributes( aText ); m_gal->SetTextAttributes( aText );
m_gal->StrokeText( aText->GetText(), position, orientation ); m_gal->StrokeText( shownText, position, orientation );
} }
...@@ -941,7 +943,7 @@ void PCB_PAINTER::draw( const DIMENSION* aDimension, int aLayer ) ...@@ -941,7 +943,7 @@ void PCB_PAINTER::draw( const DIMENSION* aDimension, int aLayer )
m_gal->SetLineWidth( text.GetThickness() ); m_gal->SetLineWidth( text.GetThickness() );
m_gal->SetTextAttributes( &text ); m_gal->SetTextAttributes( &text );
m_gal->StrokeText( text.GetText(), position, orientation ); m_gal->StrokeText( text.GetShownText(), position, orientation );
} }
......
...@@ -235,7 +235,7 @@ void BRDITEMS_PLOTTER::PlotTextModule( TEXTE_MODULE* pt_texte, EDA_COLOR_T aColo ...@@ -235,7 +235,7 @@ void BRDITEMS_PLOTTER::PlotTextModule( TEXTE_MODULE* pt_texte, EDA_COLOR_T aColo
bool allow_bold = pt_texte->IsBold() || thickness; bool allow_bold = pt_texte->IsBold() || thickness;
m_plotter->Text( pos, aColor, m_plotter->Text( pos, aColor,
pt_texte->GetText(), pt_texte->GetShownText(),
orient, size, orient, size,
pt_texte->GetHorizJustify(), pt_texte->GetVertJustify(), pt_texte->GetHorizJustify(), pt_texte->GetVertJustify(),
thickness, pt_texte->IsItalic(), allow_bold ); thickness, pt_texte->IsItalic(), allow_bold );
...@@ -442,8 +442,9 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte ) ...@@ -442,8 +442,9 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte )
int thickness; int thickness;
wxPoint pos; wxPoint pos;
wxSize size; wxSize size;
wxString shownText( pt_texte->GetShownText() );
if( pt_texte->GetText().IsEmpty() ) if( shownText.IsEmpty() )
return; return;
if( !m_layerMask[pt_texte->GetLayer()] ) if( !m_layerMask[pt_texte->GetLayer()] )
...@@ -468,7 +469,7 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte ) ...@@ -468,7 +469,7 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte )
if( pt_texte->IsMultilineAllowed() ) if( pt_texte->IsMultilineAllowed() )
{ {
std::vector<wxPoint> positions; std::vector<wxPoint> positions;
wxArrayString* list = wxStringSplit( pt_texte->GetText(), '\n' ); wxArrayString* list = wxStringSplit( shownText, '\n' );
positions.reserve( list->Count() ); positions.reserve( list->Count() );
pt_texte->GetPositionsOfLinesOfMultilineText( positions, list->Count() ); pt_texte->GetPositionsOfLinesOfMultilineText( positions, list->Count() );
...@@ -485,7 +486,7 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte ) ...@@ -485,7 +486,7 @@ void BRDITEMS_PLOTTER::PlotTextePcb( TEXTE_PCB* pt_texte )
} }
else else
{ {
m_plotter->Text( pos, UNSPECIFIED_COLOR, pt_texte->GetText(), orient, size, m_plotter->Text( pos, UNSPECIFIED_COLOR, shownText, orient, size,
pt_texte->GetHorizJustify(), pt_texte->GetVertJustify(), pt_texte->GetHorizJustify(), pt_texte->GetVertJustify(),
thickness, pt_texte->IsItalic(), allow_bold ); thickness, pt_texte->IsItalic(), allow_bold );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment