Browse Source

Fix centered rotated text in Pcbnew Eagle importer.

Fixes https://gitlab.com/kicad/code/kicad/issues/9466
6.0.7
Jeff Young 4 years ago
parent
commit
4fe025909d
  1. 2
      common/plugins/eagle/eagle_parser.h
  2. 37
      pcbnew/plugins/eagle/eagle_plugin.cpp

2
common/plugins/eagle/eagle_parser.h

@ -646,7 +646,7 @@ struct ETEXT
opt_erot rot; opt_erot rot;
enum { // for align enum { // for align
CENTER,
CENTER = 0,
CENTER_LEFT, CENTER_LEFT,
TOP_CENTER, TOP_CENTER,
TOP_LEFT, TOP_LEFT,

37
pcbnew/plugins/eagle/eagle_plugin.cpp

@ -767,13 +767,17 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics )
double degrees = t.rot->degrees; double degrees = t.rot->degrees;
if( degrees == 90 || t.rot->spin ) if( degrees == 90 || t.rot->spin )
{
pcbtxt->SetTextAngle( sign * t.rot->degrees * 10 ); pcbtxt->SetTextAngle( sign * t.rot->degrees * 10 );
}
else if( degrees == 180 ) else if( degrees == 180 )
align = ETEXT::TOP_RIGHT;
{
align = -align;
}
else if( degrees == 270 ) else if( degrees == 270 )
{ {
pcbtxt->SetTextAngle( sign * 90 * 10 ); pcbtxt->SetTextAngle( sign * 90 * 10 );
align = ETEXT::TOP_RIGHT;
align = -align;
} }
else else
{ {
@ -804,18 +808,22 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics )
switch( align ) switch( align )
{ {
case ETEXT::CENTER: case ETEXT::CENTER:
// this was the default in pcbtxt's constructor
pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::CENTER_LEFT: case ETEXT::CENTER_LEFT:
pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::CENTER_RIGHT: case ETEXT::CENTER_RIGHT:
pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT ); pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::TOP_CENTER: case ETEXT::TOP_CENTER:
pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP ); pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
break; break;
@ -830,6 +838,7 @@ void EAGLE_PLUGIN::loadPlain( wxXmlNode* aGraphics )
break; break;
case ETEXT::BOTTOM_CENTER: case ETEXT::BOTTOM_CENTER:
pcbtxt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM ); pcbtxt->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
break; break;
@ -1651,6 +1660,21 @@ void EAGLE_PLUGIN::orientFPText( FOOTPRINT* aFootprint, const EELEMENT& e, FP_TE
aFPText->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM ); aFPText->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
break; break;
case ETEXT::CENTER:
aFPText->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
aFPText->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break;
case ETEXT::CENTER_LEFT:
aFPText->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
aFPText->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break;
case ETEXT::CENTER_RIGHT:
aFPText->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
aFPText->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break;
default: default:
; ;
} }
@ -1960,18 +1984,22 @@ void EAGLE_PLUGIN::packageText( FOOTPRINT* aFootprint, wxXmlNode* aTree ) const
switch( align ) switch( align )
{ {
case ETEXT::CENTER: case ETEXT::CENTER:
// this was the default in pcbtxt's constructor
txt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
txt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::CENTER_LEFT: case ETEXT::CENTER_LEFT:
txt->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); txt->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
txt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::CENTER_RIGHT: case ETEXT::CENTER_RIGHT:
txt->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT ); txt->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
txt->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
break; break;
case ETEXT::TOP_CENTER: case ETEXT::TOP_CENTER:
txt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
txt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP ); txt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
break; break;
@ -1986,6 +2014,7 @@ void EAGLE_PLUGIN::packageText( FOOTPRINT* aFootprint, wxXmlNode* aTree ) const
break; break;
case ETEXT::BOTTOM_CENTER: case ETEXT::BOTTOM_CENTER:
txt->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
txt->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM ); txt->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
break; break;

Loading…
Cancel
Save