KiCad PCB EDA Suite
PCBNEW_PRINTOUT Class Reference

#include <pcbnew_printout.h>

Inheritance diagram for PCBNEW_PRINTOUT:
BOARD_PRINTOUT

Public Member Functions

 PCBNEW_PRINTOUT (BOARD *aBoard, const PCBNEW_PRINTOUT_SETTINGS &aParams, const KIGFX::VIEW *aView, const wxString &aTitle)
 
bool OnPrintPage (int aPage) override
 
void GetPageInfo (int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) override
 
bool HasPage (int aPage) override
 
virtual void DrawPage (const wxString &aLayerName=wxEmptyString, int aPageNum=1, int aPageCount=1)
 Print a page (or a set of pages). More...
 

Protected Member Functions

int milsToIU (double aMils) const override
 < Convert mils to internal units More...
 
void setupViewLayers (KIGFX::VIEW &aView, const LSET &aLayerSet) override
 Configures PAINTER object for a printout. More...
 
void setupPainter (KIGFX::PAINTER &aPainter) override
 Configures GAL object for a printout. More...
 
void setupGal (KIGFX::GAL *aGal) override
 Returns bounding box of the printed objects (excluding drawing-sheet frame) More...
 
EDA_RECT getBoundingBox () override
 Returns a PAINTER instance used to draw the items. More...
 
std::unique_ptr< KIGFX::PAINTERgetPainter (KIGFX::GAL *aGal) override
 Source VIEW object (note that actual printing only refers to this object) More...
 

Protected Attributes

const KIGFX::VIEWm_view
 Printout parameters. More...
 
BOARD_PRINTOUT_SETTINGS m_settings
 

Private Attributes

BOARDm_board
 
PCBNEW_PRINTOUT_SETTINGS m_pcbnewSettings
 

Detailed Description

Definition at line 52 of file pcbnew_printout.h.

Constructor & Destructor Documentation

◆ PCBNEW_PRINTOUT()

PCBNEW_PRINTOUT::PCBNEW_PRINTOUT ( BOARD aBoard,
const PCBNEW_PRINTOUT_SETTINGS aParams,
const KIGFX::VIEW aView,
const wxString &  aTitle 
)

Definition at line 73 of file pcbnew_printout.cpp.

74  :
75  BOARD_PRINTOUT( aParams, aView, aTitle ), m_pcbnewSettings( aParams )
76 {
77  m_board = aBoard;
78 }
PCBNEW_PRINTOUT_SETTINGS m_pcbnewSettings
BOARD_PRINTOUT(const BOARD_PRINTOUT_SETTINGS &aParams, const KIGFX::VIEW *aView, const wxString &aTitle)

References m_board.

Member Function Documentation

◆ DrawPage()

void BOARD_PRINTOUT::DrawPage ( const wxString &  aLayerName = wxEmptyString,
int  aPageNum = 1,
int  aPageCount = 1 
)
virtualinherited

Print a page (or a set of pages).

Note
This function prepares the print parameters for the function which actually prints the draw layers.
Parameters
aLayerNamea text which can be printed as layer name.
aPageNumthe number of the current page (only used to print this value).
aPageCountthe number of pages to print (only used to print this value).

Definition at line 86 of file board_printout.cpp.

87 {
88  auto dc = GetDC();
90  auto galPrint = KIGFX::GAL_PRINT::Create( options, dc );
91  auto gal = galPrint->GetGAL();
92  auto printCtx = galPrint->GetPrintCtx();
93  auto painter = getPainter( gal );
94  std::unique_ptr<KIGFX::VIEW> view( m_view->DataReference() );
95 
96  // Target paper size
97  wxRect pageSizePx = GetLogicalPageRect();
98  const VECTOR2D pageSizeIn( (double) pageSizePx.width / dc->GetPPI().x,
99  (double) pageSizePx.height / dc->GetPPI().y );
100  const VECTOR2D pageSizeIU( milsToIU( pageSizeIn.x * 1000 ), milsToIU( pageSizeIn.y * 1000 ) );
101 
102  galPrint->SetSheetSize( pageSizeIn );
103 
104  view->SetGAL( gal );
105  view->SetPainter( painter.get() );
106  view->SetScaleLimits( 10e9, 0.0001 );
107  view->SetScale( 1.0 );
108 
109 
110  // Set the color scheme
111  RENDER_SETTINGS* dstSettings = view->GetPainter()->GetSettings();
112  dstSettings->LoadColors( m_settings.m_colorSettings );
113 
115  {
116  for( int i = 0; i < LAYER_ID_COUNT; ++i )
117  dstSettings->SetLayerColor( i, COLOR4D::BLACK );
118  }
119  else // color enabled
120  {
121  for( int i = 0; i < LAYER_ID_COUNT; ++i )
122  {
123  // Cairo does not support translucent colors on PostScript surfaces
124  // see 'Features support by the PostScript surface' on
125  // https://www.cairographics.org/documentation/using_the_postscript_surface/
126  dstSettings->SetLayerColor( i, dstSettings->GetLayerColor( i ).WithAlpha( 1.0 ) );
127  }
128  }
129 
130  dstSettings->SetIsPrinting( true );
131 
132  setupPainter( *painter );
134 
135  wxSize sheetSizeMils = m_settings.m_pageInfo.GetSizeMils();
136  VECTOR2I sheetSizeIU( milsToIU( sheetSizeMils.GetWidth() ),
137  milsToIU( sheetSizeMils.GetHeight() ) );
138  BOX2I bBox;
139 
140  // Determine printout bounding box
142  {
143  bBox = BOX2I( VECTOR2I( 0, 0 ), VECTOR2I( sheetSizeIU ) );
144  view->SetLayerVisible( LAYER_DRAWINGSHEET, true );
145  }
146  else
147  {
148  EDA_RECT targetBbox = getBoundingBox();
149  bBox = BOX2I( targetBbox.GetOrigin(), targetBbox.GetSize() );
150  view->SetLayerVisible( LAYER_DRAWINGSHEET, false );
151  }
152 
153 
154  // Fit to page
155  if( m_settings.m_scale <= 0.0 )
156  {
157  if( bBox.GetWidth() == 0 || bBox.GetHeight() == 0 )
158  {
159  // Nothing to print
160  m_settings.m_scale = 1.0;
161  }
162  else
163  {
164  double scaleX = (double) pageSizeIU.x / bBox.GetWidth();
165  double scaleY = (double) pageSizeIU.y / bBox.GetHeight();
166  m_settings.m_scale = std::min( scaleX, scaleY );
167  }
168  }
169 
170  setupGal( gal );
171  galPrint->SetNativePaperSize( pageSizeIn, printCtx->HasNativeLandscapeRotation() );
172  gal->SetLookAtPoint( bBox.Centre() );
173  gal->SetZoomFactor( m_settings.m_scale );
174 
175  gal->SetClearColor( dstSettings->GetBackgroundColor() );
176  gal->ClearScreen();
177 
178  {
179  KIGFX::GAL_DRAWING_CONTEXT ctx( gal );
180  view->Redraw();
181  }
182 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:506
const PAGE_INFO & m_pageInfo
Definition: printout.h:63
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
virtual std::unique_ptr< KIGFX::PAINTER > getPainter(KIGFX::GAL *aGal)=0
Source VIEW object (note that actual printing only refers to this object)
virtual const COLOR4D & GetBackgroundColor()=0
Return current background color settings.
const KIGFX::VIEW * m_view
Printout parameters.
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
COLOR4D WithAlpha(double aAlpha) const
Return a color with the same color, but the given alpha.
Definition: color4d.h:314
LSET m_LayerSet
Layers to print.
Definition: color4d.h:44
VECTOR2< int > VECTOR2I
Definition: vector2d.h:623
BOARD_PRINTOUT_SETTINGS m_settings
double m_scale
Printing scale.
Definition: printout.h:58
COLOR_SETTINGS * m_colorSettings
The color settings to be used for printing.
Definition: printout.h:66
virtual int milsToIU(double aMils) const =0
< Convert mils to internal units
virtual void setupPainter(KIGFX::PAINTER &aPainter)
Configures GAL object for a printout.
const wxPoint GetOrigin() const
Definition: eda_rect.h:101
coord_type GetWidth() const
Definition: box2.h:180
virtual void setupGal(KIGFX::GAL *aGal)
Returns bounding box of the printed objects (excluding drawing-sheet frame)
void SetLayerColor(int aLayer, const COLOR4D &aColor)
Change the color used to draw a layer.
bool PrintBorderAndTitleBlock() const
Returns true if the drawing border and title block should be printed.
Definition: printout.h:55
const wxSize & GetSizeMils() const
Definition: page_info.h:135
drawingsheet frame and titleblock
Definition: layer_ids.h:213
virtual void setupViewLayers(KIGFX::VIEW &aView, const LSET &aLayerSet)
Configures PAINTER object for a printout.
bool m_blackWhite
Print in B&W or Color.
Definition: printout.h:60
std::unique_ptr< VIEW > DataReference() const
Return a new VIEW object that shares the same set of VIEW_ITEMs and LAYERs.
Definition: view.cpp:1448
Vec Centre() const
Definition: box2.h:63
void SetIsPrinting(bool isPrinting)
Handle the component boundary box.
Definition: eda_rect.h:42
coord_type GetHeight() const
Definition: box2.h:181
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
virtual EDA_RECT getBoundingBox()=0
Returns a PAINTER instance used to draw the items.
#define LAYER_ID_COUNT
Must update this if you add any enums after GerbView!
Definition: layer_ids.h:424
const wxSize GetSize() const
Definition: eda_rect.h:91

References BLACK, BOX2< Vec >::Centre(), KIGFX::VIEW::DataReference(), KIGFX::RENDER_SETTINGS::GetBackgroundColor(), BOARD_PRINTOUT::getBoundingBox(), BOX2< Vec >::GetHeight(), KIGFX::RENDER_SETTINGS::GetLayerColor(), EDA_RECT::GetOrigin(), BOARD_PRINTOUT::getPainter(), EDA_RECT::GetSize(), PAGE_INFO::GetSizeMils(), BOX2< Vec >::GetWidth(), LAYER_DRAWINGSHEET, LAYER_ID_COUNT, KIGFX::RENDER_SETTINGS::LoadColors(), PRINTOUT_SETTINGS::m_blackWhite, PRINTOUT_SETTINGS::m_colorSettings, BOARD_PRINTOUT_SETTINGS::m_LayerSet, PRINTOUT_SETTINGS::m_pageInfo, PRINTOUT_SETTINGS::m_scale, BOARD_PRINTOUT::m_settings, BOARD_PRINTOUT::m_view, BOARD_PRINTOUT::milsToIU(), PRINTOUT_SETTINGS::PrintBorderAndTitleBlock(), KIGFX::RENDER_SETTINGS::SetIsPrinting(), KIGFX::RENDER_SETTINGS::SetLayerColor(), BOARD_PRINTOUT::setupGal(), BOARD_PRINTOUT::setupPainter(), BOARD_PRINTOUT::setupViewLayers(), and KIGFX::COLOR4D::WithAlpha().

Referenced by GERBVIEW_PRINTOUT::OnPrintPage(), and OnPrintPage().

◆ getBoundingBox()

EDA_RECT PCBNEW_PRINTOUT::getBoundingBox ( )
overrideprotectedvirtual

Returns a PAINTER instance used to draw the items.

Implements BOARD_PRINTOUT.

Definition at line 275 of file pcbnew_printout.cpp.

276 {
277  return m_board->ComputeBoundingBox();
278 }
EDA_RECT ComputeBoundingBox(bool aBoardEdgesOnly=false) const
Calculate the bounding box containing all board items (or board edge segments).
Definition: board.cpp:1082

References BOARD::ComputeBoundingBox(), and m_board.

◆ GetPageInfo()

void BOARD_PRINTOUT::GetPageInfo ( int *  minPage,
int *  maxPage,
int *  selPageFrom,
int *  selPageTo 
)
overrideinherited

Definition at line 76 of file board_printout.cpp.

77 {
78  *minPage = 1;
79  *selPageFrom = 1;
80 
81  *maxPage = m_settings.m_pageCount;
82  *selPageTo = m_settings.m_pageCount;
83 }
BOARD_PRINTOUT_SETTINGS m_settings
int m_pageCount
Number of pages to print.
Definition: printout.h:61

References PRINTOUT_SETTINGS::m_pageCount, and BOARD_PRINTOUT::m_settings.

◆ getPainter()

std::unique_ptr< KIGFX::PAINTER > PCBNEW_PRINTOUT::getPainter ( KIGFX::GAL aGal)
overrideprotectedvirtual

Source VIEW object (note that actual printing only refers to this object)

Implements BOARD_PRINTOUT.

Definition at line 281 of file pcbnew_printout.cpp.

282 {
283  return std::make_unique<KIGFX::PCB_PRINT_PAINTER>( aGal );
284 }

◆ HasPage()

bool BOARD_PRINTOUT::HasPage ( int  aPage)
inlineoverrideinherited

Definition at line 80 of file board_printout.h.

81  {
82  return aPage <= m_settings.m_pageCount;
83  }
BOARD_PRINTOUT_SETTINGS m_settings
int m_pageCount
Number of pages to print.
Definition: printout.h:61

References PRINTOUT_SETTINGS::m_pageCount, and BOARD_PRINTOUT::m_settings.

◆ milsToIU()

int PCBNEW_PRINTOUT::milsToIU ( double  aMils) const
overrideprotectedvirtual

< Convert mils to internal units

Enables layers visibility for a printout

Implements BOARD_PRINTOUT.

Definition at line 125 of file pcbnew_printout.cpp.

126 {
127  return KiROUND( IU_PER_MILS * aMils );
128 }
#define IU_PER_MILS
Definition: plotter.cpp:136
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:73

References IU_PER_MILS, and KiROUND().

◆ OnPrintPage()

bool PCBNEW_PRINTOUT::OnPrintPage ( int  aPage)
override

Definition at line 81 of file pcbnew_printout.cpp.

82 {
83  // Store the layerset, as it is going to be modified below and the original settings are
84  // needed.
85  LSET lset = m_settings.m_LayerSet;
86  int pageCount = lset.count();
87  wxString layerName;
88  PCB_LAYER_ID extractLayer;
89 
90  // compute layer mask from page number if we want one page per layer
92  {
93  // This sequence is TBD, call a different sequencer if needed, such as Seq().
94  // Could not find documentation on page order.
95  LSEQ seq = lset.UIOrder();
96 
97  // aPage starts at 1, not 0
98  if( unsigned( aPage - 1 ) < seq.size() )
99  m_settings.m_LayerSet = LSET( seq[ aPage - 1] );
100  }
101 
102  if( !m_settings.m_LayerSet.any() )
103  return false;
104 
105  extractLayer = m_settings.m_LayerSet.ExtractLayer();
106 
107  if( extractLayer == UNDEFINED_LAYER )
108  layerName = _( "Multiple Layers" );
109  else
110  layerName = LSET::Name( extractLayer );
111 
112  // In Pcbnew we can want the layer EDGE always printed
115 
116  DrawPage( layerName, aPage, pageCount );
117 
118  // Restore the original layer set, so the next page can be printed
119  m_settings.m_LayerSet = lset;
120 
121  return true;
122 }
LSET m_LayerSet
Layers to print.
virtual void DrawPage(const wxString &aLayerName=wxEmptyString, int aPageNum=1, int aPageCount=1)
Print a page (or a set of pages).
BOARD_PRINTOUT_SETTINGS m_settings
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
static const wxChar * Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition: lset.cpp:82
#define _(s)
bool m_PrintEdgeCutsOnAllPages
Print board outline on each page.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PCB_LAYER_ID ExtractLayer() const
Find the first set PCB_LAYER_ID.
Definition: lset.cpp:661
PCBNEW_PRINTOUT_SETTINGS m_pcbnewSettings
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
LSEQ UIOrder() const
Definition: lset.cpp:895
enum PCBNEW_PRINTOUT_SETTINGS::PAGINATION_T m_Pagination

References _, BOARD_PRINTOUT::DrawPage(), Edge_Cuts, LSET::ExtractLayer(), PCBNEW_PRINTOUT_SETTINGS::LAYER_PER_PAGE, BOARD_PRINTOUT_SETTINGS::m_LayerSet, PCBNEW_PRINTOUT_SETTINGS::m_Pagination, m_pcbnewSettings, PCBNEW_PRINTOUT_SETTINGS::m_PrintEdgeCutsOnAllPages, BOARD_PRINTOUT::m_settings, LSET::Name(), LSET::UIOrder(), and UNDEFINED_LAYER.

◆ setupGal()

void PCBNEW_PRINTOUT::setupGal ( KIGFX::GAL aGal)
overrideprotectedvirtual

Returns bounding box of the printed objects (excluding drawing-sheet frame)

Reimplemented from BOARD_PRINTOUT.

Definition at line 268 of file pcbnew_printout.cpp.

269 {
270  BOARD_PRINTOUT::setupGal( aGal );
271  aGal->SetWorldUnitLength( 0.001/IU_PER_MM /* 1 nm */ / 0.0254 /* 1 inch in meters */ );
272 }
static constexpr double IU_PER_MM
Mock up a conversion function.
virtual void setupGal(KIGFX::GAL *aGal)
Returns bounding box of the printed objects (excluding drawing-sheet frame)
void SetWorldUnitLength(double aWorldUnitLength)
Set the unit length.

References IU_PER_MM, BOARD_PRINTOUT::setupGal(), and KIGFX::GAL::SetWorldUnitLength().

◆ setupPainter()

void PCBNEW_PRINTOUT::setupPainter ( KIGFX::PAINTER aPainter)
overrideprotectedvirtual

Configures GAL object for a printout.

Reimplemented from BOARD_PRINTOUT.

Definition at line 234 of file pcbnew_printout.cpp.

235 {
236  BOARD_PRINTOUT::setupPainter( aPainter );
237 
238  KIGFX::PCB_PRINT_PAINTER& painter = dynamic_cast<KIGFX::PCB_PRINT_PAINTER&>( aPainter );
239 
241  {
243  painter.SetDrillMarks( false, 0 );
244  break;
245 
247  painter.SetDrillMarks( false, Millimeter2iu( ADVANCED_CFG::GetCfg().m_SmallDrillMarkSize ) );
248 
252  break;
253 
255  painter.SetDrillMarks( true );
256 
260  break;
261  }
262 
265 }
enum PCBNEW_PRINTOUT_SETTINGS::DRILL_MARK_SHAPE_T m_DrillMarks
Special flavor of PCB_PAINTER that contains modifications to handle printing options.
Definition: color4d.h:44
to draw via holes (pad holes do not use this layer)
Definition: layer_ids.h:211
handle color for not plated holes (holes, not pads)
Definition: layer_ids.h:193
virtual PCB_RENDER_SETTINGS * GetSettings() override
Return a pointer to current settings that are going to be used when drawing items.
Definition: pcb_painter.h:247
virtual void setupPainter(KIGFX::PAINTER &aPainter)
Configures GAL object for a printout.
void SetLayerColor(int aLayer, const COLOR4D &aColor)
Change the color used to draw a layer.
void SetDrawIndividualViaLayers(bool aFlag)
Definition: pcb_painter.h:175
PCBNEW_PRINTOUT_SETTINGS m_pcbnewSettings
to draw pad holes (plated)
Definition: layer_ids.h:210
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
static constexpr int Millimeter2iu(double mm)
void SetDrillMarks(bool aRealSize, unsigned int aSize=0)
Set drill marks visibility and options.
enum PCBNEW_PRINTOUT_SETTINGS::PAGINATION_T m_Pagination

References BLACK, PCBNEW_PRINTOUT_SETTINGS::FULL_DRILL_SHAPE, ADVANCED_CFG::GetCfg(), KIGFX::PCB_PAINTER::GetSettings(), LAYER_NON_PLATEDHOLES, LAYER_PAD_PLATEDHOLES, PCBNEW_PRINTOUT_SETTINGS::LAYER_PER_PAGE, LAYER_VIA_HOLES, PCBNEW_PRINTOUT_SETTINGS::m_DrillMarks, PCBNEW_PRINTOUT_SETTINGS::m_Pagination, m_pcbnewSettings, Millimeter2iu(), PCBNEW_PRINTOUT_SETTINGS::NO_DRILL_SHAPE, KIGFX::PCB_RENDER_SETTINGS::SetDrawIndividualViaLayers(), KIGFX::PCB_PRINT_PAINTER::SetDrillMarks(), KIGFX::RENDER_SETTINGS::SetLayerColor(), BOARD_PRINTOUT::setupPainter(), and PCBNEW_PRINTOUT_SETTINGS::SMALL_DRILL_SHAPE.

◆ setupViewLayers()

void PCBNEW_PRINTOUT::setupViewLayers ( KIGFX::VIEW aView,
const LSET aLayerSet 
)
overrideprotectedvirtual

Configures PAINTER object for a printout.

Reimplemented from BOARD_PRINTOUT.

Definition at line 131 of file pcbnew_printout.cpp.

132 {
133  BOARD_PRINTOUT::setupViewLayers( aView, aLayerSet );
134 
135  for( PCB_LAYER_ID layer : m_settings.m_LayerSet.Seq() )
136  {
137  aView.SetLayerVisible( PCBNEW_LAYER_ID_START + layer, true );
138 
139  // Enable the corresponding zone layer (copper layers and other layers)
140  aView.SetLayerVisible( LAYER_ZONE_START + layer, true );
141  }
142 
143  RENDER_SETTINGS* renderSettings = aView.GetPainter()->GetSettings();
144  // A color to do not print objects on some layers, when the layer must be enabled
145  // to print some other objects
146  COLOR4D invisible_color( 0.0, 0.0, 0.0, 0.0 );
147 
149  {
150  auto setVisibility =
151  [&]( GAL_LAYER_ID aLayer )
152  {
153  if( m_board->IsElementVisible( aLayer ) )
154  aView.SetLayerVisible( aLayer, true );
155  else
156  renderSettings->SetLayerColor( aLayer, invisible_color );
157  };
158 
159  setVisibility( LAYER_MOD_FR );
160  setVisibility( LAYER_MOD_BK );
161  setVisibility( LAYER_MOD_VALUES );
162  setVisibility( LAYER_MOD_REFERENCES );
163  setVisibility( LAYER_MOD_TEXT_FR );
164  setVisibility( LAYER_MOD_TEXT_BK );
165  setVisibility( LAYER_MOD_TEXT_INVISIBLE );
166  setVisibility( LAYER_PADS );
167  setVisibility( LAYER_PAD_FR );
168  setVisibility( LAYER_PAD_BK );
169  setVisibility( LAYER_PADS_TH );
170 
171  setVisibility( LAYER_TRACKS );
172  setVisibility( LAYER_VIAS );
173  setVisibility( LAYER_VIA_MICROVIA );
174  setVisibility( LAYER_VIA_BBLIND );
175  setVisibility( LAYER_VIA_THROUGH );
176  setVisibility( LAYER_ZONES );
177 
178  setVisibility( LAYER_NO_CONNECTS );
179  setVisibility( LAYER_DRC_WARNING );
180  setVisibility( LAYER_DRC_ERROR );
181  setVisibility( LAYER_DRC_EXCLUSION );
182  setVisibility( LAYER_ANCHOR );
183  setVisibility( LAYER_DRAWINGSHEET );
184  setVisibility( LAYER_GRID );
185  }
186  else
187  {
188  // Draw layers that must be not visible on printing are set to an invisible layer
189  // LAYER_PAD_FR, LAYER_PAD_BK and LAYER_PADS_TH must be enabled to print pads on
190  // technical layers, but not the pad on copper layer(s) if they are not enabled
191 
192  if( !aLayerSet.test( F_Cu ) )
193  renderSettings->SetLayerColor( LAYER_PAD_FR, invisible_color );
194 
195  if( !aLayerSet.test( B_Cu ) )
196  renderSettings->SetLayerColor( LAYER_PAD_BK, invisible_color );
197 
198  // Enable items on copper layers, but do not draw holes
199  for( GAL_LAYER_ID layer : { LAYER_PADS_TH, LAYER_VIA_THROUGH } )
200  {
201  if( ( aLayerSet & LSET::AllCuMask() ).any() ) // Items visible on any copper layer
202  aView.SetLayerVisible( layer, true );
203  else
204  renderSettings->SetLayerColor( layer, invisible_color );
205  }
206 
207  // Keep certain items always enabled/disabled and just rely on the layer visibility
208  // Note LAYER_PAD_FR, LAYER_PAD_BK, LAYER_PADS_TH are enabled here because paths must
209  // be drawn on some other (technical) layers.
210  const int alwaysEnabled[] =
211  {
216  };
217 
218  for( int layer : alwaysEnabled )
219  aView.SetLayerVisible( layer, true );
220  }
221 
223  {
224  // Enable hole layers to draw drill marks
226  {
227  aView.SetLayerVisible( layer, true );
228  aView.SetTopLayer( layer, true );
229  }
230  }
231 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
smd pads, front layer
Definition: layer_ids.h:198
to draw micro vias
Definition: layer_ids.h:190
layer for drc markers with SEVERITY_ERROR
Definition: layer_ids.h:212
virtual void SetTopLayer(int aLayer, bool aEnabled=true)
Set given layer to be displayed on the top or sets back the default order of layers.
Definition: view.cpp:830
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Meta control for all pads opacity/visibility (color ignored)
Definition: layer_ids.h:226
show footprints values (when texts are visible)
Definition: layer_ids.h:206
enum PCBNEW_PRINTOUT_SETTINGS::DRILL_MARK_SHAPE_T m_DrillMarks
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
Definition: layer_ids.h:185
smd pads, back layer
Definition: layer_ids.h:199
anchor of items having an anchor point (texts, footprints)
Definition: layer_ids.h:197
LSET m_LayerSet
Layers to print.
show footprints on back
Definition: layer_ids.h:205
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Return an LSEQ from the union of this LSET and a desired sequence.
Definition: lset.cpp:411
to draw via holes (pad holes do not use this layer)
Definition: layer_ids.h:211
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:208
Control for copper zone opacity/visibility (color ignored)
Definition: layer_ids.h:227
BOARD_PRINTOUT_SETTINGS m_settings
to draw usual through hole vias
Definition: layer_ids.h:192
bool m_AsItemCheckboxes
Honor checkboxes in the Items tab of the Layers Manager.
handle color for not plated holes (holes, not pads)
Definition: layer_ids.h:193
Meta control for all vias opacity/visibility.
Definition: layer_ids.h:189
text marked as invisible
Definition: layer_ids.h:196
show footprints on front
Definition: layer_ids.h:204
Virtual layers for stacking zones and tracks on a given copper layer.
Definition: layer_ids.h:242
void SetLayerColor(int aLayer, const COLOR4D &aColor)
Change the color used to draw a layer.
void SetLayerVisible(int aLayer, bool aVisible=true)
Control the visibility of a particular layer.
Definition: view.h:388
drawingsheet frame and titleblock
Definition: layer_ids.h:213
virtual void setupViewLayers(KIGFX::VIEW &aView, const LSET &aLayerSet)
Configures PAINTER object for a printout.
show a marker on pads with no nets
Definition: layer_ids.h:203
bool IsElementVisible(GAL_LAYER_ID aLayer) const
Test whether a given element category is visible.
Definition: board.cpp:533
show footprints references (when texts are visible)
Definition: layer_ids.h:207
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
multilayer pads, usually with holes
Definition: layer_ids.h:209
to draw blind/buried vias
Definition: layer_ids.h:191
layer for drc markers which have been individually excluded
Definition: layer_ids.h:232
PCBNEW_PRINTOUT_SETTINGS m_pcbnewSettings
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
Definition: layer_ids.h:71
layer for drc markers with SEVERITY_WARNING
Definition: layer_ids.h:231
to draw pad holes (plated)
Definition: layer_ids.h:210
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References LSET::AllCuMask(), B_Cu, F_Cu, KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), BOARD::IsElementVisible(), LAYER_ANCHOR, LAYER_DRAWINGSHEET, LAYER_DRC_ERROR, LAYER_DRC_EXCLUSION, LAYER_DRC_WARNING, LAYER_GRID, LAYER_MOD_BK, LAYER_MOD_FR, LAYER_MOD_REFERENCES, LAYER_MOD_TEXT_BK, LAYER_MOD_TEXT_FR, LAYER_MOD_TEXT_INVISIBLE, LAYER_MOD_VALUES, LAYER_NO_CONNECTS, LAYER_NON_PLATEDHOLES, LAYER_PAD_BK, LAYER_PAD_FR, LAYER_PAD_PLATEDHOLES, LAYER_PADS, LAYER_PADS_TH, LAYER_TRACKS, LAYER_VIA_BBLIND, LAYER_VIA_HOLES, LAYER_VIA_MICROVIA, LAYER_VIA_THROUGH, LAYER_VIAS, LAYER_ZONE_START, LAYER_ZONES, PCBNEW_PRINTOUT_SETTINGS::m_AsItemCheckboxes, m_board, PCBNEW_PRINTOUT_SETTINGS::m_DrillMarks, BOARD_PRINTOUT_SETTINGS::m_LayerSet, m_pcbnewSettings, BOARD_PRINTOUT::m_settings, PCBNEW_PRINTOUT_SETTINGS::NO_DRILL_SHAPE, PCBNEW_LAYER_ID_START, LSET::Seq(), KIGFX::RENDER_SETTINGS::SetLayerColor(), KIGFX::VIEW::SetLayerVisible(), KIGFX::VIEW::SetTopLayer(), and BOARD_PRINTOUT::setupViewLayers().

Member Data Documentation

◆ m_board

BOARD* PCBNEW_PRINTOUT::m_board
private

Definition at line 74 of file pcbnew_printout.h.

Referenced by getBoundingBox(), PCBNEW_PRINTOUT(), and setupViewLayers().

◆ m_pcbnewSettings

PCBNEW_PRINTOUT_SETTINGS PCBNEW_PRINTOUT::m_pcbnewSettings
private

Definition at line 76 of file pcbnew_printout.h.

Referenced by OnPrintPage(), setupPainter(), and setupViewLayers().

◆ m_settings

◆ m_view

const KIGFX::VIEW* BOARD_PRINTOUT::m_view
protectedinherited

Printout parameters.

Definition at line 118 of file board_printout.h.

Referenced by BOARD_PRINTOUT::BOARD_PRINTOUT(), and BOARD_PRINTOUT::DrawPage().


The documentation for this class was generated from the following files: