legacy plugin fully support text horiz/vert justification, eagle plugin text fixes
This commit is contained in:
parent
abe5c08e20
commit
6bb2fce7d9
|
@ -27,12 +27,13 @@
|
||||||
* @brief Definition of base KiCad text object.
|
* @brief Definition of base KiCad text object.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _EDA_TEXT_H_
|
#ifndef EDA_TEXT_H_
|
||||||
#define _EDA_TEXT_H_
|
#define EDA_TEXT_H_
|
||||||
|
|
||||||
#include <common.h> // wxStringSplit
|
#include <macros.h> // NORMALIZE_ANGLE_POS( angle );
|
||||||
#include <gr_basic.h> // EDA_DRAW_MODE_T
|
#include <common.h> // wxStringSplit
|
||||||
#include <base_struct.h> // EDA_RECT
|
#include <gr_basic.h> // EDA_DRAW_MODE_T
|
||||||
|
#include <base_struct.h> // EDA_RECT
|
||||||
|
|
||||||
|
|
||||||
// Graphic Text justify:
|
// Graphic Text justify:
|
||||||
|
@ -50,6 +51,7 @@ enum EDA_TEXT_VJUSTIFY_T {
|
||||||
GR_TEXT_VJUSTIFY_BOTTOM = 1
|
GR_TEXT_VJUSTIFY_BOTTOM = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Options to show solid segments (segments, texts...) */
|
/* Options to show solid segments (segments, texts...) */
|
||||||
enum EDA_DRAW_MODE_T {
|
enum EDA_DRAW_MODE_T {
|
||||||
LINE = 0, // segments are drawn as lines
|
LINE = 0, // segments are drawn as lines
|
||||||
|
@ -105,25 +107,29 @@ public:
|
||||||
* returns text thickness.
|
* returns text thickness.
|
||||||
* @return int - text thickness.
|
* @return int - text thickness.
|
||||||
*/
|
*/
|
||||||
int GetThickness() const { return m_Thickness; };
|
int GetThickness() const { return m_Thickness; };
|
||||||
|
|
||||||
void SetOrientation( double aOrientation ) { m_Orient = aOrientation; }
|
void SetOrientation( double aOrientation )
|
||||||
double GetOrientation() const { return m_Orient; }
|
{
|
||||||
|
NORMALIZE_ANGLE_POS( aOrientation );
|
||||||
|
m_Orient = aOrientation;
|
||||||
|
}
|
||||||
|
double GetOrientation() const { return m_Orient; }
|
||||||
|
|
||||||
void SetItalic( bool isItalic ) { m_Italic = isItalic; }
|
void SetItalic( bool isItalic ) { m_Italic = isItalic; }
|
||||||
bool IsItalic() const { return m_Italic; }
|
bool IsItalic() const { return m_Italic; }
|
||||||
|
|
||||||
void SetBold( bool aBold ) { m_Bold = aBold; }
|
void SetBold( bool aBold ) { m_Bold = aBold; }
|
||||||
bool IsBold() const { return m_Bold; }
|
bool IsBold() const { return m_Bold; }
|
||||||
|
|
||||||
void SetVisible( bool aVisible )
|
void SetVisible( bool aVisible )
|
||||||
{
|
{
|
||||||
( aVisible ) ? m_Attributs &= ~TEXT_NO_VISIBLE : m_Attributs |= TEXT_NO_VISIBLE;
|
( aVisible ) ? m_Attributs &= ~TEXT_NO_VISIBLE : m_Attributs |= TEXT_NO_VISIBLE;
|
||||||
}
|
}
|
||||||
bool IsVisible() const { return !( m_Attributs & TEXT_NO_VISIBLE ); }
|
bool IsVisible() const { return !( m_Attributs & TEXT_NO_VISIBLE ); }
|
||||||
|
|
||||||
void SetMirrored( bool isMirrored ) { m_Mirror = isMirrored; }
|
void SetMirrored( bool isMirrored ) { m_Mirror = isMirrored; }
|
||||||
bool IsMirrored() const { return m_Mirror; }
|
bool IsMirrored() const { return m_Mirror; }
|
||||||
|
|
||||||
bool IsDefaultFormatting() const;
|
bool IsDefaultFormatting() const;
|
||||||
|
|
||||||
|
@ -139,7 +145,7 @@ public:
|
||||||
* returns text size.
|
* returns text size.
|
||||||
* @return wxSize - text size.
|
* @return wxSize - text size.
|
||||||
*/
|
*/
|
||||||
const wxSize GetSize() const { return m_Size; };
|
const wxSize GetSize() const { return m_Size; };
|
||||||
|
|
||||||
/// named differently than the ones using multiple inheritance and including this class
|
/// named differently than the ones using multiple inheritance and including this class
|
||||||
void SetPos( const wxPoint& aPoint ) { m_Pos = aPoint; }
|
void SetPos( const wxPoint& aPoint ) { m_Pos = aPoint; }
|
||||||
|
@ -260,10 +266,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual const wxString GetText() const { return m_Text; }
|
virtual const wxString GetText() const { return m_Text; }
|
||||||
|
|
||||||
EDA_TEXT_HJUSTIFY_T GetHorizJustify() const { return m_HJustify; };
|
EDA_TEXT_HJUSTIFY_T GetHorizJustify() const { return m_HJustify; };
|
||||||
EDA_TEXT_VJUSTIFY_T GetVertJustify() const { return m_VJustify; };
|
EDA_TEXT_VJUSTIFY_T GetVertJustify() const { return m_VJustify; };
|
||||||
void SetHorizJustify( EDA_TEXT_HJUSTIFY_T aType ) { m_HJustify = aType; };
|
|
||||||
void SetVertJustify( EDA_TEXT_VJUSTIFY_T aType ) { m_VJustify = aType; };
|
void SetHorizJustify( EDA_TEXT_HJUSTIFY_T aType ) { m_HJustify = aType; };
|
||||||
|
void SetVertJustify( EDA_TEXT_VJUSTIFY_T aType ) { m_VJustify = aType; };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Format
|
* Function Format
|
||||||
|
@ -280,4 +287,4 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // _EDA_TEXT_H_
|
#endif // EDA_TEXT_H_
|
||||||
|
|
|
@ -129,7 +129,6 @@ void TEXTE_MODULE::SetDrawCoord()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
double angle = module->GetOrientation();
|
double angle = module->GetOrientation();
|
||||||
NORMALIZE_ANGLE_POS( angle );
|
|
||||||
|
|
||||||
RotatePoint( &m_Pos.x, &m_Pos.y, angle );
|
RotatePoint( &m_Pos.x, &m_Pos.y, angle );
|
||||||
m_Pos += module->GetPosition();
|
m_Pos += module->GetPosition();
|
||||||
|
@ -151,7 +150,6 @@ void TEXTE_MODULE::SetLocalCoord()
|
||||||
m_Pos0 = m_Pos - module->m_Pos;
|
m_Pos0 = m_Pos - module->m_Pos;
|
||||||
|
|
||||||
int angle = module->m_Orient;
|
int angle = module->m_Orient;
|
||||||
NORMALIZE_ANGLE_POS( angle );
|
|
||||||
|
|
||||||
RotatePoint( &m_Pos0.x, &m_Pos0.y, -angle );
|
RotatePoint( &m_Pos0.x, &m_Pos0.y, -angle );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1688,10 +1688,7 @@ void EAGLE_PLUGIN::orientModuleText( MODULE* m, const EELEMENT& e,
|
||||||
if( a.x && a.y ) // boost::optional
|
if( a.x && a.y ) // boost::optional
|
||||||
{
|
{
|
||||||
wxPoint pos( kicad_x( *a.x ), kicad_y( *a.y ) );
|
wxPoint pos( kicad_x( *a.x ), kicad_y( *a.y ) );
|
||||||
wxPoint pos0 = pos - m->GetPosition();
|
|
||||||
|
|
||||||
txt->SetPosition( pos );
|
txt->SetPosition( pos );
|
||||||
txt->SetPos0( pos0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Even though size and ratio are both optional, I am not seeing
|
// Even though size and ratio are both optional, I am not seeing
|
||||||
|
@ -1786,6 +1783,8 @@ void EAGLE_PLUGIN::orientModuleText( MODULE* m, const EELEMENT& e,
|
||||||
txt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
|
txt->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
txt->SetLocalCoord();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,52 @@ static inline unsigned ReadLine( LINE_READER* rdr, const char* caller )
|
||||||
|
|
||||||
using namespace std; // auto_ptr
|
using namespace std; // auto_ptr
|
||||||
|
|
||||||
|
|
||||||
|
static inline const char* ShowVertJustify( EDA_TEXT_VJUSTIFY_T vertical )
|
||||||
|
{
|
||||||
|
const char* rs;
|
||||||
|
switch( vertical )
|
||||||
|
{
|
||||||
|
case GR_TEXT_VJUSTIFY_TOP: rs = "T"; break;
|
||||||
|
case GR_TEXT_VJUSTIFY_CENTER: rs = "C"; break;
|
||||||
|
case GR_TEXT_VJUSTIFY_BOTTOM: rs = "B"; break;
|
||||||
|
default: rs = "?"; break;
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char* ShowHorizJustify( EDA_TEXT_HJUSTIFY_T horizontal )
|
||||||
|
{
|
||||||
|
const char* rs;
|
||||||
|
switch( horizontal )
|
||||||
|
{
|
||||||
|
case GR_TEXT_HJUSTIFY_LEFT: rs = "L"; break;
|
||||||
|
case GR_TEXT_HJUSTIFY_CENTER: rs = "C"; break;
|
||||||
|
case GR_TEXT_HJUSTIFY_RIGHT: rs = "R"; break;
|
||||||
|
default: rs = "?"; break;
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline EDA_TEXT_HJUSTIFY_T HorizJustify( const char* horizontal )
|
||||||
|
{
|
||||||
|
if( !strcmp( "L", horizontal ) )
|
||||||
|
return GR_TEXT_HJUSTIFY_LEFT;
|
||||||
|
if( !strcmp( "R", horizontal ) )
|
||||||
|
return GR_TEXT_HJUSTIFY_RIGHT;
|
||||||
|
return GR_TEXT_HJUSTIFY_CENTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline EDA_TEXT_VJUSTIFY_T VertJustify( const char* vertical )
|
||||||
|
{
|
||||||
|
if( !strcmp( "T", vertical ) )
|
||||||
|
return GR_TEXT_VJUSTIFY_TOP;
|
||||||
|
if( !strcmp( "B", vertical ) )
|
||||||
|
return GR_TEXT_VJUSTIFY_BOTTOM;
|
||||||
|
return GR_TEXT_VJUSTIFY_CENTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function intParse
|
* Function intParse
|
||||||
* parses an ASCII integer string with possible leading whitespace into
|
* parses an ASCII integer string with possible leading whitespace into
|
||||||
|
@ -1457,10 +1503,12 @@ void LEGACY_PLUGIN::loadMODULE_EDGE( MODULE* aModule )
|
||||||
void LEGACY_PLUGIN::loadMODULE_TEXT( TEXTE_MODULE* aText )
|
void LEGACY_PLUGIN::loadMODULE_TEXT( TEXTE_MODULE* aText )
|
||||||
{
|
{
|
||||||
const char* data;
|
const char* data;
|
||||||
char* line = m_reader->Line(); // current (old) line
|
const char* txt_end;
|
||||||
|
const char* line = m_reader->Line(); // current (old) line
|
||||||
|
|
||||||
// sscanf( line + 1, "%d %d %d %d %d %d %d %s %s %d %s", &type, &m_Pos0.x, &m_Pos0.y, &m_Size.y, &m_Size.x,
|
// sscanf( line + 1, "%d %d %d %d %d %d %d %s %s %d %s",
|
||||||
// &m_Orient, &m_Thickness, BufCar1, BufCar2, &layer, BufCar3 ) >= 10 )
|
// &type, &m_Pos0.x, &m_Pos0.y, &m_Size.y, &m_Size.x,
|
||||||
|
// &m_Orient, &m_Thickness, BufCar1, BufCar2, &layer, BufCar3 ) >= 10 )
|
||||||
|
|
||||||
// e.g. "T1 6940 -16220 350 300 900 60 M I 20 N "CFCARD"\r\n"
|
// e.g. "T1 6940 -16220 350 300 900 60 M I 20 N "CFCARD"\r\n"
|
||||||
// or T1 0 500 600 400 900 80 M V 20 N"74LS245"
|
// or T1 0 500 600 400 900 80 M V 20 N"74LS245"
|
||||||
|
@ -1481,7 +1529,15 @@ void LEGACY_PLUGIN::loadMODULE_TEXT( TEXTE_MODULE* aText )
|
||||||
|
|
||||||
// convert the "quoted, escaped, UTF8, text" to a wxString, find it by skipping
|
// convert the "quoted, escaped, UTF8, text" to a wxString, find it by skipping
|
||||||
// as far forward as needed until the first double quote.
|
// as far forward as needed until the first double quote.
|
||||||
ReadDelimitedText( &m_field, data );
|
txt_end = data + ReadDelimitedText( &m_field, data );
|
||||||
|
|
||||||
|
#if 1 && defined(DEBUG)
|
||||||
|
if( m_field == wxT( "ARM_C8" ) )
|
||||||
|
{
|
||||||
|
int breakhere = 1;
|
||||||
|
(void) breakhere;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
aText->SetText( m_field );
|
aText->SetText( m_field );
|
||||||
|
|
||||||
|
@ -1493,29 +1549,17 @@ void LEGACY_PLUGIN::loadMODULE_TEXT( TEXTE_MODULE* aText )
|
||||||
int layer = tmp ? intParse( tmp ) : SILKSCREEN_N_FRONT;
|
int layer = tmp ? intParse( tmp ) : SILKSCREEN_N_FRONT;
|
||||||
char* italic = strtok( NULL, delims );
|
char* italic = strtok( NULL, delims );
|
||||||
|
|
||||||
|
char* hjust = strtok( (char*) txt_end, delims );
|
||||||
|
char* vjust = strtok( NULL, delims );
|
||||||
|
|
||||||
if( type != TEXT_is_REFERENCE && type != TEXT_is_VALUE )
|
if( type != TEXT_is_REFERENCE && type != TEXT_is_VALUE )
|
||||||
type = TEXT_is_DIVERS;
|
type = TEXT_is_DIVERS;
|
||||||
|
|
||||||
aText->SetType( type );
|
aText->SetType( type );
|
||||||
|
|
||||||
aText->SetPos0( wxPoint( pos0_x, pos0_y ) );
|
aText->SetPos0( wxPoint( pos0_x, pos0_y ) );
|
||||||
|
|
||||||
/* @todo move to accessor? cannot reach these defines from here
|
|
||||||
pcbnew.h off limit because of globals in there
|
|
||||||
// Test for a reasonable size:
|
|
||||||
if( size0_x < TEXTS_MIN_SIZE )
|
|
||||||
size0_x = TEXTS_MIN_SIZE;
|
|
||||||
if( size0_y < TEXTS_MIN_SIZE )
|
|
||||||
size0_y = TEXTS_MIN_SIZE;
|
|
||||||
*/
|
|
||||||
|
|
||||||
aText->SetSize( wxSize( size0_x, size0_y ) );
|
aText->SetSize( wxSize( size0_x, size0_y ) );
|
||||||
|
|
||||||
// Due to the Pcbnew history, .m_Orient is saved in screen value
|
|
||||||
// but it is handled as relative to its parent footprint
|
|
||||||
|
|
||||||
// @todo is there now an opportunity for a better way as we move to degrees and
|
|
||||||
// a new file format?
|
|
||||||
orient -= ( (MODULE*) aText->GetParent() )->GetOrientation();
|
orient -= ( (MODULE*) aText->GetParent() )->GetOrientation();
|
||||||
|
|
||||||
aText->SetOrientation( orient );
|
aText->SetOrientation( orient );
|
||||||
|
@ -1537,11 +1581,17 @@ void LEGACY_PLUGIN::loadMODULE_TEXT( TEXTE_MODULE* aText )
|
||||||
|
|
||||||
aText->SetItalic( italic && *italic == 'I' );
|
aText->SetItalic( italic && *italic == 'I' );
|
||||||
|
|
||||||
|
if( hjust )
|
||||||
|
aText->SetHorizJustify( HorizJustify( hjust ) );
|
||||||
|
|
||||||
|
if( vjust )
|
||||||
|
aText->SetVertJustify( VertJustify( vjust ) );
|
||||||
|
|
||||||
if( layer < 0 )
|
if( layer < 0 )
|
||||||
layer = 0;
|
layer = 0;
|
||||||
if( layer > LAST_NO_COPPER_LAYER )
|
else if( layer > LAST_NO_COPPER_LAYER )
|
||||||
layer = LAST_NO_COPPER_LAYER;
|
layer = LAST_NO_COPPER_LAYER;
|
||||||
if( layer == LAYER_N_BACK )
|
else if( layer == LAYER_N_BACK )
|
||||||
layer = SILKSCREEN_N_BACK;
|
layer = SILKSCREEN_N_BACK;
|
||||||
else if( layer == LAYER_N_FRONT )
|
else if( layer == LAYER_N_FRONT )
|
||||||
layer = SILKSCREEN_N_FRONT;
|
layer = SILKSCREEN_N_FRONT;
|
||||||
|
@ -1851,29 +1901,22 @@ void LEGACY_PLUGIN::loadPCB_TEXT()
|
||||||
time_t timestamp = hexParse( data, &data );
|
time_t timestamp = hexParse( data, &data );
|
||||||
char* style = strtok( (char*) data, delims );
|
char* style = strtok( (char*) data, delims );
|
||||||
char* hJustify = strtok( NULL, delims );
|
char* hJustify = strtok( NULL, delims );
|
||||||
|
char* vJustify = strtok( NULL, delims );
|
||||||
|
|
||||||
pcbtxt->SetMirrored( !notMirrored );
|
pcbtxt->SetMirrored( !notMirrored );
|
||||||
pcbtxt->SetTimeStamp( timestamp );
|
pcbtxt->SetTimeStamp( timestamp );
|
||||||
pcbtxt->SetItalic( !strcmp( style, "Italic" ) );
|
pcbtxt->SetItalic( !strcmp( style, "Italic" ) );
|
||||||
|
|
||||||
EDA_TEXT_HJUSTIFY_T hj;
|
|
||||||
|
|
||||||
if( hJustify )
|
if( hJustify )
|
||||||
{
|
pcbtxt->SetHorizJustify( HorizJustify( hJustify ) );
|
||||||
switch( *hJustify )
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 'C': hj = GR_TEXT_HJUSTIFY_CENTER; break;
|
|
||||||
case 'L': hj = GR_TEXT_HJUSTIFY_LEFT; break;
|
|
||||||
case 'R': hj = GR_TEXT_HJUSTIFY_RIGHT; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hj = GR_TEXT_HJUSTIFY_CENTER;
|
// boom, somebody changed a constructor, I was relying on this:
|
||||||
|
wxASSERT( pcbtxt->GetHorizJustify() == GR_TEXT_HJUSTIFY_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
pcbtxt->SetHorizJustify( hj );
|
if( vJustify )
|
||||||
|
pcbtxt->SetVertJustify( VertJustify( vJustify ) );
|
||||||
|
|
||||||
if( layer < FIRST_COPPER_LAYER )
|
if( layer < FIRST_COPPER_LAYER )
|
||||||
layer = FIRST_COPPER_LAYER;
|
layer = FIRST_COPPER_LAYER;
|
||||||
|
@ -3133,14 +3176,13 @@ void LEGACY_PLUGIN::saveMODULE_TEXT( const TEXTE_MODULE* me ) const
|
||||||
|
|
||||||
wxString txt = me->GetText();
|
wxString txt = me->GetText();
|
||||||
|
|
||||||
fprintf( m_fp, "T%d %s %s %s %s %c %c %d %c %s\n",
|
fprintf( m_fp, "T%d %s %s %s %s %c %c %d %c %s",
|
||||||
me->GetType(),
|
me->GetType(),
|
||||||
fmtBIUPoint( me->GetPos0() ).c_str(), // m_Pos0.x, m_Pos0.y,
|
fmtBIUPoint( me->GetPos0() ).c_str(), // m_Pos0.x, m_Pos0.y,
|
||||||
#if 0
|
|
||||||
fmtBIUSize( me->GetSize() ).c_str(), // m_Size.y, m_Size.x,
|
// legacy has goofed reversed order: ( y, x )
|
||||||
#else
|
fmtBIUPair( me->GetSize().y, me->GetSize().x ).c_str(),
|
||||||
fmtBIUPair( me->GetSize().y, me->GetSize().x ).c_str(), // m_Size.y, m_Size.x,
|
|
||||||
#endif
|
|
||||||
fmtDEG( orient ).c_str(),
|
fmtDEG( orient ).c_str(),
|
||||||
fmtBIU( me->GetThickness() ).c_str(), // m_Thickness,
|
fmtBIU( me->GetThickness() ).c_str(), // m_Thickness,
|
||||||
me->IsMirrored() ? 'M' : 'N',
|
me->IsMirrored() ? 'M' : 'N',
|
||||||
|
@ -3150,6 +3192,17 @@ void LEGACY_PLUGIN::saveMODULE_TEXT( const TEXTE_MODULE* me ) const
|
||||||
EscapedUTF8( txt ).c_str()
|
EscapedUTF8( txt ).c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if( me->GetHorizJustify() != GR_TEXT_HJUSTIFY_CENTER ||
|
||||||
|
me->GetVertJustify() != GR_TEXT_VJUSTIFY_CENTER )
|
||||||
|
{
|
||||||
|
fprintf( m_fp, " %s %s\n",
|
||||||
|
ShowHorizJustify( me->GetHorizJustify() ),
|
||||||
|
ShowVertJustify( me->GetVertJustify() )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fprintf( m_fp, "\n" );
|
||||||
|
|
||||||
CHECK_WRITE_ERROR();
|
CHECK_WRITE_ERROR();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3751,22 +3804,22 @@ void LEGACY_PLUGIN::savePCB_TEXT( const TEXTE_PCB* me ) const
|
||||||
fmtBIU( me->GetThickness() ).c_str(),
|
fmtBIU( me->GetThickness() ).c_str(),
|
||||||
fmtDEG( me->GetOrientation() ).c_str() );
|
fmtDEG( me->GetOrientation() ).c_str() );
|
||||||
|
|
||||||
char hJustify;
|
fprintf( m_fp, "De %d %d %lX %s",
|
||||||
|
|
||||||
switch( me->GetHorizJustify() )
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case GR_TEXT_HJUSTIFY_CENTER: hJustify = 'C'; break;
|
|
||||||
case GR_TEXT_HJUSTIFY_LEFT: hJustify = 'L'; break;
|
|
||||||
case GR_TEXT_HJUSTIFY_RIGHT: hJustify = 'R'; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf( m_fp, "De %d %d %lX %s %c\n",
|
|
||||||
me->GetLayer(),
|
me->GetLayer(),
|
||||||
!me->IsMirrored(),
|
!me->IsMirrored(),
|
||||||
me->GetTimeStamp(),
|
me->GetTimeStamp(),
|
||||||
me->IsItalic() ? "Italic" : "Normal",
|
me->IsItalic() ? "Italic" : "Normal" );
|
||||||
hJustify );
|
|
||||||
|
if( me->GetHorizJustify() != GR_TEXT_HJUSTIFY_CENTER ||
|
||||||
|
me->GetVertJustify() != GR_TEXT_VJUSTIFY_CENTER )
|
||||||
|
{
|
||||||
|
fprintf( m_fp, " %s %s\n",
|
||||||
|
ShowHorizJustify( me->GetHorizJustify() ),
|
||||||
|
ShowVertJustify( me->GetVertJustify() )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fprintf( m_fp, "\n" );
|
||||||
|
|
||||||
fprintf( m_fp, "$EndTEXTPCB\n" );
|
fprintf( m_fp, "$EndTEXTPCB\n" );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue