Commit 9c8d221f authored by jean-pierre charras's avatar jean-pierre charras

Make gerbview compilable and working (does not use now layers and layer masks from Pcbnew).

Export to Pcbnew is broken, but it is a very rarely used feature. It will be fixed later.
parents 86276841 013296cb
...@@ -109,7 +109,8 @@ bool DrawPageOnClipboard( EDA_DRAW_FRAME* aFrame ) ...@@ -109,7 +109,8 @@ bool DrawPageOnClipboard( EDA_DRAW_FRAME* aFrame )
dc.SetClippingRegion( DrawArea ); dc.SetClippingRegion( DrawArea );
} }
aFrame->PrintPage( &dc, FULL_LAYERS, false ); const LSET allLayersMask = LSET().set();
aFrame->PrintPage( &dc, allLayersMask, false );
screen->m_IsPrinting = false; screen->m_IsPrinting = false;
aFrame->GetCanvas()->SetClipBox( tmp ); aFrame->GetCanvas()->SetClipBox( tmp );
wxMetafile* mf = dc.Close(); wxMetafile* mf = dc.Close();
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <gr_basic.h> #include <gr_basic.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <wx/debug.h> #include <wx/debug.h>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <wxstruct.h> #include <wxstruct.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <gerbview.h> #include <gerbview.h>
#include <dcode.h>
#include <class_DCodeSelectionbox.h> #include <class_DCodeSelectionbox.h>
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include <macros.h> #include <macros.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_GERBER.h> #include <class_GERBER.h>
......
...@@ -76,7 +76,7 @@ private: ...@@ -76,7 +76,7 @@ private:
excellon_state m_State; // state of excellon file analysis excellon_state m_State; // state of excellon file analysis
bool m_SlotOn; // true during an oval driil definition bool m_SlotOn; // true during an oval driil definition
public: EXCELLON_IMAGE( GERBVIEW_FRAME* aParent, LAYER_NUM layer ) : public: EXCELLON_IMAGE( GERBVIEW_FRAME* aParent, int layer ) :
GERBER_IMAGE( aParent, layer ) GERBER_IMAGE( aParent, layer )
{ {
m_State = READ_HEADER_STATE; m_State = READ_HEADER_STATE;
......
...@@ -40,7 +40,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync() ...@@ -40,7 +40,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync()
{ {
Clear(); Clear();
for( LAYER_NUM layerid = FIRST_LAYER; layerid < NB_LAYERS; ++layerid ) for( int layerid = 0; layerid < GERBER_DRAWLAYERS_COUNT; ++layerid )
{ {
wxBitmap layerbmp( 14, 14 ); wxBitmap layerbmp( 14, 14 );
wxString layername; wxString layername;
...@@ -49,7 +49,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync() ...@@ -49,7 +49,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync()
continue; continue;
// Prepare Bitmap // Prepare Bitmap
SetBitmapLayer( layerbmp, layerid ); SetBitmapLayer( layerbmp, (LAYER_ID)layerid );
layername = GetLayerName( layerid ); layername = GetLayerName( layerid );
...@@ -59,7 +59,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync() ...@@ -59,7 +59,7 @@ void GBR_LAYER_BOX_SELECTOR::Resync()
// Returns a color index from the layer id // Returns a color index from the layer id
EDA_COLOR_T GBR_LAYER_BOX_SELECTOR::GetLayerColor( LAYER_NUM aLayer ) const EDA_COLOR_T GBR_LAYER_BOX_SELECTOR::GetLayerColor( int aLayer ) const
{ {
GERBVIEW_FRAME* frame = (GERBVIEW_FRAME*) GetParent()->GetParent(); GERBVIEW_FRAME* frame = (GERBVIEW_FRAME*) GetParent()->GetParent();
...@@ -68,7 +68,7 @@ EDA_COLOR_T GBR_LAYER_BOX_SELECTOR::GetLayerColor( LAYER_NUM aLayer ) const ...@@ -68,7 +68,7 @@ EDA_COLOR_T GBR_LAYER_BOX_SELECTOR::GetLayerColor( LAYER_NUM aLayer ) const
// Returns the name of the layer id // Returns the name of the layer id
wxString GBR_LAYER_BOX_SELECTOR::GetLayerName( LAYER_NUM aLayer ) const wxString GBR_LAYER_BOX_SELECTOR::GetLayerName( int aLayer ) const
{ {
wxString name; wxString name;
name.Printf( _( "Layer %d" ), aLayer + 1 ); name.Printf( _( "Layer %d" ), aLayer + 1 );
......
...@@ -22,15 +22,14 @@ public: ...@@ -22,15 +22,14 @@ public:
// Returns a color index from the layer id // Returns a color index from the layer id
// Virtual function // Virtual function
EDA_COLOR_T GetLayerColor( LAYER_NUM aLayer ) const; EDA_COLOR_T GetLayerColor( int aLayer ) const;
// Returns true if the layer id is enabled (i.e. is it should be displayed) // Returns true if the layer id is enabled (i.e. is it should be displayed)
// Virtual function // Virtual function
bool IsLayerEnabled( LAYER_NUM aLayer ) const { return true; }; bool IsLayerEnabled( int aLayer ) const { return true; };
// Returns the name of the layer id // Returns the name of the layer id
// Virtual function wxString GetLayerName( int aLayer ) const;
wxString GetLayerName( LAYER_NUM aLayer ) const;
}; };
#endif //CLASS_GBR_LAYER_BOX_SELECTOR_H #endif //CLASS_GBR_LAYER_BOX_SELECTOR_H
...@@ -14,7 +14,7 @@ GBR_LAYOUT::GBR_LAYOUT() ...@@ -14,7 +14,7 @@ GBR_LAYOUT::GBR_LAYOUT()
{ {
PAGE_INFO pageInfo( wxT( "GERBER" ) ); PAGE_INFO pageInfo( wxT( "GERBER" ) );
SetPageSettings( pageInfo ); SetPageSettings( pageInfo );
m_printLayersMask = FULL_LAYERS; m_printLayersMask = -1;
} }
...@@ -22,16 +22,6 @@ GBR_LAYOUT::~GBR_LAYOUT() ...@@ -22,16 +22,6 @@ GBR_LAYOUT::~GBR_LAYOUT()
{ {
} }
/* Function IsLayerVisible
* tests whether a given layer is visible
* param aLayer = The layer to be tested
* return bool - true if the layer is visible.
*/
bool GBR_LAYOUT::IsLayerVisible( LAYER_NUM aLayer ) const
{
return m_printLayersMask & GetLayerMask( aLayer );
}
EDA_RECT GBR_LAYOUT::ComputeBoundingBox() EDA_RECT GBR_LAYOUT::ComputeBoundingBox()
{ {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <class_colors_design_settings.h> #include <class_colors_design_settings.h>
#include <common.h> // PAGE_INFO #include <common.h> // PAGE_INFO
#include <gerbview.h> // GERBER_DRAWLAYERS_COUNT
#include <class_title_block.h> #include <class_title_block.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
...@@ -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;
LSET m_printLayersMask; // When printing: the list of layers to print std::bitset <GERBER_DRAWLAYERS_COUNT> 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
...@@ -87,24 +88,35 @@ public: ...@@ -87,24 +88,35 @@ public:
void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC,
GR_DRAWMODE aDrawMode, const wxPoint& aOffset, GR_DRAWMODE aDrawMode, const wxPoint& aOffset,
bool aPrintBlackAndWhite = false ); bool aPrintBlackAndWhite = false );
/** /**
* Function SetVisibleLayers * Function SetPrintableLayers
* changes the bit-mask of visible layers * changes the list of printable layers
* @param aLayerMask = The new bit-mask of visible layers * @param aLayerMask = The new bit-mask of printable layers
*/ */
void SetVisibleLayers( LSET aLayerMask ) void SetPrintableLayers( const std::bitset <GERBER_DRAWLAYERS_COUNT>& aLayerMask )
{ {
m_printLayersMask = aLayerMask; m_printLayersMask = aLayerMask;
} }
/** /**
* Function IsLayerVisible * Function GetPrintableLayers
* @return the bit-mask of printable layers
*/
std::bitset <GERBER_DRAWLAYERS_COUNT> GetPrintableLayers()
{
return m_printLayersMask;
}
/**
* Function IsLayerPrintable
* tests whether a given layer is visible * tests whether a given layer is visible
* @param aLayer = The layer to be tested * @param aLayer = The layer to be tested
* @return bool - true if the layer is visible. * @return bool - true if the layer is visible.
*/ */
bool IsLayerVisible( LAYER_NUM aLayer ) const; bool IsLayerPrintable( int aLayer ) const
{
return m_printLayersMask[ aLayer ];
}
#if defined(DEBUG) #if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // overload void Show( int nestLevel, std::ostream& os ) const; // overload
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <msgpanel.h> #include <msgpanel.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <class_GERBER.h> #include <class_GERBER.h>
...@@ -44,7 +45,7 @@ GERBER_DRAW_ITEM::GERBER_DRAW_ITEM( GBR_LAYOUT* aParent, GERBER_IMAGE* aGerberpa ...@@ -44,7 +45,7 @@ GERBER_DRAW_ITEM::GERBER_DRAW_ITEM( GBR_LAYOUT* aParent, GERBER_IMAGE* aGerberpa
EDA_ITEM( (EDA_ITEM*)aParent, TYPE_GERBER_DRAW_ITEM ) EDA_ITEM( (EDA_ITEM*)aParent, TYPE_GERBER_DRAW_ITEM )
{ {
m_imageParams = aGerberparams; m_imageParams = aGerberparams;
m_Layer = FIRST_LAYER; m_Layer = 0;
m_Shape = GBR_SEGMENT; m_Shape = GBR_SEGMENT;
m_Flashed = false; m_Flashed = false;
m_DCode = 0; m_DCode = 0;
......
...@@ -90,7 +90,7 @@ public: ...@@ -90,7 +90,7 @@ public:
* redundancy for these parameters * redundancy for these parameters
*/ */
private: private:
LAYER_NUM m_Layer; int m_Layer;
// These values are used to draw this item, according to gerber layers parameters // These values are used to draw this item, according to gerber layers parameters
// Because they can change inside a gerber image, they are stored here // Because they can change inside a gerber image, they are stored here
...@@ -123,7 +123,7 @@ public: ...@@ -123,7 +123,7 @@ public:
* Function GetLayer * Function GetLayer
* returns the layer this item is on. * returns the layer this item is on.
*/ */
LAYER_NUM GetLayer() const { return m_Layer; } int GetLayer() const { return m_Layer; }
/** /**
* Function SetLayer * Function SetLayer
...@@ -132,12 +132,7 @@ public: ...@@ -132,12 +132,7 @@ public:
* is virtual because some items (in fact: class DIMENSION) * is virtual because some items (in fact: class DIMENSION)
* have a slightly different initialization * have a slightly different initialization
*/ */
void SetLayer( LAYER_NUM aLayer ) { m_Layer = aLayer; } void SetLayer( int aLayer ) { m_Layer = aLayer; }
LSET GetLayerMask()
{
return ::GetLayerMask( m_Layer );
}
bool GetLayerPolarity() bool GetLayerPolarity()
{ {
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <class_gbr_layer_box_selector.h> #include <class_gbr_layer_box_selector.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_GERBER.h> #include <class_GERBER.h>
#include <layer_widget.h> #include <layer_widget.h>
#include <class_gerbview_layer_widget.h> #include <class_gerbview_layer_widget.h>
...@@ -169,7 +170,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event ) ...@@ -169,7 +170,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_LAYERS) ? true : false;; bool visible = (menuId == ID_SHOW_ALL_LAYERS) ? true : false;;
LSET visibleLayers = NO_LAYERS; long visibleLayers = 0;
bool force_active_layer_visible; bool force_active_layer_visible;
m_alwaysShowActiveLayer = ( menuId == ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE ); m_alwaysShowActiveLayer = ( menuId == ID_ALWAYS_SHOW_NO_LAYERS_BUT_ACTIVE );
...@@ -186,7 +187,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event ) ...@@ -186,7 +187,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
for( int row=0; row < rowCount; ++row ) for( int row=0; row < rowCount; ++row )
{ {
wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 ); wxCheckBox* cb = (wxCheckBox*) getLayerComp( row, 3 );
LAYER_NUM layer = getDecodedId( cb->GetId() ); int layer = getDecodedId( cb->GetId() );
bool loc_visible = visible; bool loc_visible = visible;
if( force_active_layer_visible && (layer == myframe->getActiveLayer() ) ) if( force_active_layer_visible && (layer == myframe->getActiveLayer() ) )
...@@ -195,9 +196,9 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event ) ...@@ -195,9 +196,9 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
cb->SetValue( loc_visible ); cb->SetValue( loc_visible );
if( loc_visible ) if( loc_visible )
visibleLayers |= GetLayerSet( row ); visibleLayers |= 1 << row;
else else
visibleLayers &= ~GetLayerSet( row ); visibleLayers &= ~( 1 << row );
} }
myframe->SetVisibleLayers( visibleLayers ); myframe->SetVisibleLayers( visibleLayers );
...@@ -224,7 +225,7 @@ void GERBER_LAYER_WIDGET::ReFill() ...@@ -224,7 +225,7 @@ void GERBER_LAYER_WIDGET::ReFill()
{ {
ClearLayerRows(); ClearLayerRows();
for( LAYER_NUM layer = FIRST_LAYER; layer < NB_GERBER_LAYERS; ++layer ) for( int layer = 0; layer < GERBER_DRAWLAYERS_COUNT; ++layer )
{ {
wxString msg; wxString msg;
msg.Printf( _("Layer %d"), layer+1 ); msg.Printf( _("Layer %d"), layer+1 );
...@@ -244,11 +245,11 @@ void GERBER_LAYER_WIDGET::OnLayerColorChange( int aLayer, EDA_COLOR_T aColor ) ...@@ -244,11 +245,11 @@ void GERBER_LAYER_WIDGET::OnLayerColorChange( int aLayer, EDA_COLOR_T aColor )
myframe->GetCanvas()->Refresh(); myframe->GetCanvas()->Refresh();
} }
bool GERBER_LAYER_WIDGET::OnLayerSelect( LAYER_NUM aLayer ) bool GERBER_LAYER_WIDGET::OnLayerSelect( int aLayer )
{ {
// the layer change from the GERBER_LAYER_WIDGET can be denied by returning // the layer change from the GERBER_LAYER_WIDGET can be denied by returning
// false from this function. // false from this function.
LAYER_NUM layer = myframe->getActiveLayer( ); int layer = myframe->getActiveLayer( );
myframe->setActiveLayer( aLayer, false ); myframe->setActiveLayer( aLayer, false );
myframe->syncLayerBox(); myframe->syncLayerBox();
...@@ -261,14 +262,14 @@ bool GERBER_LAYER_WIDGET::OnLayerSelect( LAYER_NUM aLayer ) ...@@ -261,14 +262,14 @@ bool GERBER_LAYER_WIDGET::OnLayerSelect( LAYER_NUM aLayer )
return true; return true;
} }
void GERBER_LAYER_WIDGET::OnLayerVisible( LAYER_NUM aLayer, bool isVisible, bool isFinal ) void GERBER_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal )
{ {
LSET visibleLayers = myframe->GetVisibleLayers(); long visibleLayers = myframe->GetVisibleLayers();
if( isVisible ) if( isVisible )
visibleLayers |= GetLayerSet( aLayer ); visibleLayers |= 1 << aLayer;
else else
visibleLayers &= ~GetLayerSet( aLayer ); visibleLayers &= ~( 1 << aLayer );
myframe->SetVisibleLayers( visibleLayers ); myframe->SetVisibleLayers( visibleLayers );
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <common.h> #include <common.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
void GERBVIEW_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey ) void GERBVIEW_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey )
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <base_units.h> #include <base_units.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <class_GERBER.h> #include <class_GERBER.h>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <select_layers_to_pcb.h> #include <select_layers_to_pcb.h>
// Exported function // Exported function
const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber ); const wxString GetPCBDefaultLayerName( int aLayerNumber );
enum layer_sel_id { enum layer_sel_id {
...@@ -23,11 +23,11 @@ class SELECT_LAYER_DIALOG : public wxDialog ...@@ -23,11 +23,11 @@ class SELECT_LAYER_DIALOG : public wxDialog
private: private:
GERBVIEW_FRAME* m_Parent; GERBVIEW_FRAME* m_Parent;
wxRadioBox* m_LayerList; wxRadioBox* m_LayerList;
LAYER_NUM m_LayerId[int(NB_LAYERS) + 1]; // One extra element for "(Deselect)" radiobutton int m_LayerId[int(GERBER_DRAWLAYERS_COUNT) + 1]; // One extra element for "(Deselect)" radiobutton
public: public:
// Constructor and destructor // Constructor and destructor
SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent, LAYER_NUM aDefaultLayer, SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent, int aDefaultLayer,
int aCopperLayerCount, bool aShowDeselectOption ); int aCopperLayerCount, bool aShowDeselectOption );
~SELECT_LAYER_DIALOG() { }; ~SELECT_LAYER_DIALOG() { };
...@@ -47,10 +47,10 @@ END_EVENT_TABLE() ...@@ -47,10 +47,10 @@ END_EVENT_TABLE()
/** Install the dialog box for layer selection /** Install the dialog box for layer selection
* @param aDefaultLayer = Preselection (NB_LAYERS for "(Deselect)" layer) * @param aDefaultLayer = Preselection (GERBER_DRAWLAYERS_COUNT for "(Deselect)" layer)
* @param aCopperLayerCount = number of copper layers * @param aCopperLayerCount = number of copper layers
* @param aShowDeselectOption = display a "(Deselect)" radiobutton (when set to true) * @param aShowDeselectOption = display a "(Deselect)" radiobutton (when set to true)
* @return new layer value (NB_LAYERS when "(Deselect)" radiobutton selected), * @return new layer value (GERBER_DRAWLAYERS_COUNT when "(Deselect)" radiobutton selected),
* or -1 if canceled * or -1 if canceled
* *
* Providing the option to also display a "(Deselect)" radiobutton makes the * Providing the option to also display a "(Deselect)" radiobutton makes the
...@@ -61,10 +61,10 @@ END_EVENT_TABLE() ...@@ -61,10 +61,10 @@ END_EVENT_TABLE()
* different radiobutton is clicked on) prior to then clicking on the "Deselect" * different radiobutton is clicked on) prior to then clicking on the "Deselect"
* button provided within the "Layer selection:" dialog box). * button provided within the "Layer selection:" dialog box).
*/ */
LAYER_NUM GERBVIEW_FRAME::SelectPCBLayer( LAYER_NUM aDefaultLayer, int aCopperLayerCount, int GERBVIEW_FRAME::SelectPCBLayer( int aDefaultLayer, int aCopperLayerCount,
bool aShowDeselectOption ) bool aShowDeselectOption )
{ {
LAYER_NUM layer; int layer;
SELECT_LAYER_DIALOG* frame = new SELECT_LAYER_DIALOG( this, aDefaultLayer, SELECT_LAYER_DIALOG* frame = new SELECT_LAYER_DIALOG( this, aDefaultLayer,
aCopperLayerCount, aCopperLayerCount,
aShowDeselectOption ); aShowDeselectOption );
...@@ -82,14 +82,17 @@ LAYER_NUM GERBVIEW_FRAME::SelectPCBLayer( LAYER_NUM aDefaultLayer, int aCopperLa ...@@ -82,14 +82,17 @@ LAYER_NUM GERBVIEW_FRAME::SelectPCBLayer( LAYER_NUM aDefaultLayer, int aCopperLa
* to the right of that radiobox. * to the right of that radiobox.
*/ */
SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent, SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent,
LAYER_NUM aDefaultLayer, int aCopperLayerCount, int aDefaultLayer, int aCopperLayerCount,
bool aShowDeselectOption ) : bool aShowDeselectOption ) :
wxDialog( parent, -1, _( "Select Layer:" ), wxPoint( -1, -1 ), wxDialog( parent, -1, _( "Select Layer:" ), wxPoint( -1, -1 ),
wxSize( 470, 250 ), wxSize( 470, 250 ),
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ) wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )
{ {
#define NB_PCB_LAYERS 64
#define FIRST_COPPER_LAYER 0
#define LAST_COPPER_LAYER 31
wxButton* Button; wxButton* Button;
LAYER_NUM ii; int ii;
wxString LayerList[NB_PCB_LAYERS + 1]; // One extra element for "(Deselect)" wxString LayerList[NB_PCB_LAYERS + 1]; // One extra element for "(Deselect)"
// radiobutton // radiobutton
int LayerCount, LayerSelect = -1; int LayerCount, LayerSelect = -1;
...@@ -98,9 +101,10 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent, ...@@ -98,9 +101,10 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent,
// Build the layer list; first build copper layers list // Build the layer list; first build copper layers list
LayerCount = 0; LayerCount = 0;
for( ii = FIRST_COPPER_LAYER; ii < NB_COPPER_LAYERS; ++ii )
for( ii = FIRST_COPPER_LAYER; ii <= LAST_COPPER_LAYER; ++ii )
{ {
m_LayerId[ii] = FIRST_LAYER; m_LayerId[ii] = 0;
if( ii == FIRST_COPPER_LAYER || ii == LAST_COPPER_LAYER || ii < aCopperLayerCount-1 ) if( ii == FIRST_COPPER_LAYER || ii == LAST_COPPER_LAYER || ii < aCopperLayerCount-1 )
{ {
...@@ -113,10 +117,11 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent, ...@@ -113,10 +117,11 @@ SELECT_LAYER_DIALOG::SELECT_LAYER_DIALOG( GERBVIEW_FRAME* parent,
LayerCount++; LayerCount++;
} }
} }
// Build the layer list; build non copper layers list // Build the layer list; build non copper layers list
for( ; ii < NB_PCB_LAYERS; ++ii ) for( ; ii < NB_PCB_LAYERS; ++ii )
{ {
m_LayerId[ii] = FIRST_LAYER; m_LayerId[ii] = 0;
LayerList[LayerCount] = GetPCBDefaultLayerName( ii ); LayerList[LayerCount] = GetPCBDefaultLayerName( ii );
...@@ -182,7 +187,7 @@ void SELECT_LAYER_DIALOG::OnCancelClick( wxCommandEvent& event ) ...@@ -182,7 +187,7 @@ void SELECT_LAYER_DIALOG::OnCancelClick( wxCommandEvent& event )
EndModal( -1 ); EndModal( -1 );
} }
const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber ) const wxString GetPCBDefaultLayerName( int aLayerNumber )
{ {
const wxChar* txt; const wxChar* txt;
...@@ -190,20 +195,20 @@ const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber ) ...@@ -190,20 +195,20 @@ const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber )
switch( aLayerNumber ) switch( aLayerNumber )
{ {
case F_Cu: txt = wxT( "F.Cu" ); break; case F_Cu: txt = wxT( "F.Cu" ); break;
case LAYER_N_2: txt = wxT( "Inner1.Cu" ); break; case In1_Cu: txt = wxT( "In1.Cu" ); break;
case LAYER_N_3: txt = wxT( "Inner2.Cu" ); break; case In2_Cu: txt = wxT( "In2.Cu" ); break;
case LAYER_N_4: txt = wxT( "Inner3.Cu" ); break; case In3_Cu: txt = wxT( "In3.Cu" ); break;
case LAYER_N_5: txt = wxT( "Inner4.Cu" ); break; case In4_Cu: txt = wxT( "In4.Cu" ); break;
case LAYER_N_6: txt = wxT( "Inner5.Cu" ); break; case In5_Cu: txt = wxT( "In5.Cu" ); break;
case LAYER_N_7: txt = wxT( "Inner6.Cu" ); break; case In6_Cu: txt = wxT( "In6.Cu" ); break;
case LAYER_N_8: txt = wxT( "Inner7.Cu" ); break; case In7_Cu: txt = wxT( "In7.Cu" ); break;
case LAYER_N_9: txt = wxT( "Inner8.Cu" ); break; case In8_Cu: txt = wxT( "In8.Cu" ); break;
case LAYER_N_10: txt = wxT( "Inner9.Cu" ); break; case In9_Cu: txt = wxT( "In9.Cu" ); break;
case LAYER_N_11: txt = wxT( "Inner10.Cu" ); break; case In10_Cu: txt = wxT( "In10.Cu" ); break;
case LAYER_N_12: txt = wxT( "Inner11.Cu" ); break; case In11_Cu: txt = wxT( "In11.Cu" ); break;
case LAYER_N_13: txt = wxT( "Inner12.Cu" ); break; case In12_Cu: txt = wxT( "In12.Cu" ); break;
case LAYER_N_14: txt = wxT( "Inner13.Cu" ); break; case In13_Cu: txt = wxT( "In13.Cu" ); break;
case LAYER_N_15: txt = wxT( "Inner14.Cu" ); break; case In14_Cu: txt = wxT( "In14.Cu" ); break;
case B_Cu: txt = wxT( "B.Cu" ); break; case B_Cu: txt = wxT( "B.Cu" ); break;
case B_Adhes: txt = wxT( "B.Adhes" ); break; case B_Adhes: txt = wxT( "B.Adhes" ); break;
case F_Adhes: txt = wxT( "F.Adhes" ); break; case F_Adhes: txt = wxT( "F.Adhes" ); break;
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <macros.h> #include <macros.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <dialog_show_page_borders.h> #include <dialog_show_page_borders.h>
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <pcbplot.h> #include <pcbplot.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <gerbview_dialog_display_options_frame_base.h> #include <gerbview_dialog_display_options_frame_base.h>
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <base_units.h> #include <base_units.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <class_GERBER.h> #include <class_GERBER.h>
...@@ -46,11 +47,10 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer, ...@@ -46,11 +47,10 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET 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:
LSET visiblemask = GetVisibleLayers();
GBR_DISPLAY_OPTIONS imgDisplayOptions = m_DisplayOptions; GBR_DISPLAY_OPTIONS imgDisplayOptions = m_DisplayOptions;
std::bitset <GERBER_DRAWLAYERS_COUNT> printLayersMask = GetGerberLayout()->GetPrintableLayers();
// Set draw options for printing: // Set draw options for printing:
SetVisibleLayers( aPrintMasklayer );
m_DisplayOptions.m_DisplayFlashedItemsFill = true; m_DisplayOptions.m_DisplayFlashedItemsFill = true;
m_DisplayOptions.m_DisplayLinesFill = true; m_DisplayOptions.m_DisplayLinesFill = true;
m_DisplayOptions.m_DisplayPolygonsFill = true; m_DisplayOptions.m_DisplayPolygonsFill = true;
...@@ -58,7 +58,10 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer, ...@@ -58,7 +58,10 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer,
m_DisplayOptions.m_IsPrinting = true; m_DisplayOptions.m_IsPrinting = true;
PRINT_PARAMETERS* printParameters = (PRINT_PARAMETERS*)aData; PRINT_PARAMETERS* printParameters = (PRINT_PARAMETERS*)aData;
std::bitset <GERBER_DRAWLAYERS_COUNT> printCurrLayerMask;
printCurrLayerMask.reset();
printCurrLayerMask.set(printParameters->m_Flags); // m_Flags contains the draw layer number
GetGerberLayout()->SetPrintableLayers( printCurrLayerMask );
m_canvas->SetPrintMirrored( aPrintMirrorMode ); m_canvas->SetPrintMirrored( aPrintMirrorMode );
bool printBlackAndWhite = printParameters && printParameters->m_Print_Black_and_White; bool printBlackAndWhite = printParameters && printParameters->m_Print_Black_and_White;
...@@ -68,7 +71,7 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer, ...@@ -68,7 +71,7 @@ void GERBVIEW_FRAME::PrintPage( wxDC* aDC, LSET aPrintMasklayer,
m_canvas->SetPrintMirrored( false ); m_canvas->SetPrintMirrored( false );
// Restore draw options: // Restore draw options:
SetVisibleLayers( visiblemask ); GetGerberLayout()->SetPrintableLayers( printLayersMask );
m_DisplayOptions = imgDisplayOptions; m_DisplayOptions = imgDisplayOptions;
} }
...@@ -202,14 +205,14 @@ void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode, ...@@ -202,14 +205,14 @@ void GBR_LAYOUT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
bool end = false; bool end = false;
for( LAYER_NUM layer = FIRST_LAYER; !end; ++layer ) for( int layer = 0; !end; ++layer )
{ {
LAYER_NUM active_layer = gerbFrame->getActiveLayer(); int active_layer = gerbFrame->getActiveLayer();
if( layer == active_layer ) // active layer will be drawn after other layers if( layer == active_layer ) // active layer will be drawn after other layers
continue; continue;
if( layer == NB_GERBER_LAYERS ) // last loop: draw active layer if( layer == GERBER_DRAWLAYERS_COUNT ) // last loop: draw active layer
{ {
end = true; end = true;
layer = active_layer; layer = active_layer;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <gestfich.h> #include <gestfich.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <class_GERBER.h> #include <class_GERBER.h>
...@@ -226,7 +227,7 @@ void GERBVIEW_FRAME::OnSelectActiveDCode( wxCommandEvent& event ) ...@@ -226,7 +227,7 @@ void GERBVIEW_FRAME::OnSelectActiveDCode( wxCommandEvent& event )
void GERBVIEW_FRAME::OnSelectActiveLayer( wxCommandEvent& event ) void GERBVIEW_FRAME::OnSelectActiveLayer( wxCommandEvent& event )
{ {
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
setActiveLayer( event.GetSelection() ); setActiveLayer( event.GetSelection() );
...@@ -240,7 +241,7 @@ void GERBVIEW_FRAME::OnSelectActiveLayer( wxCommandEvent& event ) ...@@ -240,7 +241,7 @@ void GERBVIEW_FRAME::OnSelectActiveLayer( wxCommandEvent& event )
void GERBVIEW_FRAME::OnShowGerberSourceFile( wxCommandEvent& event ) void GERBVIEW_FRAME::OnShowGerberSourceFile( wxCommandEvent& event )
{ {
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
GERBER_IMAGE* gerber_layer = g_GERBER_List[layer]; GERBER_IMAGE* gerber_layer = g_GERBER_List[layer];
if( gerber_layer ) if( gerber_layer )
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
#include <confirm.h> #include <confirm.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
#include <base_units.h> #include <base_units.h>
...@@ -92,13 +93,13 @@ extern double ReadDouble( char*& text, bool aSkipSeparator = true ); ...@@ -92,13 +93,13 @@ extern double ReadDouble( char*& text, bool aSkipSeparator = true );
extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem, extern void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
APERTURE_T aAperture, APERTURE_T aAperture,
int Dcode_index, int Dcode_index,
LAYER_NUM aLayer, int aLayer,
const wxPoint& aPos, const wxPoint& aPos,
wxSize aSize, wxSize aSize,
bool aLayerNegative ); bool aLayerNegative );
void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem, void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
int Dcode_index, int Dcode_index,
LAYER_NUM aLayer, int aLayer,
const wxPoint& aStart, const wxPoint& aStart,
const wxPoint& aEnd, const wxPoint& aEnd,
wxSize aPenSize, wxSize aPenSize,
...@@ -167,7 +168,7 @@ static EXCELLON_CMD excellon_G_CmdList[] = ...@@ -167,7 +168,7 @@ static EXCELLON_CMD excellon_G_CmdList[] =
bool GERBVIEW_FRAME::Read_EXCELLON_File( const wxString& aFullFileName ) bool GERBVIEW_FRAME::Read_EXCELLON_File( const wxString& aFullFileName )
{ {
wxString msg; wxString msg;
LAYER_NUM layer = getActiveLayer(); // current layer used in GerbView int layer = getActiveLayer(); // current layer used in GerbView
if( g_GERBER_List[layer] == NULL ) if( g_GERBER_List[layer] == NULL )
{ {
......
...@@ -7,13 +7,13 @@ ...@@ -7,13 +7,13 @@
#include <fctsys.h> #include <fctsys.h>
#include <common.h> #include <common.h>
// #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <macros.h> #include <macros.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <gestfich.h> #include <gestfich.h>
#include <trigo.h> #include <trigo.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <select_layers_to_pcb.h> #include <select_layers_to_pcb.h>
#include <build_version.h> #include <build_version.h>
...@@ -123,7 +123,7 @@ void GERBVIEW_FRAME::ExportDataInPcbnewFormat( wxCommandEvent& event ) ...@@ -123,7 +123,7 @@ void GERBVIEW_FRAME::ExportDataInPcbnewFormat( wxCommandEvent& event )
int layercount = 0; int layercount = 0;
// Count the Gerber layers which are actually currently used // Count the Gerber layers which are actually currently used
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii ) for( LAYER_NUM ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
{ {
if( g_GERBER_List[ii] != NULL ) if( g_GERBER_List[ii] != NULL )
layercount++; layercount++;
...@@ -190,16 +190,17 @@ bool GBR_TO_PCB_EXPORTER::ExportPcb( LAYER_NUM* LayerLookUpTable, int aCopperLay ...@@ -190,16 +190,17 @@ bool GBR_TO_PCB_EXPORTER::ExportPcb( LAYER_NUM* LayerLookUpTable, int aCopperLay
// create an image of gerber data // create an image of gerber data
// First: non copper layers: // First: non copper layers:
GERBER_DRAW_ITEM* gerb_item = m_gerbview_frame->GetItemsList(); GERBER_DRAW_ITEM* gerb_item = m_gerbview_frame->GetItemsList();
int pcbCopperLayerMax = 31;
for( ; gerb_item; gerb_item = gerb_item->Next() ) for( ; gerb_item; gerb_item = gerb_item->Next() )
{ {
LAYER_NUM layer = gerb_item->GetLayer(); int layer = gerb_item->GetLayer();
LAYER_NUM pcb_layer_number = LayerLookUpTable[layer]; LAYER_NUM pcb_layer_number = LayerLookUpTable[layer];
if( !IsPcbLayer( pcb_layer_number ) ) if( !IsPcbLayer( pcb_layer_number ) )
continue; continue;
if( pcb_layer_number > LAST_COPPER_LAYER ) if( pcb_layer_number > pcbCopperLayerMax )
export_non_copper_item( gerb_item, pcb_layer_number ); export_non_copper_item( gerb_item, pcb_layer_number );
} }
...@@ -209,10 +210,10 @@ bool GBR_TO_PCB_EXPORTER::ExportPcb( LAYER_NUM* LayerLookUpTable, int aCopperLay ...@@ -209,10 +210,10 @@ bool GBR_TO_PCB_EXPORTER::ExportPcb( LAYER_NUM* LayerLookUpTable, int aCopperLay
for( ; gerb_item; gerb_item = gerb_item->Next() ) for( ; gerb_item; gerb_item = gerb_item->Next() )
{ {
LAYER_NUM layer = gerb_item->GetLayer(); int layer = gerb_item->GetLayer();
LAYER_NUM pcb_layer_number = LayerLookUpTable[layer]; LAYER_NUM pcb_layer_number = LayerLookUpTable[layer];
if( pcb_layer_number < 0 || pcb_layer_number > LAST_COPPER_LAYER ) if( pcb_layer_number < 0 || pcb_layer_number > pcbCopperLayerMax )
continue; continue;
else else
...@@ -398,13 +399,7 @@ void GBR_TO_PCB_EXPORTER::writePcbHeader() ...@@ -398,13 +399,7 @@ void GBR_TO_PCB_EXPORTER::writePcbHeader()
// Write copper layer count // Write copper layer count
fprintf( m_fp, "LayerCount %d\n", m_pcbCopperLayersCount ); fprintf( m_fp, "LayerCount %d\n", m_pcbCopperLayersCount );
// Write enabled layer mask:
int lmask = ALL_NO_CU_LAYERS | EXTERNAL_CU_LAYERS;
for( int ii = 0; ii < m_pcbCopperLayersCount - 2; ii++ )
lmask |= 2 << ii;
fprintf( m_fp, "EnabledLayers %08X\n", lmask );
fprintf( m_fp, "$EndGENERAL\n\n" ); fprintf( m_fp, "$EndGENERAL\n\n" );
// Creates void setup // Creates void setup
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <gestfich.h> #include <gestfich.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <class_gerbview_layer_widget.h> #include <class_gerbview_layer_widget.h>
#include <wildcards_and_files_ext.h> #include <wildcards_and_files_ext.h>
...@@ -163,7 +164,7 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName ) ...@@ -163,7 +164,7 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName )
} }
// Read gerber files: each file is loaded on a new GerbView layer // Read gerber files: each file is loaded on a new GerbView layer
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ ) for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ )
{ {
...@@ -244,7 +245,7 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName ) ...@@ -244,7 +245,7 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
} }
// Read gerber files: each file is loaded on a new GerbView layer // Read gerber files: each file is loaded on a new GerbView layer
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ ) for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ )
{ {
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <hotkeys.h> #include <hotkeys.h>
#include <gerbview_frame.h>
#include <build_version.h> #include <build_version.h>
......
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
#include <vector> #include <vector>
#include <set> #include <set>
#include <dcode.h>
#include <class_gerber_draw_item.h>
#include <class_aperture_macro.h>
#define CURSEUR_ON_GRILLE 0 #define CURSEUR_ON_GRILLE 0
#define CURSEUR_OFF_GRILLE 1 #define CURSEUR_OFF_GRILLE 1
...@@ -32,6 +29,8 @@ extern const wxChar* g_GerberPageSizeList[8]; ...@@ -32,6 +29,8 @@ extern const wxChar* g_GerberPageSizeList[8];
#define GERB_STOP_DRAW 2 // Extinguish light (lift pen) #define GERB_STOP_DRAW 2 // Extinguish light (lift pen)
#define GERB_FLASH 3 // Flash #define GERB_FLASH 3 // Flash
// number fo draw layers in Gerbview
#define GERBER_DRAWLAYERS_COUNT 32
/** /**
* Enum GERBER_VISIBLE_ID * Enum GERBER_VISIBLE_ID
...@@ -47,9 +46,6 @@ enum GERBER_VISIBLE_ID ...@@ -47,9 +46,6 @@ enum GERBER_VISIBLE_ID
END_GERBER_VISIBLE_LIST // sentinel END_GERBER_VISIBLE_LIST // sentinel
}; };
extern const wxString GerbviewProjectFileExt;
extern const wxString GerbviewProjectFileWildcard;
// Interpolation type // Interpolation type
enum Gerb_Interpolation enum Gerb_Interpolation
{ {
...@@ -93,13 +89,6 @@ enum Gerb_Analyse_Cmd ...@@ -93,13 +89,6 @@ enum Gerb_Analyse_Cmd
ENTER_RS274X_CMD ENTER_RS274X_CMD
}; };
extern GERBER_IMAGE* g_GERBER_List[GERBER_DRAWLAYERS_COUNT];
/**************/
/* rs274x.cpp */
/**************/
bool GetEndOfBlock( char buff[GERBER_BUFZ], char*& text, FILE* gerber_file );
extern GERBER_IMAGE* g_GERBER_List[32];
#include <gerbview_frame.h>
#endif // ifndef GERBVIEW_H #endif // ifndef GERBVIEW_H
...@@ -38,14 +38,13 @@ ...@@ -38,14 +38,13 @@
#include <colors_selection.h> #include <colors_selection.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <hotkeys.h> #include <hotkeys.h>
#include <dialog_hotkeys_editor.h> #include <dialog_hotkeys_editor.h>
#define GROUP wxT("/gerbview") #define GROUP wxT("/gerbview")
#define INSETUP true
void GERBVIEW_FRAME::Process_Config( wxCommandEvent& event ) void GERBVIEW_FRAME::Process_Config( wxCommandEvent& event )
{ {
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
//#include <pgm_base.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
...@@ -40,6 +39,7 @@ ...@@ -40,6 +39,7 @@
#include <msgpanel.h> #include <msgpanel.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <pcbplot.h> #include <pcbplot.h>
#include <gerbview_id.h> #include <gerbview_id.h>
...@@ -92,7 +92,7 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ): ...@@ -92,7 +92,7 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ):
SetLayout( new GBR_LAYOUT() ); SetLayout( new GBR_LAYOUT() );
SetVisibleLayers( FULL_LAYERS ); // All 32 layers visible. SetVisibleLayers( -1 ); // All draw layers visible.
SetScreen( new GBR_SCREEN( GetGerberLayout()->GetPageSettings().GetSizeIU() ) ); SetScreen( new GBR_SCREEN( GetGerberLayout()->GetPageSettings().GetSizeIU() ) );
...@@ -167,6 +167,7 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ): ...@@ -167,6 +167,7 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ):
m_LayersManager->ReFillRender(); // Update colors in Render after the config is read m_LayersManager->ReFillRender(); // Update colors in Render after the config is read
m_auimgr.Update(); m_auimgr.Update();
setActiveLayer( 0, true );
Zoom_Automatique( true ); // Gives a default zoom value Zoom_Automatique( true ); // Gives a default zoom value
} }
...@@ -184,9 +185,9 @@ void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event ) ...@@ -184,9 +185,9 @@ void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event )
bool GERBVIEW_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl ) bool GERBVIEW_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl )
{ {
const unsigned limit = std::min( unsigned( aFileSet.size() ), unsigned( NB_GERBER_LAYERS ) ); const unsigned limit = std::min( unsigned( aFileSet.size() ), unsigned( GERBER_DRAWLAYERS_COUNT ) );
LAYER_NUM layer = FIRST_LAYER; int layer = 0;
for( unsigned i=0; i<limit; ++i, ++layer ) for( unsigned i=0; i<limit; ++i, ++layer )
{ {
...@@ -338,11 +339,11 @@ void GERBVIEW_FRAME::SetElementVisibility( GERBER_VISIBLE_ID aItemIdVisible, ...@@ -338,11 +339,11 @@ void GERBVIEW_FRAME::SetElementVisibility( GERBER_VISIBLE_ID aItemIdVisible,
} }
LAYER_NUM GERBVIEW_FRAME::getNextAvailableLayer( LAYER_NUM aLayer ) const int GERBVIEW_FRAME::getNextAvailableLayer( int aLayer ) const
{ {
LAYER_NUM layer = aLayer; int layer = aLayer;
for( LAYER_NUM i = FIRST_LAYER; i < NB_GERBER_LAYERS; ++i ) for( int i = 0; i < GERBER_DRAWLAYERS_COUNT; ++i )
{ {
GERBER_IMAGE* gerber = g_GERBER_List[ layer ]; GERBER_IMAGE* gerber = g_GERBER_List[ layer ];
...@@ -351,8 +352,8 @@ LAYER_NUM GERBVIEW_FRAME::getNextAvailableLayer( LAYER_NUM aLayer ) const ...@@ -351,8 +352,8 @@ LAYER_NUM GERBVIEW_FRAME::getNextAvailableLayer( LAYER_NUM aLayer ) const
++layer; ++layer;
if( layer >= NB_GERBER_LAYERS ) if( layer >= GERBER_DRAWLAYERS_COUNT )
layer = FIRST_LAYER; layer = 0;
} }
return NO_AVAILABLE_LAYERS; return NO_AVAILABLE_LAYERS;
...@@ -398,9 +399,9 @@ void GERBVIEW_FRAME::Liste_D_Codes() ...@@ -398,9 +399,9 @@ void GERBVIEW_FRAME::Liste_D_Codes()
wxArrayString list; wxArrayString list;
double scale = g_UserUnit == INCHES ? IU_PER_MILS * 1000 : double scale = g_UserUnit == INCHES ? IU_PER_MILS * 1000 :
IU_PER_MM; IU_PER_MM;
LAYER_NUM curr_layer = getActiveLayer(); int curr_layer = getActiveLayer();
for( LAYER_NUM layer = FIRST_LAYER; layer < NB_LAYERS; ++layer ) for( int layer = 0; layer < GERBER_DRAWLAYERS_COUNT; ++layer )
{ {
GERBER_IMAGE* gerber = g_GERBER_List[layer]; GERBER_IMAGE* gerber = g_GERBER_List[layer];
...@@ -551,9 +552,9 @@ void GERBVIEW_FRAME::SetVisibleAlls() ...@@ -551,9 +552,9 @@ 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.
*/ */
LSET GERBVIEW_FRAME::GetVisibleLayers() const long GERBVIEW_FRAME::GetVisibleLayers() const
{ {
return FULL_LAYERS; // TODO return -1; // TODO
} }
...@@ -563,9 +564,9 @@ LSET GERBVIEW_FRAME::GetVisibleLayers() const ...@@ -563,9 +564,9 @@ LSET 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( LSET aLayerMask ) void GERBVIEW_FRAME::SetVisibleLayers( long aLayerMask )
{ {
GetGerberLayout()->SetVisibleLayers( aLayerMask ); // GetGerberLayout()->SetVisibleLayers( aLayerMask );
} }
...@@ -575,12 +576,12 @@ void GERBVIEW_FRAME::SetVisibleLayers( LSET aLayerMask ) ...@@ -575,12 +576,12 @@ void GERBVIEW_FRAME::SetVisibleLayers( LSET aLayerMask )
* @param aLayer = The layer to be tested * @param aLayer = The layer to be tested
* @return bool - true if the layer is visible. * @return bool - true if the layer is visible.
*/ */
bool GERBVIEW_FRAME::IsLayerVisible( LAYER_NUM aLayer ) const bool GERBVIEW_FRAME::IsLayerVisible( int aLayer ) const
{ {
if( ! m_DisplayOptions.m_IsPrinting ) if( ! m_DisplayOptions.m_IsPrinting )
return m_LayersManager->IsLayerVisible( aLayer ); return m_LayersManager->IsLayerVisible( aLayer );
else else
return GetGerberLayout()->IsLayerVisible( aLayer ); return GetGerberLayout()->IsLayerPrintable( aLayer );
} }
...@@ -664,7 +665,7 @@ EDA_COLOR_T GERBVIEW_FRAME::GetNegativeItemsColor() const ...@@ -664,7 +665,7 @@ EDA_COLOR_T GERBVIEW_FRAME::GetNegativeItemsColor() const
* Function GetLayerColor * Function GetLayerColor
* gets a layer color for any valid layer. * gets a layer color for any valid layer.
*/ */
EDA_COLOR_T GERBVIEW_FRAME::GetLayerColor( LAYER_NUM aLayer ) const EDA_COLOR_T GERBVIEW_FRAME::GetLayerColor( int aLayer ) const
{ {
return m_colorsSettings->GetLayerColor( aLayer ); return m_colorsSettings->GetLayerColor( aLayer );
} }
...@@ -674,7 +675,7 @@ EDA_COLOR_T GERBVIEW_FRAME::GetLayerColor( LAYER_NUM aLayer ) const ...@@ -674,7 +675,7 @@ EDA_COLOR_T GERBVIEW_FRAME::GetLayerColor( LAYER_NUM aLayer ) const
* Function SetLayerColor * Function SetLayerColor
* changes a layer color for any valid layer. * changes a layer color for any valid layer.
*/ */
void GERBVIEW_FRAME::SetLayerColor( LAYER_NUM aLayer, EDA_COLOR_T aColor ) void GERBVIEW_FRAME::SetLayerColor( int aLayer, EDA_COLOR_T aColor )
{ {
m_colorsSettings->SetLayerColor( aLayer, aColor ); m_colorsSettings->SetLayerColor( aLayer, aColor );
} }
...@@ -684,7 +685,7 @@ void GERBVIEW_FRAME::SetLayerColor( LAYER_NUM aLayer, EDA_COLOR_T aColor ) ...@@ -684,7 +685,7 @@ void GERBVIEW_FRAME::SetLayerColor( LAYER_NUM aLayer, EDA_COLOR_T aColor )
* Function getActiveLayer * Function getActiveLayer
* returns the active layer * returns the active layer
*/ */
LAYER_NUM GERBVIEW_FRAME::getActiveLayer() int GERBVIEW_FRAME::getActiveLayer()
{ {
return ( (GBR_SCREEN*) GetScreen() )->m_Active_Layer; return ( (GBR_SCREEN*) GetScreen() )->m_Active_Layer;
} }
...@@ -695,7 +696,7 @@ LAYER_NUM GERBVIEW_FRAME::getActiveLayer() ...@@ -695,7 +696,7 @@ LAYER_NUM GERBVIEW_FRAME::getActiveLayer()
* will change the currently active layer to \a aLayer and also * will change the currently active layer to \a aLayer and also
* update the PCB_LAYER_WIDGET. * update the PCB_LAYER_WIDGET.
*/ */
void GERBVIEW_FRAME::setActiveLayer( LAYER_NUM aLayer, bool doLayerWidgetUpdate ) void GERBVIEW_FRAME::setActiveLayer( int aLayer, bool doLayerWidgetUpdate )
{ {
( (GBR_SCREEN*) GetScreen() )->m_Active_Layer = aLayer; ( (GBR_SCREEN*) GetScreen() )->m_Active_Layer = aLayer;
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#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 UNDEFINED_LAYER #define NO_AVAILABLE_LAYERS UNDEFINED_LAYER
...@@ -167,7 +166,7 @@ public: ...@@ -167,7 +166,7 @@ public:
* different radiobutton is clicked on) prior to then clicking on the "Deselect" * different radiobutton is clicked on) prior to then clicking on the "Deselect"
* button provided within the "Layer selection:" dialog box). * button provided within the "Layer selection:" dialog box).
*/ */
LAYER_NUM SelectPCBLayer( LAYER_NUM aDefaultLayer, int aOpperLayerCount, bool aNullLayer = false ); int SelectPCBLayer( int aDefaultLayer, int aOpperLayerCount, bool aNullLayer = false );
protected: protected:
GERBER_LAYER_WIDGET* m_LayersManager; GERBER_LAYER_WIDGET* m_LayersManager;
...@@ -306,9 +305,9 @@ public: ...@@ -306,9 +305,9 @@ public:
* Function GetVisibleLayers * Function GetVisibleLayers
* is a proxy function that calls the correspondent function in m_BoardSettings * is a proxy function that calls the correspondent function in m_BoardSettings
* 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 long - the visible layers in bit-mapped form.
*/ */
LSET GetVisibleLayers() const; long GetVisibleLayers() const;
/** /**
* Function SetVisibleLayers * Function SetVisibleLayers
...@@ -316,7 +315,7 @@ public: ...@@ -316,7 +315,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( LSET aLayerMask ); void SetVisibleLayers( long aLayerMask );
/** /**
* Function IsLayerVisible * Function IsLayerVisible
...@@ -324,7 +323,7 @@ public: ...@@ -324,7 +323,7 @@ public:
* @param aLayer = The layer to be tested * @param aLayer = The layer to be tested
* @return bool - true if the layer is visible. * @return bool - true if the layer is visible.
*/ */
bool IsLayerVisible( LAYER_NUM aLayer ) const; bool IsLayerVisible( int aLayer ) const;
/** /**
* Function GetVisibleElementColor * Function GetVisibleElementColor
...@@ -338,13 +337,13 @@ public: ...@@ -338,13 +337,13 @@ public:
* Function GetLayerColor * Function GetLayerColor
* gets a layer color for any valid layer. * gets a layer color for any valid layer.
*/ */
EDA_COLOR_T GetLayerColor( LAYER_NUM aLayer ) const; EDA_COLOR_T GetLayerColor( int aLayer ) const;
/** /**
* Function SetLayerColor * Function SetLayerColor
* changes a layer color for any valid layer. * changes a layer color for any valid layer.
*/ */
void SetLayerColor( LAYER_NUM aLayer, EDA_COLOR_T aColor ); void SetLayerColor( int aLayer, EDA_COLOR_T aColor );
/** /**
* Function GetNegativeItemsColor * Function GetNegativeItemsColor
...@@ -396,13 +395,13 @@ public: ...@@ -396,13 +395,13 @@ public:
* will change the currently active layer to \a aLayer and also * will change the currently active layer to \a aLayer and also
* update the GERBER_LAYER_WIDGET. * update the GERBER_LAYER_WIDGET.
*/ */
void setActiveLayer( LAYER_NUM aLayer, bool doLayerWidgetUpdate = true ); void setActiveLayer( int aLayer, bool doLayerWidgetUpdate = true );
/** /**
* Function getActiveLayer * Function getActiveLayer
* returns the active layer * returns the active layer
*/ */
LAYER_NUM getActiveLayer(); int getActiveLayer();
/** /**
* Function getNextAvailableLayer * Function getNextAvailableLayer
...@@ -411,7 +410,7 @@ public: ...@@ -411,7 +410,7 @@ public:
* @param aLayer The first layer to search. * @param aLayer The first layer to search.
* @return The first empty layer found or NO_AVAILABLE_LAYERS. * @return The first empty layer found or NO_AVAILABLE_LAYERS.
*/ */
LAYER_NUM getNextAvailableLayer( LAYER_NUM aLayer = FIRST_LAYER ) const; int getNextAvailableLayer( int aLayer = 0 ) const;
bool hasAvailableLayers() const bool hasAvailableLayers() const
{ {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <id.h> #include <id.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <hotkeys.h> #include <hotkeys.h>
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <confirm.h> #include <confirm.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
#include <class_GERBER.h> #include <class_GERBER.h>
#include <class_gerbview_layer_widget.h> #include <class_gerbview_layer_widget.h>
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
bool GERBVIEW_FRAME::Clear_Pcb( bool query ) bool GERBVIEW_FRAME::Clear_Pcb( bool query )
{ {
LAYER_NUM layer; int layer;
if( GetGerberLayout() == NULL ) if( GetGerberLayout() == NULL )
return false; return false;
...@@ -52,7 +53,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query ) ...@@ -52,7 +53,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query )
GetGerberLayout()->m_Drawings.DeleteAll(); GetGerberLayout()->m_Drawings.DeleteAll();
for( layer = FIRST_LAYER; layer < NB_GERBER_LAYERS; ++layer ) for( layer = 0; layer < GERBER_DRAWLAYERS_COUNT; ++layer )
{ {
if( g_GERBER_List[layer] ) if( g_GERBER_List[layer] )
{ {
...@@ -65,7 +66,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query ) ...@@ -65,7 +66,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query )
SetScreen( new GBR_SCREEN( GetPageSettings().GetSizeIU() ) ); SetScreen( new GBR_SCREEN( GetPageSettings().GetSizeIU() ) );
setActiveLayer( FIRST_LAYER ); setActiveLayer( 0 );
m_LayersManager->UpdateLayerIcons(); m_LayersManager->UpdateLayerIcons();
syncLayerBox(); syncLayerBox();
return true; return true;
...@@ -74,7 +75,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query ) ...@@ -74,7 +75,7 @@ bool GERBVIEW_FRAME::Clear_Pcb( bool query )
void GERBVIEW_FRAME::Erase_Current_Layer( bool query ) void GERBVIEW_FRAME::Erase_Current_Layer( bool query )
{ {
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
wxString msg; wxString msg;
msg.Printf( _( "Clear layer %d?" ), layer + 1 ); msg.Printf( _( "Clear layer %d?" ), layer + 1 );
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <msgpanel.h> #include <msgpanel.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
...@@ -46,7 +47,7 @@ GERBER_DRAW_ITEM* GERBVIEW_FRAME::Locate( const wxPoint& aPosition, int aTypeloc ...@@ -46,7 +47,7 @@ GERBER_DRAW_ITEM* GERBVIEW_FRAME::Locate( const wxPoint& aPosition, int aTypeloc
if( aTypeloc == CURSEUR_ON_GRILLE ) if( aTypeloc == CURSEUR_ON_GRILLE )
ref = GetNearestGridPosition( ref ); ref = GetNearestGridPosition( ref );
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
// Search first on active layer // Search first on active layer
GERBER_DRAW_ITEM* gerb_item = GetItemsList(); GERBER_DRAW_ITEM* gerb_item = GetItemsList();
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <pgm_base.h> #include <pgm_base.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <hotkeys.h> #include <hotkeys.h>
#include <menus_helpers.h> #include <menus_helpers.h>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <common.h> #include <common.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <class_GERBER.h> #include <class_GERBER.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <id.h> #include <id.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <menus_helpers.h> #include <menus_helpers.h>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <common.h> #include <common.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <pcbplot.h> #include <pcbplot.h>
/** TODO */ /** TODO */
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <kicad_string.h> #include <kicad_string.h>
#include <gestfich.h> #include <gestfich.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <class_GERBER.h> #include <class_GERBER.h>
#include <html_messagebox.h> #include <html_messagebox.h>
...@@ -25,7 +26,7 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName, ...@@ -25,7 +26,7 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName,
wxString msg; wxString msg;
char* text; char* text;
LAYER_NUM layer; // current layer used in GerbView int layer; // current layer used in GerbView
layer = getActiveLayer(); layer = getActiveLayer();
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <common.h> #include <common.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
#include <class_gerber_draw_item.h> #include <class_gerber_draw_item.h>
...@@ -107,7 +108,7 @@ ...@@ -107,7 +108,7 @@
void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem, void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
APERTURE_T aAperture, APERTURE_T aAperture,
int Dcode_index, int Dcode_index,
LAYER_NUM aLayer, int aLayer,
const wxPoint& aPos, const wxPoint& aPos,
wxSize aSize, wxSize aSize,
bool aLayerNegative ) bool aLayerNegative )
...@@ -159,7 +160,7 @@ void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem, ...@@ -159,7 +160,7 @@ void fillFlashedGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
*/ */
void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem, void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
int Dcode_index, int Dcode_index,
LAYER_NUM aLayer, int aLayer,
const wxPoint& aStart, const wxPoint& aStart,
const wxPoint& aEnd, const wxPoint& aEnd,
wxSize aPenSize, wxSize aPenSize,
...@@ -208,7 +209,7 @@ void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem, ...@@ -208,7 +209,7 @@ void fillLineGBRITEM( GERBER_DRAW_ITEM* aGbrItem,
* false when arc is inside one quadrant * false when arc is inside one quadrant
* @param aLayerNegative = true if the current layer is negative * @param aLayerNegative = true if the current layer is negative
*/ */
static void fillArcGBRITEM( GERBER_DRAW_ITEM* aGbrItem, int Dcode_index, LAYER_NUM aLayer, static void fillArcGBRITEM( GERBER_DRAW_ITEM* aGbrItem, int Dcode_index, int aLayer,
const wxPoint& aStart, const wxPoint& aEnd, const wxPoint& aStart, const wxPoint& aEnd,
const wxPoint& aRelCenter, wxSize aPenSize, const wxPoint& aRelCenter, wxSize aPenSize,
bool aClockwise, bool aMultiquadrant, bool aClockwise, bool aMultiquadrant,
...@@ -344,10 +345,11 @@ static void fillArcPOLY( GERBER_DRAW_ITEM* aGbrItem, ...@@ -344,10 +345,11 @@ static void fillArcPOLY( GERBER_DRAW_ITEM* aGbrItem,
* so we muse create a dummy track and use its geometric parameters * so we muse create a dummy track and use its geometric parameters
*/ */
static GERBER_DRAW_ITEM dummyGbrItem( NULL, NULL ); static GERBER_DRAW_ITEM dummyGbrItem( NULL, NULL );
static const int drawlayer = 0;
aGbrItem->SetLayerPolarity( aLayerNegative ); aGbrItem->SetLayerPolarity( aLayerNegative );
fillArcGBRITEM( &dummyGbrItem, 0, FIRST_LAYER, fillArcGBRITEM( &dummyGbrItem, 0, drawlayer,
aStart, aEnd, rel_center, wxSize(0, 0), aStart, aEnd, rel_center, wxSize(0, 0),
aClockwise, aMultiquadrant, aLayerNegative ); aClockwise, aMultiquadrant, aLayerNegative );
...@@ -568,7 +570,7 @@ bool GERBER_IMAGE::Execute_DCODE_Command( char*& text, int D_commande ) ...@@ -568,7 +570,7 @@ bool GERBER_IMAGE::Execute_DCODE_Command( char*& text, int D_commande )
GERBER_DRAW_ITEM* gbritem; GERBER_DRAW_ITEM* gbritem;
GBR_LAYOUT* layout = m_Parent->GetGerberLayout(); GBR_LAYOUT* layout = m_Parent->GetGerberLayout();
LAYER_NUM activeLayer = m_Parent->getActiveLayer(); int activeLayer = m_Parent->getActiveLayer();
int dcode = 0; int dcode = 0;
D_CODE* tool = NULL; D_CODE* tool = NULL;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
extern int ReadInt( char*& text, bool aSkipSeparator = true ); extern int ReadInt( char*& text, bool aSkipSeparator = true );
extern double ReadDouble( char*& text, bool aSkipSeparator = true ); extern double ReadDouble( char*& text, bool aSkipSeparator = true );
extern bool GetEndOfBlock( char buff[GERBER_BUFZ], char*& text, FILE* gerber_file );
#define CODE( x, y ) ( ( (x) << 8 ) + (y) ) #define CODE( x, y ) ( ( (x) << 8 ) + (y) )
......
...@@ -27,9 +27,9 @@ ...@@ -27,9 +27,9 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
//#include <pgm_base.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <class_GERBER.h> #include <class_GERBER.h>
...@@ -41,7 +41,7 @@ extern const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber ); ...@@ -41,7 +41,7 @@ extern const wxString GetPCBDefaultLayerName( LAYER_NUM aLayerNumber );
enum swap_layer_id { enum swap_layer_id {
ID_LAYERS_MAP_DIALOG = ID_GERBER_END_LIST, ID_LAYERS_MAP_DIALOG = ID_GERBER_END_LIST,
ID_BUTTON_0, ID_BUTTON_0,
ID_TEXT_0 = ID_BUTTON_0 + NB_GERBER_LAYERS ID_TEXT_0 = ID_BUTTON_0 + GERBER_DRAWLAYERS_COUNT
}; };
...@@ -55,7 +55,7 @@ int LAYERS_MAP_DIALOG::m_exportBoardCopperLayersCount = 2; ...@@ -55,7 +55,7 @@ int LAYERS_MAP_DIALOG::m_exportBoardCopperLayersCount = 2;
BEGIN_EVENT_TABLE( LAYERS_MAP_DIALOG, LAYERS_MAP_DIALOG_BASE ) BEGIN_EVENT_TABLE( LAYERS_MAP_DIALOG, LAYERS_MAP_DIALOG_BASE )
EVT_COMMAND_RANGE( ID_BUTTON_0, ID_BUTTON_0 + NB_GERBER_LAYERS-1, EVT_COMMAND_RANGE( ID_BUTTON_0, ID_BUTTON_0 + GERBER_DRAWLAYERS_COUNT-1,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
LAYERS_MAP_DIALOG::OnSelectLayer ) LAYERS_MAP_DIALOG::OnSelectLayer )
END_EVENT_TABLE() END_EVENT_TABLE()
...@@ -102,8 +102,7 @@ void LAYERS_MAP_DIALOG::initDialog() ...@@ -102,8 +102,7 @@ void LAYERS_MAP_DIALOG::initDialog()
// version are also 26 pixels wide and 26 pixels high. If appropriate, // version are also 26 pixels wide and 26 pixels high. If appropriate,
// the above code should be modified as required in the event that those // the above code should be modified as required in the event that those
// buttons should be some other size in that version. // buttons should be some other size in that version.
for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii )
{ {
// Specify the default value for each member of these arrays. // Specify the default value for each member of these arrays.
m_buttonTable[ii] = -1; m_buttonTable[ii] = -1;
...@@ -111,32 +110,31 @@ void LAYERS_MAP_DIALOG::initDialog() ...@@ -111,32 +110,31 @@ void LAYERS_MAP_DIALOG::initDialog()
} }
// Ensure we have: // Ensure we have:
// at least 2 copper layers and BOARD_COPPER_LAYERS_MAX_COUNT copper layers max // at least 2 copper layers and less than max pacb copper layers count
// and even layers count because a board *must* have even layers count // and even layers count because a board *must* have even layers count
// and maxi BOARD_COPPER_LAYERS_MAX_COUNT copper layers count
normalizeBrdLayersCount(); normalizeBrdLayersCount();
int idx = ( m_exportBoardCopperLayersCount / 2 ) - 1; int idx = ( m_exportBoardCopperLayersCount / 2 ) - 1;
m_comboCopperLayersCount->SetSelection( idx ); m_comboCopperLayersCount->SetSelection( idx );
LAYER_NUM pcb_layer_num = FIRST_LAYER; LAYER_NUM pcb_layer_num = 0;
m_itemsCount = 0; m_gerberActiveLayersCount = 0;
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii ) for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
{ {
if( g_GERBER_List[ii] == NULL ) if( g_GERBER_List[ii] == NULL )
continue; break;
if( (pcb_layer_num == m_exportBoardCopperLayersCount - 1) if( (pcb_layer_num == m_exportBoardCopperLayersCount - 1)
&& (m_exportBoardCopperLayersCount > 1) ) && (m_exportBoardCopperLayersCount > 1) )
pcb_layer_num = F_Cu; pcb_layer_num = F_Cu;
m_buttonTable[m_itemsCount] = ii; m_buttonTable[m_gerberActiveLayersCount] = ii;
m_layersLookUpTable[ii] = pcb_layer_num; m_layersLookUpTable[ii] = pcb_layer_num;
m_itemsCount++; m_gerberActiveLayersCount++;
++pcb_layer_num; ++pcb_layer_num;
} }
if( m_itemsCount <= NB_GERBER_LAYERS/2 ) // Only one list is enough if( m_gerberActiveLayersCount <= GERBER_DRAWLAYERS_COUNT/2 ) // Only one list is enough
{ {
m_staticlineSep->Hide(); m_staticlineSep->Hide();
} }
...@@ -151,7 +149,7 @@ void LAYERS_MAP_DIALOG::initDialog() ...@@ -151,7 +149,7 @@ void LAYERS_MAP_DIALOG::initDialog()
} }
wxFlexGridSizer* flexColumnBoxSizer = m_flexLeftColumnBoxSizer; wxFlexGridSizer* flexColumnBoxSizer = m_flexLeftColumnBoxSizer;
for( int ii = 0; ii < m_itemsCount; ii++ ) for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
{ {
// Each Gerber layer has an associated static text string (to // Each Gerber layer has an associated static text string (to
// identify that layer), a button (for invoking a child dialog // identify that layer), a button (for invoking a child dialog
...@@ -178,7 +176,7 @@ void LAYERS_MAP_DIALOG::initDialog() ...@@ -178,7 +176,7 @@ void LAYERS_MAP_DIALOG::initDialog()
// is nb_items; otherwise, the number of rows is 16 (with two // is nb_items; otherwise, the number of rows is 16 (with two
// separate columns of controls being used if nb_items > 16). // separate columns of controls being used if nb_items > 16).
if( ii == NB_GERBER_LAYERS/2 ) if( ii == GERBER_DRAWLAYERS_COUNT/2 )
flexColumnBoxSizer = m_flexRightColumnBoxSizer; flexColumnBoxSizer = m_flexRightColumnBoxSizer;
// Provide a text string to identify the Gerber layer // Provide a text string to identify the Gerber layer
...@@ -226,7 +224,7 @@ void LAYERS_MAP_DIALOG::initDialog() ...@@ -226,7 +224,7 @@ void LAYERS_MAP_DIALOG::initDialog()
wxDefaultSize, 0 ); wxDefaultSize, 0 );
goodSize = text->GetSize(); goodSize = text->GetSize();
for( LAYER_NUM jj = FIRST_LAYER; jj < NB_LAYERS; ++jj ) for( LAYER_NUM jj = 0; jj < GERBER_DRAWLAYERS_COUNT; ++jj )
{ {
text->SetLabel( GetPCBDefaultLayerName( jj ) ); text->SetLabel( GetPCBDefaultLayerName( jj ) );
if( goodSize.x < text->GetSize().x ) if( goodSize.x < text->GetSize().x )
...@@ -259,8 +257,8 @@ void LAYERS_MAP_DIALOG::normalizeBrdLayersCount() ...@@ -259,8 +257,8 @@ void LAYERS_MAP_DIALOG::normalizeBrdLayersCount()
if( ( m_exportBoardCopperLayersCount & 1 ) ) if( ( m_exportBoardCopperLayersCount & 1 ) )
m_exportBoardCopperLayersCount++; m_exportBoardCopperLayersCount++;
if( m_exportBoardCopperLayersCount > NB_LAYERS ) if( m_exportBoardCopperLayersCount > GERBER_DRAWLAYERS_COUNT )
m_exportBoardCopperLayersCount = NB_LAYERS; m_exportBoardCopperLayersCount = GERBER_DRAWLAYERS_COUNT;
if( m_exportBoardCopperLayersCount < 2 ) if( m_exportBoardCopperLayersCount < 2 )
m_exportBoardCopperLayersCount = 2; m_exportBoardCopperLayersCount = 2;
...@@ -284,7 +282,7 @@ void LAYERS_MAP_DIALOG::OnResetClick( wxCommandEvent& event ) ...@@ -284,7 +282,7 @@ void LAYERS_MAP_DIALOG::OnResetClick( wxCommandEvent& event )
wxString msg; wxString msg;
int ii; int ii;
LAYER_NUM layer; LAYER_NUM layer;
for( ii = 0, layer = FIRST_LAYER; ii < m_itemsCount; ii++, ++layer ) for( ii = 0, layer = 0; ii < m_gerberActiveLayersCount; ii++, ++layer )
{ {
if( (layer == m_exportBoardCopperLayersCount - 1) if( (layer == m_exportBoardCopperLayersCount - 1)
&& (m_exportBoardCopperLayersCount > 1) ) && (m_exportBoardCopperLayersCount > 1) )
...@@ -306,7 +304,7 @@ void LAYERS_MAP_DIALOG::OnStoreSetup( wxCommandEvent& event ) ...@@ -306,7 +304,7 @@ void LAYERS_MAP_DIALOG::OnStoreSetup( wxCommandEvent& event )
config->Write( wxT("BrdLayersCount"), m_exportBoardCopperLayersCount ); config->Write( wxT("BrdLayersCount"), m_exportBoardCopperLayersCount );
wxString key; wxString key;
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii ) for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
{ {
key.Printf( wxT("GbrLyr%dToPcb"), ii ); key.Printf( wxT("GbrLyr%dToPcb"), ii );
config->Write( key, m_layersLookUpTable[ii] ); config->Write( key, m_layersLookUpTable[ii] );
...@@ -324,7 +322,7 @@ void LAYERS_MAP_DIALOG::OnGetSetup( wxCommandEvent& event ) ...@@ -324,7 +322,7 @@ void LAYERS_MAP_DIALOG::OnGetSetup( wxCommandEvent& event )
m_comboCopperLayersCount->SetSelection( idx ); m_comboCopperLayersCount->SetSelection( idx );
wxString key; wxString key;
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii ) for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
{ {
key.Printf( wxT("GbrLyr%dToPcb"), ii ); key.Printf( wxT("GbrLyr%dToPcb"), ii );
int ilayer; int ilayer;
...@@ -332,7 +330,7 @@ void LAYERS_MAP_DIALOG::OnGetSetup( wxCommandEvent& event ) ...@@ -332,7 +330,7 @@ void LAYERS_MAP_DIALOG::OnGetSetup( wxCommandEvent& event )
m_layersLookUpTable[ii] = ilayer; m_layersLookUpTable[ii] = ilayer;
} }
for( int ii = 0; ii < m_itemsCount; ii++ ) for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
{ {
LAYER_NUM layer = m_layersLookUpTable[ii]; LAYER_NUM layer = m_layersLookUpTable[ii];
if( layer == UNSELECTED_LAYER ) if( layer == UNSELECTED_LAYER )
...@@ -354,7 +352,7 @@ void LAYERS_MAP_DIALOG::OnSelectLayer( wxCommandEvent& event ) ...@@ -354,7 +352,7 @@ void LAYERS_MAP_DIALOG::OnSelectLayer( wxCommandEvent& event )
ii = event.GetId() - ID_BUTTON_0; ii = event.GetId() - ID_BUTTON_0;
if( (ii < FIRST_LAYER) || (ii >= NB_GERBER_LAYERS) ) if( (ii < 0) || (ii >= GERBER_DRAWLAYERS_COUNT) )
{ {
wxFAIL_MSG( wxT("Bad layer id") ); wxFAIL_MSG( wxT("Bad layer id") );
return; return;
...@@ -406,7 +404,7 @@ void LAYERS_MAP_DIALOG::OnOkClick( wxCommandEvent& event ) ...@@ -406,7 +404,7 @@ void LAYERS_MAP_DIALOG::OnOkClick( wxCommandEvent& event )
normalizeBrdLayersCount(); normalizeBrdLayersCount();
int inner_layer_max = 0; int inner_layer_max = 0;
for( LAYER_NUM ii = FIRST_LAYER; ii < NB_GERBER_LAYERS; ++ii ) for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
{ {
if( m_layersLookUpTable[ii] < F_Cu ) if( m_layersLookUpTable[ii] < F_Cu )
{ {
......
...@@ -6,24 +6,23 @@ ...@@ -6,24 +6,23 @@
#define _SELECT_LAYERS_TO_PCB_H_ #define _SELECT_LAYERS_TO_PCB_H_
#include <dialogs/dialog_layers_select_to_pcb_base.h> #include <dialogs/dialog_layers_select_to_pcb_base.h>
#include <layers_id_colors_and_visibility.h>
/* /*
* This dialog shows the gerber files loaded, and allows user to choose * This dialog shows the gerber files loaded, and allows user to choose
* equivalence tbetween gerber layers and pcb layers * equivalence between gerber layers and pcb layers
*/ */
class LAYERS_MAP_DIALOG : public LAYERS_MAP_DIALOG_BASE class LAYERS_MAP_DIALOG : public LAYERS_MAP_DIALOG_BASE
{ {
private: private:
GERBVIEW_FRAME* m_Parent; GERBVIEW_FRAME* m_Parent;
int m_itemsCount; int m_gerberActiveLayersCount; // Number of initialized gerber layers
static int m_exportBoardCopperLayersCount; static int m_exportBoardCopperLayersCount;
wxFlexGridSizer* m_flexRightColumnBoxSizer; // An extra wxFlexGridSizer used wxFlexGridSizer* m_flexRightColumnBoxSizer; // An extra wxFlexGridSizer used
// when we have more than 16 gerber files loaded // when we have more than 16 gerber files loaded
LAYER_NUM m_layersLookUpTable[NB_GERBER_LAYERS]; // Indexes Gerber layers to PCB file layers LAYER_NUM m_layersLookUpTable[GERBER_DRAWLAYERS_COUNT]; // Indexes Gerber layers to PCB file layers
// the last value in table is the number of copper layers // the last value in table is the number of copper layers
int m_buttonTable[int(NB_GERBER_LAYERS)+1]; // Indexes buttons to Gerber layers int m_buttonTable[int(GERBER_DRAWLAYERS_COUNT)+1]; // Indexes buttons to Gerber layers
wxStaticText* m_layersList[int(NB_GERBER_LAYERS)+1]; // Indexes text strings to buttons wxStaticText* m_layersList[int(GERBER_DRAWLAYERS_COUNT)+1]; // Indexes text strings to buttons
public: LAYERS_MAP_DIALOG( GERBVIEW_FRAME* parent ); public: LAYERS_MAP_DIALOG( GERBVIEW_FRAME* parent );
~LAYERS_MAP_DIALOG() {}; ~LAYERS_MAP_DIALOG() {};
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <common.h> #include <common.h>
#include <macros.h> #include <macros.h>
#include <gerbview.h> #include <gerbview.h>
#include <gerbview_frame.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <gerbview_id.h> #include <gerbview_id.h>
#include <hotkeys.h> #include <hotkeys.h>
...@@ -292,7 +293,7 @@ void GERBVIEW_FRAME::OnUpdateShowLayerManager( wxUpdateUIEvent& aEvent ) ...@@ -292,7 +293,7 @@ void GERBVIEW_FRAME::OnUpdateShowLayerManager( wxUpdateUIEvent& aEvent )
void GERBVIEW_FRAME::OnUpdateSelectDCode( wxUpdateUIEvent& aEvent ) void GERBVIEW_FRAME::OnUpdateSelectDCode( wxUpdateUIEvent& aEvent )
{ {
LAYER_NUM layer = getActiveLayer(); int layer = getActiveLayer();
GERBER_IMAGE* gerber = g_GERBER_List[layer]; GERBER_IMAGE* gerber = g_GERBER_List[layer];
int selected = ( gerber ) ? gerber->m_Selected_Tool : 0; int selected = ( gerber ) ? gerber->m_Selected_Tool : 0;
......
...@@ -375,6 +375,7 @@ bool BOARD::SetLayerName( LAYER_ID aLayer, const wxString& aLayerName ) ...@@ -375,6 +375,7 @@ bool BOARD::SetLayerName( LAYER_ID aLayer, const wxString& aLayerName )
// veto changing the name if it exists elsewhere. // veto changing the name if it exists elsewhere.
if( id != aLayer && nameTemp == m_Layer[id].m_name ) if( id != aLayer && nameTemp == m_Layer[id].m_name )
// if( id != aLayer && nameTemp == wxString( m_Layer[id].m_name ) )
return false; return false;
} }
#endif #endif
......
...@@ -89,6 +89,7 @@ BOARD_PRINTOUT_CONTROLLER::BOARD_PRINTOUT_CONTROLLER( const PRINT_PARAMETERS& aP ...@@ -89,6 +89,7 @@ BOARD_PRINTOUT_CONTROLLER::BOARD_PRINTOUT_CONTROLLER( const PRINT_PARAMETERS& aP
bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
{ {
#ifdef PCBNEW
LSET lset = m_PrintParams.m_PrintMaskLayer; LSET lset = 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
...@@ -106,15 +107,18 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) ...@@ -106,15 +107,18 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
if( !m_PrintParams.m_PrintMaskLayer.any() ) if( !m_PrintParams.m_PrintMaskLayer.any() )
return false; return false;
#ifdef PCBNEW
// In Pcbnew we can want the layer EDGE always printed // In Pcbnew we can want the layer EDGE always printed
if( m_PrintParams.m_Flags == 1 ) if( m_PrintParams.m_Flags == 1 )
m_PrintParams.m_PrintMaskLayer.set( Edge_Cuts ); m_PrintParams.m_PrintMaskLayer.set( Edge_Cuts );
#endif
DrawPage(); DrawPage();
m_PrintParams.m_PrintMaskLayer = lset; m_PrintParams.m_PrintMaskLayer = lset;
#else // GERBVIEW
// in gerbview, draw layers are printed on separate pages
m_PrintParams.m_Flags = aPage-1; // = gerber draw layer id
DrawPage();
#endif
return true; return true;
} }
......
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