This commit is contained in:
Jeff Young 2024-02-16 12:54:28 +00:00
parent fa0ead98d8
commit e7abeb3c38
17 changed files with 147 additions and 71 deletions

View File

@ -199,6 +199,9 @@ const BOX2I DS_DRAW_ITEM_TEXT::GetApproxBBox()
case GR_TEXT_H_ALIGN_LEFT: break; case GR_TEXT_H_ALIGN_LEFT: break;
case GR_TEXT_H_ALIGN_CENTER: bbox.Offset( -bbox.GetWidth() / 2, 0 ); break; case GR_TEXT_H_ALIGN_CENTER: bbox.Offset( -bbox.GetWidth() / 2, 0 ); break;
case GR_TEXT_H_ALIGN_RIGHT: bbox.Offset( -bbox.GetWidth(), 0 ); break; case GR_TEXT_H_ALIGN_RIGHT: bbox.Offset( -bbox.GetWidth(), 0 ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( GetAttributes().m_Valign ) switch( GetAttributes().m_Valign )
@ -206,6 +209,9 @@ const BOX2I DS_DRAW_ITEM_TEXT::GetApproxBBox()
case GR_TEXT_V_ALIGN_TOP: break; case GR_TEXT_V_ALIGN_TOP: break;
case GR_TEXT_V_ALIGN_CENTER: bbox.Offset( 0, -bbox.GetHeight() / 2 ); break; case GR_TEXT_V_ALIGN_CENTER: bbox.Offset( 0, -bbox.GetHeight() / 2 ); break;
case GR_TEXT_V_ALIGN_BOTTOM: bbox.Offset( 0, -bbox.GetHeight() ); break; case GR_TEXT_V_ALIGN_BOTTOM: bbox.Offset( 0, -bbox.GetHeight() ); break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
bbox.Inflate( attrs.m_Size.x, attrs.m_Size.y / 2 ); bbox.Inflate( attrs.m_Size.x, attrs.m_Size.y / 2 );

View File

@ -649,6 +649,10 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const
if( !IsMirrored() ) if( !IsMirrored() )
bbox.SetX( bbox.GetX() - ( bbox.GetWidth() - italicOffset ) ); bbox.SetX( bbox.GetX() - ( bbox.GetWidth() - italicOffset ) );
break; break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( GetVertJustify() ) switch( GetVertJustify() )
@ -665,6 +669,10 @@ BOX2I EDA_TEXT::GetTextBox( int aLine, bool aInvertY ) const
bbox.SetY( bbox.GetY() - bbox.GetHeight() ); bbox.SetY( bbox.GetY() - bbox.GetHeight() );
bbox.Offset( 0, fudgeFactor ); bbox.Offset( 0, fudgeFactor );
break; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
bbox.Normalize(); // Make h and v sizes always >= 0 bbox.Normalize(); // Make h and v sizes always >= 0
@ -751,6 +759,10 @@ void EDA_TEXT::GetLinePositions( std::vector<VECTOR2I>& aPositions, int aLineCou
case GR_TEXT_V_ALIGN_BOTTOM: case GR_TEXT_V_ALIGN_BOTTOM:
pos.y -= ( aLineCount - 1 ) * offset.y; pos.y -= ( aLineCount - 1 ) * offset.y;
break; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
} }

View File

@ -217,6 +217,9 @@ void FONT::getLinePositions( const wxString& aText, const VECTOR2I& aPosition,
case GR_TEXT_V_ALIGN_TOP: break; case GR_TEXT_V_ALIGN_TOP: break;
case GR_TEXT_V_ALIGN_CENTER: offset.y -= height / 2; break; case GR_TEXT_V_ALIGN_CENTER: offset.y -= height / 2; break;
case GR_TEXT_V_ALIGN_BOTTOM: offset.y -= height; break; case GR_TEXT_V_ALIGN_BOTTOM: offset.y -= height; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
for( int i = 0; i < lineCount; i++ ) for( int i = 0; i < lineCount; i++ )
@ -228,9 +231,12 @@ void FONT::getLinePositions( const wxString& aText, const VECTOR2I& aPosition,
switch( aAttrs.m_Halign ) switch( aAttrs.m_Halign )
{ {
case GR_TEXT_H_ALIGN_LEFT: break; case GR_TEXT_H_ALIGN_LEFT: break;
case GR_TEXT_H_ALIGN_CENTER: lineOffset.x = -lineSize.x / 2; break; case GR_TEXT_H_ALIGN_CENTER: lineOffset.x = -lineSize.x / 2; break;
case GR_TEXT_H_ALIGN_RIGHT: lineOffset.x = -( lineSize.x + offset.x ); break; case GR_TEXT_H_ALIGN_RIGHT: lineOffset.x = -( lineSize.x + offset.x ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
aPositions.push_back( aPosition + lineOffset ); aPositions.push_back( aPosition + lineOffset );

View File

@ -1598,6 +1598,10 @@ void OPENGL_GAL::BitmapText( const wxString& aText, const VECTOR2I& aPosition,
//if( IsTextMirrored() ) //if( IsTextMirrored() )
//Translate( VECTOR2D( -textSize.x, 0 ) ); //Translate( VECTOR2D( -textSize.x, 0 ) );
break; break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( GetVerticalJustify() ) switch( GetVerticalJustify() )
@ -1614,6 +1618,10 @@ void OPENGL_GAL::BitmapText( const wxString& aText, const VECTOR2I& aPosition,
Translate( VECTOR2D( 0, -textSize.y ) ); Translate( VECTOR2D( 0, -textSize.y ) );
overbarHeight = -textSize.y / 2.0; overbarHeight = -textSize.y / 2.0;
break; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
int overbarLength = 0; int overbarLength = 0;

View File

@ -975,6 +975,9 @@ void DXF_PLOTTER::plotOneLineOfText( const VECTOR2I& aPos, const COLOR4D& aColor
case GR_TEXT_H_ALIGN_LEFT: h_code = 0; break; case GR_TEXT_H_ALIGN_LEFT: h_code = 0; break;
case GR_TEXT_H_ALIGN_CENTER: h_code = 1; break; case GR_TEXT_H_ALIGN_CENTER: h_code = 1; break;
case GR_TEXT_H_ALIGN_RIGHT: h_code = 2; break; case GR_TEXT_H_ALIGN_RIGHT: h_code = 2; break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( aAttributes.m_Valign ) switch( aAttributes.m_Valign )
@ -982,6 +985,9 @@ void DXF_PLOTTER::plotOneLineOfText( const VECTOR2I& aPos, const COLOR4D& aColor
case GR_TEXT_V_ALIGN_TOP: v_code = 3; break; case GR_TEXT_V_ALIGN_TOP: v_code = 3; break;
case GR_TEXT_V_ALIGN_CENTER: v_code = 2; break; case GR_TEXT_V_ALIGN_CENTER: v_code = 2; break;
case GR_TEXT_V_ALIGN_BOTTOM: v_code = 1; break; case GR_TEXT_V_ALIGN_BOTTOM: v_code = 1; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
// Position, size, rotation and alignment // Position, size, rotation and alignment

View File

@ -381,6 +381,9 @@ void PSLIKE_PLOTTER::computeTextParameters( const VECTOR2I& aPos,
case GR_TEXT_H_ALIGN_CENTER: dx = -tw / 2; break; case GR_TEXT_H_ALIGN_CENTER: dx = -tw / 2; break;
case GR_TEXT_H_ALIGN_RIGHT: dx = -tw; break; case GR_TEXT_H_ALIGN_RIGHT: dx = -tw; break;
case GR_TEXT_H_ALIGN_LEFT: dx = 0; break; case GR_TEXT_H_ALIGN_LEFT: dx = 0; break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( aV_justify ) switch( aV_justify )
@ -388,6 +391,9 @@ void PSLIKE_PLOTTER::computeTextParameters( const VECTOR2I& aPos,
case GR_TEXT_V_ALIGN_CENTER: dy = th / 2; break; case GR_TEXT_V_ALIGN_CENTER: dy = th / 2; break;
case GR_TEXT_V_ALIGN_TOP: dy = th; break; case GR_TEXT_V_ALIGN_TOP: dy = th; break;
case GR_TEXT_V_ALIGN_BOTTOM: dy = 0; break; case GR_TEXT_V_ALIGN_BOTTOM: dy = 0; break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
RotatePoint( &dx, &dy, aOrient ); RotatePoint( &dx, &dy, aOrient );

View File

@ -816,6 +816,9 @@ void SVG_PLOTTER::Text( const VECTOR2I& aPos,
case GR_TEXT_H_ALIGN_CENTER: hjust = "middle"; break; case GR_TEXT_H_ALIGN_CENTER: hjust = "middle"; break;
case GR_TEXT_H_ALIGN_RIGHT: hjust = "end"; break; case GR_TEXT_H_ALIGN_RIGHT: hjust = "end"; break;
case GR_TEXT_H_ALIGN_LEFT: hjust = "start"; break; case GR_TEXT_H_ALIGN_LEFT: hjust = "start"; break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
switch( aV_justify ) switch( aV_justify )
@ -823,6 +826,9 @@ void SVG_PLOTTER::Text( const VECTOR2I& aPos,
case GR_TEXT_V_ALIGN_CENTER: text_pos.y += aSize.y / 2; break; case GR_TEXT_V_ALIGN_CENTER: text_pos.y += aSize.y / 2; break;
case GR_TEXT_V_ALIGN_TOP: text_pos.y += aSize.y; break; case GR_TEXT_V_ALIGN_TOP: text_pos.y += aSize.y; break;
case GR_TEXT_V_ALIGN_BOTTOM: break; case GR_TEXT_V_ALIGN_BOTTOM: break;
case GR_TEXT_V_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
VECTOR2I text_size; VECTOR2I text_size;

View File

@ -154,16 +154,18 @@ bool DIALOG_LIB_TEXT_PROPERTIES::TransferDataToWindow()
switch ( m_graphicText->GetHorizJustify() ) switch ( m_graphicText->GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: m_hAlignLeft->Check( true ); break; case GR_TEXT_H_ALIGN_LEFT: m_hAlignLeft->Check( true ); break;
case GR_TEXT_H_ALIGN_CENTER: m_hAlignCenter->Check( true ); break; case GR_TEXT_H_ALIGN_CENTER: m_hAlignCenter->Check( true ); break;
case GR_TEXT_H_ALIGN_RIGHT: m_hAlignRight->Check( true ); break; case GR_TEXT_H_ALIGN_RIGHT: m_hAlignRight->Check( true ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: break;
} }
switch ( m_graphicText->GetVertJustify() ) switch ( m_graphicText->GetVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check( true ); break; case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check( true ); break;
case GR_TEXT_V_ALIGN_CENTER: m_vAlignCenter->Check( true ); break; case GR_TEXT_V_ALIGN_CENTER: m_vAlignCenter->Check( true ); break;
case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check( true ); break; case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check( true ); break;
case GR_TEXT_V_ALIGN_INDETERMINATE: break;
} }
} }
else else

View File

@ -162,16 +162,18 @@ bool DIALOG_LIB_TEXTBOX_PROPERTIES::TransferDataToWindow()
switch( m_currentText->GetHorizJustify() ) switch( m_currentText->GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: m_hAlignLeft->Check(); break; case GR_TEXT_H_ALIGN_LEFT: m_hAlignLeft->Check(); break;
case GR_TEXT_H_ALIGN_CENTER: m_hAlignCenter->Check(); break; case GR_TEXT_H_ALIGN_CENTER: m_hAlignCenter->Check(); break;
case GR_TEXT_H_ALIGN_RIGHT: m_hAlignRight->Check(); break; case GR_TEXT_H_ALIGN_RIGHT: m_hAlignRight->Check(); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: break;
} }
switch( m_currentText->GetVertJustify() ) switch( m_currentText->GetVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check(); break; case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check(); break;
case GR_TEXT_V_ALIGN_CENTER: m_vAlignCenter->Check(); break; case GR_TEXT_V_ALIGN_CENTER: m_vAlignCenter->Check(); break;
case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check(); break; case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check(); break;
case GR_TEXT_V_ALIGN_INDETERMINATE: break;
} }
if( m_currentText->GetTextAngle() == ANGLE_VERTICAL ) if( m_currentText->GetTextAngle() == ANGLE_VERTICAL )

View File

@ -584,9 +584,10 @@ wxString FIELDS_GRID_TABLE<T>::GetValue( int aRow, int aCol )
case FDC_H_ALIGN: case FDC_H_ALIGN:
switch ( field.GetEffectiveHorizJustify() ) switch ( field.GetEffectiveHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: return _( "Left" ); case GR_TEXT_H_ALIGN_LEFT: return _( "Left" );
case GR_TEXT_H_ALIGN_CENTER: return _( "Center" ); case GR_TEXT_H_ALIGN_CENTER: return _( "Center" );
case GR_TEXT_H_ALIGN_RIGHT: return _( "Right" ); case GR_TEXT_H_ALIGN_RIGHT: return _( "Right" );
case GR_TEXT_H_ALIGN_INDETERMINATE: return INDETERMINATE_STATE;
} }
break; break;
@ -594,9 +595,10 @@ wxString FIELDS_GRID_TABLE<T>::GetValue( int aRow, int aCol )
case FDC_V_ALIGN: case FDC_V_ALIGN:
switch ( field.GetEffectiveVertJustify() ) switch ( field.GetEffectiveVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: return _( "Top" ); case GR_TEXT_V_ALIGN_TOP: return _( "Top" );
case GR_TEXT_V_ALIGN_CENTER: return _( "Center" ); case GR_TEXT_V_ALIGN_CENTER: return _( "Center" );
case GR_TEXT_V_ALIGN_BOTTOM: return _( "Bottom" ); case GR_TEXT_V_ALIGN_BOTTOM: return _( "Bottom" );
case GR_TEXT_V_ALIGN_INDETERMINATE: return INDETERMINATE_STATE;
} }
break; break;

View File

@ -555,18 +555,20 @@ void LIB_FIELD::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
switch ( GetHorizJustify() ) switch ( GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break; case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break;
case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break; case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "H Justification" ), msg ); aList.emplace_back( _( "H Justification" ), msg );
switch ( GetVertJustify() ) switch ( GetVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break; case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break;
case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break; case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "V Justification" ), msg ); aList.emplace_back( _( "V Justification" ), msg );

View File

@ -422,18 +422,20 @@ void LIB_TEXT::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_IT
switch ( GetHorizJustify() ) switch ( GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break; case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break;
case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break; case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "H Justification" ), msg ); aList.emplace_back( _( "H Justification" ), msg );
switch ( GetVertJustify() ) switch ( GetVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break; case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break;
case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break; case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "V Justification" ), msg ); aList.emplace_back( _( "V Justification" ), msg );

View File

@ -919,18 +919,20 @@ void SCH_FIELD::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
switch ( GetHorizJustify() ) switch ( GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break; case GR_TEXT_H_ALIGN_LEFT: msg = _( "Left" ); break;
case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_H_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break; case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Right" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "H Justification" ), msg ); aList.emplace_back( _( "H Justification" ), msg );
switch ( GetVertJustify() ) switch ( GetVertJustify() )
{ {
case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break; case GR_TEXT_V_ALIGN_TOP: msg = _( "Top" ); break;
case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break; case GR_TEXT_V_ALIGN_CENTER: msg = _( "Center" ); break;
case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break; case GR_TEXT_V_ALIGN_BOTTOM: msg = _( "Bottom" ); break;
case GR_TEXT_V_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "V Justification" ), msg ); aList.emplace_back( _( "V Justification" ), msg );

View File

@ -1551,19 +1551,10 @@ void SCH_DIRECTIVE_LABEL::MirrorHorizontally( int aCenter )
for( SCH_FIELD& field : m_fields ) for( SCH_FIELD& field : m_fields )
{ {
switch( field.GetHorizJustify() ) if( field.GetHorizJustify() == GR_TEXT_H_ALIGN_LEFT )
{
case GR_TEXT_H_ALIGN_LEFT:
field.SetHorizJustify( GR_TEXT_H_ALIGN_RIGHT ); field.SetHorizJustify( GR_TEXT_H_ALIGN_RIGHT );
break; else if( field.GetHorizJustify() == GR_TEXT_H_ALIGN_RIGHT )
case GR_TEXT_H_ALIGN_CENTER:
break;
case GR_TEXT_H_ALIGN_RIGHT:
field.SetHorizJustify( GR_TEXT_H_ALIGN_LEFT ); field.SetHorizJustify( GR_TEXT_H_ALIGN_LEFT );
break;
}
VECTOR2I pos = field.GetTextPos(); VECTOR2I pos = field.GetTextPos();
VECTOR2I delta = old_pos - pos; VECTOR2I delta = old_pos - pos;

View File

@ -709,16 +709,18 @@ void SCH_PAINTER::boxText( const wxString& aText, const VECTOR2D& aPosition,
switch( aAttrs.m_Halign ) switch( aAttrs.m_Halign )
{ {
case GR_TEXT_H_ALIGN_LEFT: break; case GR_TEXT_H_ALIGN_LEFT: break;
case GR_TEXT_H_ALIGN_CENTER: box.SetX( box.GetX() - box.GetWidth() / 2 ); break; case GR_TEXT_H_ALIGN_CENTER: box.SetX( box.GetX() - box.GetWidth() / 2 ); break;
case GR_TEXT_H_ALIGN_RIGHT: box.SetX( box.GetX() - box.GetWidth() ); break; case GR_TEXT_H_ALIGN_RIGHT: box.SetX( box.GetX() - box.GetWidth() ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: wxFAIL_MSG( wxT( "Legal only in dialogs" ) ); break;
} }
switch( aAttrs.m_Valign ) switch( aAttrs.m_Valign )
{ {
case GR_TEXT_V_ALIGN_TOP: break; case GR_TEXT_V_ALIGN_TOP: break;
case GR_TEXT_V_ALIGN_CENTER: box.SetY( box.GetY() - box.GetHeight() / 2 ); break; case GR_TEXT_V_ALIGN_CENTER: box.SetY( box.GetY() - box.GetHeight() / 2 ); break;
case GR_TEXT_V_ALIGN_BOTTOM: box.SetY( box.GetY() - box.GetHeight() ); break; case GR_TEXT_V_ALIGN_BOTTOM: box.SetY( box.GetY() - box.GetHeight() ); break;
case GR_TEXT_V_ALIGN_INDETERMINATE: wxFAIL_MSG( wxT( "Legal only in dialogs" ) ); break;
} }
// Give the highlight a bit of margin. // Give the highlight a bit of margin.
@ -1178,18 +1180,36 @@ void SCH_PAINTER::draw( const LIB_TEXT* aText, int aLayer, bool aDimmed )
{ {
switch( attrs.m_Halign ) switch( attrs.m_Halign )
{ {
case GR_TEXT_H_ALIGN_LEFT: pos.y = bBox.GetBottom() + shadowOffset; break; case GR_TEXT_H_ALIGN_LEFT:
case GR_TEXT_H_ALIGN_CENTER: pos.y = ( bBox.GetTop() + bBox.GetBottom() ) / 2; break; pos.y = bBox.GetBottom() + shadowOffset;
case GR_TEXT_H_ALIGN_RIGHT: pos.y = bBox.GetTop() - shadowOffset; break; break;
case GR_TEXT_H_ALIGN_CENTER:
pos.y = ( bBox.GetTop() + bBox.GetBottom() ) / 2.0;
break;
case GR_TEXT_H_ALIGN_RIGHT:
pos.y = bBox.GetTop() - shadowOffset;
break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
} }
else else
{ {
switch( attrs.m_Halign ) switch( attrs.m_Halign )
{ {
case GR_TEXT_H_ALIGN_LEFT: pos.x = bBox.GetLeft() - shadowOffset; break; case GR_TEXT_H_ALIGN_LEFT:
case GR_TEXT_H_ALIGN_CENTER: pos.x = ( bBox.GetLeft() + bBox.GetRight() ) / 2; break; pos.x = bBox.GetLeft() - shadowOffset;
case GR_TEXT_H_ALIGN_RIGHT: pos.x = bBox.GetRight() + shadowOffset; break; break;
case GR_TEXT_H_ALIGN_CENTER:
pos.x = ( bBox.GetLeft() + bBox.GetRight() ) / 2.0;
break;
case GR_TEXT_H_ALIGN_RIGHT:
pos.x = bBox.GetRight() + shadowOffset;
break;
case GR_TEXT_H_ALIGN_INDETERMINATE:
wxFAIL_MSG( wxT( "Indeterminate state legal only in dialogs." ) );
break;
} }
} }

View File

@ -416,9 +416,10 @@ void SCH_TEXT::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_IT
switch( GetHorizJustify() ) switch( GetHorizJustify() )
{ {
case GR_TEXT_H_ALIGN_LEFT: msg = _( "Align left" ); break; case GR_TEXT_H_ALIGN_LEFT: msg = _( "Align left" ); break;
case GR_TEXT_H_ALIGN_CENTER: msg = _( "Align center" ); break; case GR_TEXT_H_ALIGN_CENTER: msg = _( "Align center" ); break;
case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Align right" ); break; case GR_TEXT_H_ALIGN_RIGHT: msg = _( "Align right" ); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: msg = INDETERMINATE_STATE; break;
} }
aList.emplace_back( _( "Justification" ), msg ); aList.emplace_back( _( "Justification" ), msg );

View File

@ -330,9 +330,10 @@ void PROPERTIES_FRAME::CopyPrmsFromItemToPanel( DS_DATA_ITEM* aItem )
switch( item->m_Hjustify ) switch( item->m_Hjustify )
{ {
case GR_TEXT_H_ALIGN_LEFT: m_alignLeft->Check(); break; case GR_TEXT_H_ALIGN_LEFT: m_alignLeft->Check(); break;
case GR_TEXT_H_ALIGN_CENTER: m_alignCenter->Check(); break; case GR_TEXT_H_ALIGN_CENTER: m_alignCenter->Check(); break;
case GR_TEXT_H_ALIGN_RIGHT: m_alignRight->Check(); break; case GR_TEXT_H_ALIGN_RIGHT: m_alignRight->Check(); break;
case GR_TEXT_H_ALIGN_INDETERMINATE: break;
} }
for( BITMAP_BUTTON* btn : { m_vAlignTop, m_vAlignMiddle, m_vAlignBottom } ) for( BITMAP_BUTTON* btn : { m_vAlignTop, m_vAlignMiddle, m_vAlignBottom } )
@ -340,9 +341,10 @@ void PROPERTIES_FRAME::CopyPrmsFromItemToPanel( DS_DATA_ITEM* aItem )
switch( item->m_Vjustify ) switch( item->m_Vjustify )
{ {
case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check(); break; case GR_TEXT_V_ALIGN_TOP: m_vAlignTop->Check(); break;
case GR_TEXT_V_ALIGN_CENTER: m_vAlignMiddle->Check(); break; case GR_TEXT_V_ALIGN_CENTER: m_vAlignMiddle->Check(); break;
case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check(); break; case GR_TEXT_V_ALIGN_BOTTOM: m_vAlignBottom->Check(); break;
case GR_TEXT_V_ALIGN_INDETERMINATE: break;
} }
// Text size // Text size