Add board layer view stack up sequence from front layer to back layer.
The old bottom to top layer stack up sequence from back to front layer was only used for plotting so it was renamed appropriately. This will be used for future board object select disambiguation improvements.
This commit is contained in:
parent
1adf96d879
commit
5fa274ead0
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2014 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2014-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2014-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -479,7 +479,88 @@ LSEQ LSET::Seq() const
|
|||
}
|
||||
|
||||
|
||||
LSEQ LSET::SeqStackupBottom2Top() const
|
||||
LSEQ LSET::SeqStackupTop2Bottom( PCB_LAYER_ID aSelectedLayer ) const
|
||||
{
|
||||
static const PCB_LAYER_ID sequence[] = {
|
||||
Edge_Cuts,
|
||||
Margin,
|
||||
Dwgs_User,
|
||||
Cmts_User,
|
||||
Eco1_User,
|
||||
Eco2_User,
|
||||
User_1,
|
||||
User_2,
|
||||
User_3,
|
||||
User_4,
|
||||
User_5,
|
||||
User_6,
|
||||
User_7,
|
||||
User_8,
|
||||
User_9,
|
||||
F_Fab,
|
||||
F_SilkS,
|
||||
F_Paste,
|
||||
F_Adhes,
|
||||
F_Mask,
|
||||
F_CrtYd,
|
||||
F_Cu,
|
||||
In1_Cu,
|
||||
In2_Cu,
|
||||
In3_Cu,
|
||||
In4_Cu,
|
||||
In5_Cu,
|
||||
In6_Cu,
|
||||
In7_Cu,
|
||||
In8_Cu,
|
||||
In9_Cu,
|
||||
In10_Cu,
|
||||
In11_Cu,
|
||||
In12_Cu,
|
||||
In13_Cu,
|
||||
In14_Cu,
|
||||
In15_Cu,
|
||||
In16_Cu,
|
||||
In17_Cu,
|
||||
In18_Cu,
|
||||
In19_Cu,
|
||||
In20_Cu,
|
||||
In21_Cu,
|
||||
In22_Cu,
|
||||
In23_Cu,
|
||||
In24_Cu,
|
||||
In25_Cu,
|
||||
In26_Cu,
|
||||
In27_Cu,
|
||||
In28_Cu,
|
||||
In29_Cu,
|
||||
In30_Cu,
|
||||
B_Cu,
|
||||
B_CrtYd,
|
||||
B_Mask,
|
||||
B_Adhes,
|
||||
B_Paste,
|
||||
B_SilkS,
|
||||
B_Fab,
|
||||
};
|
||||
|
||||
LSEQ seq = Seq( sequence, arrayDim( sequence ) );
|
||||
|
||||
if( aSelectedLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
auto it = std::find( seq.begin(), seq.end(), aSelectedLayer );
|
||||
|
||||
if( it != seq.end() )
|
||||
{
|
||||
seq.erase( it );
|
||||
seq.insert( seq.begin(), aSelectedLayer );
|
||||
}
|
||||
}
|
||||
|
||||
return seq;
|
||||
}
|
||||
|
||||
|
||||
LSEQ LSET::SeqStackupForPlotting() const
|
||||
{
|
||||
// bottom-to-top stack-up layers
|
||||
// Note that the bottom technical layers are flipped so that when plotting a bottom-side view,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Copyright (C) 2014 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2010 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2007-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2007-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -780,11 +780,20 @@ public:
|
|||
*/
|
||||
LSEQ Seq() const;
|
||||
|
||||
/**
|
||||
* Generate a sequence of layers that represent a top to bottom stack of this set of layers.
|
||||
*
|
||||
* @param aSelectedLayer is the layer to put at the top of stack when defined.
|
||||
*
|
||||
* @return the top to bottom layer sequence.
|
||||
*/
|
||||
LSEQ SeqStackupTop2Bottom( PCB_LAYER_ID aSelectedLayer = UNDEFINED_LAYER ) const;
|
||||
|
||||
/**
|
||||
* Return the sequence that is typical for a bottom-to-top stack-up.
|
||||
* For instance, to plot multiple layers in a single image, the top layers output last.
|
||||
*/
|
||||
LSEQ SeqStackupBottom2Top() const;
|
||||
LSEQ SeqStackupForPlotting() const;
|
||||
|
||||
/**
|
||||
* Return a hex string showing contents of this LSEQ.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2022 Mark Roszko <mark.roszko@gmail.com>
|
||||
* Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
|
@ -80,7 +80,7 @@ int CLI::FP_EXPORT_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
|||
if( !m_selectedLayers.empty() )
|
||||
svgJob->m_printMaskLayer = m_selectedLayers;
|
||||
else
|
||||
svgJob->m_printMaskLayer = LSET::AllLayersMask().SeqStackupBottom2Top();
|
||||
svgJob->m_printMaskLayer = LSET::AllLayersMask().SeqStackupForPlotting();
|
||||
|
||||
int exitCode = aKiway.ProcessJob( KIWAY::FACE_PCB, svgJob.get() );
|
||||
|
||||
|
|
|
@ -342,7 +342,7 @@ void DIALOG_EXPORT_SVG::ExportSVGFile( bool aOnlyOneFile )
|
|||
BuildPlotFileName( &fn, outputDir.GetPath(), suffix, SVGFileExtension );
|
||||
wxString svgPath = fn.GetFullPath();
|
||||
|
||||
m_printMaskLayer = aOnlyOneFile ? all_selected.SeqStackupBottom2Top() : LSEQ( { layer } );
|
||||
m_printMaskLayer = aOnlyOneFile ? all_selected.SeqStackupForPlotting() : LSEQ( { layer } );
|
||||
|
||||
if( m_checkboxEdgesOnAllPages->GetValue() )
|
||||
m_printMaskLayer.push_back( Edge_Cuts );
|
||||
|
|
|
@ -104,7 +104,7 @@ DIALOG_PLOT::DIALOG_PLOT( PCB_EDIT_FRAME* aParent ) :
|
|||
std::vector<PCB_LAYER_ID> layersIdChoiceList;
|
||||
int textWidth = 0;
|
||||
|
||||
for( LSEQ seq = board->GetEnabledLayers().SeqStackupBottom2Top(); seq; ++seq )
|
||||
for( LSEQ seq = board->GetEnabledLayers().SeqStackupForPlotting(); seq; ++seq )
|
||||
{
|
||||
PCB_LAYER_ID id = *seq;
|
||||
wxString layerName = board->GetLayerName( id );
|
||||
|
@ -568,7 +568,7 @@ void DIALOG_PLOT::OnRightClickAllLayers( wxMouseEvent& event )
|
|||
|
||||
case ID_STACKUP_ORDER:
|
||||
{
|
||||
LSEQ stackup = m_parent->GetBoard()->GetEnabledLayers().SeqStackupBottom2Top();
|
||||
LSEQ stackup = m_parent->GetBoard()->GetEnabledLayers().SeqStackupForPlotting();
|
||||
arrangeAllLayersList( stackup );
|
||||
m_plotAllLayersList->Select( -1 );
|
||||
break;
|
||||
|
|
|
@ -366,14 +366,14 @@ int PCBNEW_JOBS_HANDLER::JobExportGerbers( JOB* aJob )
|
|||
|
||||
if( aGerberJob->m_useBoardPlotParams )
|
||||
{
|
||||
aGerberJob->m_printMaskLayer = boardPlotOptions.GetLayerSelection().SeqStackupBottom2Top();
|
||||
aGerberJob->m_printMaskLayer = boardPlotOptions.GetLayerSelection().SeqStackupForPlotting();
|
||||
aGerberJob->m_layersIncludeOnAll = boardPlotOptions.GetPlotOnAllLayersSelection();
|
||||
}
|
||||
else
|
||||
{
|
||||
// default to the board enabled layers
|
||||
if( aGerberJob->m_printMaskLayer == 0 )
|
||||
aGerberJob->m_printMaskLayer = brd->GetEnabledLayers().SeqStackupBottom2Top();
|
||||
aGerberJob->m_printMaskLayer = brd->GetEnabledLayers().SeqStackupForPlotting();
|
||||
|
||||
if( aGerberJob->m_layersIncludeOnAllSet )
|
||||
aGerberJob->m_layersIncludeOnAll = plotOnAllLayersSelection;
|
||||
|
@ -1079,4 +1079,4 @@ void PCBNEW_JOBS_HANDLER::loadOverrideDrawingSheet( BOARD* aBrd, const wxString&
|
|||
|
||||
// failed loading custom path, revert back to default
|
||||
loadSheet( aBrd->GetProject()->GetProjectFile().m_BoardDrawingSheetFile );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -722,7 +722,7 @@ void PlotLayerOutlines( BOARD* aBoard, PLOTTER* aPlotter, LSET aLayerMask,
|
|||
|
||||
SHAPE_POLY_SET outlines;
|
||||
|
||||
for( LSEQ seq = aLayerMask.Seq( aLayerMask.SeqStackupBottom2Top() ); seq; ++seq )
|
||||
for( LSEQ seq = aLayerMask.Seq( aLayerMask.SeqStackupForPlotting() ); seq; ++seq )
|
||||
{
|
||||
PCB_LAYER_ID layer = *seq;
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ set( QA_COMMON_SRCS
|
|||
test_coroutine.cpp
|
||||
test_eda_shape.cpp
|
||||
test_eda_text.cpp
|
||||
test_layers.cpp
|
||||
test_lib_table.cpp
|
||||
test_markup_parser.cpp
|
||||
test_kicad_string.cpp
|
||||
|
|
Loading…
Reference in New Issue