Browse Source

Fix pin rotation parsing in the legacy symbol library plugin

Commit 352463df removes char values for PIN_ORIENTATION, so
magic_enum::enum_cast can no longer do its magic.

(cherry picked from commit 67f717b56a)
8.0
Maciej Suminski 1 year ago
committed by Seth Hillbrand
parent
commit
e2e95854c2
  1. 13
      eeschema/sch_io/kicad_legacy/sch_io_kicad_legacy_lib_cache.cpp

13
eeschema/sch_io/kicad_legacy/sch_io_kicad_legacy_lib_cache.cpp

@ -1159,11 +1159,16 @@ LIB_PIN* SCH_IO_KICAD_LEGACY_LIB_CACHE::loadPin( std::unique_ptr<LIB_SYMBOL>& aS
pos += tmp.size() + 1;
PIN_ORIENTATION orientation = PIN_ORIENTATION::PIN_RIGHT;
std::optional<PIN_ORIENTATION> optVal = magic_enum::enum_cast<PIN_ORIENTATION>( tmp[0] );
PIN_ORIENTATION orientation;
if( optVal.has_value() )
orientation = optVal.value();
switch( static_cast<char>( tmp[0] ) )
{
case 'U': orientation = PIN_ORIENTATION::PIN_UP; break;
case 'D': orientation = PIN_ORIENTATION::PIN_DOWN; break;
case 'L': orientation = PIN_ORIENTATION::PIN_LEFT; break;
case 'R': /* fall-through */
default: orientation = PIN_ORIENTATION::PIN_RIGHT; break;
}
tmp = tokens.GetNextToken();

Loading…
Cancel
Save