LTspice import: Support VCenter text justification

This commit is contained in:
Alex Shvartzkop 2023-07-11 03:59:09 +05:00
parent 1e149704b8
commit b957c1ad17
3 changed files with 47 additions and 36 deletions

View File

@ -699,48 +699,51 @@ SCH_TEXT* LTSPICE_SCH_PARSER::CreateSCH_TEXT( VECTOR2I aOffset, const wxString&
switch( aJustification )
{
case LTSPICE_SCHEMATIC::JUSTIFICATION::VLEFT:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::UP );
textItem->Move( { textItem->GetTextSize().x / 2, 0 } );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VTOP:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::UP );
textItem->Move( { -textItem->GetTextSize().x / 2, 0 } );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VBOTTOM:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::UP );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::LEFT:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::RIGHT );
textItem->Move( { 0, textItem->GetTextSize().x / 2 } );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::TOP:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::RIGHT );
textItem->Move( { 0, -textItem->GetTextSize().x / 2 } );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::BOTTOM:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::RIGHT );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VRIGHT:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::BOTTOM );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::RIGHT:
textItem->SetTextSpinStyle( TEXT_SPIN_STYLE::LEFT );
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_LEFT );
textItem->SetTextAngle( ANGLE_HORIZONTAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::CENTER:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_CENTER );
textItem->SetTextAngle( ANGLE_HORIZONTAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::RIGHT:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_RIGHT );
textItem->SetTextAngle( ANGLE_HORIZONTAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VLEFT:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_LEFT );
textItem->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VCENTER:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_CENTER );
textItem->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VRIGHT:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_RIGHT );
textItem->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VBOTTOM:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_CENTER );
textItem->SetVertJustify( GR_TEXT_V_ALIGN_BOTTOM );
textItem->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VTOP:
textItem->SetHorizJustify( GR_TEXT_H_ALIGN_CENTER );
textItem->SetVertJustify( GR_TEXT_V_ALIGN_TOP );
textItem->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::NONE:
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::BOTTOM:
case LTSPICE_SCHEMATIC::JUSTIFICATION::TOP: break;
}
return textItem;
@ -1138,6 +1141,11 @@ void LTSPICE_SCH_PARSER::CreateFields( LTSPICE_SCHEMATIC::LT_SYMBOL& aLTSymbol,
field->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VCENTER:
field->SetHorizJustify( GR_TEXT_H_ALIGN_CENTER );
field->SetTextAngle( ANGLE_VERTICAL );
break;
case LTSPICE_SCHEMATIC::JUSTIFICATION::VRIGHT:
field->SetHorizJustify( GR_TEXT_H_ALIGN_RIGHT );
field->SetTextAngle( ANGLE_VERTICAL );

View File

@ -391,13 +391,14 @@ LTSPICE_SCHEMATIC::JUSTIFICATION LTSPICE_SCHEMATIC::getTextJustification( const
justificationMap["RIGHT"] = JUSTIFICATION::RIGHT;
justificationMap["VLEFT"] = JUSTIFICATION::VLEFT;
justificationMap["VRIGHT"] = JUSTIFICATION::VRIGHT;
justificationMap["VCENTER"] = JUSTIFICATION::VCENTER;
justificationMap["BOTTOM"] = JUSTIFICATION::CENTER;
justificationMap["TOP"] = JUSTIFICATION::TOP;
justificationMap["VBOTTOM"] = JUSTIFICATION::VBOTTOM;
justificationMap["VTOP"] = JUSTIFICATION::VTOP;
if( justificationMap.find( aValue.Upper() ) == justificationMap.end() )
THROW_IO_ERROR( _( "Expecting LEFT, CENTER, RIGHT, TOP, BOTTOM, VLEFT, VRIGHT, VTOP or VBOTTOM" ) );
THROW_IO_ERROR( _( "Expecting LEFT, CENTER, RIGHT, TOP, BOTTOM, VLEFT, VRIGHT, VCENTER, VTOP or VBOTTOM" ) );
return justificationMap[ aValue.Upper() ];
}
@ -415,10 +416,11 @@ LTSPICE_SCHEMATIC::JUSTIFICATION LTSPICE_SCHEMATIC::getPinJustification( const w
pinJustificationMap["VBOTTOM"] = JUSTIFICATION::VBOTTOM;
pinJustificationMap["VLEFT"] = JUSTIFICATION::VLEFT;
pinJustificationMap["VRIGHT"] = JUSTIFICATION::VRIGHT;
pinJustificationMap["VCENTER"] = JUSTIFICATION::VCENTER;
pinJustificationMap["VTOP"] = JUSTIFICATION::VTOP;
if( pinJustificationMap.find( aValue.Upper() ) == pinJustificationMap.end() )
THROW_IO_ERROR( _( "Expecting NONE, BOTTOM, TOP, LEFT, RIGHT, VBOTTOM, VTOP, VLEFT or VRIGHT" ) );
THROW_IO_ERROR( _( "Expecting NONE, BOTTOM, TOP, LEFT, RIGHT, VBOTTOM, VTOP, VCENTER, VLEFT or VRIGHT" ) );
return pinJustificationMap[ aValue.Upper() ];
}

View File

@ -108,6 +108,7 @@ public:
VBOTTOM, // Vertical Bottom Justification
VLEFT, // Vertical Left Justification
VRIGHT, // Vertical Right Justification
VCENTER, // Vertical Center Justification
VTOP // Vertical Top Justification.
};