KiCad PCB EDA Suite
PLOT_CONTROLLER Class Reference

Batch plotter state object. More...

#include <plotcontroller.h>

Public Member Functions

 PLOT_CONTROLLER (BOARD *aBoard)
 Batch plotter constructor, nothing interesting here. More...
 
 ~PLOT_CONTROLLER ()
 Ensure that the last plot is closed. More...
 
PCB_PLOT_PARAMSGetPlotOptions ()
 Accessor to the plot parameters and options. More...
 
void SetLayer (LAYER_NUM aLayer)
 
LAYER_NUM GetLayer ()
 
bool IsPlotOpen () const
 
void ClosePlot ()
 Close the current plot, nothing happens if it isn't open. More...
 
bool OpenPlotfile (const wxString &aSuffix, PLOT_FORMAT aFormat, const wxString &aSheetDesc)
 Open a new plotfile; works as a factory for plotter objects/. More...
 
bool PlotLayer ()
 Plot a single layer on the current plotfile m_plotLayer is the layer to plot. More...
 
const wxString GetPlotFileName ()
 
const wxString GetPlotDirName ()
 
void SetColorMode (bool aColorMode)
 Choose color or bland and white plot mode. More...
 
bool GetColorMode ()
 

Private Attributes

LAYER_NUM m_plotLayer
 the layer to plot More...
 
PCB_PLOT_PARAMS m_plotOptions
 Option bank. More...
 
PLOTTERm_plotter
 This is the plotter object; it starts NULL and become instantiated when a plotfile is requested. More...
 
BOARDm_board
 The board we're plotting. More...
 
wxFileName m_plotFile
 The current plot filename, set by OpenPlotfile. More...
 

Detailed Description

Batch plotter state object.

Keeps the plot options and handles multiple plot requests. Useful in Python scripts.

Definition at line 44 of file plotcontroller.h.

Constructor & Destructor Documentation

◆ PLOT_CONTROLLER()

PLOT_CONTROLLER::PLOT_CONTROLLER ( BOARD aBoard)

Batch plotter constructor, nothing interesting here.

Definition at line 404 of file pcbplot.cpp.

405 {
406  m_plotter = nullptr;
407  m_board = aBoard;
409 }
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
BOARD * m_board
The board we're plotting.
LAYER_NUM m_plotLayer
the layer to plot

References m_board, m_plotLayer, m_plotter, and UNDEFINED_LAYER.

◆ ~PLOT_CONTROLLER()

PLOT_CONTROLLER::~PLOT_CONTROLLER ( )

Ensure that the last plot is closed.

Definition at line 412 of file pcbplot.cpp.

413 {
414  ClosePlot();
415 }
void ClosePlot()
Close the current plot, nothing happens if it isn't open.
Definition: pcbplot.cpp:421

References ClosePlot().

Member Function Documentation

◆ ClosePlot()

void PLOT_CONTROLLER::ClosePlot ( )

Close the current plot, nothing happens if it isn't open.

Definition at line 421 of file pcbplot.cpp.

422 {
423  LOCALE_IO toggle;
424 
425  if( m_plotter )
426  {
427  m_plotter->EndPlot();
428 
429  delete m_plotter->RenderSettings();
430  delete m_plotter;
431 
432  m_plotter = nullptr;
433  }
434 }
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
Definition: locale_io.h:40
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
virtual bool EndPlot()=0
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:156

References PLOTTER::EndPlot(), m_plotter, and PLOTTER::RenderSettings().

Referenced by OpenPlotfile(), and ~PLOT_CONTROLLER().

◆ GetColorMode()

bool PLOT_CONTROLLER::GetColorMode ( )
Returns
true if the current plot color mode is color or false if the current plot color mode is black and white.

Definition at line 515 of file pcbplot.cpp.

516 {
517  if( !m_plotter )
518  return false;
519 
520  return m_plotter->GetColorMode();
521 }
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
bool GetColorMode() const
Definition: plotter.h:153

References PLOTTER::GetColorMode(), and m_plotter.

◆ GetLayer()

LAYER_NUM PLOT_CONTROLLER::GetLayer ( )
inline

Definition at line 61 of file plotcontroller.h.

61 { return m_plotLayer; }
LAYER_NUM m_plotLayer
the layer to plot

References m_plotLayer.

Referenced by OpenPlotfile(), and PlotLayer().

◆ GetPlotDirName()

const wxString PLOT_CONTROLLER::GetPlotDirName ( )
inline
Returns
the current plot full filename, set by OpenPlotfile

Definition at line 95 of file plotcontroller.h.

95 { return m_plotFile.GetPathWithSep(); }
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.

References m_plotFile.

◆ GetPlotFileName()

const wxString PLOT_CONTROLLER::GetPlotFileName ( )
inline
Returns
the current plot full filename, set by OpenPlotfile

Definition at line 90 of file plotcontroller.h.

90 { return m_plotFile.GetFullPath(); }
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.

References m_plotFile.

◆ GetPlotOptions()

PCB_PLOT_PARAMS& PLOT_CONTROLLER::GetPlotOptions ( )
inline

Accessor to the plot parameters and options.

Definition at line 58 of file plotcontroller.h.

58 { return m_plotOptions; }
PCB_PLOT_PARAMS m_plotOptions
Option bank.

References m_plotOptions.

Referenced by OpenPlotfile(), and PlotLayer().

◆ IsPlotOpen()

bool PLOT_CONTROLLER::IsPlotOpen ( ) const
inline
Returns
true if a plotter is initialized and can be used.

Definition at line 67 of file plotcontroller.h.

67 { return m_plotter != nullptr; }
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.

References m_plotter.

◆ OpenPlotfile()

bool PLOT_CONTROLLER::OpenPlotfile ( const wxString &  aSuffix,
PLOT_FORMAT  aFormat,
const wxString &  aSheetDesc 
)

Open a new plotfile; works as a factory for plotter objects/.

Parameters
aSuffixis a string added to the base filename (derived from the board filename) to identify the plot file.
aFormatis the plot file format identifier.

Definition at line 437 of file pcbplot.cpp.

439 {
440  LOCALE_IO toggle;
441 
442  /* Save the current format: sadly some plot routines depends on this
443  but the main reason is that the StartPlot method uses it to
444  dispatch the plotter creation */
445  GetPlotOptions().SetFormat( aFormat );
446 
447  // Ensure that the previous plot is closed
448  ClosePlot();
449 
450  // Now compute the full filename for the output and start the plot (after ensuring the
451  // output directory is OK).
452 
453  std::function<bool( wxString* )> textResolver =
454  [&]( wxString* token ) -> bool
455  {
456  // Handles m_board->GetTitleBlock() *and* m_board->GetProject()
457  return m_board->ResolveTextVar( token, 0 );
458  };
459 
460  wxString outputDirName = GetPlotOptions().GetOutputDirectory();
461  outputDirName = ExpandTextVars( outputDirName, &textResolver, nullptr, nullptr );
462  outputDirName = ExpandEnvVarSubstitutions( outputDirName, nullptr );
463 
464  wxFileName outputDir = wxFileName::DirName( outputDirName );
465  wxString boardFilename = m_board->GetFileName();
466 
467  if( EnsureFileDirectoryExists( &outputDir, boardFilename ) )
468  {
469  // outputDir contains now the full path of plot files
470  m_plotFile = boardFilename;
471  m_plotFile.SetPath( outputDir.GetPath() );
472  wxString fileExt = GetDefaultPlotExtension( aFormat );
473 
474  // Gerber format can use specific file ext, depending on layers
475  // (now not a good practice, because the official file ext is .gbr)
476  if( GetPlotOptions().GetFormat() == PLOT_FORMAT::GERBER
477  && GetPlotOptions().GetUseGerberProtelExtensions() )
478  fileExt = GetGerberProtelExtension( GetLayer() );
479 
480  // Build plot filenames from the board name and layer names:
481  BuildPlotFileName( &m_plotFile, outputDir.GetPath(), aSuffix, fileExt );
482 
484  m_plotFile.GetFullPath(), aSheetDesc );
485  }
486 
487  return ( m_plotter != nullptr );
488 }
PCB_PLOT_PARAMS & GetPlotOptions()
Accessor to the plot parameters and options.
LAYER_NUM GetLayer()
void ClosePlot()
Close the current plot, nothing happens if it isn't open.
Definition: pcbplot.cpp:421
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
Definition: locale_io.h:40
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
wxString GetDefaultPlotExtension(PLOT_FORMAT aFormat)
Returns the default plot extension for a format.
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject)
Definition: common.cpp:57
PLOTTER * StartPlotBoard(BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aLayer, const wxString &aFullFileName, const wxString &aSheetDesc)
Open a new plotfile using the options (and especially the format) specified in the options and prepar...
const wxString GetGerberProtelExtension(LAYER_NUM aLayer)
Definition: pcbplot.cpp:46
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.
const wxString ExpandEnvVarSubstitutions(const wxString &aString, PROJECT *aProject)
Replace any environment variable & text variable references with their values.
Definition: common.cpp:267
const wxString & GetFileName() const
Definition: board.h:229
BOARD * m_board
The board we're plotting.
bool EnsureFileDirectoryExists(wxFileName *aTargetFullFileName, const wxString &aBaseFilename, REPORTER *aReporter)
Make aTargetFullFileName absolute and create the path of this file if it doesn't yet exist.
Definition: common.cpp:295
void SetFormat(PLOT_FORMAT aFormat)
wxString GetOutputDirectory() const
void BuildPlotFileName(wxFileName *aFilename, const wxString &aOutputDir, const wxString &aSuffix, const wxString &aExtension)
Complete a plot filename.
Definition: pcbplot.cpp:372
bool ResolveTextVar(wxString *token, int aDepth) const
Definition: board.cpp:240
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:914

References BuildPlotFileName(), ClosePlot(), EnsureFileDirectoryExists(), ExpandEnvVarSubstitutions(), ExpandTextVars(), GERBER, GetDefaultPlotExtension(), BOARD::GetFileName(), GetGerberProtelExtension(), GetLayer(), PCB_PLOT_PARAMS::GetOutputDirectory(), GetPlotOptions(), m_board, m_plotFile, m_plotter, BOARD::ResolveTextVar(), PCB_PLOT_PARAMS::SetFormat(), StartPlotBoard(), and ToLAYER_ID().

◆ PlotLayer()

bool PLOT_CONTROLLER::PlotLayer ( )

Plot a single layer on the current plotfile m_plotLayer is the layer to plot.

Definition at line 491 of file pcbplot.cpp.

492 {
493  LOCALE_IO toggle;
494 
495  // No plot open, nothing to do...
496  if( !m_plotter )
497  return false;
498 
499  // Fully delegated to the parent
501 
502  return true;
503 }
PCB_PLOT_PARAMS & GetPlotOptions()
Accessor to the plot parameters and options.
LAYER_NUM GetLayer()
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
Definition: locale_io.h:40
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
void PlotOneBoardLayer(BOARD *aBoard, PLOTTER *aPlotter, PCB_LAYER_ID aLayer, const PCB_PLOT_PARAMS &aPlotOpt)
Plot one copper or technical layer.
BOARD * m_board
The board we're plotting.
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:914

References GetLayer(), GetPlotOptions(), m_board, m_plotter, PlotOneBoardLayer(), and ToLAYER_ID().

◆ SetColorMode()

void PLOT_CONTROLLER::SetColorMode ( bool  aColorMode)

Choose color or bland and white plot mode.

Parameters
aColorModeset to true to activate the plot color mode or false for black and white.

Definition at line 506 of file pcbplot.cpp.

507 {
508  if( !m_plotter )
509  return;
510 
511  m_plotter->SetColorMode( aColorMode );
512 }
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.
virtual void SetColorMode(bool aColorMode)
Plot in B/W or color.
Definition: plotter.h:152

References m_plotter, and PLOTTER::SetColorMode().

◆ SetLayer()

void PLOT_CONTROLLER::SetLayer ( LAYER_NUM  aLayer)
inline

Definition at line 60 of file plotcontroller.h.

60 { m_plotLayer = aLayer; }
LAYER_NUM m_plotLayer
the layer to plot

References m_plotLayer.

Member Data Documentation

◆ m_board

BOARD* PLOT_CONTROLLER::m_board
private

The board we're plotting.

Definition at line 122 of file plotcontroller.h.

Referenced by OpenPlotfile(), PLOT_CONTROLLER(), and PlotLayer().

◆ m_plotFile

wxFileName PLOT_CONTROLLER::m_plotFile
private

The current plot filename, set by OpenPlotfile.

Definition at line 125 of file plotcontroller.h.

Referenced by GetPlotDirName(), GetPlotFileName(), and OpenPlotfile().

◆ m_plotLayer

LAYER_NUM PLOT_CONTROLLER::m_plotLayer
private

the layer to plot

Definition at line 112 of file plotcontroller.h.

Referenced by GetLayer(), PLOT_CONTROLLER(), and SetLayer().

◆ m_plotOptions

PCB_PLOT_PARAMS PLOT_CONTROLLER::m_plotOptions
private

Option bank.

Definition at line 115 of file plotcontroller.h.

Referenced by GetPlotOptions().

◆ m_plotter

PLOTTER* PLOT_CONTROLLER::m_plotter
private

This is the plotter object; it starts NULL and become instantiated when a plotfile is requested.

Definition at line 119 of file plotcontroller.h.

Referenced by ClosePlot(), GetColorMode(), IsPlotOpen(), OpenPlotfile(), PLOT_CONTROLLER(), PlotLayer(), and SetColorMode().


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