Commit b920fa00 authored by Dick Hollenbeck's avatar Dick Hollenbeck

1) Fix compiles using wx 3.x and 2.8.

2) Fix passing wxString to common/config_params so lookup keys 
   can be dynamically generated.  This gives ~/.kicad files all the colors.
3) Fix LEGACY_PLUGIN so it loads all layer types and masks properly.
4) Extend the table in router/pns_index.h to 128 from 64.
parent b76d0c53
...@@ -47,7 +47,7 @@ void wxConfigSaveParams( wxConfigBase* aCfg, ...@@ -47,7 +47,7 @@ void wxConfigSaveParams( wxConfigBase* aCfg,
BOOST_FOREACH( const PARAM_CFG_BASE& param, aList ) BOOST_FOREACH( const PARAM_CFG_BASE& param, aList )
{ {
if( param.m_Group ) if( !!param.m_Group )
aCfg->SetPath( param.m_Group ); aCfg->SetPath( param.m_Group );
else else
aCfg->SetPath( aGroup ); aCfg->SetPath( aGroup );
...@@ -57,7 +57,7 @@ void wxConfigSaveParams( wxConfigBase* aCfg, ...@@ -57,7 +57,7 @@ void wxConfigSaveParams( wxConfigBase* aCfg,
if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data
{ {
if( param.m_Ident ) if( !!param.m_Ident )
aCfg->DeleteGroup( param.m_Ident ); aCfg->DeleteGroup( param.m_Ident );
} }
else else
...@@ -75,7 +75,7 @@ void wxConfigLoadParams( wxConfigBase* aCfg, ...@@ -75,7 +75,7 @@ void wxConfigLoadParams( wxConfigBase* aCfg,
BOOST_FOREACH( const PARAM_CFG_BASE& param, aList ) BOOST_FOREACH( const PARAM_CFG_BASE& param, aList )
{ {
if( param.m_Group ) if( !!param.m_Group )
aCfg->SetPath( param.m_Group ); aCfg->SetPath( param.m_Group );
else else
aCfg->SetPath( aGroup ); aCfg->SetPath( aGroup );
...@@ -99,7 +99,7 @@ void wxConfigSaveSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList ) ...@@ -99,7 +99,7 @@ void wxConfigSaveSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList )
if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data
{ {
if( param.m_Ident ) if( !!param.m_Ident )
aCfg->DeleteGroup( param.m_Ident ); aCfg->DeleteGroup( param.m_Ident );
} }
else else
...@@ -137,7 +137,7 @@ void ConfigBaseWriteDouble( wxConfigBase* aConfig, const wxString& aKey, double ...@@ -137,7 +137,7 @@ void ConfigBaseWriteDouble( wxConfigBase* aConfig, const wxString& aKey, double
} }
PARAM_CFG_BASE::PARAM_CFG_BASE( const wxChar* ident, const paramcfg_id type, PARAM_CFG_BASE::PARAM_CFG_BASE( const wxString& ident, const paramcfg_id type,
const wxChar* group ) const wxChar* group )
{ {
m_Ident = ident; m_Ident = ident;
...@@ -147,7 +147,7 @@ PARAM_CFG_BASE::PARAM_CFG_BASE( const wxChar* ident, const paramcfg_id type, ...@@ -147,7 +147,7 @@ PARAM_CFG_BASE::PARAM_CFG_BASE( const wxChar* ident, const paramcfg_id type,
} }
PARAM_CFG_INT::PARAM_CFG_INT( const wxChar* ident, int* ptparam, PARAM_CFG_INT::PARAM_CFG_INT( const wxString& ident, int* ptparam,
int default_val, int min, int max, int default_val, int min, int max,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_INT, group ) PARAM_CFG_BASE( ident, PARAM_INT, group )
...@@ -159,7 +159,7 @@ PARAM_CFG_INT::PARAM_CFG_INT( const wxChar* ident, int* ptparam, ...@@ -159,7 +159,7 @@ PARAM_CFG_INT::PARAM_CFG_INT( const wxChar* ident, int* ptparam,
} }
PARAM_CFG_INT::PARAM_CFG_INT( bool Insetup, const wxChar* ident, int* ptparam, PARAM_CFG_INT::PARAM_CFG_INT( bool Insetup, const wxString& ident, int* ptparam,
int default_val, int min, int max, int default_val, int min, int max,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_INT, group ) PARAM_CFG_BASE( ident, PARAM_INT, group )
...@@ -195,7 +195,7 @@ void PARAM_CFG_INT::SaveParam( wxConfigBase* aConfig ) const ...@@ -195,7 +195,7 @@ void PARAM_CFG_INT::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( const wxChar* ident, int* ptparam, PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( const wxString& ident, int* ptparam,
int default_val, int min, int max, int default_val, int min, int max,
const wxChar* group, double aBiu2cfgunit ) : const wxChar* group, double aBiu2cfgunit ) :
PARAM_CFG_INT( ident, ptparam, default_val, min, max, group ) PARAM_CFG_INT( ident, ptparam, default_val, min, max, group )
...@@ -206,7 +206,7 @@ PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( const wxChar* ident, int* pt ...@@ -206,7 +206,7 @@ PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( const wxChar* ident, int* pt
PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( bool Insetup, PARAM_CFG_INT_WITH_SCALE::PARAM_CFG_INT_WITH_SCALE( bool Insetup,
const wxChar* ident, int* ptparam, const wxString& ident, int* ptparam,
int default_val, int min, int max, int default_val, int min, int max,
const wxChar* group, double aBiu2cfgunit ) : const wxChar* group, double aBiu2cfgunit ) :
PARAM_CFG_INT( Insetup, ident, ptparam, default_val, min, max, group ) PARAM_CFG_INT( Insetup, ident, ptparam, default_val, min, max, group )
...@@ -246,7 +246,7 @@ void PARAM_CFG_INT_WITH_SCALE::SaveParam( wxConfigBase* aConfig ) const ...@@ -246,7 +246,7 @@ void PARAM_CFG_INT_WITH_SCALE::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxChar* ident, EDA_COLOR_T* ptparam, PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxString& ident, EDA_COLOR_T* ptparam,
EDA_COLOR_T default_val, EDA_COLOR_T default_val,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group ) PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group )
...@@ -257,7 +257,7 @@ PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxChar* ident, EDA_COLOR_T* ptpara ...@@ -257,7 +257,7 @@ PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxChar* ident, EDA_COLOR_T* ptpara
PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( bool Insetup, PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( bool Insetup,
const wxChar* ident, const wxString& ident,
EDA_COLOR_T* ptparam, EDA_COLOR_T* ptparam,
EDA_COLOR_T default_val, EDA_COLOR_T default_val,
const wxChar* group ) : const wxChar* group ) :
...@@ -291,7 +291,7 @@ void PARAM_CFG_SETCOLOR::SaveParam( wxConfigBase* aConfig ) const ...@@ -291,7 +291,7 @@ void PARAM_CFG_SETCOLOR::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxChar* ident, double* ptparam, PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxString& ident, double* ptparam,
double default_val, double min, double max, double default_val, double min, double max,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group ) PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
...@@ -304,7 +304,7 @@ PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxChar* ident, double* ptparam, ...@@ -304,7 +304,7 @@ PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxChar* ident, double* ptparam,
PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( bool Insetup, PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( bool Insetup,
const wxChar* ident, const wxString& ident,
double* ptparam, double* ptparam,
double default_val, double default_val,
double min, double min,
...@@ -348,7 +348,7 @@ void PARAM_CFG_DOUBLE::SaveParam( wxConfigBase* aConfig ) const ...@@ -348,7 +348,7 @@ void PARAM_CFG_DOUBLE::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxChar* ident, bool* ptparam, PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxString& ident, bool* ptparam,
int default_val, const wxChar* group ) : int default_val, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_BOOL, group ) PARAM_CFG_BASE( ident, PARAM_BOOL, group )
{ {
...@@ -358,7 +358,7 @@ PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxChar* ident, bool* ptparam, ...@@ -358,7 +358,7 @@ PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxChar* ident, bool* ptparam,
PARAM_CFG_BOOL::PARAM_CFG_BOOL( bool Insetup, PARAM_CFG_BOOL::PARAM_CFG_BOOL( bool Insetup,
const wxChar* ident, const wxString& ident,
bool* ptparam, bool* ptparam,
int default_val, int default_val,
const wxChar* group ) : const wxChar* group ) :
...@@ -390,7 +390,7 @@ void PARAM_CFG_BOOL::SaveParam( wxConfigBase* aConfig ) const ...@@ -390,7 +390,7 @@ void PARAM_CFG_BOOL::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxChar* ident, PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxString& ident,
wxString* ptparam, wxString* ptparam,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_WXSTRING, group ) PARAM_CFG_BASE( ident, PARAM_WXSTRING, group )
...@@ -399,7 +399,7 @@ PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxChar* ident, ...@@ -399,7 +399,7 @@ PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxChar* ident,
} }
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxChar* ident, PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxString& ident,
wxString* ptparam, wxString* ptparam,
const wxString& default_val, const wxString& default_val,
const wxChar* group ) : const wxChar* group ) :
...@@ -407,7 +407,7 @@ PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxChar* ident, ...@@ -407,7 +407,7 @@ PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxChar* ident,
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Setup = Insetup; m_Setup = Insetup;
m_default = default_val; m_default = default_val;
} }
...@@ -429,7 +429,7 @@ void PARAM_CFG_WXSTRING::SaveParam( wxConfigBase* aConfig ) const ...@@ -429,7 +429,7 @@ void PARAM_CFG_WXSTRING::SaveParam( wxConfigBase* aConfig ) const
} }
PARAM_CFG_FILENAME::PARAM_CFG_FILENAME( const wxChar* ident, PARAM_CFG_FILENAME::PARAM_CFG_FILENAME( const wxString& ident,
wxString* ptparam, wxString* ptparam,
const wxChar* group ) : const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_FILENAME, group ) PARAM_CFG_BASE( ident, PARAM_FILENAME, group )
......
...@@ -89,13 +89,14 @@ enum paramcfg_id { ...@@ -89,13 +89,14 @@ enum paramcfg_id {
class PARAM_CFG_BASE class PARAM_CFG_BASE
{ {
public: public:
const wxChar* m_Ident; ///< Keyword in config data wxString m_Ident; ///< Keyword in config data
paramcfg_id m_Type; ///< Type of parameter paramcfg_id m_Type; ///< Type of parameter
const wxChar* m_Group; ///< Group name (this is like a path in the config data) wxString m_Group; ///< Group name (this is like a path in the config data)
bool m_Setup; ///< Install or Project based parameter, true == install bool m_Setup; ///< Install or Project based parameter, true == install
public: public:
PARAM_CFG_BASE( const wxChar* ident, const paramcfg_id type, const wxChar* group = NULL ); PARAM_CFG_BASE( const wxString& ident, const paramcfg_id type,
const wxChar* group = NULL );
virtual ~PARAM_CFG_BASE() {} virtual ~PARAM_CFG_BASE() {}
/** /**
...@@ -126,12 +127,12 @@ public: ...@@ -126,12 +127,12 @@ public:
int m_Default; ///< The default value of the parameter int m_Default; ///< The default value of the parameter
public: public:
PARAM_CFG_INT( const wxChar* ident, int* ptparam, PARAM_CFG_INT( const wxString& ident, int* ptparam,
int default_val = 0, int default_val = 0,
int min = std::numeric_limits<int>::min(), int min = std::numeric_limits<int>::min(),
int max = std::numeric_limits<int>::max(), int max = std::numeric_limits<int>::max(),
const wxChar* group = NULL ); const wxChar* group = NULL );
PARAM_CFG_INT( bool Insetup, const wxChar* ident, int* ptparam, PARAM_CFG_INT( bool Insetup, const wxString& ident, int* ptparam,
int default_val = 0, int default_val = 0,
int min = std::numeric_limits<int>::min(), int min = std::numeric_limits<int>::min(),
int max = std::numeric_limits<int>::max(), int max = std::numeric_limits<int>::max(),
...@@ -154,13 +155,13 @@ public: ...@@ -154,13 +155,13 @@ public:
double m_BIU_to_cfgunit; ///< the factor to convert the saved value in internal value double m_BIU_to_cfgunit; ///< the factor to convert the saved value in internal value
public: public:
PARAM_CFG_INT_WITH_SCALE( const wxChar* ident, int* ptparam, PARAM_CFG_INT_WITH_SCALE( const wxString& ident, int* ptparam,
int default_val = 0, int default_val = 0,
int min = std::numeric_limits<int>::min(), int min = std::numeric_limits<int>::min(),
int max = std::numeric_limits<int>::max(), int max = std::numeric_limits<int>::max(),
const wxChar* group = NULL, const wxChar* group = NULL,
double aBiu2cfgunit = 1.0); double aBiu2cfgunit = 1.0);
PARAM_CFG_INT_WITH_SCALE( bool Insetup, const wxChar* ident, int* ptparam, PARAM_CFG_INT_WITH_SCALE( bool Insetup, const wxString& ident, int* ptparam,
int default_val = 0, int default_val = 0,
int min = std::numeric_limits<int>::min(), int min = std::numeric_limits<int>::min(),
int max = std::numeric_limits<int>::max(), int max = std::numeric_limits<int>::max(),
...@@ -183,9 +184,9 @@ public: ...@@ -183,9 +184,9 @@ public:
EDA_COLOR_T m_Default; ///< The default value of the parameter EDA_COLOR_T m_Default; ///< The default value of the parameter
public: public:
PARAM_CFG_SETCOLOR( const wxChar* ident, EDA_COLOR_T* ptparam, PARAM_CFG_SETCOLOR( const wxString& ident, EDA_COLOR_T* ptparam,
EDA_COLOR_T default_val, const wxChar* group = NULL ); EDA_COLOR_T default_val, const wxChar* group = NULL );
PARAM_CFG_SETCOLOR( bool Insetup, const wxChar* ident, EDA_COLOR_T* ptparam, PARAM_CFG_SETCOLOR( bool Insetup, const wxString& ident, EDA_COLOR_T* ptparam,
EDA_COLOR_T default_val, const wxChar* group = NULL ); EDA_COLOR_T default_val, const wxChar* group = NULL );
virtual void ReadParam( wxConfigBase* aConfig ) const; virtual void ReadParam( wxConfigBase* aConfig ) const;
...@@ -205,10 +206,10 @@ public: ...@@ -205,10 +206,10 @@ public:
double m_Min, m_Max; ///< Minimum and maximum values of the param type double m_Min, m_Max; ///< Minimum and maximum values of the param type
public: public:
PARAM_CFG_DOUBLE( const wxChar* ident, double* ptparam, PARAM_CFG_DOUBLE( const wxString& ident, double* ptparam,
double default_val = 0.0, double min = 0.0, double max = 10000.0, double default_val = 0.0, double min = 0.0, double max = 10000.0,
const wxChar* group = NULL ); const wxChar* group = NULL );
PARAM_CFG_DOUBLE( bool Insetup, const wxChar* ident, double* ptparam, PARAM_CFG_DOUBLE( bool Insetup, const wxString& ident, double* ptparam,
double default_val = 0.0, double min = 0.0, double max = 10000.0, double default_val = 0.0, double min = 0.0, double max = 10000.0,
const wxChar* group = NULL ); const wxChar* group = NULL );
...@@ -228,9 +229,9 @@ public: ...@@ -228,9 +229,9 @@ public:
int m_Default; ///< The default value of the parameter int m_Default; ///< The default value of the parameter
public: public:
PARAM_CFG_BOOL( const wxChar* ident, bool* ptparam, PARAM_CFG_BOOL( const wxString& ident, bool* ptparam,
int default_val = false, const wxChar* group = NULL ); int default_val = false, const wxChar* group = NULL );
PARAM_CFG_BOOL( bool Insetup, const wxChar* ident, bool* ptparam, PARAM_CFG_BOOL( bool Insetup, const wxString& ident, bool* ptparam,
int default_val = false, const wxChar* group = NULL ); int default_val = false, const wxChar* group = NULL );
virtual void ReadParam( wxConfigBase* aConfig ) const; virtual void ReadParam( wxConfigBase* aConfig ) const;
...@@ -242,19 +243,20 @@ public: ...@@ -242,19 +243,20 @@ public:
* Configuration parameter - wxString Class * Configuration parameter - wxString Class
* *
*/ */
class PARAM_CFG_WXSTRING : public PARAM_CFG_BASE class PARAM_CFG_WXSTRING : public PARAM_CFG_BASE
{ {
public: public:
wxString* m_Pt_param; ///< Pointer to the parameter value wxString* m_Pt_param; ///< Pointer to the parameter value
wxString m_default; ///< The default value of the parameter wxString m_default; ///< The default value of the parameter
public: public:
PARAM_CFG_WXSTRING( const wxChar* ident, wxString* ptparam, const wxChar* group = NULL ); PARAM_CFG_WXSTRING( const wxString& ident, wxString* ptparam, const wxChar* group = NULL );
PARAM_CFG_WXSTRING( bool Insetup, PARAM_CFG_WXSTRING( bool Insetup,
const wxChar* ident, const wxString& ident,
wxString* ptparam, wxString* ptparam,
const wxString& default_val = wxEmptyString, const wxString& default_val = wxEmptyString,
const wxChar* group = NULL ); const wxChar* group = NULL );
virtual void ReadParam( wxConfigBase* aConfig ) const; virtual void ReadParam( wxConfigBase* aConfig ) const;
virtual void SaveParam( wxConfigBase* aConfig ) const; virtual void SaveParam( wxConfigBase* aConfig ) const;
...@@ -273,7 +275,8 @@ public: ...@@ -273,7 +275,8 @@ public:
wxString* m_Pt_param; ///< Pointer to the parameter value wxString* m_Pt_param; ///< Pointer to the parameter value
public: public:
PARAM_CFG_FILENAME( const wxChar* ident, wxString* ptparam, const wxChar* group = NULL ); PARAM_CFG_FILENAME( const wxString& ident, wxString* ptparam,
const wxChar* group = NULL );
virtual void ReadParam( wxConfigBase* aConfig ) const; virtual void ReadParam( wxConfigBase* aConfig ) const;
virtual void SaveParam( wxConfigBase* aConfig ) const; virtual void SaveParam( wxConfigBase* aConfig ) const;
}; };
......
...@@ -106,15 +106,13 @@ struct LAYER ...@@ -106,15 +106,13 @@ struct LAYER
} }
*/ */
/** The name of the layer, there should be no spaces in this name. */ wxString m_name; ///< The name of the layer, there should be no spaces in this name.
UTF8 m_name;
/** The type of the layer */ LAYER_T m_type; ///< The type of the layer
LAYER_T m_type;
bool m_visible; bool m_visible;
int m_number; int m_number;
/** /**
* Function ShowType * Function ShowType
......
...@@ -98,7 +98,7 @@ typedef LEGACY_PLUGIN::BIU BIU; ...@@ -98,7 +98,7 @@ typedef LEGACY_PLUGIN::BIU BIU;
#define UNKNOWN_PAD_ATTRIBUTE _( "unknown pad attribute: %d" ) #define UNKNOWN_PAD_ATTRIBUTE _( "unknown pad attribute: %d" )
typedef unsigned LAYER_MASK; typedef unsigned LEG_MASK;
#define FIRST_LAYER 0 #define FIRST_LAYER 0
#define FIRST_COPPER_LAYER 0 #define FIRST_COPPER_LAYER 0
...@@ -255,7 +255,7 @@ static inline char* ReadLine( LINE_READER* rdr, const char* caller ) ...@@ -255,7 +255,7 @@ static inline char* ReadLine( LINE_READER* rdr, const char* caller )
/* corrected old junk, element 14 was wrong. can delete. /* corrected old junk, element 14 was wrong. can delete.
// Look up Table for conversion copper layer count -> general copper layer mask: // Look up Table for conversion copper layer count -> general copper layer mask:
static const LAYER_MASK all_cu_mask[] = { static const LEG_MASK all_cu_mask[] = {
0x0001, 0x8001, 0x8003, 0x8007, 0x0001, 0x8001, 0x8003, 0x8007,
0x800F, 0x801F, 0x803F, 0x807F, 0x800F, 0x801F, 0x803F, 0x807F,
0x80FF, 0x81FF, 0x83FF, 0x87FF, 0x80FF, 0x81FF, 0x83FF, 0x87FF,
...@@ -313,7 +313,7 @@ static EDA_TEXT_VJUSTIFY_T vertJustify( const char* vertical ) ...@@ -313,7 +313,7 @@ static EDA_TEXT_VJUSTIFY_T vertJustify( const char* vertical )
/// Count the number of set layers in the mask /// Count the number of set layers in the mask
inline int layerMaskCountSet( LAYER_MASK aMask ) inline int layerMaskCountSet( LEG_MASK aMask )
{ {
int count = 0; int count = 0;
...@@ -338,6 +338,8 @@ LAYER_ID LEGACY_PLUGIN::leg_layer2new( int cu_count, LAYER_NUM aLayerNum ) ...@@ -338,6 +338,8 @@ LAYER_ID LEGACY_PLUGIN::leg_layer2new( int cu_count, LAYER_NUM aLayerNum )
{ {
if( old == LAYER_N_FRONT ) if( old == LAYER_N_FRONT )
newid = F_Cu; newid = F_Cu;
else if( old == LAYER_N_BACK )
newid = B_Cu;
else else
{ {
newid = cu_count - 1 - old; newid = cu_count - 1 - old;
...@@ -376,6 +378,13 @@ LSET LEGACY_PLUGIN::leg_mask2new( int cu_count, unsigned aMask ) ...@@ -376,6 +378,13 @@ LSET LEGACY_PLUGIN::leg_mask2new( int cu_count, unsigned aMask )
{ {
LSET ret; LSET ret;
if( ( aMask & ALL_CU_LAYERS ) == ALL_CU_LAYERS )
{
ret = LSET::AllCuMask();
aMask &= ~ALL_CU_LAYERS;
}
for( int i=0; i<NB_PCB_LAYERS && aMask; ++i, aMask >>= 1 ) for( int i=0; i<NB_PCB_LAYERS && aMask; ++i, aMask >>= 1 )
{ {
if( aMask & 1 ) if( aMask & 1 )
...@@ -601,6 +610,7 @@ void LEGACY_PLUGIN::loadGENERAL() ...@@ -601,6 +610,7 @@ void LEGACY_PLUGIN::loadGENERAL()
{ {
char* line; char* line;
char* saveptr; char* saveptr;
bool saw_LayerCount = false;
while( ( line = READLINE( m_reader ) ) != NULL ) while( ( line = READLINE( m_reader ) ) != NULL )
{ {
...@@ -617,22 +627,42 @@ void LEGACY_PLUGIN::loadGENERAL() ...@@ -617,22 +627,42 @@ void LEGACY_PLUGIN::loadGENERAL()
} }
} }
else if( TESTLINE( "LayerCount" ) )
{
int tmp = intParse( line + SZ( "LayerCount" ) );
m_board->SetCopperLayerCount( tmp );
// This has to be set early so that leg_layer2new() works OK, and
// that means before parsing "EnabledLayers" and "VisibleLayers".
m_cu_count = tmp;
saw_LayerCount = true;
}
else if( TESTLINE( "EnabledLayers" ) ) else if( TESTLINE( "EnabledLayers" ) )
{ {
LAYER_MASK enabledLayers = hexParse( line + SZ( "EnabledLayers" ) ); if( !saw_LayerCount )
THROW_IO_ERROR( "Missing '$GENERAL's LayerCount" );
LEG_MASK enabledLayers = hexParse( line + SZ( "EnabledLayers" ) );
LSET new_mask = leg_mask2new( m_cu_count, enabledLayers ); LSET new_mask = leg_mask2new( m_cu_count, enabledLayers );
// layer usage //DBG( printf( "EnabledLayers: %s\n", new_mask.FmtHex().c_str() );)
m_board->SetEnabledLayers( new_mask ); m_board->SetEnabledLayers( new_mask );
// layer visibility equals layer usage, unless overridden later via "VisibleLayers" // layer visibility equals layer usage, unless overridden later via "VisibleLayers"
// Must call SetEnabledLayers() before calling SetVisibleLayers().
m_board->SetVisibleLayers( new_mask ); m_board->SetVisibleLayers( new_mask );
} }
else if( TESTLINE( "VisibleLayers" ) ) else if( TESTLINE( "VisibleLayers" ) )
{ {
LAYER_MASK visibleLayers = hexParse( line + SZ( "VisibleLayers" ) ); if( !saw_LayerCount )
THROW_IO_ERROR( "Missing '$GENERAL's LayerCount" );
LEG_MASK visibleLayers = hexParse( line + SZ( "VisibleLayers" ) );
LSET new_mask = leg_mask2new( m_cu_count, visibleLayers ); LSET new_mask = leg_mask2new( m_cu_count, visibleLayers );
...@@ -641,11 +671,16 @@ void LEGACY_PLUGIN::loadGENERAL() ...@@ -641,11 +671,16 @@ void LEGACY_PLUGIN::loadGENERAL()
else if( TESTLINE( "Ly" ) ) // Old format for Layer count else if( TESTLINE( "Ly" ) ) // Old format for Layer count
{ {
LAYER_MASK layer_mask = hexParse( line + SZ( "Ly" ) ); if( !saw_LayerCount )
{
LEG_MASK layer_mask = hexParse( line + SZ( "Ly" ) );
m_cu_count = layerMaskCountSet( layer_mask & ALL_CU_LAYERS ); m_cu_count = layerMaskCountSet( layer_mask & ALL_CU_LAYERS );
m_board->SetCopperLayerCount( m_cu_count ); m_board->SetCopperLayerCount( m_cu_count );
saw_LayerCount = true;
}
} }
else if( TESTLINE( "BoardThickness" ) ) else if( TESTLINE( "BoardThickness" ) )
...@@ -867,18 +902,38 @@ void LEGACY_PLUGIN::loadSETUP() ...@@ -867,18 +902,38 @@ void LEGACY_PLUGIN::loadSETUP()
bds.m_AuxOrigin = wxPoint( gx, gy ); bds.m_AuxOrigin = wxPoint( gx, gy );
} }
/* Done from $General above's "LayerCount"
else if( TESTLINE( "Layers" ) ) else if( TESTLINE( "Layers" ) )
{ {
int tmp = intParse( line + SZ( "Layers" ) ); int tmp = intParse( line + SZ( "Layers" ) );
m_board->SetCopperLayerCount( tmp ); m_board->SetCopperLayerCount( tmp );
m_cu_count = tmp;
} }
*/
else if( TESTSUBSTR( "Layer[" ) ) else if( TESTSUBSTR( "Layer[" ) )
{ {
// eg: "Layer[n] <a_Layer_name_with_no_spaces> <LAYER_T>" // eg: "Layer[n] <a_Layer_name_with_no_spaces> <LAYER_T>"
LAYER_NUM layer_num = layerParse( line + SZ( "Layer[" ), &data ); LAYER_NUM layer_num = layerParse( line + SZ( "Layer[" ), &data );
LAYER_ID layer_id = leg_layer2new( m_cu_count, layer_num ); LAYER_ID layer_id = leg_layer2new( m_cu_count, layer_num );
/*
switch( layer_num )
{
case LAYER_N_BACK:
layer_id = B_Cu;
break;
case LAYER_N_FRONT:
layer_id = F_Cu;
break;
default:
layer_id = LAYER_ID( layer_num );
}
*/
data = strtok_r( (char*) data+1, delims, &saveptr ); // +1 for ']' data = strtok_r( (char*) data+1, delims, &saveptr ); // +1 for ']'
if( data ) if( data )
...@@ -1496,7 +1551,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule ) ...@@ -1496,7 +1551,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule )
data = strtok_r( NULL, delims, &saveptr ); // skip BufCar data = strtok_r( NULL, delims, &saveptr ); // skip BufCar
data = strtok_r( NULL, delims, &saveptr ); data = strtok_r( NULL, delims, &saveptr );
LAYER_MASK layer_mask = hexParse( data ); LEG_MASK layer_mask = hexParse( data );
pad->SetLayerSet( leg_mask2new( m_cu_count, layer_mask ) ); pad->SetLayerSet( leg_mask2new( m_cu_count, layer_mask ) );
pad->SetAttribute( attribute ); pad->SetAttribute( attribute );
......
...@@ -743,7 +743,7 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -743,7 +743,7 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
{ {
cu.push_back( layer ); cu.push_back( layer );
DBG( printf( "cop m_visible:%s\n", cu.back().m_visible ? "true" : "false" );) //DBG( printf( "cop m_visible:%s\n", cu.back().m_visible ? "true" : "false" );)
} }
else // all non-copper are fixed names, simply look up LAYER_ID. else // all non-copper are fixed names, simply look up LAYER_ID.
{ {
...@@ -773,8 +773,10 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -773,8 +773,10 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
m_board->SetLayer( LAYER_ID( it->m_number ), *it ); m_board->SetLayer( LAYER_ID( it->m_number ), *it );
m_layerIndices[ it->m_name ] = LAYER_ID( it->m_number ); UTF8 name = it->m_name;
m_layerMasks[ it->m_name ] = LSET( it->m_number );
m_layerIndices[ name ] = LAYER_ID( it->m_number );
m_layerMasks[ name ] = LSET( it->m_number );
} }
copperLayerCount = cu.size(); copperLayerCount = cu.size();
...@@ -782,12 +784,12 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -782,12 +784,12 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
cu.clear(); // this marks the list as "one time processed". cu.clear(); // this marks the list as "one time processed".
} }
LAYER_ID_MAP::const_iterator it = m_layerIndices.find( layer.m_name ); LAYER_ID_MAP::const_iterator it = m_layerIndices.find( UTF8( layer.m_name ) );
if( it == m_layerIndices.end() ) if( it == m_layerIndices.end() )
{ {
wxString error = wxString::Format( wxString error = wxString::Format(
_( "Layer '%s' in file <%s> at line %d, is not in fixed layer hash" ), _( "Layer '%s' in file '%s' at line %d, is not in fixed layer hash" ),
GetChars( layer.m_name ), GetChars( layer.m_name ),
GetChars( CurSource() ), GetChars( CurSource() ),
CurLineNumber(), CurLineNumber(),
...@@ -804,7 +806,7 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -804,7 +806,7 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
if( layer.m_visible ) if( layer.m_visible )
visibleLayers.set( layer.m_number ); visibleLayers.set( layer.m_number );
DBG( printf( "aux m_visible:%s\n", layer.m_visible ? "true" : "false" );) //DBG( printf( "aux m_visible:%s\n", layer.m_visible ? "true" : "false" );)
m_board->SetLayer( LAYER_ID( layer.m_number ), layer ); m_board->SetLayer( LAYER_ID( layer.m_number ), layer );
} }
......
...@@ -137,7 +137,7 @@ public: ...@@ -137,7 +137,7 @@ public:
ITEM_SET::iterator end() { return m_allItems.end(); } ITEM_SET::iterator end() { return m_allItems.end(); }
private: private:
static const int MaxSubIndices = 64; static const int MaxSubIndices = 128;
static const int SI_Multilayer = 2; static const int SI_Multilayer = 2;
static const int SI_SegDiagonal = 0; static const int SI_SegDiagonal = 0;
static const int SI_SegStraight = 1; static const int SI_SegStraight = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment