Fix worksheet multiple line text plotting bug. (fixes lp:1261906)
This commit is contained in:
parent
860d26e451
commit
065966291c
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -630,13 +632,50 @@ void PLOTTER::Text( const wxPoint& aPos,
|
||||||
if( aColor >= 0 )
|
if( aColor >= 0 )
|
||||||
SetColor( aColor );
|
SetColor( aColor );
|
||||||
|
|
||||||
DrawGraphicText( NULL, NULL, aPos, aColor, aText,
|
if( aMultilineAllowed )
|
||||||
aOrient, aSize,
|
{
|
||||||
aH_justify, aV_justify,
|
// EDA_TEXT needs for calculations of the position of every
|
||||||
textPensize, aItalic,
|
// line according to orientation and justifications
|
||||||
aBold,
|
EDA_TEXT* multilineText = new EDA_TEXT( aText );
|
||||||
NULL,
|
multilineText->SetSize( aSize );
|
||||||
this );
|
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,
|
||||||
|
aOrient, aSize,
|
||||||
|
aH_justify, aV_justify,
|
||||||
|
textPensize, aItalic,
|
||||||
|
aBold,
|
||||||
|
NULL,
|
||||||
|
this );
|
||||||
|
}
|
||||||
|
|
||||||
if( aWidth != textPensize )
|
if( aWidth != textPensize )
|
||||||
SetCurrentLineWidth( aWidth );
|
SetCurrentLineWidth( aWidth );
|
||||||
|
|
|
@ -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…
Reference in New Issue