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 ()
 Batch plotter destructor, ensures 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, PlotFormat 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)
 Plotters can plot in Black and White mode or Color mode SetColorMode activate/de-actiavte the Color 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 Especially useful in Python scripts

Definition at line 45 of file plotcontroller.h.

Constructor & Destructor Documentation

PLOT_CONTROLLER::PLOT_CONTROLLER ( BOARD aBoard)

Batch plotter constructor, nothing interesting here.

Definition at line 412 of file pcbplot.cpp.

References m_board, m_plotLayer, m_plotter, and UNDEFINED_LAYER.

413 {
414  m_plotter = NULL;
415  m_board = aBoard;
417 }
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&#39;re plotting.
LAYER_NUM m_plotLayer
the layer to plot
PLOT_CONTROLLER::~PLOT_CONTROLLER ( )

Batch plotter destructor, ensures that the last plot is closed.

Definition at line 420 of file pcbplot.cpp.

References ClosePlot().

421 {
422  ClosePlot();
423 }
void ClosePlot()
Close the current plot, nothing happens if it isn&#39;t open.
Definition: pcbplot.cpp:430

Member Function Documentation

void PLOT_CONTROLLER::ClosePlot ( )

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

Definition at line 430 of file pcbplot.cpp.

References PLOTTER::EndPlot(), and m_plotter.

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

431 {
432  LOCALE_IO toggle;
433 
434  if( m_plotter )
435  {
436  m_plotter->EndPlot();
437  delete m_plotter;
438  m_plotter = NULL;
439  }
440 }
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown...
Definition: common.h:179
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested...
virtual bool EndPlot()=0
bool PLOT_CONTROLLER::GetColorMode ( )
Returns
true if the current plot color mode is Color, false if the current plot color mode is Black and White

Definition at line 511 of file pcbplot.cpp.

References PLOTTER::GetColorMode(), and m_plotter.

Referenced by GetPlotDirName().

512 {
513  if( !m_plotter )
514  return false;
515 
516  return m_plotter->GetColorMode();
517 }
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:131
LAYER_NUM PLOT_CONTROLLER::GetLayer ( )
inline

Definition at line 61 of file plotcontroller.h.

References m_plotLayer.

Referenced by OpenPlotfile(), and PlotLayer().

61 { return m_plotLayer; }
LAYER_NUM m_plotLayer
the layer to plot
const wxString PLOT_CONTROLLER::GetPlotDirName ( )
inline
Returns
the current plot full filename, set by OpenPlotfile

Definition at line 95 of file plotcontroller.h.

References GetColorMode(), m_plotFile, and SetColorMode().

95 { return m_plotFile.GetPathWithSep(); }
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.
const wxString PLOT_CONTROLLER::GetPlotFileName ( )
inline
Returns
the current plot full filename, set by OpenPlotfile

Definition at line 90 of file plotcontroller.h.

References m_plotFile.

90 { return m_plotFile.GetFullPath(); }
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.
PCB_PLOT_PARAMS& PLOT_CONTROLLER::GetPlotOptions ( )
inline

Accessor to the plot parameters and options.

Definition at line 58 of file plotcontroller.h.

References m_plotOptions.

Referenced by OpenPlotfile(), and PlotLayer().

58 { return m_plotOptions; }
PCB_PLOT_PARAMS m_plotOptions
Option bank.
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.

References ClosePlot(), m_plotter, OpenPlotfile(), and PlotLayer().

67 { return m_plotter != NULL; }
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested...
bool PLOT_CONTROLLER::OpenPlotfile ( const wxString &  aSuffix,
PlotFormat  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
aSheetDesc

Definition at line 443 of file pcbplot.cpp.

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

Referenced by IsPlotOpen().

446 {
447  LOCALE_IO toggle;
448 
449  /* Save the current format: sadly some plot routines depends on this
450  but the main reason is that the StartPlot method uses it to
451  dispatch the plotter creation */
452  GetPlotOptions().SetFormat( aFormat );
453 
454  // Ensure that the previous plot is closed
455  ClosePlot();
456 
457  // Now compute the full filename for the output and start the plot
458  // (after ensuring the output directory is OK)
459  wxString outputDirName = GetPlotOptions().GetOutputDirectory() ;
460  wxFileName outputDir = wxFileName::DirName( outputDirName );
461  wxString boardFilename = m_board->GetFileName();
462 
463  if( EnsureFileDirectoryExists( &outputDir, boardFilename ) )
464  {
465  // outputDir contains now the full path of plot files
466  m_plotFile = boardFilename;
467  m_plotFile.SetPath( outputDir.GetPath() );
468  wxString fileExt = GetDefaultPlotExtension( aFormat );
469 
470  // Gerber format can use specific file ext, depending on layers
471  // (now not a good practice, because the official file ext is .gbr)
472  if( GetPlotOptions().GetFormat() == PLOT_FORMAT_GERBER &&
473  GetPlotOptions().GetUseGerberProtelExtensions() )
474  fileExt = GetGerberProtelExtension( GetLayer() );
475 
476  // Build plot filenames from the board name and layer names:
477  BuildPlotFileName( &m_plotFile, outputDir.GetPath(), aSuffix, fileExt );
478 
480  m_plotFile.GetFullPath(), aSheetDesc );
481  }
482 
483  return( m_plotter != NULL );
484 }
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&#39;t open.
Definition: pcbplot.cpp:430
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown...
Definition: common.h:179
PLOTTER * m_plotter
This is the plotter object; it starts NULL and become instantiated when a plotfile is requested...
void SetFormat(PlotFormat aFormat)
wxString GetDefaultPlotExtension(PlotFormat aFormat)
Returns the default plot extension for a format.
const wxString GetGerberProtelExtension(LAYER_NUM aLayer)
Function GetGerberProtelExtension.
Definition: pcbplot.cpp:48
wxFileName m_plotFile
The current plot filename, set by OpenPlotfile.
BOARD * m_board
The board we&#39;re plotting.
wxString GetOutputDirectory() const
const wxString & GetFileName() const
Definition: class_board.h:237
bool EnsureFileDirectoryExists(wxFileName *aTargetFullFileName, const wxString &aBaseFilename, REPORTER *aReporter)
Make aTargetFullFileName absolute and create the path of this file if it doesn&#39;t yet exist...
Definition: common.cpp:469
void BuildPlotFileName(wxFileName *aFilename, const wxString &aOutputDir, const wxString &aSuffix, const wxString &aExtension)
Function BuildPlotFileName (helper function) Complete a plot filename: forces the output directory...
Definition: pcbplot.cpp:380
PLOTTER * StartPlotBoard(BOARD *aBoard, 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...
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:810
bool PLOT_CONTROLLER::PlotLayer ( )

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

Definition at line 487 of file pcbplot.cpp.

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

Referenced by IsPlotOpen().

488 {
489  LOCALE_IO toggle;
490 
491  // No plot open, nothing to do...
492  if( !m_plotter )
493  return false;
494 
495  // Fully delegated to the parent
497 
498  return true;
499 }
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: common.h:179
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)
Function PlotOneBoardLayer main function to plot one copper or technical layer.
BOARD * m_board
The board we&#39;re plotting.
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:810
void PLOT_CONTROLLER::SetColorMode ( bool  aColorMode)

Plotters can plot in Black and White mode or Color mode SetColorMode activate/de-actiavte the Color mode.

Parameters
aColorMode= true to activate the plot color mode

Definition at line 502 of file pcbplot.cpp.

References m_plotter, and PLOTTER::SetColorMode().

Referenced by GetPlotDirName().

503 {
504  if( !m_plotter )
505  return;
506 
507  m_plotter->SetColorMode( aColorMode );
508 }
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:126
void PLOT_CONTROLLER::SetLayer ( LAYER_NUM  aLayer)
inline

Definition at line 60 of file plotcontroller.h.

References m_plotLayer.

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

Member Data Documentation

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().

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().

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().

PCB_PLOT_PARAMS PLOT_CONTROLLER::m_plotOptions
private

Option bank.

Definition at line 115 of file plotcontroller.h.

Referenced by GetPlotOptions().

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: