Commit e0303a45 authored by Lorenzo Marcantonio's avatar Lorenzo Marcantonio

- New typedef LAYER_MSK to encapsulate a layer bitmap

- Renamed ReturnMaskLayer to GetLayerMask (since it's a plain getter)
parent 1702ab3a
...@@ -320,7 +320,7 @@ void EDA_DRAW_FRAME::ToolOnRightClick( wxCommandEvent& event ) ...@@ -320,7 +320,7 @@ void EDA_DRAW_FRAME::ToolOnRightClick( wxCommandEvent& event )
} }
void EDA_DRAW_FRAME::PrintPage( wxDC* aDC,int aPrintMask, bool aPrintMirrorMode, void* aData ) void EDA_DRAW_FRAME::PrintPage( wxDC* aDC,LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData )
{ {
wxMessageBox( wxT("EDA_DRAW_FRAME::PrintPage() error") ); wxMessageBox( wxT("EDA_DRAW_FRAME::PrintPage() error") );
} }
......
...@@ -71,7 +71,7 @@ int GetLayerMask( int aLayerNumber ) ...@@ -71,7 +71,7 @@ int GetLayerMask( int aLayerNumber )
/* Look up Table for conversion copper layer count -> general copper layer /* Look up Table for conversion copper layer count -> general copper layer
* mask: */ * mask: */
int g_TabAllCopperLayerMask[NB_COPPER_LAYERS] = { LAYER_MSK g_TabAllCopperLayerMask[NB_COPPER_LAYERS] = {
0x0001, 0x8001, 0x8003, 0x8007, 0x0001, 0x8001, 0x8003, 0x8007,
0x800F, 0x801F, 0x803F, 0x807F, 0x800F, 0x801F, 0x803F, 0x807F,
0x80FF, 0x81FF, 0x83FF, 0x87FF, 0x80FF, 0x81FF, 0x83FF, 0x87FF,
......
...@@ -144,7 +144,7 @@ void LIB_EDIT_FRAME::SVG_Print_Component( const wxString& FullFileName ) ...@@ -144,7 +144,7 @@ void LIB_EDIT_FRAME::SVG_Print_Component( const wxString& FullFileName )
plotBW, plotFrameRef ); plotBW, plotFrameRef );
} }
void LIB_EDIT_FRAME::PrintPage( wxDC* aDC, int aPrintMask, bool aPrintMirrorMode, void* aData) void LIB_EDIT_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData)
{ {
if( ! m_component ) if( ! m_component )
return; return;
......
...@@ -637,7 +637,7 @@ public: ...@@ -637,7 +637,7 @@ public:
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode) * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used) * @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMask, virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMask,
bool aPrintMirrorMode, void* aData = NULL ); bool aPrintMirrorMode, void* aData = NULL );
/** /**
......
...@@ -848,7 +848,8 @@ void SCH_EDIT_FRAME::OnPrint( wxCommandEvent& event ) ...@@ -848,7 +848,8 @@ void SCH_EDIT_FRAME::OnPrint( wxCommandEvent& event )
} }
} }
void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, int aPrintMask, bool aPrintMirrorMode, void* aData ) void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode,
void* aData )
{ {
GetScreen()->Draw( m_canvas, aDC, GR_DEFAULT_DRAWMODE ); GetScreen()->Draw( m_canvas, aDC, GR_DEFAULT_DRAWMODE );
TraceWorkSheet( aDC, GetScreen(), GetDefaultLineThickness(), IU_PER_MILS, TraceWorkSheet( aDC, GetScreen(), GetDefaultLineThickness(), IU_PER_MILS,
......
...@@ -29,7 +29,7 @@ GBR_LAYOUT::~GBR_LAYOUT() ...@@ -29,7 +29,7 @@ GBR_LAYOUT::~GBR_LAYOUT()
*/ */
bool GBR_LAYOUT::IsLayerVisible( int aLayerIndex ) const bool GBR_LAYOUT::IsLayerVisible( int aLayerIndex ) const
{ {
return m_printLayersMask & (1 << aLayerIndex ); return m_printLayersMask & GetLayerMask( aLayerIndex );
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <class_title_block.h> #include <class_title_block.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <gr_basic.h>
/** /**
* Class GBR_LAYOUT * Class GBR_LAYOUT
...@@ -27,7 +28,7 @@ private: ...@@ -27,7 +28,7 @@ private:
PAGE_INFO m_paper; PAGE_INFO m_paper;
TITLE_BLOCK m_titles; TITLE_BLOCK m_titles;
wxPoint m_originAxisPosition; wxPoint m_originAxisPosition;
int m_printLayersMask; // When printing: the list of layers to print LAYER_MSK m_printLayersMask; // When printing: the list of layers to print
public: public:
DLIST<GERBER_DRAW_ITEM> m_Drawings; // linked list of Gerber Items DLIST<GERBER_DRAW_ITEM> m_Drawings; // linked list of Gerber Items
...@@ -90,7 +91,7 @@ public: ...@@ -90,7 +91,7 @@ public:
* changes the bit-mask of visible layers * changes the bit-mask of visible layers
* @param aLayerMask = The new bit-mask of visible layers * @param aLayerMask = The new bit-mask of visible layers
*/ */
void SetVisibleLayers( int aLayerMask ) void SetVisibleLayers( LAYER_MSK aLayerMask )
{ {
m_printLayersMask = aLayerMask; m_printLayersMask = aLayerMask;
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <base_units.h> #include <base_units.h>
#include <class_base_screen.h> #include <class_base_screen.h>
#include <layers_id_colors_and_visibility.h>
#define ZOOM_FACTOR( x ) ( x * IU_PER_DECIMILS ) #define ZOOM_FACTOR( x ) ( x * IU_PER_DECIMILS )
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <base_struct.h> #include <base_struct.h>
#include <dlist.h> #include <dlist.h>
#include <layers_id_colors_and_visibility.h>
#include <gr_basic.h> #include <gr_basic.h>
class GERBER_IMAGE; class GERBER_IMAGE;
...@@ -133,9 +134,9 @@ public: ...@@ -133,9 +134,9 @@ public:
*/ */
void SetLayer( int aLayer ) { m_Layer = aLayer; } void SetLayer( int aLayer ) { m_Layer = aLayer; }
int ReturnMaskLayer() LAYER_MSK GetLayerMask()
{ {
return 1 << m_Layer; return ::GetLayerMask( m_Layer );
} }
bool GetLayerPolarity() bool GetLayerPolarity()
......
...@@ -163,7 +163,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event ) ...@@ -163,7 +163,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
int rowCount; int rowCount;
int menuId = event.GetId(); int menuId = event.GetId();
bool visible = (menuId == ID_SHOW_ALL_COPPERS) ? true : false;; bool visible = (menuId == ID_SHOW_ALL_COPPERS) ? true : false;;
int visibleLayers = 0; LAYER_MSK visibleLayers = NO_LAYERS;
switch( menuId ) switch( menuId )
{ {
...@@ -181,9 +181,9 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event ) ...@@ -181,9 +181,9 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 ); wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
cb->SetValue( loc_visible ); cb->SetValue( loc_visible );
if( loc_visible ) if( loc_visible )
visibleLayers |= (1 << row); visibleLayers |= GetLayerMask( row );
else else
visibleLayers &= ~(1 << row); visibleLayers &= ~GetLayerMask( row );
} }
myframe->SetVisibleLayers( visibleLayers ); myframe->SetVisibleLayers( visibleLayers );
...@@ -235,12 +235,12 @@ bool GERBER_LAYER_WIDGET::OnLayerSelect( int aLayer ) ...@@ -235,12 +235,12 @@ bool GERBER_LAYER_WIDGET::OnLayerSelect( int aLayer )
void GERBER_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal ) void GERBER_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
{ {
int visibleLayers = myframe->GetVisibleLayers(); LAYER_MSK visibleLayers = myframe->GetVisibleLayers();
if( isVisible ) if( isVisible )
visibleLayers |= (1 << aLayer); visibleLayers |= GetLayerMask( aLayer );
else else
visibleLayers &= ~(1 << aLayer); visibleLayers &= ~GetLayerMask( aLayer );
myframe->SetVisibleLayers( visibleLayers ); myframe->SetVisibleLayers( visibleLayers );
......
...@@ -188,7 +188,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( ) ...@@ -188,7 +188,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
{ {
m_BoxSelectLayer[layer]->SetValue( option ); m_BoxSelectLayer[layer]->SetValue( option );
if( option ) if( option )
s_SelectedLayers |= 1 << layer; s_SelectedLayers |= GetLayerMask( layer );
} }
} }
} }
...@@ -223,15 +223,15 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( ) ...@@ -223,15 +223,15 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection() int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection()
/**************************************************************/ /**************************************************************/
{ {
int page_count; int page_count = 0;
s_Parameters.m_PrintMaskLayer = 0; s_Parameters.m_PrintMaskLayer = NO_LAYERS;
int ii; int ii;
for( ii = 0, page_count = 0; ii < GERBVIEW_LAYER_COUNT; ii++ ) for( ii = 0, page_count = 0; ii < GERBVIEW_LAYER_COUNT; ii++ )
{ {
if( m_BoxSelectLayer[ii]->IsChecked() ) if( m_BoxSelectLayer[ii]->IsChecked() )
{ {
page_count++; page_count++;
s_Parameters.m_PrintMaskLayer |= 1 << ii; s_Parameters.m_PrintMaskLayer |= GetLayerMask( ii );
} }
} }
......
...@@ -41,11 +41,11 @@ ...@@ -41,11 +41,11 @@
#include <class_GERBER.h> #include <class_GERBER.h>
void GERBVIEW_FRAME::PrintPage( wxDC* aDC, int aPrintMasklayer, void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer,
bool aPrintMirrorMode, void* aData ) bool aPrintMirrorMode, void* aData )
{ {
// Save current draw options, because print mode has specific options: // Save current draw options, because print mode has specific options:
int visiblemask = GetVisibleLayers(); LAYER_MSK visiblemask = GetVisibleLayers();
GBR_DISPLAY_OPTIONS imgDisplayOptions = m_DisplayOptions; GBR_DISPLAY_OPTIONS imgDisplayOptions = m_DisplayOptions;
// Set draw options for printing: // Set draw options for printing:
......
...@@ -537,7 +537,7 @@ void GERBVIEW_FRAME::SetVisibleAlls() ...@@ -537,7 +537,7 @@ void GERBVIEW_FRAME::SetVisibleAlls()
* Returns a bit-mask of all the layers that are visible * Returns a bit-mask of all the layers that are visible
* @return int - the visible layers in bit-mapped form. * @return int - the visible layers in bit-mapped form.
*/ */
int GERBVIEW_FRAME::GetVisibleLayers() const LAYER_MSK GERBVIEW_FRAME::GetVisibleLayers() const
{ {
return -1; // TODO return -1; // TODO
} }
...@@ -549,7 +549,7 @@ int GERBVIEW_FRAME::GetVisibleLayers() const ...@@ -549,7 +549,7 @@ int GERBVIEW_FRAME::GetVisibleLayers() const
* changes the bit-mask of visible layers * changes the bit-mask of visible layers
* @param aLayerMask = The new bit-mask of visible layers * @param aLayerMask = The new bit-mask of visible layers
*/ */
void GERBVIEW_FRAME::SetVisibleLayers( int aLayerMask ) void GERBVIEW_FRAME::SetVisibleLayers( LAYER_MSK aLayerMask )
{ {
GetLayout()->SetVisibleLayers( aLayerMask ); GetLayout()->SetVisibleLayers( aLayerMask );
} }
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <gerbview.h> #include <gerbview.h>
#include <class_gbr_layout.h> #include <class_gbr_layout.h>
#include <class_gbr_screen.h> #include <class_gbr_screen.h>
#include <layers_id_colors_and_visibility.h>
#define NO_AVAILABLE_LAYERS -1 #define NO_AVAILABLE_LAYERS -1
...@@ -299,7 +300,7 @@ public: ...@@ -299,7 +300,7 @@ public:
* Returns a bit-mask of all the layers that are visible * Returns a bit-mask of all the layers that are visible
* @return int - the visible layers in bit-mapped form. * @return int - the visible layers in bit-mapped form.
*/ */
int GetVisibleLayers() const; LAYER_MSK GetVisibleLayers() const;
/** /**
* Function SetVisibleLayers * Function SetVisibleLayers
...@@ -307,7 +308,7 @@ public: ...@@ -307,7 +308,7 @@ public:
* changes the bit-mask of visible layers * changes the bit-mask of visible layers
* @param aLayerMask = The new bit-mask of visible layers * @param aLayerMask = The new bit-mask of visible layers
*/ */
void SetVisibleLayers( int aLayerMask ); void SetVisibleLayers( LAYER_MSK aLayerMask );
/** /**
* Function IsLayerVisible * Function IsLayerVisible
...@@ -716,7 +717,7 @@ public: ...@@ -716,7 +717,7 @@ public:
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode) * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used) * @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMasklayer, bool aPrintMirrorMode, virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMasklayer, bool aPrintMirrorMode,
void* aData = NULL ); void* aData = NULL );
/** /**
......
...@@ -56,7 +56,7 @@ public: ...@@ -56,7 +56,7 @@ public:
* returns a bit-mask of all the layers that are visible * returns a bit-mask of all the layers that are visible
* @return int - the visible layers in bit-mapped form. * @return int - the visible layers in bit-mapped form.
*/ */
int GetVisibleLayers() const; LAYER_MSK GetVisibleLayers() const;
/** /**
* Function SetVisibleAlls * Function SetVisibleAlls
...@@ -70,7 +70,7 @@ public: ...@@ -70,7 +70,7 @@ public:
* changes the bit-mask of visible layers * changes the bit-mask of visible layers
* @param aMask = The new bit-mask of visible layers * @param aMask = The new bit-mask of visible layers
*/ */
void SetVisibleLayers( int aMask ); void SetVisibleLayers( LAYER_MSK aMask );
/** /**
* Function IsLayerVisible * Function IsLayerVisible
...@@ -85,7 +85,7 @@ public: ...@@ -85,7 +85,7 @@ public:
return false; return false;
// If a layer is disabled, it is automatically invisible // If a layer is disabled, it is automatically invisible
return (bool) ( m_VisibleLayers & m_EnabledLayers & (1 << aLayerIndex) ); return bool( m_VisibleLayers & m_EnabledLayers & GetLayerMask( aLayerIndex ) );
} }
/** /**
...@@ -143,7 +143,7 @@ public: ...@@ -143,7 +143,7 @@ public:
* returns a bit-mask of all the layers that are enabled * returns a bit-mask of all the layers that are enabled
* @return int - the enabled layers in bit-mapped form. * @return int - the enabled layers in bit-mapped form.
*/ */
inline int GetEnabledLayers() const inline LAYER_MSK GetEnabledLayers() const
{ {
return m_EnabledLayers; return m_EnabledLayers;
} }
...@@ -153,7 +153,7 @@ public: ...@@ -153,7 +153,7 @@ public:
* changes the bit-mask of enabled layers * changes the bit-mask of enabled layers
* @param aMask = The new bit-mask of enabled layers * @param aMask = The new bit-mask of enabled layers
*/ */
void SetEnabledLayers( int aMask ); void SetEnabledLayers( LAYER_MSK aMask );
/** /**
* Function IsLayerEnabled * Function IsLayerEnabled
...@@ -163,7 +163,7 @@ public: ...@@ -163,7 +163,7 @@ public:
*/ */
bool IsLayerEnabled( int aLayerIndex ) const bool IsLayerEnabled( int aLayerIndex ) const
{ {
return bool( m_EnabledLayers & (1 << aLayerIndex) ); return bool( m_EnabledLayers & GetLayerMask( aLayerIndex ) );
} }
/** /**
...@@ -194,11 +194,11 @@ public: ...@@ -194,11 +194,11 @@ public:
void SetBoardThickness( int aThickness ) { m_boardThickness = aThickness; } void SetBoardThickness( int aThickness ) { m_boardThickness = aThickness; }
private: private:
int m_CopperLayerCount; ///< Number of copper layers for this design int m_CopperLayerCount; ///< Number of copper layers for this design
int m_EnabledLayers; ///< Bit-mask for layer enabling LAYER_MSK m_EnabledLayers; ///< Bit-mask for layer enabling
int m_VisibleLayers; ///< Bit-mask for layer visibility LAYER_MSK m_VisibleLayers; ///< Bit-mask for layer visibility
int m_VisibleElements; ///< Bit-mask for element category visibility int m_VisibleElements; ///< Bit-mask for element category visibility
int m_boardThickness; ///< Board thickness for 3D viewer int m_boardThickness; ///< Board thickness for 3D viewer
}; };
#endif // BOARD_DESIGN_SETTINGS_H_ #endif // BOARD_DESIGN_SETTINGS_H_
...@@ -34,7 +34,8 @@ ...@@ -34,7 +34,8 @@
#include <base_struct.h> #include <base_struct.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <boost/ptr_container/ptr_vector.hpp> #include <boost/ptr_container/ptr_vector.hpp>
#include <gr_basic.h>
#include <layers_id_colors_and_visibility.h>
/// Abbrevation for fomatting internal units to a string. /// Abbrevation for fomatting internal units to a string.
#define FMT_IU BOARD_ITEM::FormatInternalUnits #define FMT_IU BOARD_ITEM::FormatInternalUnits
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef _COLORS_DESIGN_SETTING_H #ifndef _COLORS_DESIGN_SETTING_H
#define _COLORS_DESIGN_SETTING_H #define _COLORS_DESIGN_SETTING_H
#include <layers_id_colors_and_visibility.h>
#define LAYERSCOLORSBUFFERSIZE 32 #define LAYERSCOLORSBUFFERSIZE 32
#define ITEMSCOLORSBUFFERSIZE 32 #define ITEMSCOLORSBUFFERSIZE 32
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <hotkeys_basic.h> #include <hotkeys_basic.h>
#include <wx/bmpcbox.h> #include <wx/bmpcbox.h>
#include <layers_id_colors_and_visibility.h>
class wxAuiToolBar; class wxAuiToolBar;
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#define LAYER_COUNT 32 #define LAYER_COUNT 32
// Masks to identify a layer by a bit map // Masks to identify a layer by a bit map
typedef unsigned LAYER_MSK;
#define LAYER_BACK (1 << LAYER_N_BACK) ///< bit mask for copper layer #define LAYER_BACK (1 << LAYER_N_BACK) ///< bit mask for copper layer
#define LAYER_2 (1 << LAYER_N_2) ///< bit mask for layer 2 #define LAYER_2 (1 << LAYER_N_2) ///< bit mask for layer 2
#define LAYER_3 (1 << LAYER_N_3) ///< bit mask for layer 3 #define LAYER_3 (1 << LAYER_N_3) ///< bit mask for layer 3
...@@ -92,6 +93,16 @@ ...@@ -92,6 +93,16 @@
#define ALL_CU_LAYERS 0x0000FFFF #define ALL_CU_LAYERS 0x0000FFFF
#define INTERNAL_LAYERS 0x00007FFE #define INTERNAL_LAYERS 0x00007FFE
#define EXTERNAL_LAYERS 0x00008001 #define EXTERNAL_LAYERS 0x00008001
#define NO_LAYERS 0x00000000
/** return a one bit layer mask from a layer number
* aLayerNumber = the layer number to convert (0 .. LAYERS-1)
*/
inline LAYER_MSK GetLayerMask( unsigned aLayerNumber )
{
return 1 << aLayerNumber;
}
// layers order in dialogs (plot, print and toolbars) // layers order in dialogs (plot, print and toolbars)
......
...@@ -18,16 +18,8 @@ class TRACK; ...@@ -18,16 +18,8 @@ class TRACK;
class BOARD; class BOARD;
class DISPLAY_OPTIONS; class DISPLAY_OPTIONS;
/**
* Function GetLayerMask
* @return a one bit layer mask from a layer number
* @param aLayerNumber = the layer number to convert (0 .. LAYER_COUNT-1)
*/
int GetLayerMask( int aLayerNumber );
/// Look up Table for conversion copper layer count -> general copper layer mask: /// Look up Table for conversion copper layer count -> general copper layer mask:
extern int g_TabAllCopperLayerMask[NB_COPPER_LAYERS]; extern LAYER_MSK g_TabAllCopperLayerMask[NB_COPPER_LAYERS];
extern DISPLAY_OPTIONS DisplayOpt; extern DISPLAY_OPTIONS DisplayOpt;
......
...@@ -1219,7 +1219,7 @@ public: ...@@ -1219,7 +1219,7 @@ public:
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode) * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used) * @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMask, virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMask,
bool aPrintMirrorMode, void* aData = NULL ); bool aPrintMirrorMode, void* aData = NULL );
void SetSimulatorCommand( const wxString& aCommand ) { m_simulatorCommand = aCommand; } void SetSimulatorCommand( const wxString& aCommand ) { m_simulatorCommand = aCommand; }
......
...@@ -270,7 +270,7 @@ public: ...@@ -270,7 +270,7 @@ public:
* @param aPrintMirrorMode = true to plot mirrored * @param aPrintMirrorMode = true to plot mirrored
* @param aData = a pointer on an auxiliary data (NULL if not used) * @param aData = a pointer on an auxiliary data (NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMaskLayer, bool aPrintMirrorMode, virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMaskLayer, bool aPrintMirrorMode,
void * aData = NULL ); void * aData = NULL );
void GetKicadAbout( wxCommandEvent& event ); void GetKicadAbout( wxCommandEvent& event );
......
...@@ -43,7 +43,9 @@ ...@@ -43,7 +43,9 @@
#include <wx/docview.h> #include <wx/docview.h>
#include <colors.h> #include <colors.h>
#include <fctsys.h>
#include <common.h> #include <common.h>
#include <layers_id_colors_and_visibility.h>
#ifdef USE_WX_OVERLAY #ifdef USE_WX_OVERLAY
#include <wx/overlay.h> #include <wx/overlay.h>
...@@ -880,7 +882,7 @@ public: ...@@ -880,7 +882,7 @@ public:
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode) * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used) * @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMask, bool aPrintMirrorMode, void* aData = NULL ); virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData = NULL );
/** /**
* Function CoordinateToString * Function CoordinateToString
......
...@@ -127,7 +127,7 @@ void BOARD::Move( const wxPoint& aMoveVector ) // overload ...@@ -127,7 +127,7 @@ void BOARD::Move( const wxPoint& aMoveVector ) // overload
} }
void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* aList ) void BOARD::chainMarkedSegments( wxPoint aPosition, LAYER_MSK aLayerMask, TRACK_PTRS* aList )
{ {
TRACK* segment; // The current segment being analyzed. TRACK* segment; // The current segment being analyzed.
TRACK* via; // The via identified, eventually destroy TRACK* via; // The via identified, eventually destroy
...@@ -166,7 +166,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* ...@@ -166,7 +166,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS*
if( via ) if( via )
{ {
aLayerMask = via->ReturnMaskLayer(); aLayerMask = via->GetLayerMask();
aList->push_back( via ); aList->push_back( via );
} }
...@@ -212,7 +212,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* ...@@ -212,7 +212,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS*
* candidate: * candidate:
* we must analyze connections to its other end * we must analyze connections to its other end
*/ */
aLayerMask = candidate->ReturnMaskLayer(); aLayerMask = candidate->GetLayerMask();
if( aPosition == candidate->GetStart() ) if( aPosition == candidate->GetStart() )
{ {
...@@ -227,7 +227,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* ...@@ -227,7 +227,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS*
/* flag this item an push it in list of selected items */ /* flag this item an push it in list of selected items */
aList->push_back( candidate ); aList->push_back( candidate );
candidate->SetState( BUSY, ON ); candidate->SetState( BUSY, true );
} }
else else
{ {
...@@ -542,25 +542,25 @@ void BOARD::SetCopperLayerCount( int aCount ) ...@@ -542,25 +542,25 @@ void BOARD::SetCopperLayerCount( int aCount )
} }
int BOARD::GetEnabledLayers() const LAYER_MSK BOARD::GetEnabledLayers() const
{ {
return m_designSettings.GetEnabledLayers(); return m_designSettings.GetEnabledLayers();
} }
int BOARD::GetVisibleLayers() const LAYER_MSK BOARD::GetVisibleLayers() const
{ {
return m_designSettings.GetVisibleLayers(); return m_designSettings.GetVisibleLayers();
} }
void BOARD::SetEnabledLayers( int aLayerMask ) void BOARD::SetEnabledLayers( LAYER_MSK aLayerMask )
{ {
m_designSettings.SetEnabledLayers( aLayerMask ); m_designSettings.SetEnabledLayers( aLayerMask );
} }
void BOARD::SetVisibleLayers( int aLayerMask ) void BOARD::SetVisibleLayers( LAYER_MSK aLayerMask )
{ {
m_designSettings.SetVisibleLayers( aLayerMask ); m_designSettings.SetVisibleLayers( aLayerMask );
} }
...@@ -1557,7 +1557,7 @@ TRACK* BOARD::GetViaByPosition( const wxPoint& aPosition, int aLayerMask ) ...@@ -1557,7 +1557,7 @@ TRACK* BOARD::GetViaByPosition( const wxPoint& aPosition, int aLayerMask )
} }
D_PAD* BOARD::GetPad( const wxPoint& aPosition, int aLayerMask ) D_PAD* BOARD::GetPad( const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
D_PAD* pad = NULL; D_PAD* pad = NULL;
...@@ -1578,7 +1578,7 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint ) ...@@ -1578,7 +1578,7 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint )
D_PAD* pad = NULL; D_PAD* pad = NULL;
wxPoint aPosition; wxPoint aPosition;
int aLayerMask = GetLayerMask( aTrace->GetLayer() ); LAYER_MSK aLayerMask = GetLayerMask( aTrace->GetLayer() );
if( aEndPoint == FLG_START ) if( aEndPoint == FLG_START )
{ {
...@@ -1601,7 +1601,7 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint ) ...@@ -1601,7 +1601,7 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint )
} }
D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, int aLayerMask ) D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
for( unsigned i=0; i<GetPadCount(); ++i ) for( unsigned i=0; i<GetPadCount(); ++i )
{ {
...@@ -1619,7 +1619,7 @@ D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, int aLayerMask ) ...@@ -1619,7 +1619,7 @@ D_PAD* BOARD::GetPadFast( const wxPoint& aPosition, int aLayerMask )
} }
D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, int aLayerMask ) D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
// Search the aPoint coordinates in aPadList // Search the aPoint coordinates in aPadList
// aPadList is sorted by X then Y values, and a fast binary search is used // aPadList is sorted by X then Y values, and a fast binary search is used
...@@ -1643,7 +1643,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i ...@@ -1643,7 +1643,7 @@ D_PAD* BOARD::GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, i
if( pad->GetPosition() == aPosition ) // candidate found if( pad->GetPosition() == aPosition ) // candidate found
{ {
// The pad must match the layer mask: // The pad must match the layer mask:
if( (aLayerMask & pad->GetLayerMask()) != 0 ) if( aLayerMask & pad->GetLayerMask())
return pad; return pad;
// More than one pad can be at aPosition // More than one pad can be at aPosition
...@@ -1747,7 +1747,7 @@ void BOARD::GetSortedPadListByXthenYCoord( std::vector<D_PAD*>& aVector, int aNe ...@@ -1747,7 +1747,7 @@ void BOARD::GetSortedPadListByXthenYCoord( std::vector<D_PAD*>& aVector, int aNe
} }
TRACK* BOARD::GetTrace( TRACK* aTrace, const wxPoint& aPosition, int aLayerMask ) TRACK* BOARD::GetTrace( TRACK* aTrace, const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
for( TRACK* track = aTrace; track; track = track->Next() ) for( TRACK* track = aTrace; track; track = track->Next() )
{ {
...@@ -1798,11 +1798,11 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1798,11 +1798,11 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
// Ensure the flag BUSY of all tracks of the board is cleared // Ensure the flag BUSY of all tracks of the board is cleared
// because we use it to mark segments of the track // because we use it to mark segments of the track
for( TRACK* track = m_Track; track; track = track->Next() ) for( TRACK* track = m_Track; track; track = track->Next() )
track->SetState( BUSY, OFF ); track->SetState( BUSY, false );
/* Set flags of the initial track segment */ /* Set flags of the initial track segment */
aTrace->SetState( BUSY, ON ); aTrace->SetState( BUSY, true );
int layerMask = aTrace->ReturnMaskLayer(); LAYER_MSK layerMask = aTrace->GetLayerMask();
trackList.push_back( aTrace ); trackList.push_back( aTrace );
...@@ -1838,13 +1838,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1838,13 +1838,13 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
if( Segm1 ) // search for others segments connected to the initial segment start point if( Segm1 ) // search for others segments connected to the initial segment start point
{ {
layerMask = Segm1->ReturnMaskLayer(); layerMask = Segm1->GetLayerMask();
chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList ); chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList );
} }
if( Segm2 ) // search for others segments connected to the initial segment end point if( Segm2 ) // search for others segments connected to the initial segment end point
{ {
layerMask = Segm2->ReturnMaskLayer(); layerMask = Segm2->GetLayerMask();
chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList ); chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList );
} }
} }
...@@ -1869,9 +1869,9 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1869,9 +1869,9 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
if( via == aTrace ) if( via == aTrace )
continue; continue;
via->SetState( BUSY, ON ); // Try to flag it. the flag will be cleared later if needed via->SetState( BUSY, true ); // Try to flag it. the flag will be cleared later if needed
layerMask = via->ReturnMaskLayer(); layerMask = via->GetLayerMask();
TRACK* track = ::GetTrace( m_Track, NULL, via->GetStart(), layerMask ); TRACK* track = ::GetTrace( m_Track, NULL, via->GetStart(), layerMask );
...@@ -1901,7 +1901,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1901,7 +1901,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
{ {
// The via connects segments of an other track: it is removed // The via connects segments of an other track: it is removed
// from list because it is member of an other track // from list because it is member of an other track
via->SetState( BUSY, OFF ); via->SetState( BUSY, false );
break; break;
} }
} }
...@@ -1984,7 +1984,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1984,7 +1984,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
if( track->GetState( BUSY ) ) if( track->GetState( BUSY ) )
{ {
NbSegmBusy++; NbSegmBusy++;
track->SetState( BUSY, OFF ); track->SetState( BUSY, false );
full_len += track->GetLength(); full_len += track->GetLength();
// Add now length die. // Add now length die.
...@@ -2096,7 +2096,7 @@ MODULE* BOARD::GetFootprint( const wxPoint& aPosition, int aActiveLayer, ...@@ -2096,7 +2096,7 @@ MODULE* BOARD::GetFootprint( const wxPoint& aPosition, int aActiveLayer,
} }
BOARD_CONNECTED_ITEM* BOARD::GetLockPoint( const wxPoint& aPosition, int aLayerMask ) BOARD_CONNECTED_ITEM* BOARD::GetLockPoint( const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
for( MODULE* module = m_Modules; module; module = module->Next() ) for( MODULE* module = m_Modules; module; module = module->Next() )
{ {
...@@ -2155,7 +2155,7 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS ...@@ -2155,7 +2155,7 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS
// The new segment begins at the new point, // The new segment begins at the new point,
newTrack->SetStart(lockPoint); newTrack->SetStart(lockPoint);
newTrack->start = aSegment; newTrack->start = aSegment;
newTrack->SetState( BEGIN_ONPAD, OFF ); newTrack->SetState( BEGIN_ONPAD, false );
DLIST<TRACK>* list = (DLIST<TRACK>*)aSegment->GetList(); DLIST<TRACK>* list = (DLIST<TRACK>*)aSegment->GetList();
wxASSERT( list ); wxASSERT( list );
...@@ -2177,16 +2177,16 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS ...@@ -2177,16 +2177,16 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS
// Old track segment now ends at new point. // Old track segment now ends at new point.
aSegment->SetEnd(lockPoint); aSegment->SetEnd(lockPoint);
aSegment->end = newTrack; aSegment->end = newTrack;
aSegment->SetState( END_ONPAD, OFF ); aSegment->SetState( END_ONPAD, false );
D_PAD * pad = GetPad( newTrack, FLG_START ); D_PAD * pad = GetPad( newTrack, FLG_START );
if ( pad ) if ( pad )
{ {
newTrack->start = pad; newTrack->start = pad;
newTrack->SetState( BEGIN_ONPAD, ON ); newTrack->SetState( BEGIN_ONPAD, true );
aSegment->end = pad; aSegment->end = pad;
aSegment->SetState( END_ONPAD, ON ); aSegment->SetState( END_ONPAD, true );
} }
aPosition = lockPoint; aPosition = lockPoint;
......
...@@ -234,7 +234,7 @@ private: ...@@ -234,7 +234,7 @@ private:
* @param aLayerMask The allowed layers for segments to search. * @param aLayerMask The allowed layers for segments to search.
* @param aList The track list to fill with points of flagged segments. * @param aList The track list to fill with points of flagged segments.
*/ */
void chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* aList ); void chainMarkedSegments( wxPoint aPosition, LAYER_MSK aLayerMask, TRACK_PTRS* aList );
void formatNetClass( NETCLASS* aNetClass, OUTPUTFORMATTER* aFormatter, int aNestLevel, void formatNetClass( NETCLASS* aNetClass, OUTPUTFORMATTER* aFormatter, int aNestLevel,
int aControlBits ) const int aControlBits ) const
...@@ -425,7 +425,7 @@ public: ...@@ -425,7 +425,7 @@ public:
* Returns a bit-mask of all the layers that are enabled * Returns a bit-mask of all the layers that are enabled
* @return int - the enabled layers in bit-mapped form. * @return int - the enabled layers in bit-mapped form.
*/ */
int GetEnabledLayers() const; LAYER_MSK GetEnabledLayers() const;
/** /**
* Function SetEnabledLayers * Function SetEnabledLayers
...@@ -433,7 +433,7 @@ public: ...@@ -433,7 +433,7 @@ public:
* Changes the bit-mask of enabled layers * Changes the bit-mask of enabled layers
* @param aLayerMask = The new bit-mask of enabled layers * @param aLayerMask = The new bit-mask of enabled layers
*/ */
void SetEnabledLayers( int aLayerMask ); void SetEnabledLayers( LAYER_MSK aLayerMask );
/** /**
* Function IsLayerEnabled * Function IsLayerEnabled
...@@ -465,7 +465,7 @@ public: ...@@ -465,7 +465,7 @@ public:
* Returns a bit-mask of all the layers that are visible * Returns a bit-mask of all the layers that are visible
* @return int - the visible layers in bit-mapped form. * @return int - the visible layers in bit-mapped form.
*/ */
int GetVisibleLayers() const; LAYER_MSK GetVisibleLayers() const;
/** /**
* Function SetVisibleLayers * Function SetVisibleLayers
...@@ -473,7 +473,7 @@ public: ...@@ -473,7 +473,7 @@ public:
* changes the bit-mask of visible layers * changes the bit-mask of visible layers
* @param aLayerMask = The new bit-mask of visible layers * @param aLayerMask = The new bit-mask of visible layers
*/ */
void SetVisibleLayers( int aLayerMask ); void SetVisibleLayers( LAYER_MSK aLayerMask );
// these 2 functions are not tidy at this time, since there are PCB_VISIBLEs that // these 2 functions are not tidy at this time, since there are PCB_VISIBLEs that
// are not stored in the bitmap. // are not stored in the bitmap.
...@@ -1223,7 +1223,7 @@ public: ...@@ -1223,7 +1223,7 @@ public:
* @param aLayerMask A layer or layers to mask the hit test. * @param aLayerMask A layer or layers to mask the hit test.
* @return A pointer to a D_PAD object if found or NULL if not found. * @return A pointer to a D_PAD object if found or NULL if not found.
*/ */
D_PAD* GetPad( const wxPoint& aPosition, int aLayerMask = ALL_LAYERS ); D_PAD* GetPad( const wxPoint& aPosition, LAYER_MSK aLayerMask = ALL_LAYERS );
/** /**
* Function GetPad * Function GetPad
...@@ -1245,7 +1245,7 @@ public: ...@@ -1245,7 +1245,7 @@ public:
* @param aLayer A layer or layers to mask the hit test. * @param aLayer A layer or layers to mask the hit test.
* @return A pointer to a D_PAD object if found or NULL if not found. * @return A pointer to a D_PAD object if found or NULL if not found.
*/ */
D_PAD* GetPadFast( const wxPoint& aPosition, int aLayer ); D_PAD* GetPadFast( const wxPoint& aPosition, LAYER_MSK aLayerMask );
/** /**
* Function GetPad * Function GetPad
...@@ -1262,7 +1262,7 @@ public: ...@@ -1262,7 +1262,7 @@ public:
* @param aLayerMask A layer or layers to mask the hit test. * @param aLayerMask A layer or layers to mask the hit test.
* @return a D_PAD object pointer to the connected pad. * @return a D_PAD object pointer to the connected pad.
*/ */
D_PAD* GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, int aLayerMask ); D_PAD* GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, LAYER_MSK aLayerMask );
/** /**
* Function GetSortedPadListByXthenYCoord * Function GetSortedPadListByXthenYCoord
...@@ -1289,7 +1289,7 @@ public: ...@@ -1289,7 +1289,7 @@ public:
* layer mask. * layer mask.
* @return A TRACK object pointer if found otherwise NULL. * @return A TRACK object pointer if found otherwise NULL.
*/ */
TRACK* GetTrace( TRACK* aTrace, const wxPoint& aPosition, int aLayerMask ); TRACK* GetTrace( TRACK* aTrace, const wxPoint& aPosition, LAYER_MSK aLayerMask );
/** /**
* Function MarkTrace * Function MarkTrace
...@@ -1348,7 +1348,7 @@ public: ...@@ -1348,7 +1348,7 @@ public:
* layer mask. * layer mask.
* @return A pointer to a BOARD_ITEM object if found otherwise NULL. * @return A pointer to a BOARD_ITEM object if found otherwise NULL.
*/ */
BOARD_CONNECTED_ITEM* GetLockPoint( const wxPoint& aPosition, int aLayerMask ); BOARD_CONNECTED_ITEM* GetLockPoint( const wxPoint& aPosition, LAYER_MSK aLayerMask );
/** /**
* Function CreateLockPoint * Function CreateLockPoint
......
...@@ -171,7 +171,7 @@ void BOARD_DESIGN_SETTINGS::AppendConfigs( PARAM_CFG_ARRAY* aResult ) ...@@ -171,7 +171,7 @@ void BOARD_DESIGN_SETTINGS::AppendConfigs( PARAM_CFG_ARRAY* aResult )
// see pcbstruct.h // see pcbstruct.h
int BOARD_DESIGN_SETTINGS::GetVisibleLayers() const LAYER_MSK BOARD_DESIGN_SETTINGS::GetVisibleLayers() const
{ {
return m_VisibleLayers; return m_VisibleLayers;
} }
...@@ -184,7 +184,7 @@ void BOARD_DESIGN_SETTINGS::SetVisibleAlls() ...@@ -184,7 +184,7 @@ void BOARD_DESIGN_SETTINGS::SetVisibleAlls()
} }
void BOARD_DESIGN_SETTINGS::SetVisibleLayers( int aMask ) void BOARD_DESIGN_SETTINGS::SetVisibleLayers( LAYER_MSK aMask )
{ {
// Although Pcbnew uses only 29, GerbView uses all 32 layers // Although Pcbnew uses only 29, GerbView uses all 32 layers
m_VisibleLayers = aMask & m_EnabledLayers & FULL_LAYERS; m_VisibleLayers = aMask & m_EnabledLayers & FULL_LAYERS;
...@@ -198,9 +198,9 @@ void BOARD_DESIGN_SETTINGS::SetLayerVisibility( int aLayerIndex, bool aNewState ...@@ -198,9 +198,9 @@ void BOARD_DESIGN_SETTINGS::SetLayerVisibility( int aLayerIndex, bool aNewState
return; return;
if( aNewState && IsLayerEnabled( aLayerIndex ) ) if( aNewState && IsLayerEnabled( aLayerIndex ) )
m_VisibleLayers |= 1 << aLayerIndex; m_VisibleLayers |= GetLayerMask( aLayerIndex );
else else
m_VisibleLayers &= ~( 1 << aLayerIndex ); m_VisibleLayers &= ~GetLayerMask( aLayerIndex );
} }
...@@ -229,12 +229,12 @@ void BOARD_DESIGN_SETTINGS::SetCopperLayerCount( int aNewLayerCount ) ...@@ -229,12 +229,12 @@ void BOARD_DESIGN_SETTINGS::SetCopperLayerCount( int aNewLayerCount )
if( m_CopperLayerCount > 1 ) if( m_CopperLayerCount > 1 )
m_EnabledLayers |= LAYER_FRONT; m_EnabledLayers |= LAYER_FRONT;
for( int ii = 1; ii < aNewLayerCount - 1; ii++ ) for( int ii = LAYER_N_2; ii < aNewLayerCount - 1; ++ii )
m_EnabledLayers |= 1 << ii; m_EnabledLayers |= GetLayerMask( ii );
} }
void BOARD_DESIGN_SETTINGS::SetEnabledLayers( int aMask ) void BOARD_DESIGN_SETTINGS::SetEnabledLayers( LAYER_MSK aMask )
{ {
// Back and front layers are always enabled. // Back and front layers are always enabled.
aMask |= LAYER_BACK | LAYER_FRONT; aMask |= LAYER_BACK | LAYER_FRONT;
......
...@@ -573,7 +573,7 @@ D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const ...@@ -573,7 +573,7 @@ D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const
} }
D_PAD* MODULE::GetPad( const wxPoint& aPosition, int aLayerMask ) D_PAD* MODULE::GetPad( const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() ) for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
{ {
......
...@@ -312,7 +312,7 @@ public: ...@@ -312,7 +312,7 @@ public:
* @param aLayerMask A layer or layers to mask the hit test. * @param aLayerMask A layer or layers to mask the hit test.
* @return A pointer to a D_PAD object if found otherwise NULL. * @return A pointer to a D_PAD object if found otherwise NULL.
*/ */
D_PAD* GetPad( const wxPoint& aPosition, int aLayerMask = ALL_LAYERS ); D_PAD* GetPad( const wxPoint& aPosition, LAYER_MSK aLayerMask = ALL_LAYERS );
/** /**
* GetPadCount * GetPadCount
......
...@@ -79,9 +79,9 @@ int BOARD::ReturnFlippedLayerNumber( int oldlayer ) ...@@ -79,9 +79,9 @@ int BOARD::ReturnFlippedLayerNumber( int oldlayer )
/* Calculate the mask layer when flipping a footprint /* Calculate the mask layer when flipping a footprint
* BACK and FRONT copper layers , mask, paste, solder layers are swapped * BACK and FRONT copper layers , mask, paste, solder layers are swapped
*/ */
int ChangeSideMaskLayer( int aMask ) LAYER_MSK ChangeSideMaskLayer( LAYER_MSK aMask )
{ {
int newMask; LAYER_MSK newMask;
newMask = aMask & ~(LAYER_BACK | LAYER_FRONT | newMask = aMask & ~(LAYER_BACK | LAYER_FRONT |
SILKSCREEN_LAYER_BACK | SILKSCREEN_LAYER_FRONT | SILKSCREEN_LAYER_BACK | SILKSCREEN_LAYER_FRONT |
......
...@@ -690,7 +690,7 @@ void D_PAD::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM>& aList ) ...@@ -690,7 +690,7 @@ void D_PAD::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM>& aList )
// see class_pad.h // see class_pad.h
bool D_PAD::IsOnLayer( int aLayer ) const bool D_PAD::IsOnLayer( int aLayer ) const
{ {
return (1 << aLayer) & m_layerMask; return ::GetLayerMask( aLayer ) & m_layerMask;
} }
......
...@@ -186,8 +186,8 @@ public: ...@@ -186,8 +186,8 @@ public:
void SetDrillShape( PAD_SHAPE_T aDrillShape ) { m_DrillShape = aDrillShape; } void SetDrillShape( PAD_SHAPE_T aDrillShape ) { m_DrillShape = aDrillShape; }
PAD_SHAPE_T GetDrillShape() const { return m_DrillShape; } PAD_SHAPE_T GetDrillShape() const { return m_DrillShape; }
void SetLayerMask( int aLayerMask ) { m_layerMask = aLayerMask; } void SetLayerMask( LAYER_MSK aLayerMask ) { m_layerMask = aLayerMask; }
int GetLayerMask() const { return m_layerMask; } LAYER_MSK GetLayerMask() const { return m_layerMask; }
void SetAttribute( PAD_ATTR_T aAttribute ); void SetAttribute( PAD_ATTR_T aAttribute );
PAD_ATTR_T GetAttribute() const { return m_Attribute; } PAD_ATTR_T GetAttribute() const { return m_Attribute; }
...@@ -454,7 +454,7 @@ private: ...@@ -454,7 +454,7 @@ private:
*/ */
wxPoint m_Offset; wxPoint m_Offset;
int m_layerMask; ///< Bitwise layer :1= copper layer, 15= cmp, LAYER_MSK m_layerMask; ///< Bitwise layer :1= copper layer, 15= cmp,
///< 2..14 = internal layers ///< 2..14 = internal layers
///< 16 .. 31 = technical layers ///< 16 .. 31 = technical layers
......
...@@ -246,8 +246,8 @@ void D_PAD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDraw_mode, ...@@ -246,8 +246,8 @@ void D_PAD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDraw_mode,
// if routing between copper and component layers, // if routing between copper and component layers,
// or the current layer is one of said 2 external copper layers, // or the current layer is one of said 2 external copper layers,
// then highlight only the current layer. // then highlight only the current layer.
if( ( ( 1 << routeTop ) | ( 1 << routeBot ) ) == ( LAYER_BACK | LAYER_FRONT ) if( ( ::GetLayerMask( routeTop ) | ::GetLayerMask( routeBot ) ) == ( LAYER_BACK | LAYER_FRONT )
|| ( ( 1 << screen->m_Active_Layer ) & ( LAYER_BACK | LAYER_FRONT ) ) ) || ( ::GetLayerMask( screen->m_Active_Layer ) & ( LAYER_BACK | LAYER_FRONT ) ) )
{ {
if( !IsOnLayer( screen->m_Active_Layer ) ) if( !IsOnLayer( screen->m_Active_Layer ) )
ColorTurnToDarkDarkGray( &color ); ColorTurnToDarkDarkGray( &color );
......
...@@ -263,7 +263,7 @@ void PCB_LAYER_WIDGET::ReFill() ...@@ -263,7 +263,7 @@ void PCB_LAYER_WIDGET::ReFill()
// show all coppers first, with front on top, back on bottom, then technical layers // show all coppers first, with front on top, back on bottom, then technical layers
layer = LAYER_N_FRONT; layer = LAYER_N_FRONT;
if( enabledLayers & (1 << layer) ) if( enabledLayers & GetLayerMask( layer ) )
{ {
AppendLayerRow( LAYER_WIDGET::ROW( AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) ); brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Front copper layer"), true ) );
...@@ -271,7 +271,7 @@ void PCB_LAYER_WIDGET::ReFill() ...@@ -271,7 +271,7 @@ void PCB_LAYER_WIDGET::ReFill()
for( layer = LAYER_N_FRONT-1; layer >= 1; --layer ) for( layer = LAYER_N_FRONT-1; layer >= 1; --layer )
{ {
if( enabledLayers & (1 << layer) ) if( enabledLayers & GetLayerMask( layer ) )
{ {
AppendLayerRow( LAYER_WIDGET::ROW( AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) ); brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("An innner copper layer"), true ) );
...@@ -279,7 +279,7 @@ void PCB_LAYER_WIDGET::ReFill() ...@@ -279,7 +279,7 @@ void PCB_LAYER_WIDGET::ReFill()
} }
layer = LAYER_N_BACK; layer = LAYER_N_BACK;
if( enabledLayers & (1 << layer) ) if( enabledLayers & GetLayerMask( layer ) )
{ {
AppendLayerRow( LAYER_WIDGET::ROW( AppendLayerRow( LAYER_WIDGET::ROW(
brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) ); brd->GetLayerName( layer ), layer, brd->GetLayerColor( layer ), _("Back copper layer"), true ) );
...@@ -309,7 +309,7 @@ void PCB_LAYER_WIDGET::ReFill() ...@@ -309,7 +309,7 @@ void PCB_LAYER_WIDGET::ReFill()
{ {
layer = techLayerSeq[i].layerId; layer = techLayerSeq[i].layerId;
if( !(enabledLayers & (1 << layer)) ) if( !(enabledLayers & GetLayerMask( layer )) )
continue; continue;
AppendLayerRow( LAYER_WIDGET::ROW( AppendLayerRow( LAYER_WIDGET::ROW(
...@@ -349,12 +349,12 @@ void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal ...@@ -349,12 +349,12 @@ void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal
{ {
BOARD* brd = myframe->GetBoard(); BOARD* brd = myframe->GetBoard();
int visibleLayers = brd->GetVisibleLayers(); LAYER_MSK visibleLayers = brd->GetVisibleLayers();
if( isVisible ) if( isVisible )
visibleLayers |= (1 << aLayer); visibleLayers |= GetLayerMask( aLayer );
else else
visibleLayers &= ~(1 << aLayer); visibleLayers &= ~GetLayerMask( aLayer );
brd->SetVisibleLayers( visibleLayers ); brd->SetVisibleLayers( visibleLayers );
......
...@@ -87,7 +87,7 @@ inline bool IsNear( wxPoint& p1, wxPoint& p2, int max_dist ) ...@@ -87,7 +87,7 @@ inline bool IsNear( wxPoint& p1, wxPoint& p2, int max_dist )
} }
TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition, int aLayerMask ) TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
TRACK* PtSegm; TRACK* PtSegm;
...@@ -100,13 +100,13 @@ TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition, ...@@ -100,13 +100,13 @@ TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition,
{ {
if( aPosition == PtSegm->GetStart() ) if( aPosition == PtSegm->GetStart() )
{ {
if( aLayerMask & PtSegm->ReturnMaskLayer() ) if( aLayerMask & PtSegm->GetLayerMask() )
return PtSegm; return PtSegm;
} }
if( aPosition == PtSegm->GetEnd() ) if( aPosition == PtSegm->GetEnd() )
{ {
if( aLayerMask & PtSegm->ReturnMaskLayer() ) if( aLayerMask & PtSegm->GetLayerMask() )
return PtSegm; return PtSegm;
} }
} }
...@@ -429,7 +429,7 @@ bool SEGVIA::IsOnLayer( int layer_number ) const ...@@ -429,7 +429,7 @@ bool SEGVIA::IsOnLayer( int layer_number ) const
} }
int TRACK::ReturnMaskLayer() const LAYER_MSK TRACK::GetLayerMask() const
{ {
if( Type() == PCB_VIA_T ) if( Type() == PCB_VIA_T )
{ {
...@@ -445,18 +445,19 @@ int TRACK::ReturnMaskLayer() const ...@@ -445,18 +445,19 @@ int TRACK::ReturnMaskLayer() const
// ReturnLayerPair() knows how layers are stored // ReturnLayerPair() knows how layers are stored
( (SEGVIA*) this )->ReturnLayerPair( &top_layer, &bottom_layer ); ( (SEGVIA*) this )->ReturnLayerPair( &top_layer, &bottom_layer );
int layermask = 0; LAYER_MSK layermask = NO_LAYERS;
while( bottom_layer <= top_layer ) while( bottom_layer <= top_layer )
{ {
layermask |= GetLayerMask( bottom_layer++ ); layermask |= ::GetLayerMask( bottom_layer );
++bottom_layer;
} }
return layermask; return layermask;
} }
else else
{ {
return GetLayerMask( m_Layer ); return ::GetLayerMask( m_Layer );
} }
} }
...@@ -1190,7 +1191,7 @@ bool TRACK::HitTest( const EDA_RECT& aRect ) const ...@@ -1190,7 +1191,7 @@ bool TRACK::HitTest( const EDA_RECT& aRect ) const
} }
TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayerMask ) TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayer )
{ {
TRACK* track; TRACK* track;
...@@ -1205,10 +1206,10 @@ TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayerMask ) ...@@ -1205,10 +1206,10 @@ TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayerMask )
if( track->GetState( BUSY | IS_DELETED ) ) if( track->GetState( BUSY | IS_DELETED ) )
continue; continue;
if( aLayerMask < 0 ) if( aLayer < 0 )
break; break;
if( track->IsOnLayer( aLayerMask ) ) if( track->IsOnLayer( aLayer ) )
break; break;
} }
...@@ -1216,7 +1217,7 @@ TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayerMask ) ...@@ -1216,7 +1217,7 @@ TRACK* TRACK::GetVia( const wxPoint& aPosition, int aLayerMask )
} }
TRACK* TRACK::GetVia( TRACK* aEndTrace, const wxPoint& aPosition, int aLayerMask ) TRACK* TRACK::GetVia( TRACK* aEndTrace, const wxPoint& aPosition, LAYER_MSK aLayerMask )
{ {
TRACK* trace; TRACK* trace;
...@@ -1228,7 +1229,7 @@ TRACK* TRACK::GetVia( TRACK* aEndTrace, const wxPoint& aPosition, int aLayerMask ...@@ -1228,7 +1229,7 @@ TRACK* TRACK::GetVia( TRACK* aEndTrace, const wxPoint& aPosition, int aLayerMask
{ {
if( trace->GetState( BUSY | IS_DELETED ) == 0 ) if( trace->GetState( BUSY | IS_DELETED ) == 0 )
{ {
if( aLayerMask & trace->ReturnMaskLayer() ) if( aLayerMask & trace->GetLayerMask() )
return trace; return trace;
} }
} }
...@@ -1258,7 +1259,7 @@ TRACK* TRACK::GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, int aEndPoint ) ...@@ -1258,7 +1259,7 @@ TRACK* TRACK::GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, int aEndPoint )
else else
position = m_End; position = m_End;
Reflayer = ReturnMaskLayer(); Reflayer = GetLayerMask();
previousSegment = nextSegment = this; previousSegment = nextSegment = this;
...@@ -1282,13 +1283,13 @@ TRACK* TRACK::GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, int aEndPoint ) ...@@ -1282,13 +1283,13 @@ TRACK* TRACK::GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, int aEndPoint )
if( IsNear( position, nextSegment->m_Start, max_dist ) ) if( IsNear( position, nextSegment->m_Start, max_dist ) )
{ {
if( Reflayer & nextSegment->ReturnMaskLayer() ) if( Reflayer & nextSegment->GetLayerMask() )
return nextSegment; return nextSegment;
} }
if( IsNear( position, nextSegment->m_End, max_dist ) ) if( IsNear( position, nextSegment->m_End, max_dist ) )
{ {
if( Reflayer & nextSegment->ReturnMaskLayer() ) if( Reflayer & nextSegment->GetLayerMask() )
return nextSegment; return nextSegment;
} }
suite: suite:
...@@ -1310,13 +1311,13 @@ suite: ...@@ -1310,13 +1311,13 @@ suite:
if( IsNear( position, previousSegment->m_Start, max_dist ) ) if( IsNear( position, previousSegment->m_Start, max_dist ) )
{ {
if( Reflayer & previousSegment->ReturnMaskLayer() ) if( Reflayer & previousSegment->GetLayerMask() )
return previousSegment; return previousSegment;
} }
if( IsNear( position, previousSegment->m_End, max_dist ) ) if( IsNear( position, previousSegment->m_End, max_dist ) )
{ {
if( Reflayer & previousSegment->ReturnMaskLayer() ) if( Reflayer & previousSegment->GetLayerMask() )
return previousSegment; return previousSegment;
} }
suite1: suite1:
...@@ -1352,13 +1353,13 @@ suite1: ...@@ -1352,13 +1353,13 @@ suite1:
if( IsNear( position, nextSegment->m_Start, max_dist ) ) if( IsNear( position, nextSegment->m_Start, max_dist ) )
{ {
if( Reflayer & nextSegment->ReturnMaskLayer() ) if( Reflayer & nextSegment->GetLayerMask() )
return nextSegment; return nextSegment;
} }
if( IsNear( position, nextSegment->m_End, max_dist ) ) if( IsNear( position, nextSegment->m_End, max_dist ) )
{ {
if( Reflayer & nextSegment->ReturnMaskLayer() ) if( Reflayer & nextSegment->GetLayerMask() )
return nextSegment; return nextSegment;
} }
...@@ -1373,7 +1374,8 @@ suite1: ...@@ -1373,7 +1374,8 @@ suite1:
int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace ) int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace )
{ {
TRACK* Track, * via, * segm, * TrackListEnd; TRACK* Track, * via, * segm, * TrackListEnd;
int NbEnds, layerMask, ii, ok = 0; int NbEnds, ii, ok = 0;
LAYER_MSK layerMask;
if( aCount <= 1 ) if( aCount <= 1 )
{ {
...@@ -1402,12 +1404,12 @@ int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace ) ...@@ -1402,12 +1404,12 @@ int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace )
if( Track->Type() == PCB_VIA_T ) if( Track->Type() == PCB_VIA_T )
continue; continue;
layerMask = Track->ReturnMaskLayer(); layerMask = Track->GetLayerMask();
via = GetVia( TrackListEnd, Track->m_Start, layerMask ); via = GetVia( TrackListEnd, Track->m_Start, layerMask );
if( via ) if( via )
{ {
layerMask |= via->ReturnMaskLayer(); layerMask |= via->GetLayerMask();
via->SetState( BUSY, true ); via->SetState( BUSY, true );
} }
...@@ -1449,12 +1451,12 @@ int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace ) ...@@ -1449,12 +1451,12 @@ int TRACK::GetEndSegments( int aCount, TRACK** aStartTrace, TRACK** aEndTrace )
} }
} }
layerMask = Track->ReturnMaskLayer(); layerMask = Track->GetLayerMask();
via = GetVia( TrackListEnd, Track->m_End, layerMask ); via = GetVia( TrackListEnd, Track->m_End, layerMask );
if( via ) if( via )
{ {
layerMask |= via->ReturnMaskLayer(); layerMask |= via->GetLayerMask();
via->SetState( BUSY, true ); via->SetState( BUSY, true );
} }
......
...@@ -68,7 +68,7 @@ class MSG_PANEL_ITEM; ...@@ -68,7 +68,7 @@ class MSG_PANEL_ITEM;
* @return A TRACK object pointer if found otherwise NULL. * @return A TRACK object pointer if found otherwise NULL.
*/ */
extern TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition, extern TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition,
int aLayerMask ); LAYER_MSK aLayerMask );
class TRACK : public BOARD_CONNECTED_ITEM class TRACK : public BOARD_CONNECTED_ITEM
...@@ -215,12 +215,12 @@ public: ...@@ -215,12 +215,12 @@ public:
bool IsDrillDefault() { return m_Drill <= 0; } bool IsDrillDefault() { return m_Drill <= 0; }
/** /**
* Function ReturnMaskLayer * Function GetLayerMask
* returns a "layer mask", which is a bitmap of all layers on which the * returns a "layer mask", which is a bitmap of all layers on which the
* TRACK segment or SEGVIA physically resides. * TRACK segment or SEGVIA physically resides.
* @return int - a layer mask, see pcbstruct.h's LAYER_BACK, etc. * @return int - a layer mask, see pcbstruct.h's LAYER_BACK, etc.
*/ */
int ReturnMaskLayer() const; LAYER_MSK GetLayerMask() const;
/** /**
* Function IsPointOnEnds * Function IsPointOnEnds
...@@ -265,10 +265,10 @@ public: ...@@ -265,10 +265,10 @@ public:
* finds the first SEGVIA object at \a aPosition on \a aLayer starting at the trace. * finds the first SEGVIA object at \a aPosition on \a aLayer starting at the trace.
* *
* @param aPosition The wxPoint to HitTest() against. * @param aPosition The wxPoint to HitTest() against.
* @param aLayerMask The layer to match, pass -1 for a don't care. * @param aLayer The layer to match, pass -1 for a don't care.
* @return A pointer to a SEGVIA object if found, else NULL. * @return A pointer to a SEGVIA object if found, else NULL.
*/ */
TRACK* GetVia( const wxPoint& aPosition, int aLayerMask = -1 ); TRACK* GetVia( const wxPoint& aPosition, int aLayer = -1 );
/** /**
* Function GetVia * Function GetVia
...@@ -280,7 +280,7 @@ public: ...@@ -280,7 +280,7 @@ public:
* @param aLayerMask The layers to match, pass -1 for a don't care. * @param aLayerMask The layers to match, pass -1 for a don't care.
* @return A pointer to a SEGVIA object if found, else NULL. * @return A pointer to a SEGVIA object if found, else NULL.
*/ */
TRACK* GetVia( TRACK* aEndTrace, const wxPoint& aPosition, int aLayerMask ); TRACK* GetVia( TRACK* aEndTrace, const wxPoint& aPosition, LAYER_MSK aLayerMask );
/** /**
* Function GetTrace * Function GetTrace
......
...@@ -379,10 +379,10 @@ private: ...@@ -379,10 +379,10 @@ private:
int m_PreferredLayer; int m_PreferredLayer;
bool m_IgnorePreferredLayer; bool m_IgnorePreferredLayer;
int m_LayerLocked; ///< bit-mapped layer locked bits LAYER_MSK m_LayerLocked; ///< bit-mapped layer locked bits
bool m_IgnoreLockedLayers; bool m_IgnoreLockedLayers;
int m_LayerVisible; ///< bit-mapped layer visible bits LAYER_MSK m_LayerVisible; ///< bit-mapped layer visible bits
bool m_IgnoreNonVisibleLayers; bool m_IgnoreNonVisibleLayers;
bool m_IgnoreLockedItems; bool m_IgnoreLockedItems;
...@@ -407,11 +407,11 @@ public: ...@@ -407,11 +407,11 @@ public:
* @param aVisibleLayerMask = current visible layers (bit mask) * @param aVisibleLayerMask = current visible layers (bit mask)
* @param aPreferredLayer = the layer to search first * @param aPreferredLayer = the layer to search first
*/ */
GENERAL_COLLECTORS_GUIDE( int aVisibleLayerMask, int aPreferredLayer ) GENERAL_COLLECTORS_GUIDE( LAYER_MSK aVisibleLayerMask, int aPreferredLayer )
{ {
m_PreferredLayer = LAYER_N_FRONT; m_PreferredLayer = LAYER_N_FRONT;
m_IgnorePreferredLayer = false; m_IgnorePreferredLayer = false;
m_LayerLocked = 0; m_LayerLocked = NO_LAYERS;
m_LayerVisible = aVisibleLayerMask; m_LayerVisible = aVisibleLayerMask;
m_IgnoreLockedLayers = true; m_IgnoreLockedLayers = true;
m_IgnoreNonVisibleLayers = true; m_IgnoreNonVisibleLayers = true;
...@@ -443,13 +443,16 @@ public: ...@@ -443,13 +443,16 @@ public:
* Function IsLayerLocked * Function IsLayerLocked
* @return bool - true if the given layer is locked, else false. * @return bool - true if the given layer is locked, else false.
*/ */
bool IsLayerLocked( int aLayer ) const { return (1<<aLayer) & m_LayerLocked; } bool IsLayerLocked( int aLayer ) const
{
return GetLayerMask( aLayer ) & m_LayerLocked;
}
void SetLayerLocked( int aLayer, bool isLocked ) void SetLayerLocked( int aLayer, bool isLocked )
{ {
if( isLocked ) if( isLocked )
m_LayerLocked |= 1 << aLayer; m_LayerLocked |= GetLayerMask( aLayer );
else else
m_LayerLocked &= ~(1 << aLayer); m_LayerLocked &= ~GetLayerMask( aLayer );
} }
...@@ -457,15 +460,18 @@ public: ...@@ -457,15 +460,18 @@ public:
* Function IsLayerVisible * Function IsLayerVisible
* @return bool - true if the given layer is visible, else false. * @return bool - true if the given layer is visible, else false.
*/ */
bool IsLayerVisible( int aLayer ) const { return (1<<aLayer) & m_LayerVisible; } bool IsLayerVisible( int aLayer ) const
{
return GetLayerMask( aLayer ) & m_LayerVisible;
}
void SetLayerVisible( int aLayer, bool isVisible ) void SetLayerVisible( int aLayer, bool isVisible )
{ {
if( isVisible ) if( isVisible )
m_LayerVisible |= 1 << aLayer; m_LayerVisible |= GetLayerMask( aLayer );
else else
m_LayerVisible &= ~(1 << aLayer); m_LayerVisible &= ~GetLayerMask( aLayer );
} }
void SetLayerVisibleBits( int aLayerBits ) { m_LayerVisible = aLayerBits; } void SetLayerVisibleBits( LAYER_MSK aLayerBits ) { m_LayerVisible = aLayerBits; }
/** /**
......
...@@ -122,7 +122,7 @@ void CONNECTIONS::SearchTracksConnectedToPads( bool add_to_padlist, bool add_to_ ...@@ -122,7 +122,7 @@ void CONNECTIONS::SearchTracksConnectedToPads( bool add_to_padlist, bool add_to_
{ {
CONNECTED_POINT* cp_item = candidates[jj]; CONNECTED_POINT* cp_item = candidates[jj];
if( (pad->GetLayerMask() & cp_item->GetTrack()->ReturnMaskLayer()) == 0 ) if( (pad->GetLayerMask() & cp_item->GetTrack()->GetLayerMask()) == 0 )
continue; continue;
if( pad->HitTest( cp_item->GetPoint() ) ) if( pad->HitTest( cp_item->GetPoint() ) )
...@@ -296,7 +296,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -296,7 +296,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
int count = 0; int count = 0;
m_connected.clear(); m_connected.clear();
int layerMask = aTrack->ReturnMaskLayer(); LAYER_MSK layerMask = aTrack->GetLayerMask();
// Search for connections to starting point: // Search for connections to starting point:
#define USE_EXTENDED_SEARCH #define USE_EXTENDED_SEARCH
...@@ -318,7 +318,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -318,7 +318,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
continue; continue;
if( m_candidates[ii].GetPoint() != position ) if( m_candidates[ii].GetPoint() != position )
break; break;
if( (m_candidates[ii].GetTrack()->ReturnMaskLayer() & layerMask ) != 0 ) if( m_candidates[ii].GetTrack()->GetLayerMask() & layerMask )
m_connected.push_back( m_candidates[ii].GetTrack() ); m_connected.push_back( m_candidates[ii].GetTrack() );
} }
// search before: // search before:
...@@ -328,7 +328,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -328,7 +328,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
continue; continue;
if( m_candidates[ii].GetPoint() != position ) if( m_candidates[ii].GetPoint() != position )
break; break;
if( (m_candidates[ii].GetTrack()->ReturnMaskLayer() & layerMask ) != 0 ) if( m_candidates[ii].GetTrack()->GetLayerMask() & layerMask )
m_connected.push_back( m_candidates[ii].GetTrack() ); m_connected.push_back( m_candidates[ii].GetTrack() );
} }
} }
...@@ -339,7 +339,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -339,7 +339,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
{ {
TRACK * ctrack = tracks_candidates[ii]->GetTrack(); TRACK * ctrack = tracks_candidates[ii]->GetTrack();
if( ( ctrack->ReturnMaskLayer() & layerMask ) == 0 ) if( ( ctrack->GetLayerMask() & layerMask ) == 0 )
continue; continue;
if( ctrack == aTrack ) if( ctrack == aTrack )
......
...@@ -127,7 +127,7 @@ void DIALOG_SVG_PRINT::initDialog() ...@@ -127,7 +127,7 @@ void DIALOG_SVG_PRINT::initDialog()
if( m_boxSelectLayer[layer] == NULL ) if( m_boxSelectLayer[layer] == NULL )
continue; continue;
long mask = 1 << layer; LAYER_MSK mask = GetLayerMask( layer );
if( mask & s_SelectedLayers ) if( mask & s_SelectedLayers )
m_boxSelectLayer[layer]->SetValue( true ); m_boxSelectLayer[layer]->SetValue( true );
...@@ -235,7 +235,7 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile ) ...@@ -235,7 +235,7 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile )
SetPenWidth(); SetPenWidth();
// Build layers mask // Build layers mask
int printMaskLayer = 0; LAYER_MSK printMaskLayer = NO_LAYERS;
for( int layer = 0; layer<NB_LAYERS; layer++ ) for( int layer = 0; layer<NB_LAYERS; layer++ )
{ {
...@@ -246,7 +246,7 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile ) ...@@ -246,7 +246,7 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile )
wxString msg; wxString msg;
for( int layer = 0; layer<NB_LAYERS; layer++ ) for( int layer = 0; layer<NB_LAYERS; layer++ )
{ {
int currlayer_mask = 1 << layer; LAYER_MSK currlayer_mask = GetLayerMask( layer );
if( (printMaskLayer & currlayer_mask ) == 0 ) if( (printMaskLayer & currlayer_mask ) == 0 )
continue; continue;
......
...@@ -17,7 +17,7 @@ private: ...@@ -17,7 +17,7 @@ private:
PCB_BASE_FRAME* m_parent; PCB_BASE_FRAME* m_parent;
BOARD* m_board; BOARD* m_board;
wxConfig* m_config; wxConfig* m_config;
long m_printMaskLayer; LAYER_MSK m_printMaskLayer;
wxCheckBox* m_boxSelectLayer[32]; wxCheckBox* m_boxSelectLayer[32];
bool m_printBW; bool m_printBW;
wxString m_outputDirectory; wxString m_outputDirectory;
......
...@@ -94,10 +94,10 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( ) ...@@ -94,10 +94,10 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( )
} }
} }
int masque_layer = 0; LAYER_MSK masque_layer = NO_LAYERS;
int layers_filter = ALL_LAYERS; LAYER_MSK layers_filter = ALL_LAYERS;
if( m_rbLayersOption->GetSelection() != 0 ) // Use current layer only if( m_rbLayersOption->GetSelection() != 0 ) // Use current layer only
layers_filter = 1 << m_currentLayer; layers_filter = GetLayerMask( m_currentLayer );
if( m_DelDrawings->GetValue() ) if( m_DelDrawings->GetValue() )
...@@ -111,7 +111,7 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( ) ...@@ -111,7 +111,7 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( )
for( item = pcb->m_Drawings; item != NULL; item = nextitem ) for( item = pcb->m_Drawings; item != NULL; item = nextitem )
{ {
nextitem = item->Next(); nextitem = item->Next();
bool removeme = (GetLayerMask( item->GetLayer() ) & masque_layer) != 0; bool removeme = GetLayerMask( item->GetLayer() ) & masque_layer;
if( ( item->Type() == PCB_TEXT_T ) && m_DelTexts->GetValue() ) if( ( item->Type() == PCB_TEXT_T ) && m_DelTexts->GetValue() )
removeme = true; removeme = true;
...@@ -162,7 +162,7 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( ) ...@@ -162,7 +162,7 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( )
if( (track->Type() == PCB_VIA_T) && !m_TrackFilterVias->GetValue() ) if( (track->Type() == PCB_VIA_T) && !m_TrackFilterVias->GetValue() )
continue; continue;
if( (track->ReturnMaskLayer() & layers_filter) == 0 ) if( (track->GetLayerMask() & layers_filter) == 0 )
continue; continue;
itemPicker.SetItem( track ); itemPicker.SetItem( track );
......
...@@ -76,7 +76,7 @@ private: ...@@ -76,7 +76,7 @@ private:
PCB_EDIT_FRAME* m_Parent; PCB_EDIT_FRAME* m_Parent;
int m_CopperLayerCount; int m_CopperLayerCount;
int m_EnabledLayers; LAYER_MSK m_EnabledLayers;
BOARD* m_Pcb; BOARD* m_Pcb;
...@@ -90,12 +90,12 @@ private: ...@@ -90,12 +90,12 @@ private:
void showCopperChoice( int copperCount ); void showCopperChoice( int copperCount );
void showBoardLayerNames(); void showBoardLayerNames();
void showSelectedLayerCheckBoxes( int enableLayerMask ); void showSelectedLayerCheckBoxes( LAYER_MSK enableLayerMask );
void showLayerTypes(); void showLayerTypes();
void showPresets( int enabledLayerMask ); void showPresets( LAYER_MSK enabledLayerMask );
/** return the selected layer mask within the UI checkboxes */ /** return the selected layer mask within the UI checkboxes */
int getUILayerMask(); LAYER_MSK getUILayerMask();
wxString getLayerName( int layer ); wxString getLayerName( int layer );
int getLayerTypeIndex( int layer ); int getLayerTypeIndex( int layer );
...@@ -171,12 +171,12 @@ public: ...@@ -171,12 +171,12 @@ public:
// Layer bit masks for each defined "Preset Layer Grouping" // Layer bit masks for each defined "Preset Layer Grouping"
static const int presets[] = static const LAYER_MSK presets[] =
{ {
#define FRONT_AUX (SILKSCREEN_LAYER_FRONT | SOLDERMASK_LAYER_FRONT | ADHESIVE_LAYER_FRONT | SOLDERPASTE_LAYER_FRONT) #define FRONT_AUX (SILKSCREEN_LAYER_FRONT | SOLDERMASK_LAYER_FRONT | ADHESIVE_LAYER_FRONT | SOLDERPASTE_LAYER_FRONT)
#define BACK_AUX (SILKSCREEN_LAYER_BACK | SOLDERMASK_LAYER_BACK | ADHESIVE_LAYER_BACK | SOLDERPASTE_LAYER_BACK) #define BACK_AUX (SILKSCREEN_LAYER_BACK | SOLDERMASK_LAYER_BACK | ADHESIVE_LAYER_BACK | SOLDERPASTE_LAYER_BACK)
0, // shift the array index up by one, matches with "Custom". NO_LAYERS, // shift the array index up by one, matches with "Custom".
// "Two layers, parts on Front only" // "Two layers, parts on Front only"
EDGE_LAYER | LAYER_FRONT | LAYER_BACK | FRONT_AUX, EDGE_LAYER | LAYER_FRONT | LAYER_BACK | FRONT_AUX,
...@@ -348,16 +348,16 @@ void DIALOG_LAYERS_SETUP::showBoardLayerNames() ...@@ -348,16 +348,16 @@ void DIALOG_LAYERS_SETUP::showBoardLayerNames()
} }
void DIALOG_LAYERS_SETUP::showSelectedLayerCheckBoxes( int enabledLayers ) void DIALOG_LAYERS_SETUP::showSelectedLayerCheckBoxes( LAYER_MSK enabledLayers )
{ {
for( int layer=0; layer<NB_LAYERS; ++layer ) for( int layer=0; layer<NB_LAYERS; ++layer )
{ {
setLayerCheckBox( layer, (1<<layer) & enabledLayers ); setLayerCheckBox( layer, GetLayerMask( layer ) & enabledLayers );
} }
} }
void DIALOG_LAYERS_SETUP::showPresets( int enabledLayers ) void DIALOG_LAYERS_SETUP::showPresets( LAYER_MSK enabledLayers )
{ {
int presetsNdx = 0; // the "Custom" setting, matches nothing int presetsNdx = 0; // the "Custom" setting, matches nothing
...@@ -385,16 +385,16 @@ void DIALOG_LAYERS_SETUP::showLayerTypes() ...@@ -385,16 +385,16 @@ void DIALOG_LAYERS_SETUP::showLayerTypes()
} }
int DIALOG_LAYERS_SETUP::getUILayerMask() LAYER_MSK DIALOG_LAYERS_SETUP::getUILayerMask()
{ {
int layerMaskResult = 0; LAYER_MSK layerMaskResult = NO_LAYERS;
for( int layer=0; layer<NB_LAYERS; ++layer ) for( int layer=0; layer<NB_LAYERS; ++layer )
{ {
wxCheckBox* ctl = getCheckBox( layer ); wxCheckBox* ctl = getCheckBox( layer );
if( ctl->GetValue() ) if( ctl->GetValue() )
{ {
layerMaskResult |= (1 << layer); layerMaskResult |= GetLayerMask( layer );
} }
} }
......
...@@ -65,7 +65,7 @@ static PAD_ATTR_T CodeType[] = { ...@@ -65,7 +65,7 @@ static PAD_ATTR_T CodeType[] = {
// Default mask layers setup for pads according to the pad type // Default mask layers setup for pads according to the pad type
static long Std_Pad_Layers[] = { static const LAYER_MSK Std_Pad_Layers[] = {
// PAD_STANDARD: // PAD_STANDARD:
PAD_STANDARD_DEFAULT_LAYERS, PAD_STANDARD_DEFAULT_LAYERS,
...@@ -114,7 +114,7 @@ private: ...@@ -114,7 +114,7 @@ private:
* updates the CheckBox states in pad layers list, * updates the CheckBox states in pad layers list,
* @param layer_mask = pad layer mask (ORed layers bit mask) * @param layer_mask = pad layer mask (ORed layers bit mask)
*/ */
void setPadLayersList( long layer_mask ); void setPadLayersList( LAYER_MSK layer_mask );
/// Copy values from dialog field to aPad's members /// Copy values from dialog field to aPad's members
bool transferDataToPad( D_PAD* aPad ); bool transferDataToPad( D_PAD* aPad );
...@@ -592,13 +592,12 @@ void DIALOG_PAD_PROPERTIES::PadOrientEvent( wxCommandEvent& event ) ...@@ -592,13 +592,12 @@ void DIALOG_PAD_PROPERTIES::PadOrientEvent( wxCommandEvent& event )
void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event ) void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event )
{ {
long layer_mask;
unsigned ii = m_PadType->GetSelection(); unsigned ii = m_PadType->GetSelection();
if( ii >= NBTYPES ) // catches < 0 also if( ii >= NBTYPES ) // catches < 0 also
ii = 0; ii = 0;
layer_mask = Std_Pad_Layers[ii]; LAYER_MSK layer_mask = Std_Pad_Layers[ii];
setPadLayersList( layer_mask ); setPadLayersList( layer_mask );
// Enable/disable drill dialog items: // Enable/disable drill dialog items:
...@@ -619,7 +618,7 @@ void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event ) ...@@ -619,7 +618,7 @@ void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event )
} }
void DIALOG_PAD_PROPERTIES::setPadLayersList( long layer_mask ) void DIALOG_PAD_PROPERTIES::setPadLayersList( LAYER_MSK layer_mask )
{ {
if( ( layer_mask & ALL_CU_LAYERS ) == LAYER_FRONT ) if( ( layer_mask & ALL_CU_LAYERS ) == LAYER_FRONT )
m_rbCopperLayersSel->SetSelection(0); m_rbCopperLayersSel->SetSelection(0);
...@@ -672,7 +671,7 @@ bool DIALOG_PAD_PROPERTIES::padValuesOK() ...@@ -672,7 +671,7 @@ bool DIALOG_PAD_PROPERTIES::padValuesOK()
error_msgs.Add( _( "Incorrect value for pad drill: pad drill bigger than pad size" ) ); error_msgs.Add( _( "Incorrect value for pad drill: pad drill bigger than pad size" ) );
} }
int padlayers_mask = m_dummyPad->GetLayerMask(); LAYER_MSK padlayers_mask = m_dummyPad->GetLayerMask();
if( ( padlayers_mask == 0 ) && ( m_dummyPad->GetAttribute() != PAD_HOLE_NOT_PLATED ) ) if( ( padlayers_mask == 0 ) && ( m_dummyPad->GetAttribute() != PAD_HOLE_NOT_PLATED ) )
error_msgs.Add( _( "Error: pad has no layer and is not a mechanical pad" ) ); error_msgs.Add( _( "Error: pad has no layer and is not a mechanical pad" ) );
...@@ -851,7 +850,6 @@ void DIALOG_PAD_PROPERTIES::PadPropertiesAccept( wxCommandEvent& event ) ...@@ -851,7 +850,6 @@ void DIALOG_PAD_PROPERTIES::PadPropertiesAccept( wxCommandEvent& event )
bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad )
{ {
long padLayerMask;
wxString msg; wxString msg;
int x, y; int x, y;
...@@ -1038,7 +1036,7 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) ...@@ -1038,7 +1036,7 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad )
break; break;
} }
padLayerMask = 0; LAYER_MSK padLayerMask = NO_LAYERS;
switch( m_rbCopperLayersSel->GetSelection() ) switch( m_rbCopperLayersSel->GetSelection() )
{ {
......
...@@ -126,11 +126,11 @@ void DIALOG_PCB_TEXT_PROPERTIES::MyInit() ...@@ -126,11 +126,11 @@ void DIALOG_PCB_TEXT_PROPERTIES::MyInit()
PutValueInLocalUnits( *m_PositionXCtrl, m_SelectedPCBText->GetTextPosition().x ); PutValueInLocalUnits( *m_PositionXCtrl, m_SelectedPCBText->GetTextPosition().x );
PutValueInLocalUnits( *m_PositionYCtrl, m_SelectedPCBText->GetTextPosition().y ); PutValueInLocalUnits( *m_PositionYCtrl, m_SelectedPCBText->GetTextPosition().y );
int enabledLayers = m_Parent->GetBoard()->GetEnabledLayers(); LAYER_MSK enabledLayers = m_Parent->GetBoard()->GetEnabledLayers();
for( int layer = 0; layer < NB_LAYERS; ++layer ) for( int layer = 0; layer < NB_LAYERS; ++layer )
{ {
if( enabledLayers & (1 << layer) ) if( enabledLayers & GetLayerMask( layer ) )
{ {
layerList.push_back( layer ); layerList.push_back( layer );
int itemIndex = int itemIndex =
......
...@@ -282,7 +282,7 @@ int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection() ...@@ -282,7 +282,7 @@ int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection()
int page_count; int page_count;
int layers_count = NB_LAYERS; int layers_count = NB_LAYERS;
s_Parameters.m_PrintMaskLayer = 0; s_Parameters.m_PrintMaskLayer = NO_LAYERS;
int ii; int ii;
for( ii = 0, page_count = 0; ii < layers_count; ii++ ) for( ii = 0, page_count = 0; ii < layers_count; ii++ )
{ {
...@@ -291,7 +291,7 @@ int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection() ...@@ -291,7 +291,7 @@ int DIALOG_PRINT_USING_PRINTER::SetLayerMaskFromListSelection()
if( m_BoxSelectLayer[ii]->IsChecked() ) if( m_BoxSelectLayer[ii]->IsChecked() )
{ {
page_count++; page_count++;
s_Parameters.m_PrintMaskLayer |= 1 << ii; s_Parameters.m_PrintMaskLayer |= GetLayerMask( ii );
} }
} }
......
...@@ -183,7 +183,7 @@ void EraseDragList(); ...@@ -183,7 +183,7 @@ void EraseDragList();
* @param aNetCode = the net code to consider * @param aNetCode = the net code to consider
* @param aMaxDist = max distance from aRefPos to a track end candidate to collect the track * @param aMaxDist = max distance from aRefPos to a track end candidate to collect the track
*/ */
void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask, void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, LAYER_MSK aLayerMask,
int aNetCode, int aMaxDist ); int aNetCode, int aMaxDist );
/* Add aTrack to the drag list /* Add aTrack to the drag list
......
...@@ -334,7 +334,7 @@ void AddSegmentToDragList( int flag, TRACK* aTrack ) ...@@ -334,7 +334,7 @@ void AddSegmentToDragList( int flag, TRACK* aTrack )
} }
void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask, void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, LAYER_MSK aLayerMask,
int aNetCode, int aMaxDist ) int aNetCode, int aMaxDist )
{ {
TRACK* track = aPcb->m_Track->GetStartNetCode( aNetCode ); TRACK* track = aPcb->m_Track->GetStartNetCode( aNetCode );
...@@ -344,7 +344,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye ...@@ -344,7 +344,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye
if( track->GetNet() != aNetCode ) // not the same netcodenet code: all candidates tested if( track->GetNet() != aNetCode ) // not the same netcodenet code: all candidates tested
break; break;
if( ( aLayerMask & track->ReturnMaskLayer() ) == 0 ) if( ( aLayerMask & track->GetLayerMask() ) == 0 )
continue; // Cannot be connected, not on the same layer continue; // Cannot be connected, not on the same layer
if( track->IsDragging() ) if( track->IsDragging() )
...@@ -393,7 +393,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye ...@@ -393,7 +393,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye
// If a connected via is found at location aRefPos, // If a connected via is found at location aRefPos,
// collect also tracks connected by this via. // collect also tracks connected by this via.
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
Collect_TrackSegmentsToDrag( aPcb, aRefPos, track->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( aPcb, aRefPos, track->GetLayerMask(),
aNetCode, track->GetWidth() / 2 ); aNetCode, track->GetWidth() / 2 );
} }
} }
......
...@@ -663,7 +663,7 @@ bool DRC::doTrackKeepoutDrc( TRACK* aRefSeg ) ...@@ -663,7 +663,7 @@ bool DRC::doTrackKeepoutDrc( TRACK* aRefSeg )
bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_limit ) bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_limit )
{ {
int layerMask = aRefPad->GetLayerMask() & ALL_CU_LAYERS; LAYER_MSK layerMask = aRefPad->GetLayerMask() & ALL_CU_LAYERS;
/* used to test DRC pad to holes: this dummy pad has the size and shape of the hole /* used to test DRC pad to holes: this dummy pad has the size and shape of the hole
* to test pad to pad hole DRC, using the pad to pad DRC test function. * to test pad to pad hole DRC, using the pad to pad DRC test function.
......
...@@ -150,7 +150,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -150,7 +150,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
{ {
TRACK* track; TRACK* track;
wxPoint delta; // lenght on X and Y axis of segments wxPoint delta; // lenght on X and Y axis of segments
int layerMask; LAYER_MSK layerMask;
int net_code_ref; int net_code_ref;
wxPoint shape_pos; wxPoint shape_pos;
...@@ -164,7 +164,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -164,7 +164,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
m_segmEnd = delta = aRefSeg->GetEnd() - origin; m_segmEnd = delta = aRefSeg->GetEnd() - origin;
m_segmAngle = 0; m_segmAngle = 0;
layerMask = aRefSeg->ReturnMaskLayer(); layerMask = aRefSeg->GetLayerMask();
net_code_ref = aRefSeg->GetNet(); net_code_ref = aRefSeg->GetNet();
// Phase 0 : Test vias // Phase 0 : Test vias
...@@ -343,7 +343,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -343,7 +343,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
continue; continue;
// No problem if segment are on different layers : // No problem if segment are on different layers :
if( ( layerMask & track->ReturnMaskLayer() ) == 0 ) if( ( layerMask & track->GetLayerMask() ) == 0 )
continue; continue;
// the minimum distance = clearance plus half the reference track // the minimum distance = clearance plus half the reference track
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
*/ */
#include <io_mgr.h> #include <io_mgr.h>
#include <layers_id_colors_and_visibility.h>
// forward declaration on ptree template so we can confine use of big boost // forward declaration on ptree template so we can confine use of big boost
......
...@@ -99,7 +99,7 @@ static void Abort_Create_Track( EDA_DRAW_PANEL* Panel, wxDC* DC ) ...@@ -99,7 +99,7 @@ static void Abort_Create_Track( EDA_DRAW_PANEL* Panel, wxDC* DC )
TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
{ {
TRACK* TrackOnStartPoint = NULL; TRACK* TrackOnStartPoint = NULL;
int layerMask = GetLayerMask( GetScreen()->m_Active_Layer ); LAYER_MSK layerMask = GetLayerMask( GetScreen()->m_Active_Layer );
BOARD_CONNECTED_ITEM* LockPoint; BOARD_CONNECTED_ITEM* LockPoint;
wxPoint pos = GetScreen()->GetCrossHairPosition(); wxPoint pos = GetScreen()->GetCrossHairPosition();
...@@ -411,7 +411,7 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -411,7 +411,7 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC ) bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC )
{ {
int layerMask = GetLayerMask( GetScreen()->m_Active_Layer ); LAYER_MSK layerMask = GetLayerMask( GetScreen()->m_Active_Layer );
if( aTrack == NULL ) if( aTrack == NULL )
return false; return false;
......
...@@ -231,8 +231,8 @@ static int ViaSort( const void* aRefptr, const void* aObjptr ) ...@@ -231,8 +231,8 @@ static int ViaSort( const void* aRefptr, const void* aObjptr )
if( padref->GetDrillValue() != padcmp->GetDrillValue() ) if( padref->GetDrillValue() != padcmp->GetDrillValue() )
return padref->GetDrillValue() - padcmp->GetDrillValue(); return padref->GetDrillValue() - padcmp->GetDrillValue();
if( padref->ReturnMaskLayer() != padcmp->ReturnMaskLayer() ) if( padref->GetLayerMask() != padcmp->GetLayerMask() )
return padref->ReturnMaskLayer() - padcmp->ReturnMaskLayer(); return padref->GetLayerMask() - padcmp->GetLayerMask();
return 0; return 0;
} }
...@@ -258,7 +258,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -258,7 +258,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
padstacks.resize( 1 ); // We count pads from 1 padstacks.resize( 1 ); // We count pads from 1
// The master layermask (i.e. the enabled layers) for padstack generation // The master layermask (i.e. the enabled layers) for padstack generation
unsigned master_layermask = aPcb->GetDesignSettings().GetEnabledLayers(); LAYER_MSK master_layermask = aPcb->GetDesignSettings().GetEnabledLayers();
fputs( "$PADS\n", aFile ); fputs( "$PADS\n", aFile );
...@@ -293,7 +293,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -293,7 +293,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
viastacks.push_back( via ); viastacks.push_back( via );
fprintf( aFile, "PAD V%d.%d.%X ROUND %g\nCIRCLE 0 0 %g\n", fprintf( aFile, "PAD V%d.%d.%X ROUND %g\nCIRCLE 0 0 %g\n",
via->GetWidth(), via->GetDrillValue(), via->GetWidth(), via->GetDrillValue(),
via->ReturnMaskLayer(), via->GetLayerMask(),
via->GetDrillValue() / SCALE_FACTOR, via->GetDrillValue() / SCALE_FACTOR,
via->GetWidth() / (SCALE_FACTOR * 2) ); via->GetWidth() / (SCALE_FACTOR * 2) );
} }
...@@ -434,14 +434,14 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -434,14 +434,14 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
for( unsigned i = 0; i < viastacks.size(); i++ ) for( unsigned i = 0; i < viastacks.size(); i++ )
{ {
TRACK* via = viastacks[i]; TRACK* via = viastacks[i];
unsigned mask = via->ReturnMaskLayer() & master_layermask; LAYER_MSK mask = via->GetLayerMask() & master_layermask;
fprintf( aFile, "PADSTACK VIA%d.%d.%X %g\n", fprintf( aFile, "PADSTACK VIA%d.%d.%X %g\n",
via->GetWidth(), via->GetDrillValue(), mask, via->GetWidth(), via->GetDrillValue(), mask,
via->GetDrillValue() / SCALE_FACTOR ); via->GetDrillValue() / SCALE_FACTOR );
for( int layer = 0; layer < 32; layer++ ) for( int layer = 0; layer < 32; layer++ )
{ {
if( mask & (1 << layer) ) if( mask & GetLayerMask( layer ) )
{ {
fprintf( aFile, "PAD V%d.%d.%X %s 0 0\n", fprintf( aFile, "PAD V%d.%d.%X %s 0 0\n",
via->GetWidth(), via->GetDrillValue(), via->GetWidth(), via->GetDrillValue(),
...@@ -465,7 +465,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -465,7 +465,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
pad->GetDrillSize().x / SCALE_FACTOR ); pad->GetDrillSize().x / SCALE_FACTOR );
for( int layer = 0; layer < 32; layer++ ) for( int layer = 0; layer < 32; layer++ )
{ {
if( pad->GetLayerMask() & (1 << layer) & master_layermask ) if( pad->GetLayerMask() & GetLayerMask( layer ) & master_layermask )
{ {
fprintf( aFile, "PAD P%d %s 0 0\n", i, fprintf( aFile, "PAD P%d %s 0 0\n", i,
TO_UTF8( GenCADLayerName[layer] ) ); TO_UTF8( GenCADLayerName[layer] ) );
...@@ -477,7 +477,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -477,7 +477,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
pad->GetDrillSize().x / SCALE_FACTOR ); pad->GetDrillSize().x / SCALE_FACTOR );
for( int layer = 0; layer < 32; layer++ ) for( int layer = 0; layer < 32; layer++ )
{ {
if( pad->GetLayerMask() & (1 << layer) & master_layermask ) if( pad->GetLayerMask() & GetLayerMask( layer ) & master_layermask )
{ {
fprintf( aFile, "PAD P%d %s 0 0\n", i, fprintf( aFile, "PAD P%d %s 0 0\n", i,
TO_UTF8( GenCADLayerNameFlipped[layer] ) ); TO_UTF8( GenCADLayerNameFlipped[layer] ) );
...@@ -760,7 +760,7 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb ) ...@@ -760,7 +760,7 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb )
int vianum = 1; int vianum = 1;
int old_netcode, old_width, old_layer; int old_netcode, old_width, old_layer;
int nbitems, ii; int nbitems, ii;
unsigned master_layermask = aPcb->GetDesignSettings().GetEnabledLayers(); LAYER_MSK master_layermask = aPcb->GetDesignSettings().GetEnabledLayers();
// Count items // Count items
nbitems = 0; nbitems = 0;
...@@ -836,7 +836,7 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb ) ...@@ -836,7 +836,7 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb )
{ {
fprintf( aFile, "VIA VIA%d.%d.%X %g %g ALL %g via%d\n", fprintf( aFile, "VIA VIA%d.%d.%X %g %g ALL %g via%d\n",
track->GetWidth(), track->GetDrillValue(), track->GetWidth(), track->GetDrillValue(),
track->ReturnMaskLayer() & master_layermask, track->GetLayerMask() & master_layermask,
MapXTo( track->GetStart().x ), MapYTo( track->GetStart().y ), MapXTo( track->GetStart().x ), MapYTo( track->GetStart().y ),
track->GetDrillValue() / SCALE_FACTOR, vianum++ ); track->GetDrillValue() / SCALE_FACTOR, vianum++ );
} }
......
...@@ -918,7 +918,7 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* aPad ) //{{{ ...@@ -918,7 +918,7 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* aPad ) //{{{
} }
// The pad proper, on the selected layers // The pad proper, on the selected layers
int layer_mask = aPad->GetLayerMask(); LAYER_MSK layer_mask = aPad->GetLayerMask();
int copper_layers = pcb->GetCopperLayerCount( ); int copper_layers = pcb->GetCopperLayerCount( );
// The (maybe offseted) pad position // The (maybe offseted) pad position
...@@ -939,7 +939,7 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* aPad ) //{{{ ...@@ -939,7 +939,7 @@ static void export_vrml_pad( BOARD* pcb, D_PAD* aPad ) //{{{
if( (layer > FIRST_COPPER_LAYER) && (layer == copper_layers - 1) ) if( (layer > FIRST_COPPER_LAYER) && (layer == copper_layers - 1) )
layer = LAST_COPPER_LAYER; layer = LAST_COPPER_LAYER;
if( layer_mask & (1 << layer) ) if( layer_mask & GetLayerMask( layer ) )
{ {
// OK, the pad is on this layer, export it // OK, the pad is on this layer, export it
switch( aPad->GetShape() ) switch( aPad->GetShape() )
......
...@@ -425,7 +425,7 @@ void PCB_IO::format( BOARD* aBoard, int aNestLevel ) const ...@@ -425,7 +425,7 @@ void PCB_IO::format( BOARD* aBoard, int aNestLevel ) const
m_out->Print( aNestLevel, "(layers\n" ); m_out->Print( aNestLevel, "(layers\n" );
unsigned mask = LAYER_FRONT; unsigned mask = LAYER_FRONT;
unsigned layer = LAYER_N_FRONT; int layer = LAYER_N_FRONT;
// Save only the used copper layers from front to back. // Save only the used copper layers from front to back.
while( mask != 0 ) while( mask != 0 )
...@@ -980,12 +980,12 @@ void PCB_IO::format( MODULE* aModule, int aNestLevel ) const ...@@ -980,12 +980,12 @@ void PCB_IO::format( MODULE* aModule, int aNestLevel ) const
} }
void PCB_IO::formatLayers( int aLayerMask, int aNestLevel ) const void PCB_IO::formatLayers( LAYER_MSK aLayerMask, int aNestLevel ) const
throw( IO_ERROR ) throw( IO_ERROR )
{ {
m_out->Print( aNestLevel, "(layers" ); m_out->Print( aNestLevel, "(layers" );
int cuMask = ALL_CU_LAYERS; LAYER_MSK cuMask = ALL_CU_LAYERS;
if( m_board ) if( m_board )
cuMask &= m_board->GetEnabledLayers(); cuMask &= m_board->GetEnabledLayers();
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <io_mgr.h> #include <io_mgr.h>
#include <string> #include <string>
#include <layers_id_colors_and_visibility.h>
class BOARD; class BOARD;
class BOARD_ITEM; class BOARD_ITEM;
...@@ -189,7 +190,7 @@ private: ...@@ -189,7 +190,7 @@ private:
void formatLayer( const BOARD_ITEM* aItem ) const; void formatLayer( const BOARD_ITEM* aItem ) const;
void formatLayers( int aLayerMask, int aNestLevel = 0 ) const void formatLayers( LAYER_MSK aLayerMask, int aNestLevel = 0 ) const
throw( IO_ERROR ); throw( IO_ERROR );
/// we only cache one footprint library for now, this determines which one. /// we only cache one footprint library for now, this determines which one.
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/image.h> #include <wx/image.h>
#include <wx/icon.h> #include <wx/icon.h>
#include <layers_id_colors_and_visibility.h>
#include <colors.h> #include <colors.h>
#define LYR_COLUMN_COUNT 4 ///< Layer tab column count #define LYR_COLUMN_COUNT 4 ///< Layer tab column count
......
...@@ -409,7 +409,7 @@ void LEGACY_PLUGIN::loadGENERAL() ...@@ -409,7 +409,7 @@ void LEGACY_PLUGIN::loadGENERAL()
else if( TESTLINE( "EnabledLayers" ) ) else if( TESTLINE( "EnabledLayers" ) )
{ {
int enabledLayers = hexParse( line + SZ( "EnabledLayers" ) ); LAYER_MSK enabledLayers = hexParse( line + SZ( "EnabledLayers" ) );
// layer usage // layer usage
m_board->SetEnabledLayers( enabledLayers ); m_board->SetEnabledLayers( enabledLayers );
...@@ -420,7 +420,7 @@ void LEGACY_PLUGIN::loadGENERAL() ...@@ -420,7 +420,7 @@ void LEGACY_PLUGIN::loadGENERAL()
else if( TESTLINE( "VisibleLayers" ) ) else if( TESTLINE( "VisibleLayers" ) )
{ {
int visibleLayers = hexParse( line + SZ( "VisibleLayers" ) ); LAYER_MSK visibleLayers = hexParse( line + SZ( "VisibleLayers" ) );
m_board->SetVisibleLayers( visibleLayers ); m_board->SetVisibleLayers( visibleLayers );
} }
...@@ -1239,7 +1239,6 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule ) ...@@ -1239,7 +1239,6 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule )
// sscanf( PtLine, "%s %s %X", BufLine, BufCar, &m_layerMask ); // sscanf( PtLine, "%s %s %X", BufLine, BufCar, &m_layerMask );
PAD_ATTR_T attribute; PAD_ATTR_T attribute;
int layer_mask;
data = strtok( line + SZ( "At" ), delims ); data = strtok( line + SZ( "At" ), delims );
...@@ -1255,7 +1254,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule ) ...@@ -1255,7 +1254,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule )
data = strtok( NULL, delims ); // skip BufCar data = strtok( NULL, delims ); // skip BufCar
data = strtok( NULL, delims ); data = strtok( NULL, delims );
layer_mask = hexParse( data ); LAYER_MSK layer_mask = hexParse( data );
pad->SetLayerMask( layer_mask ); pad->SetLayerMask( layer_mask );
pad->SetAttribute( attribute ); pad->SetAttribute( attribute );
......
...@@ -157,7 +157,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -157,7 +157,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
if( doPad ) if( doPad )
{ {
int layer_mask = GetLayerMask( screen->m_Active_Layer ); LAYER_MSK layer_mask = GetLayerMask( screen->m_Active_Layer );
D_PAD* pad = m_Pcb->GetPad( pos, layer_mask ); D_PAD* pad = m_Pcb->GetPad( pos, layer_mask );
if( pad ) if( pad )
...@@ -192,7 +192,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -192,7 +192,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
if( !currTrack ) if( !currTrack )
{ {
int layer_mask = GetLayerMask( layer ); LAYER_MSK layer_mask = GetLayerMask( layer );
TRACK* track = m_Pcb->GetTrace( m_Pcb->m_Track, pos, layer_mask ); TRACK* track = m_Pcb->GetTrace( m_Pcb->m_Track, pos, layer_mask );
......
...@@ -154,7 +154,7 @@ public: ...@@ -154,7 +154,7 @@ public:
* @param aPrintMirrorMode = not used here (Set when printing in mirror mode) * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
* @param aData = a pointer on an auxiliary data (NULL if not used) * @param aData = a pointer on an auxiliary data (NULL if not used)
*/ */
virtual void PrintPage( wxDC* aDC, int aPrintMaskLayer, bool aPrintMirrorMode, virtual void PrintPage( wxDC* aDC, LAYER_MSK aPrintMaskLayer, bool aPrintMirrorMode,
void * aData = NULL); void * aData = NULL);
// BOARD handling // BOARD handling
......
...@@ -629,7 +629,7 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC ...@@ -629,7 +629,7 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC
if( aCommand != ID_POPUP_PCB_MOVE_TRACK_SEGMENT ) if( aCommand != ID_POPUP_PCB_MOVE_TRACK_SEGMENT )
{ {
Collect_TrackSegmentsToDrag( GetBoard(), aTrack->GetStart(), Collect_TrackSegmentsToDrag( GetBoard(), aTrack->GetStart(),
aTrack->ReturnMaskLayer(), aTrack->GetLayerMask(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
} }
...@@ -649,17 +649,17 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC ...@@ -649,17 +649,17 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC
case ID_POPUP_PCB_DRAG_TRACK_SEGMENT: // drag a segment case ID_POPUP_PCB_DRAG_TRACK_SEGMENT: // drag a segment
pos = aTrack->GetStart(); pos = aTrack->GetStart();
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->GetLayerMask(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
pos = aTrack->GetEnd(); pos = aTrack->GetEnd();
aTrack->SetFlags( IS_DRAGGED | ENDPOINT | STARTPOINT ); aTrack->SetFlags( IS_DRAGGED | ENDPOINT | STARTPOINT );
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->GetLayerMask(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
break; break;
case ID_POPUP_PCB_MOVE_TRACK_NODE: // Drag via or move node case ID_POPUP_PCB_MOVE_TRACK_NODE: // Drag via or move node
pos = (diag & STARTPOINT) ? aTrack->GetStart() : aTrack->GetEnd(); pos = (diag & STARTPOINT) ? aTrack->GetStart() : aTrack->GetEnd();
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->GetLayerMask(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
PosInit = pos; PosInit = pos;
break; break;
...@@ -865,7 +865,7 @@ bool PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment( TRACK* Track, wxDC* DC ) ...@@ -865,7 +865,7 @@ bool PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment( TRACK* Track, wxDC* DC )
/* Test the connections modified by the move /* Test the connections modified by the move
* (only pad connection must be tested, track connection will be * (only pad connection must be tested, track connection will be
* tested by TestNetConnection() ) */ * tested by TestNetConnection() ) */
int layerMask = GetLayerMask( Track->GetLayer() ); LAYER_MSK layerMask = GetLayerMask( Track->GetLayer() );
Track->start = GetBoard()->GetPadFast( Track->GetStart(), layerMask ); Track->start = GetBoard()->GetPadFast( Track->GetStart(), layerMask );
if( Track->start ) if( Track->start )
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#define PCB_CALLBACKS_H_ #define PCB_CALLBACKS_H_
#include <wx/wx.h> #include <wx/wx.h>
#include "include/layers_id_colors_and_visibility.h"
enum LAYER_TYPE_T enum LAYER_TYPE_T
{ {
......
...@@ -66,7 +66,7 @@ void PCB_PARSER::init() ...@@ -66,7 +66,7 @@ void PCB_PARSER::init()
std::string untranslated = TO_UTF8( BOARD::GetStandardLayerName( layerNdx ) ); std::string untranslated = TO_UTF8( BOARD::GetStandardLayerName( layerNdx ) );
m_layerIndices[ untranslated ] = layerNdx; m_layerIndices[ untranslated ] = layerNdx;
m_layerMasks[ untranslated ] = 1 << layerNdx; m_layerMasks[ untranslated ] = GetLayerMask( layerNdx );
} }
m_layerMasks[ "*.Cu" ] = ALL_CU_LAYERS; m_layerMasks[ "*.Cu" ] = ALL_CU_LAYERS;
...@@ -667,8 +667,8 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -667,8 +667,8 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
std::string type; std::string type;
int layerIndex; int layerIndex;
bool isVisible = true; bool isVisible = true;
int visibleLayers = 0; LAYER_MSK visibleLayers = NO_LAYERS;
int enabledLayers = 0; LAYER_MSK enabledLayers = NO_LAYERS;
int copperLayerCount = 0; int copperLayerCount = 0;
for( token = NextTok(); token != T_RIGHT; token = NextTok() ) for( token = NextTok(); token != T_RIGHT; token = NextTok() )
...@@ -700,13 +700,13 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -700,13 +700,13 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
Expecting( "hide or )" ); Expecting( "hide or )" );
} }
enabledLayers |= 1 << layerIndex; enabledLayers |= GetLayerMask( layerIndex );
if( isVisible ) if( isVisible )
visibleLayers |= 1 << layerIndex; visibleLayers |= GetLayerMask( layerIndex );
m_layerIndices[ name ] = layerIndex; m_layerIndices[ name ] = layerIndex;
m_layerMasks[ name ] = 1 << layerIndex; m_layerMasks[ name ] = GetLayerMask(layerIndex);
wxString wname = FROM_UTF8( name.c_str() ); wxString wname = FROM_UTF8( name.c_str() );
enum LAYER_T layerType = LAYER::ParseType( type.c_str() ); enum LAYER_T layerType = LAYER::ParseType( type.c_str() );
...@@ -736,10 +736,11 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR ) ...@@ -736,10 +736,11 @@ void PCB_PARSER::parseLayers() throw( IO_ERROR, PARSE_ERROR )
} }
int PCB_PARSER::lookUpLayer( const LAYER_MAP& aMap ) throw( PARSE_ERROR, IO_ERROR ) template<class T, class M>
T PCB_PARSER::lookUpLayer( const M& aMap ) throw( PARSE_ERROR, IO_ERROR )
{ {
// avoid constructing another std::string, use lexer's directly // avoid constructing another std::string, use lexer's directly
LAYER_MAP::const_iterator it = aMap.find( curText ); typename M::const_iterator it = aMap.find( curText );
if( it == aMap.end() ) if( it == aMap.end() )
{ {
...@@ -747,7 +748,7 @@ int PCB_PARSER::lookUpLayer( const LAYER_MAP& aMap ) throw( PARSE_ERROR, IO_ERRO ...@@ -747,7 +748,7 @@ int PCB_PARSER::lookUpLayer( const LAYER_MAP& aMap ) throw( PARSE_ERROR, IO_ERRO
// dump the whole darn table, there's something wrong with it. // dump the whole darn table, there's something wrong with it.
for( it = aMap.begin(); it != aMap.end(); ++it ) for( it = aMap.begin(); it != aMap.end(); ++it )
{ {
printf( &aMap == &m_layerIndices ? "lm[%s] = %d\n" : "lm[%s] = %08X\n", printf( &aMap == (void*)&m_layerIndices ? "lm[%s] = %d\n" : "lm[%s] = %08X\n",
it->first.c_str(), it->second ); it->first.c_str(), it->second );
} }
#endif #endif
...@@ -771,7 +772,7 @@ int PCB_PARSER::parseBoardItemLayer() throw( PARSE_ERROR, IO_ERROR ) ...@@ -771,7 +772,7 @@ int PCB_PARSER::parseBoardItemLayer() throw( PARSE_ERROR, IO_ERROR )
NextTok(); NextTok();
int layerIndex = lookUpLayer( m_layerIndices ); int layerIndex = lookUpLayer<int>( m_layerIndices );
// Handle closing ) in object parser. // Handle closing ) in object parser.
...@@ -779,17 +780,17 @@ int PCB_PARSER::parseBoardItemLayer() throw( PARSE_ERROR, IO_ERROR ) ...@@ -779,17 +780,17 @@ int PCB_PARSER::parseBoardItemLayer() throw( PARSE_ERROR, IO_ERROR )
} }
int PCB_PARSER::parseBoardItemLayersAsMask() throw( PARSE_ERROR, IO_ERROR ) LAYER_MSK PCB_PARSER::parseBoardItemLayersAsMask() throw( PARSE_ERROR, IO_ERROR )
{ {
wxCHECK_MSG( CurTok() == T_layers, 0, wxCHECK_MSG( CurTok() == T_layers, NO_LAYERS,
wxT( "Cannot parse " ) + GetTokenString( CurTok() ) + wxT( "Cannot parse " ) + GetTokenString( CurTok() ) +
wxT( " as item layer mask." ) ); wxT( " as item layer mask." ) );
int layerMask = 0; LAYER_MSK layerMask = NO_LAYERS;
for( T token = NextTok(); token != T_RIGHT; token = NextTok() ) for( T token = NextTok(); token != T_RIGHT; token = NextTok() )
{ {
int mask = lookUpLayer( m_layerMasks ); LAYER_MSK mask = lookUpLayer<LAYER_MSK>( m_layerMasks );
layerMask |= mask; layerMask |= mask;
} }
...@@ -2152,7 +2153,7 @@ D_PAD* PCB_PARSER::parseD_PAD() throw( IO_ERROR, PARSE_ERROR ) ...@@ -2152,7 +2153,7 @@ D_PAD* PCB_PARSER::parseD_PAD() throw( IO_ERROR, PARSE_ERROR )
case T_layers: case T_layers:
{ {
int layerMask = parseBoardItemLayersAsMask(); LAYER_MSK layerMask = parseBoardItemLayersAsMask();
pad->SetLayerMask( layerMask ); pad->SetLayerMask( layerMask );
} }
break; break;
...@@ -2324,9 +2325,9 @@ SEGVIA* PCB_PARSER::parseSEGVIA() throw( IO_ERROR, PARSE_ERROR ) ...@@ -2324,9 +2325,9 @@ SEGVIA* PCB_PARSER::parseSEGVIA() throw( IO_ERROR, PARSE_ERROR )
{ {
int layer1, layer2; int layer1, layer2;
NextTok(); NextTok();
layer1 = lookUpLayer( m_layerIndices ); layer1 = lookUpLayer<int>( m_layerIndices );
NextTok(); NextTok();
layer2 = lookUpLayer( m_layerIndices ); layer2 = lookUpLayer<int>( m_layerIndices );
via->SetLayerPair( layer1, layer2 ); via->SetLayerPair( layer1, layer2 );
NeedRIGHT(); NeedRIGHT();
} }
......
...@@ -58,11 +58,12 @@ class FPL_CACHE; ...@@ -58,11 +58,12 @@ class FPL_CACHE;
*/ */
class PCB_PARSER : public PCB_LEXER class PCB_PARSER : public PCB_LEXER
{ {
typedef KEYWORD_MAP LAYER_MAP; typedef boost::unordered_map< std::string, int > LAYER_NUM_MAP;
typedef boost::unordered_map< std::string, LAYER_MSK > LAYER_MSK_MAP;
BOARD* m_board; BOARD* m_board;
LAYER_MAP m_layerIndices; ///< map layer name to it's index LAYER_NUM_MAP m_layerIndices; ///< map layer name to it's index
LAYER_MAP m_layerMasks; ///< map layer names to their masks LAYER_MSK_MAP m_layerMasks; ///< map layer names to their masks
/** /**
...@@ -99,13 +100,14 @@ class PCB_PARSER : public PCB_LEXER ...@@ -99,13 +100,14 @@ class PCB_PARSER : public PCB_LEXER
* Function lookUpLayer * Function lookUpLayer
* parses the current token for the layer definition of a #BOARD_ITEM object. * parses the current token for the layer definition of a #BOARD_ITEM object.
* *
* @param aMap is the LAYER_MAP to use for the lookup. * @param aMap is the LAYER_{NUM|MSK}_MAP to use for the lookup.
* *
* @throw IO_ERROR if the layer is not valid. * @throw IO_ERROR if the layer is not valid.
* @throw PARSE_ERROR if the layer syntax is incorrect. * @throw PARSE_ERROR if the layer syntax is incorrect.
* @return int - The result of the parsed #BOARD_ITEM layer or set designator. * @return int - The result of the parsed #BOARD_ITEM layer or set designator.
*/ */
int lookUpLayer( const LAYER_MAP& aMap ) throw( PARSE_ERROR, IO_ERROR ); template<class T, class M>
T lookUpLayer( const M& aMap ) throw( PARSE_ERROR, IO_ERROR );
/** /**
* Function parseBoardItemLayer * Function parseBoardItemLayer
...@@ -125,7 +127,7 @@ class PCB_PARSER : public PCB_LEXER ...@@ -125,7 +127,7 @@ class PCB_PARSER : public PCB_LEXER
* @throw PARSE_ERROR if the layers syntax is incorrect. * @throw PARSE_ERROR if the layers syntax is incorrect.
* @return The mask of layers the parsed #BOARD_ITEM is on. * @return The mask of layers the parsed #BOARD_ITEM is on.
*/ */
int parseBoardItemLayersAsMask() throw( PARSE_ERROR, IO_ERROR ); LAYER_MSK parseBoardItemLayersAsMask() throw( PARSE_ERROR, IO_ERROR );
/** /**
* Function parseXY * Function parseXY
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <pcb_plot_params_lexer.h> #include <pcb_plot_params_lexer.h>
#include <eda_text.h> // EDA_DRAW_MODE_T #include <eda_text.h> // EDA_DRAW_MODE_T
#include <plot_common.h> #include <plot_common.h>
#include <layers_id_colors_and_visibility.h>
class PCB_PLOT_PARAMS; class PCB_PLOT_PARAMS;
class LINE_READER; class LINE_READER;
...@@ -115,7 +116,7 @@ private: ...@@ -115,7 +116,7 @@ private:
bool m_excludeEdgeLayer; bool m_excludeEdgeLayer;
/// Set of layers to plot /// Set of layers to plot
long m_layerSelection; LAYER_MSK m_layerSelection;
/** When plotting gerbers use a conventional set of extensions instead of /** When plotting gerbers use a conventional set of extensions instead of
* appending a suffix to the board name */ * appending a suffix to the board name */
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <fctsys.h> // wxWidgets include. #include <fctsys.h> // wxWidgets include.
#include <base_struct.h> // IS_DRAGGED and IN_EDIT definitions. #include <base_struct.h> // IS_DRAGGED and IN_EDIT definitions.
#include <convert_to_biu.h> // to define DMils2iu() conversion function #include <convert_to_biu.h> // to define DMils2iu() conversion function
#include <layers_id_colors_and_visibility.h>
// Arcs are approximated by segments: define the number of segments per 360 deg (KiCad uses 0.1 // Arcs are approximated by segments: define the number of segments per 360 deg (KiCad uses 0.1
// deg approximation). Be aware 3600 / ARC_APPROX_SEGMENTS_COUNT_LOW_DEF is an integer. // deg approximation). Be aware 3600 / ARC_APPROX_SEGMENTS_COUNT_LOW_DEF is an integer.
......
...@@ -255,11 +255,9 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event ) ...@@ -255,11 +255,9 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
// Save the current plot options in the board // Save the current plot options in the board
m_parent->SetPlotSettings( m_plotOpts ); m_parent->SetPlotSettings( m_plotOpts );
long layerMask = 1; for( layer = 0; layer < NB_LAYERS; ++layer )
for( layer = 0; layer < NB_LAYERS; layer++, layerMask <<= 1 )
{ {
if( m_plotOpts.GetLayerSelection() & layerMask ) if( m_plotOpts.GetLayerSelection() & GetLayerMask( layer ) )
{ {
// Pick the basename from the board file // Pick the basename from the board file
wxFileName fn( boardFilename ); wxFileName fn( boardFilename );
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <wx/filename.h> #include <wx/filename.h>
#include <pad_shapes.h> #include <pad_shapes.h>
#include <pcb_plot_params.h> #include <pcb_plot_params.h>
#include <layers_id_colors_and_visibility.h>
class PLOTTER; class PLOTTER;
class TEXTE_PCB; class TEXTE_PCB;
...@@ -199,7 +200,7 @@ void PlotOneBoardLayer( BOARD* aBoard, PLOTTER* aPlotter, int aLayer, ...@@ -199,7 +200,7 @@ void PlotOneBoardLayer( BOARD* aBoard, PLOTTER* aPlotter, int aLayer,
* SetDrillMarksType( DrillMarksType aVal ) controle the actual hole: * SetDrillMarksType( DrillMarksType aVal ) controle the actual hole:
* no hole, small hole, actual hole * no hole, small hole, actual hole
*/ */
void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, long aLayerMask, void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, LAYER_MSK aLayerMask,
const PCB_PLOT_PARAMS& aPlotOpt ); const PCB_PLOT_PARAMS& aPlotOpt );
/** /**
...@@ -211,7 +212,7 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, long aLayerMask, ...@@ -211,7 +212,7 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, long aLayerMask,
* @param aLayerMask = the mask to define the layers to plot (silkscreen Front and/or Back) * @param aLayerMask = the mask to define the layers to plot (silkscreen Front and/or Back)
* @param aPlotOpt = the plot options (files, sketch). Has meaning for some formats only * @param aPlotOpt = the plot options (files, sketch). Has meaning for some formats only
*/ */
void PlotSilkScreen( BOARD* aBoard, PLOTTER* aPlotter, long aLayerMask, void PlotSilkScreen( BOARD* aBoard, PLOTTER* aPlotter, LAYER_MSK aLayerMask,
const PCB_PLOT_PARAMS& aPlotOpt ); const PCB_PLOT_PARAMS& aPlotOpt );
......
...@@ -67,7 +67,7 @@ static void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -67,7 +67,7 @@ static void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter,
* Silkscreen layers have specific requirement for pads (not filled) and texts * Silkscreen layers have specific requirement for pads (not filled) and texts
* (with option to remove them from some copper areas (pads...) * (with option to remove them from some copper areas (pads...)
*/ */
void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask, void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, LAYER_MSK aLayerMask,
const PCB_PLOT_PARAMS& aPlotOpt ) const PCB_PLOT_PARAMS& aPlotOpt )
{ {
BRDITEMS_PLOTTER itemplotter( aPlotter, aBoard, aPlotOpt ); BRDITEMS_PLOTTER itemplotter( aPlotter, aBoard, aPlotOpt );
...@@ -93,7 +93,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask, ...@@ -93,7 +93,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
for( D_PAD * pad = Module->Pads(); pad != NULL; pad = pad->Next() ) for( D_PAD * pad = Module->Pads(); pad != NULL; pad = pad->Next() )
{ {
// See if the pad is on this layer // See if the pad is on this layer
int masklayer = pad->GetLayerMask(); LAYER_MSK masklayer = pad->GetLayerMask();
if( (masklayer & layersmask_plotpads) == 0 ) if( (masklayer & layersmask_plotpads) == 0 )
continue; continue;
...@@ -124,7 +124,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask, ...@@ -124,7 +124,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
{ {
ZONE_CONTAINER* edge_zone = aBoard->GetArea( ii ); ZONE_CONTAINER* edge_zone = aBoard->GetArea( ii );
if( ( ( 1 << edge_zone->GetLayer() ) & aLayerMask ) == 0 ) if( ( GetLayerMask( edge_zone->GetLayer() ) & aLayerMask ) == 0 )
continue; continue;
itemplotter.PlotFilledAreas( edge_zone ); itemplotter.PlotFilledAreas( edge_zone );
...@@ -134,7 +134,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask, ...@@ -134,7 +134,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
// compatibility): // compatibility):
for( SEGZONE* seg = aBoard->m_Zone; seg != NULL; seg = seg->Next() ) for( SEGZONE* seg = aBoard->m_Zone; seg != NULL; seg = seg->Next() )
{ {
if( ( ( 1 << seg->GetLayer() ) & aLayerMask ) == 0 ) if( ( GetLayerMask( seg->GetLayer() ) & aLayerMask ) == 0 )
continue; continue;
aPlotter->ThickSegment( seg->GetStart(), seg->GetEnd(), seg->GetWidth(), aPlotter->ThickSegment( seg->GetStart(), seg->GetEnd(), seg->GetWidth(),
...@@ -154,7 +154,7 @@ void PlotOneBoardLayer( BOARD *aBoard, PLOTTER* aPlotter, int aLayer, ...@@ -154,7 +154,7 @@ void PlotOneBoardLayer( BOARD *aBoard, PLOTTER* aPlotter, int aLayer,
// Specify that the contents of the "Edges Pcb" layer are to be plotted // Specify that the contents of the "Edges Pcb" layer are to be plotted
// in addition to the contents of the currently specified layer. // in addition to the contents of the currently specified layer.
int layer_mask = GetLayerMask( aLayer ); LAYER_MSK layer_mask = GetLayerMask( aLayer );
if( !aPlotOpt.GetExcludeEdgeLayer() ) if( !aPlotOpt.GetExcludeEdgeLayer() )
layer_mask |= EDGE_LAYER; layer_mask |= EDGE_LAYER;
...@@ -240,7 +240,7 @@ void PlotOneBoardLayer( BOARD *aBoard, PLOTTER* aPlotter, int aLayer, ...@@ -240,7 +240,7 @@ void PlotOneBoardLayer( BOARD *aBoard, PLOTTER* aPlotter, int aLayer,
* Silk screen layers are not plotted here. * Silk screen layers are not plotted here.
*/ */
void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
long aLayerMask, const PCB_PLOT_PARAMS& aPlotOpt ) LAYER_MSK aLayerMask, const PCB_PLOT_PARAMS& aPlotOpt )
{ {
BRDITEMS_PLOTTER itemplotter( aPlotter, aBoard, aPlotOpt ); BRDITEMS_PLOTTER itemplotter( aPlotter, aBoard, aPlotOpt );
...@@ -367,7 +367,7 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -367,7 +367,7 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
// vias are not plotted if not on selected layer, but if layer // vias are not plotted if not on selected layer, but if layer
// is SOLDERMASK_LAYER_BACK or SOLDERMASK_LAYER_FRONT,vias are drawn, // is SOLDERMASK_LAYER_BACK or SOLDERMASK_LAYER_FRONT,vias are drawn,
// only if they are on the corresponding external copper layer // only if they are on the corresponding external copper layer
int via_mask_layer = Via->ReturnMaskLayer(); int via_mask_layer = Via->GetLayerMask();
if( aPlotOpt.GetPlotViaOnMaskLayer() ) if( aPlotOpt.GetPlotViaOnMaskLayer() )
{ {
...@@ -435,7 +435,7 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -435,7 +435,7 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
{ {
ZONE_CONTAINER* zone = aBoard->GetArea( ii ); ZONE_CONTAINER* zone = aBoard->GetArea( ii );
if( ( ( 1 << zone->GetLayer() ) & aLayerMask ) == 0 ) if( ( GetLayerMask(zone->GetLayer() ) & aLayerMask ) == 0 )
continue; continue;
itemplotter.PlotFilledAreas( zone ); itemplotter.PlotFilledAreas( zone );
...@@ -580,7 +580,7 @@ void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -580,7 +580,7 @@ void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter,
// vias are plotted only if they are on the corresponding // vias are plotted only if they are on the corresponding
// external copper layer // external copper layer
int via_mask_layer = via->ReturnMaskLayer(); LAYER_MSK via_mask_layer = via->GetLayerMask();
if( via_mask_layer & LAYER_BACK ) if( via_mask_layer & LAYER_BACK )
via_mask_layer |= SOLDERMASK_LAYER_BACK; via_mask_layer |= SOLDERMASK_LAYER_BACK;
......
...@@ -112,7 +112,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule ) ...@@ -112,7 +112,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
if( textLayer >= LAYER_COUNT ) if( textLayer >= LAYER_COUNT )
return false; return false;
if( ( ( 1 << textLayer ) & m_layerMask ) == 0 ) if( ( GetLayerMask( textLayer ) & m_layerMask ) == 0 )
trace_ref = false; trace_ref = false;
if( !textModule->IsVisible() && !GetPlotInvisibleText() ) if( !textModule->IsVisible() && !GetPlotInvisibleText() )
...@@ -124,7 +124,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule ) ...@@ -124,7 +124,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
if( textLayer > LAYER_COUNT ) if( textLayer > LAYER_COUNT )
return false; return false;
if( ( (1 << textLayer) & m_layerMask ) == 0 ) if( ( GetLayerMask( textLayer ) & m_layerMask ) == 0 )
trace_val = false; trace_val = false;
if( !textModule->IsVisible() && !GetPlotInvisibleText() ) if( !textModule->IsVisible() && !GetPlotInvisibleText() )
...@@ -164,7 +164,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule ) ...@@ -164,7 +164,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
if( textLayer >= LAYER_COUNT ) if( textLayer >= LAYER_COUNT )
return false; return false;
if( !( ( 1 << textLayer ) & m_layerMask ) ) if( !( GetLayerMask( textLayer ) & m_layerMask ) )
continue; continue;
PlotTextModule( textModule, getColor( textLayer ) ); PlotTextModule( textModule, getColor( textLayer ) );
......
...@@ -45,11 +45,11 @@ ...@@ -45,11 +45,11 @@
static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule, static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule,
GR_DRAWMODE aDraw_mode, int aMasklayer, GR_DRAWMODE aDraw_mode, LAYER_MSK aMasklayer,
PRINT_PARAMETERS::DrillShapeOptT aDrillShapeOpt ); PRINT_PARAMETERS::DrillShapeOptT aDrillShapeOpt );
void FOOTPRINT_EDIT_FRAME::PrintPage( wxDC* aDC, void FOOTPRINT_EDIT_FRAME::PrintPage( wxDC* aDC,
int aPrintMaskLayer, LAYER_MSK aPrintMaskLayer,
bool aPrintMirrorMode, bool aPrintMirrorMode,
void * aData) void * aData)
{ {
...@@ -131,7 +131,7 @@ void FOOTPRINT_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -131,7 +131,7 @@ void FOOTPRINT_EDIT_FRAME::PrintPage( wxDC* aDC,
* @param aData = a pointer to an optional data (NULL if not used) * @param aData = a pointer to an optional data (NULL if not used)
*/ */
void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
int aPrintMaskLayer, LAYER_MSK aPrintMaskLayer,
bool aPrintMirrorMode, bool aPrintMirrorMode,
void* aData) void* aData)
{ {
...@@ -176,7 +176,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -176,7 +176,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
for(int kk = 0; kk < 32; kk ++ ) for(int kk = 0; kk < 32; kk ++ )
{ {
if( ((1 << kk) & aPrintMaskLayer) != 0 ) if( GetLayerMask( kk ) & aPrintMaskLayer )
{ {
GetScreen()->m_Active_Layer = kk; GetScreen()->m_Active_Layer = kk;
break; break;
...@@ -232,10 +232,8 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -232,10 +232,8 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
case PCB_DIMENSION_T: case PCB_DIMENSION_T:
case PCB_TEXT_T: case PCB_TEXT_T:
case PCB_TARGET_T: case PCB_TARGET_T:
if( ( ( 1 << item->GetLayer() ) & aPrintMaskLayer ) == 0 ) if( GetLayerMask( item->GetLayer() ) & aPrintMaskLayer )
break; item->Draw( m_canvas, aDC, drawmode );
item->Draw( m_canvas, aDC, drawmode );
break; break;
case PCB_MARKER_T: case PCB_MARKER_T:
...@@ -247,7 +245,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -247,7 +245,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
// Print tracks // Print tracks
for( TRACK * track = Pcb->m_Track; track; track = track->Next() ) for( TRACK * track = Pcb->m_Track; track; track = track->Next() )
{ {
if( ( aPrintMaskLayer & track->ReturnMaskLayer() ) == 0 ) if( !( aPrintMaskLayer & track->GetLayerMask() ) )
continue; continue;
if( track->Type() == PCB_VIA_T ) // VIA encountered. if( track->Type() == PCB_VIA_T ) // VIA encountered.
...@@ -270,7 +268,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -270,7 +268,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
// Outdated: only for compatibility to old boards // Outdated: only for compatibility to old boards
for( TRACK * track = Pcb->m_Zone; track != NULL; track = track->Next() ) for( TRACK * track = Pcb->m_Zone; track != NULL; track = track->Next() )
{ {
if( ( aPrintMaskLayer & track->ReturnMaskLayer() ) == 0 ) if( !( aPrintMaskLayer & track->GetLayerMask() ) )
continue; continue;
track->Draw( m_canvas, aDC, drawmode ); track->Draw( m_canvas, aDC, drawmode );
...@@ -281,9 +279,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -281,9 +279,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
{ {
ZONE_CONTAINER* zone = Pcb->GetArea( ii ); ZONE_CONTAINER* zone = Pcb->GetArea( ii );
if( ( aPrintMaskLayer & ( 1 << zone->GetLayer() ) ) == 0 ) if( aPrintMaskLayer & GetLayerMask( zone->GetLayer() ) )
continue;
zone->DrawFilledArea( m_canvas, aDC, drawmode ); zone->DrawFilledArea( m_canvas, aDC, drawmode );
} }
...@@ -312,7 +308,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -312,7 +308,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
for( ; track != NULL; track = track->Next() ) for( ; track != NULL; track = track->Next() )
{ {
if( ( aPrintMaskLayer & track->ReturnMaskLayer() ) == 0 ) if( !( aPrintMaskLayer & track->GetLayerMask() ) )
continue; continue;
if( track->Type() == PCB_VIA_T ) // VIA encountered. if( track->Type() == PCB_VIA_T ) // VIA encountered.
...@@ -350,13 +346,13 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -350,13 +346,13 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule, static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule,
GR_DRAWMODE aDraw_mode, int aMasklayer, GR_DRAWMODE aDraw_mode, LAYER_MSK aMasklayer,
PRINT_PARAMETERS::DrillShapeOptT aDrillShapeOpt ) PRINT_PARAMETERS::DrillShapeOptT aDrillShapeOpt )
{ {
// Print pads // Print pads
for( D_PAD* pad = aModule->Pads(); pad; pad = pad->Next() ) for( D_PAD* pad = aModule->Pads(); pad; pad = pad->Next() )
{ {
if( (pad->GetLayerMask() & aMasklayer ) == 0 ) if( !(pad->GetLayerMask() & aMasklayer ) )
continue; continue;
// Manage hole according to the print drill option // Manage hole according to the print drill option
...@@ -387,7 +383,7 @@ static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule, ...@@ -387,7 +383,7 @@ static void Print_Module( EDA_DRAW_PANEL* aPanel, wxDC* aDC, MODULE* aModule,
} }
// Print footprint graphic shapes // Print footprint graphic shapes
int mlayer = GetLayerMask( aModule->GetLayer() ); LAYER_MSK mlayer = GetLayerMask( aModule->GetLayer() );
if( aModule->GetLayer() == LAYER_N_BACK ) if( aModule->GetLayer() == LAYER_N_BACK )
mlayer = SILKSCREEN_LAYER_BACK; mlayer = SILKSCREEN_LAYER_BACK;
......
...@@ -95,7 +95,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) ...@@ -95,7 +95,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
int layers_count = LAYER_COUNT; int layers_count = LAYER_COUNT;
#endif #endif
int mask_layer = m_PrintParams.m_PrintMaskLayer; LAYER_MSK mask_layer = m_PrintParams.m_PrintMaskLayer;
// compute layer mask from page number if we want one page per layer // compute layer mask from page number if we want one page per layer
if( m_PrintParams.m_OptionPrintPage == 0 ) // One page per layer if( m_PrintParams.m_OptionPrintPage == 0 ) // One page per layer
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include <wx/dcps.h> #include <wx/dcps.h>
#include <layers_id_colors_and_visibility.h>
#define DEFAULT_ORIENTATION_PAPER wxLANDSCAPE // other option is wxPORTRAIT #define DEFAULT_ORIENTATION_PAPER wxLANDSCAPE // other option is wxPORTRAIT
...@@ -51,7 +51,7 @@ public: ...@@ -51,7 +51,7 @@ public:
double m_XScaleAdjust; // fine scale adjust for X axis double m_XScaleAdjust; // fine scale adjust for X axis
double m_YScaleAdjust; // fine scale adjust for Y axis double m_YScaleAdjust; // fine scale adjust for Y axis
bool m_Print_Sheet_Ref; // Option: print page references bool m_Print_Sheet_Ref; // Option: print page references
long m_PrintMaskLayer; // Layers to print LAYER_MSK m_PrintMaskLayer; // Layers to print
bool m_PrintMirror; // Option: Print mirrored bool m_PrintMirror; // Option: Print mirrored
bool m_Print_Black_and_White; // Option: Print in B&W or Color bool m_Print_Black_and_White; // Option: Print in B&W or Color
int m_OptionPrintPage; // Option: 0 = a layer per page, 1 = all layers at once int m_OptionPrintPage; // Option: 0 = a layer per page, 1 = all layers at once
......
...@@ -56,7 +56,7 @@ void DrawTraces( EDA_DRAW_PANEL* panel, ...@@ -56,7 +56,7 @@ void DrawTraces( EDA_DRAW_PANEL* panel,
* calculates the mask layer when flipping a footprint. * calculates the mask layer when flipping a footprint.
* BACK and FRONT copper layers , mask, paste, solder layers are swapped. * BACK and FRONT copper layers , mask, paste, solder layers are swapped.
*/ */
int ChangeSideMaskLayer( int aMask ); LAYER_MSK ChangeSideMaskLayer( LAYER_MSK aMask );
void DrawModuleOutlines( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* module ); void DrawModuleOutlines( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* module );
......
...@@ -107,8 +107,8 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( PCB_BASE_FRAME* parent, ...@@ -107,8 +107,8 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( PCB_BASE_FRAME* parent,
/* Build the layer list */ /* Build the layer list */
LayerCount = 0; LayerCount = 0;
int Masque_Layer = g_TabAllCopperLayerMask[board->GetCopperLayerCount() - 1]; LAYER_MSK Masque_Layer = g_TabAllCopperLayerMask[board->GetCopperLayerCount() - 1];
Masque_Layer += ALL_NO_CU_LAYERS; Masque_Layer |= ALL_NO_CU_LAYERS;
for( ii = 0; ii < NB_LAYERS; ii++ ) for( ii = 0; ii < NB_LAYERS; ii++ )
{ {
...@@ -262,8 +262,8 @@ SELECT_LAYERS_PAIR_DIALOG::SELECT_LAYERS_PAIR_DIALOG( PCB_BASE_FRAME* parent ) : ...@@ -262,8 +262,8 @@ SELECT_LAYERS_PAIR_DIALOG::SELECT_LAYERS_PAIR_DIALOG( PCB_BASE_FRAME* parent ) :
m_Parent = parent; m_Parent = parent;
PCB_SCREEN* screen = (PCB_SCREEN*) m_Parent->GetScreen(); PCB_SCREEN* screen = (PCB_SCREEN*) m_Parent->GetScreen();
int Masque_Layer = g_TabAllCopperLayerMask[board->GetCopperLayerCount() - 1]; LAYER_MSK Masque_Layer = g_TabAllCopperLayerMask[board->GetCopperLayerCount() - 1];
Masque_Layer += ALL_NO_CU_LAYERS; Masque_Layer |= ALL_NO_CU_LAYERS;
for( ii = 0, LayerCount = 0; ii < NB_COPPER_LAYERS; ii++ ) for( ii = 0, LayerCount = 0; ii < NB_COPPER_LAYERS; ii++ )
{ {
......
...@@ -70,7 +70,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC, ...@@ -70,7 +70,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC,
int ii, jj, nb_segm, nbconnect; int ii, jj, nb_segm, nbconnect;
wxPoint start; wxPoint start;
wxPoint end; wxPoint end;
int startmasklayer, endmasklayer; LAYER_MSK startmasklayer, endmasklayer;
int netcode = aNewTrack->GetNet(); int netcode = aNewTrack->GetNet();
...@@ -135,14 +135,14 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC, ...@@ -135,14 +135,14 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC,
return 0; return 0;
// Determine layers interconnected these points. // Determine layers interconnected these points.
startmasklayer = StartTrack->ReturnMaskLayer(); startmasklayer = StartTrack->GetLayerMask();
endmasklayer = EndTrack->ReturnMaskLayer(); endmasklayer = EndTrack->GetLayerMask();
// There may be a via or a pad on the end points. // There may be a via or a pad on the end points.
pt_segm = m_Pcb->m_Track->GetVia( NULL, start, startmasklayer ); pt_segm = m_Pcb->m_Track->GetVia( NULL, start, startmasklayer );
if( pt_segm ) if( pt_segm )
startmasklayer |= pt_segm->ReturnMaskLayer(); startmasklayer |= pt_segm->GetLayerMask();
if( StartTrack->start && ( StartTrack->start->Type() == PCB_PAD_T ) ) if( StartTrack->start && ( StartTrack->start->Type() == PCB_PAD_T ) )
{ {
...@@ -154,7 +154,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC, ...@@ -154,7 +154,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC,
pt_segm = m_Pcb->m_Track->GetVia( NULL, end, endmasklayer ); pt_segm = m_Pcb->m_Track->GetVia( NULL, end, endmasklayer );
if( pt_segm ) if( pt_segm )
endmasklayer |= pt_segm->ReturnMaskLayer(); endmasklayer |= pt_segm->GetLayerMask();
if( EndTrack->end && ( EndTrack->end->Type() == PCB_PAD_T ) ) if( EndTrack->end && ( EndTrack->end->Type() == PCB_PAD_T ) )
{ {
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
* The pads must appear on the layers selected in LayerMask * The pads must appear on the layers selected in LayerMask
*/ */
static void Trace_Pads_Only( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* Module, static void Trace_Pads_Only( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* Module,
int ox, int oy, int LayerMask, GR_DRAWMODE draw_mode ); int ox, int oy, LAYER_MSK LayerMask, GR_DRAWMODE draw_mode );
void FOOTPRINT_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) void FOOTPRINT_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
...@@ -199,7 +199,7 @@ void BOARD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* DC, GR_DRAWMODE aDrawMode, const ...@@ -199,7 +199,7 @@ void BOARD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* DC, GR_DRAWMODE aDrawMode, const
for( MODULE* module = m_Modules; module; module = module->Next() ) for( MODULE* module = m_Modules; module; module = module->Next() )
{ {
bool display = true; bool display = true;
int layerMask = ALL_CU_LAYERS; LAYER_MSK layerMask = ALL_CU_LAYERS;
if( module->IsMoving() ) if( module->IsMoving() )
continue; continue;
...@@ -286,7 +286,7 @@ void BOARD::DrawHighLight( EDA_DRAW_PANEL* am_canvas, wxDC* DC, int aNetCode ) ...@@ -286,7 +286,7 @@ void BOARD::DrawHighLight( EDA_DRAW_PANEL* am_canvas, wxDC* DC, int aNetCode )
* The pads must appear on the layers selected in LayerMask * The pads must appear on the layers selected in LayerMask
*/ */
static void Trace_Pads_Only( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* aModule, static void Trace_Pads_Only( EDA_DRAW_PANEL* panel, wxDC* DC, MODULE* aModule,
int ox, int oy, int aLayerMask, GR_DRAWMODE draw_mode ) int ox, int oy, LAYER_MSK aLayerMask, GR_DRAWMODE draw_mode )
{ {
PCB_BASE_FRAME* frame = (PCB_BASE_FRAME*) panel->GetParent(); PCB_BASE_FRAME* frame = (PCB_BASE_FRAME*) panel->GetParent();
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <pad_shapes.h> #include <pad_shapes.h>
#include <wx/gdicmn.h> // for wxPoint definition #include <wx/gdicmn.h> // for wxPoint definition
#include <layers_id_colors_and_visibility.h>
#include <polygons_defs.h> #include <polygons_defs.h>
class CRect class CRect
......
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