Loading common/common_plot_functions.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -133,7 +133,8 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock, text->GetSize(), text->GetSize(), text->GetHorizJustify(), text->GetVertJustify(), text->GetHorizJustify(), text->GetVertJustify(), text->GetPenWidth(), text->GetPenWidth(), text->IsItalic(), text->IsBold() ); text->IsItalic(), text->IsBold(), text->IsMultilineAllowed() ); } } break; break; Loading common/drawtxt.cpp +47 −8 Original line number Original line Diff line number Diff line Loading @@ -602,6 +602,7 @@ void DrawGraphicHaloText( EDA_RECT* aClipBox, wxDC * aDC, * Use a value min(aSize.x, aSize.y) / 5 for a bold text * Use a value min(aSize.x, aSize.y) / 5 for a bold text * @param aItalic = true to simulate an italic font * @param aItalic = true to simulate an italic font * @param aBold = true to use a bold font Useful only with default width value (aWidth = 0) * @param aBold = true to use a bold font Useful only with default width value (aWidth = 0) * @param aMultilineAllowed = true to plot text as multiline, otherwise single line */ */ void PLOTTER::Text( const wxPoint& aPos, void PLOTTER::Text( const wxPoint& aPos, enum EDA_COLOR_T aColor, enum EDA_COLOR_T aColor, Loading @@ -612,7 +613,8 @@ void PLOTTER::Text( const wxPoint& aPos, enum EDA_TEXT_VJUSTIFY_T aV_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, int aWidth, bool aItalic, bool aItalic, bool aBold ) bool aBold, bool aMultilineAllowed ) { { int textPensize = aWidth; int textPensize = aWidth; Loading @@ -630,6 +632,42 @@ void PLOTTER::Text( const wxPoint& aPos, if( aColor >= 0 ) if( aColor >= 0 ) SetColor( aColor ); SetColor( aColor ); if( aMultilineAllowed ) { // EDA_TEXT needs for calculations of the position of every // line according to orientation and justifications EDA_TEXT* multilineText = new EDA_TEXT( aText ); multilineText->SetSize( aSize ); multilineText->SetTextPosition( aPos ); multilineText->SetOrientation( aOrient ); multilineText->SetHorizJustify( aH_justify ); multilineText->SetVertJustify( aV_justify ); multilineText->SetThickness( aWidth ); multilineText->SetMultilineAllowed( aMultilineAllowed ); std::vector<wxPoint> positions; wxArrayString* list = wxStringSplit( aText, '\n' ); positions.reserve( list->Count() ); multilineText->GetPositionsOfLinesOfMultilineText( positions, list->Count() ); for( unsigned ii = 0; ii < list->Count(); ii++ ) { wxString& txt = list->Item( ii ); DrawGraphicText( NULL, NULL, positions[ii], aColor, txt, aOrient, aSize, aH_justify, aV_justify, textPensize, aItalic, aBold, NULL, this ); } delete multilineText; delete list; } else { DrawGraphicText( NULL, NULL, aPos, aColor, aText, DrawGraphicText( NULL, NULL, aPos, aColor, aText, aOrient, aSize, aOrient, aSize, aH_justify, aV_justify, aH_justify, aV_justify, Loading @@ -637,6 +675,7 @@ void PLOTTER::Text( const wxPoint& aPos, aBold, aBold, NULL, NULL, this ); this ); } if( aWidth != textPensize ) if( aWidth != textPensize ) SetCurrentLineWidth( aWidth ); SetCurrentLineWidth( aWidth ); Loading include/plot_common.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -253,7 +253,8 @@ public: enum EDA_TEXT_VJUSTIFY_T aV_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, int aWidth, bool aItalic, bool aItalic, bool aBold ); bool aBold, bool aMultilineAllowed = false ); /** /** * Draw a marker (used for the drill map) * Draw a marker (used for the drill map) Loading Loading
common/common_plot_functions.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -133,7 +133,8 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock, text->GetSize(), text->GetSize(), text->GetHorizJustify(), text->GetVertJustify(), text->GetHorizJustify(), text->GetVertJustify(), text->GetPenWidth(), text->GetPenWidth(), text->IsItalic(), text->IsBold() ); text->IsItalic(), text->IsBold(), text->IsMultilineAllowed() ); } } break; break; Loading
common/drawtxt.cpp +47 −8 Original line number Original line Diff line number Diff line Loading @@ -602,6 +602,7 @@ void DrawGraphicHaloText( EDA_RECT* aClipBox, wxDC * aDC, * Use a value min(aSize.x, aSize.y) / 5 for a bold text * Use a value min(aSize.x, aSize.y) / 5 for a bold text * @param aItalic = true to simulate an italic font * @param aItalic = true to simulate an italic font * @param aBold = true to use a bold font Useful only with default width value (aWidth = 0) * @param aBold = true to use a bold font Useful only with default width value (aWidth = 0) * @param aMultilineAllowed = true to plot text as multiline, otherwise single line */ */ void PLOTTER::Text( const wxPoint& aPos, void PLOTTER::Text( const wxPoint& aPos, enum EDA_COLOR_T aColor, enum EDA_COLOR_T aColor, Loading @@ -612,7 +613,8 @@ void PLOTTER::Text( const wxPoint& aPos, enum EDA_TEXT_VJUSTIFY_T aV_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, int aWidth, bool aItalic, bool aItalic, bool aBold ) bool aBold, bool aMultilineAllowed ) { { int textPensize = aWidth; int textPensize = aWidth; Loading @@ -630,6 +632,42 @@ void PLOTTER::Text( const wxPoint& aPos, if( aColor >= 0 ) if( aColor >= 0 ) SetColor( aColor ); SetColor( aColor ); if( aMultilineAllowed ) { // EDA_TEXT needs for calculations of the position of every // line according to orientation and justifications EDA_TEXT* multilineText = new EDA_TEXT( aText ); multilineText->SetSize( aSize ); multilineText->SetTextPosition( aPos ); multilineText->SetOrientation( aOrient ); multilineText->SetHorizJustify( aH_justify ); multilineText->SetVertJustify( aV_justify ); multilineText->SetThickness( aWidth ); multilineText->SetMultilineAllowed( aMultilineAllowed ); std::vector<wxPoint> positions; wxArrayString* list = wxStringSplit( aText, '\n' ); positions.reserve( list->Count() ); multilineText->GetPositionsOfLinesOfMultilineText( positions, list->Count() ); for( unsigned ii = 0; ii < list->Count(); ii++ ) { wxString& txt = list->Item( ii ); DrawGraphicText( NULL, NULL, positions[ii], aColor, txt, aOrient, aSize, aH_justify, aV_justify, textPensize, aItalic, aBold, NULL, this ); } delete multilineText; delete list; } else { DrawGraphicText( NULL, NULL, aPos, aColor, aText, DrawGraphicText( NULL, NULL, aPos, aColor, aText, aOrient, aSize, aOrient, aSize, aH_justify, aV_justify, aH_justify, aV_justify, Loading @@ -637,6 +675,7 @@ void PLOTTER::Text( const wxPoint& aPos, aBold, aBold, NULL, NULL, this ); this ); } if( aWidth != textPensize ) if( aWidth != textPensize ) SetCurrentLineWidth( aWidth ); SetCurrentLineWidth( aWidth ); Loading
include/plot_common.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -253,7 +253,8 @@ public: enum EDA_TEXT_VJUSTIFY_T aV_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, int aWidth, bool aItalic, bool aItalic, bool aBold ); bool aBold, bool aMultilineAllowed = false ); /** /** * Draw a marker (used for the drill map) * Draw a marker (used for the drill map) Loading