Altium PCB import: read and apply TrueType font names to text.
This commit is contained in:
parent
536744d37a
commit
e892405738
|
@ -170,6 +170,21 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
int ReadBytes( char* aOut, size_t aSize )
|
||||
{
|
||||
if( aSize > GetRemainingBytes() )
|
||||
{
|
||||
m_error = true;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy( aOut, m_pos, aSize );
|
||||
m_pos += aSize;
|
||||
return aSize;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t ReadKicadUnit()
|
||||
{
|
||||
return ConvertToKicadUnit( Read<int32_t>() );
|
||||
|
|
|
@ -904,7 +904,11 @@ ATEXT6::ATEXT6( ALTIUM_PARSER& aReader, std::map<uint32_t, wxString>& aStringTab
|
|||
aReader.Skip( 2 );
|
||||
isBold = aReader.Read<uint8_t>() != 0;
|
||||
isItalic = aReader.Read<uint8_t>() != 0;
|
||||
aReader.Skip( 64 ); // font_name
|
||||
|
||||
char fontData[64] = { 0 };
|
||||
aReader.ReadBytes( fontData, sizeof( fontData ) );
|
||||
fontname = wxString( fontData, wxMBConvUTF16LE(), sizeof( fontData ) );
|
||||
|
||||
isInverted = aReader.Read<uint8_t>() != 0;
|
||||
aReader.Skip( 4 );
|
||||
uint32_t stringIndex = aReader.Read<uint32_t>();
|
||||
|
|
|
@ -687,6 +687,7 @@ struct ATEXT6
|
|||
bool isDesignator;
|
||||
|
||||
ALTIUM_TEXT_TYPE fonttype;
|
||||
wxString fontname;
|
||||
|
||||
wxString text;
|
||||
|
||||
|
|
|
@ -3132,8 +3132,9 @@ void ALTIUM_PCB::ConvertTexts6ToEdaTextSettings( const ATEXT6& aElem, EDA_TEXT*
|
|||
{
|
||||
if( aElem.fonttype == ALTIUM_TEXT_TYPE::TRUETYPE )
|
||||
{
|
||||
// TODO: why is this required? Somehow, truetype size is calculated differently
|
||||
aEdaText->SetTextSize( VECTOR2I( aElem.height / 2, aElem.height / 2 ) );
|
||||
// TODO: why is this required? Somehow, truetype size is calculated differently (tuned to Arial)
|
||||
aEdaText->SetTextSize( VECTOR2I( aElem.height * 0.63, aElem.height * 0.63 ) );
|
||||
aEdaText->SetFont( KIFONT::FONT::GetFont( aElem.fontname, aElem.isBold, aElem.isItalic ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue