Print solder and paste masks if user asks for them.
Fixes: lp:1613057 * https://bugs.launchpad.net/kicad/+bug/1613057
This commit is contained in:
parent
f7d0c3997d
commit
60a9befe7c
|
@ -267,6 +267,22 @@ void D_PAD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDraw_mode,
|
|||
else
|
||||
color = DARKDARKGRAY;
|
||||
}
|
||||
// If use asks for masks to be printed, then print them.
|
||||
else if( screen->m_IsPrinting )
|
||||
{
|
||||
if( ( IsOnLayer( B_Paste ) && brd->IsLayerVisible( B_Paste ) ) ||
|
||||
( IsOnLayer( F_Paste ) && brd->IsLayerVisible( F_Paste ) ) )
|
||||
{
|
||||
mask_margin = GetSolderPasteMargin();
|
||||
}
|
||||
|
||||
if( ( IsOnLayer( B_Mask ) && brd->IsLayerVisible( B_Mask ) ) ||
|
||||
( IsOnLayer( F_Mask ) && brd->IsLayerVisible( F_Mask ) ) )
|
||||
{
|
||||
mask_margin.x = std::max( mask_margin.x, GetSolderMaskMargin() );
|
||||
mask_margin.y = std::max( mask_margin.y, GetSolderMaskMargin() );
|
||||
}
|
||||
}
|
||||
|
||||
if( ( aDraw_mode & GR_HIGHLIGHT ) && !( aDraw_mode & GR_AND ) )
|
||||
color.SetToLegacyHighlightColor();
|
||||
|
|
|
@ -139,7 +139,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
|
|||
// Set all board layers as visible, because the print dialog has itself
|
||||
// a layer selection, that have priority over the layer manager setup
|
||||
LSET save_visible_brd_layers = Pcb->GetVisibleLayers();
|
||||
Pcb->SetVisibleLayers( LSET::AllLayersMask() );
|
||||
Pcb->SetVisibleLayers( aPrintMask );
|
||||
|
||||
int save_visible_brd_elements = Pcb->GetVisibleElements();
|
||||
Pcb->SetElementVisibility( LAYER_PAD_FR, true );
|
||||
|
@ -147,40 +147,11 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
|
|||
Pcb->SetElementVisibility( LAYER_MOD_TEXT_FR, true );
|
||||
Pcb->SetElementVisibility( LAYER_MOD_TEXT_BK, true );
|
||||
|
||||
if( !( aPrintMask & LSET::AllCuMask() ).any() )
|
||||
{
|
||||
if( onePagePerLayer )
|
||||
{
|
||||
// We can print mask layers (solder mask and solder paste) with the actual
|
||||
// pad sizes. To do that, we must set ContrastModeDisplay to true and set
|
||||
// the GetScreen()->m_Active_Layer to the current printed layer
|
||||
displ_opts->m_ContrastModeDisplay = true;
|
||||
displ_opts->m_DisplayPadFill = true;
|
||||
PCB_LAYER_ID layer = aPrintMask.ExtractLayer();
|
||||
|
||||
// Calculate the active layer number to print from its mask layer:
|
||||
GetScreen()->m_Active_Layer = B_Cu;
|
||||
|
||||
for( LAYER_NUM id = PCB_LAYER_ID_COUNT-1; id >= 0; --id )
|
||||
{
|
||||
if( aPrintMask[id] )
|
||||
{
|
||||
GetScreen()->m_Active_Layer = PCB_LAYER_ID( id );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// pads on Silkscreen layer are usually plot in sketch mode:
|
||||
if( GetScreen()->m_Active_Layer == B_SilkS ||
|
||||
GetScreen()->m_Active_Layer == F_SilkS )
|
||||
{
|
||||
// pads on Silkscreen layer are usually printed in sketch mode:
|
||||
if( layer == B_SilkS || layer == F_SilkS )
|
||||
displ_opts->m_DisplayPadFill = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
displ_opts->m_DisplayPadFill = false;
|
||||
}
|
||||
}
|
||||
|
||||
displ_opts->m_DisplayPadNum = false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue