65                                                 REPORTER* aReporter, 
const wxString& aExt )
 
   73        wxString fname = 
m_schematic->GetUniqueFilenameForCurrentSheet();
 
   78        fname.Replace( 
"/", 
"_" );
 
   79        fname.Replace( 
"\\", 
"_" );
 
 
  111        sheetList.push_back( 
m_schematic->CurrentSheet() );
 
  114    if( sheetList.empty() )
 
  133    wxFileName plotFileName;
 
  135    for( 
unsigned i = 0; i < sheetList.size(); i++ )
 
  138        m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
  142        wxString    sheetName = sheetList[i].Last()->GetField( 
FIELD_T::SHEET_NAME )->GetShownText( 
false );
 
  146            msg = wxS( 
"AUTHOR" );
 
  148            if( 
m_schematic->ResolveTextVar( &sheetList[i], &msg, 0 ) )
 
  151            msg = wxS( 
"SUBJECT" );
 
  153            if( 
m_schematic->ResolveTextVar( &sheetList[i], &msg, 0 ) )
 
  166                if( !plotFileName.IsOk() )
 
  169                if( !plotter->
OpenFile( plotFileName.GetFullPath() ) )
 
  173                        msg.Printf( 
_( 
"Failed to create file '%s'." ),
 
  174                                    plotFileName.GetFullPath() );
 
  184                plotter->
StartPlot( sheetList[i].GetPageNumber(), sheetName );
 
  191                    msg.Printf( wxT( 
"PDF Plotter exception: %s" ), e.
What() );
 
  207            if( parentSheet.
size() > 1 )
 
  214            wxString parentSheetName =
 
  217            plotter->
StartPage( sheetList[i].GetPageNumber(), sheetName,
 
  227        msg.Printf( 
_( 
"Plotted to '%s'.\n" ), plotFileName.GetFullPath() );
 
 
  258        wxString sheetName = 
m_schematic->CurrentSheet().Last()->GetName();
 
  259        wxString sheetPath = 
m_schematic->CurrentSheet().PathHumanReadable();
 
  270    aScreen->
Plot( aPlotter, aPlotOpts );
 
 
  285        plotPage.
SetType( wxT( 
"A" ) );
 
  290        plotPage.
SetType( wxT( 
"A4" ) );
 
  296        plotPage = actualPage;
 
  302    double  scale   = std::min( scalex, scaley );
 
 
  338        sheetList.push_back( 
m_schematic->CurrentSheet() );
 
  341    for( 
unsigned i = 0; i < sheetList.size(); i++ )
 
  344        m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
  353            plotPage.
SetType( wxT( 
"A" ) );
 
  358            plotPage.
SetType( wxT( 
"A4" ) );
 
  364            plotPage = actualPage;
 
  370        double  scale = std::min( scalex, scaley );
 
  375            wxString fname = 
m_schematic->GetUniqueFilenameForCurrentSheet();
 
  380            fname.Replace( 
"/", 
"_" );
 
  381            fname.Replace( 
"\\", 
"_" );
 
  387            if( !plotFileName.IsOk() )
 
  392                    msg.Printf( 
_( 
"Failed to create file '%s'." ), plotFileName.GetFullPath() );
 
  396            else if( 
plotOneSheetPS( plotFileName.GetFullPath(), screen, aRenderSettings,
 
  397                                     actualPage, plot_offset, 
scale, aPlotOpts ) )
 
  401                    msg.Printf( 
_( 
"Plotted to '%s'." ), plotFileName.GetFullPath() );
 
  410                    msg.Printf( 
_( 
"Failed to create file '%s'." ), plotFileName.GetFullPath() );
 
  419                msg.Printf( wxT( 
"PS Plotter exception: %s" ), e.
What() );
 
 
  434                                  const VECTOR2I& aPlot0ffset, 
double aScale,
 
  448    if( !plotter->
OpenFile( aFileName ) )
 
  470        wxString sheetName = 
m_schematic->CurrentSheet().Last()->GetName();
 
  471        wxString sheetPath = 
m_schematic->CurrentSheet().PathHumanReadable();
 
  482    aScreen->
Plot( plotter, aPlotOpts );
 
 
  512        sheetList.push_back( 
m_schematic->CurrentSheet() );
 
  515    for( 
unsigned i = 0; i < sheetList.size(); i++ )
 
  520        m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
  527            wxString fname = 
m_schematic->GetUniqueFilenameForCurrentSheet();
 
  532            fname.Replace( 
"/", 
"_" );
 
  533            fname.Replace( 
"\\", 
"_" );
 
  539            if( !plotFileName.IsOk() )
 
  542            bool success = 
plotOneSheetSVG( plotFileName.GetFullPath(), screen, aRenderSettings,
 
  549                    msg.Printf( 
_( 
"Failed to create file '%s'." ), plotFileName.GetFullPath() );
 
  557                    msg.Printf( 
_( 
"Plotted to '%s'." ), plotFileName.GetFullPath() );
 
  567                msg.Printf( wxT( 
"SVG Plotter exception: %s" ), e.
What() );
 
 
  595        plotPage.
SetType( wxT( 
"A" ) );
 
  600        plotPage.
SetType( wxT( 
"A4" ) );
 
  606        plotPage = actualPage;
 
  618    double  scale = std::min( scalex, scaley );
 
  626    if( !plotter->
OpenFile( aFileName ) )
 
  647        wxString sheetName = 
m_schematic->CurrentSheet().Last()->GetName();
 
  648        wxString sheetPath = 
m_schematic->CurrentSheet().PathHumanReadable();
 
  660    aScreen->
Plot( plotter, aPlotOpts );
 
 
  693        sheetList.push_back( 
m_schematic->CurrentSheet() );
 
  696    for( 
unsigned i = 0; i < sheetList.size(); i++ )
 
  699        m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
  708            wxString fname = 
m_schematic->GetUniqueFilenameForCurrentSheet();
 
  713            fname.Replace( 
"/", 
"_" );
 
  714            fname.Replace( 
"\\", 
"_" );
 
  720            if( !plotFileName.IsOk() )
 
  723            if( 
plotOneSheetDXF( plotFileName.GetFullPath(), screen, aRenderSettings, plot_offset,
 
  728                    msg.Printf( 
_( 
"Plotted to '%s'." ), plotFileName.GetFullPath() );
 
  736                    msg.Printf( 
_( 
"Failed to create file '%s'." ), plotFileName.GetFullPath() );
 
  745                msg.Printf( wxT( 
"DXF Plotter exception: %s" ), e.
What() );
 
  750            m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
 
  785    if( !plotter->
OpenFile( aFileName ) )
 
  795        wxString sheetName = 
m_schematic->CurrentSheet().Last()->GetName();
 
  796        wxString sheetPath = 
m_schematic->CurrentSheet().PathHumanReadable();
 
  808    aScreen->
Plot( plotter, aPlotOpts );
 
 
  828    m_schematic->CurrentSheet().UpdateAllScreenReferences();
 
 
  834                                            const wxString& aPlotFileName,
 
  835                                            const wxString& aExtension, 
REPORTER* aReporter )
 
  841    retv.SetPath( tmp.GetPath() );
 
  843    if( !aPlotFileName.IsEmpty() )
 
  844        retv.SetName( aPlotFileName );
 
  846        retv.SetName( 
_( 
"Schematic" ) );
 
  848    retv.SetExt( aExtension );
 
  854            wxString msg = wxString::Format( 
_( 
"Failed to write plot files to folder '%s'." ),
 
  866        retv.SetPath( tmp.GetPath() );
 
 
  880    switch( aPlotFormat )
 
 
constexpr EDA_IU_SCALE schIUScale
 
int GetVirtualPageNumber() const
 
const wxString & GetPageNumber() const
 
static const COLOR4D BLACK
 
static wxString GetDefaultFileExtension()
 
void SetUnits(DXF_UNITS aUnit)
Set the units to use for plotting the DXF file.
 
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror) override
Set the scale/position for the DXF plot.
 
virtual bool StartPlot(const wxString &aPageNumber) override
Open the DXF plot with a skeleton header.
 
virtual bool EndPlot() override
 
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
 
virtual const wxString What() const
A composite of Problem() and Where()
 
A color representation with 4 components: red, green, blue, alpha.
 
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
 
void SetDefaultPenWidth(int aWidth)
 
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
 
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
 
virtual const COLOR4D & GetBackgroundColor() const =0
Return current background color settings.
 
Describe the page size and margins of a paper page on which to eventually print or plot.
 
void SetPortrait(bool aIsPortrait)
Rotate the paper page 90 degrees.
 
int GetHeightIU(double aIUScale) const
Gets the page height in IU.
 
bool SetType(PAGE_SIZE_TYPE aPageSize, bool aIsPortrait=false)
Set the name of the page type and also the sizes and margins commonly associated with that type name.
 
double GetHeightMils() const
 
int GetWidthIU(double aIUScale) const
Gets the page width in IU.
 
double GetWidthMils() const
 
virtual void ClosePage()
Close the current page in the PDF document (and emit its compressed stream).
 
virtual bool EndPlot() override
 
virtual bool OpenFile(const wxString &aFullFilename) override
Open or create the plot file aFullFilename.
 
virtual bool StartPlot(const wxString &aPageNumber) override
The PDF engine supports multiple pages; the first one is opened 'for free' the following are to be cl...
 
static wxString GetDefaultFileExtension()
 
virtual void StartPage(const wxString &aPageNumber, const wxString &aPageName=wxEmptyString, const wxString &aParentPageNumber=wxEmptyString, const wxString &aParentPageName=wxEmptyString)
Start a new page in the PDF document.
 
Base plotter engine class.
 
virtual bool OpenFile(const wxString &aFullFilename)
Open or create the plot file aFullFilename.
 
virtual void SetAuthor(const wxString &aAuthor)
 
virtual void SetPageSettings(const PAGE_INFO &aPageSettings)
 
void SetRenderSettings(RENDER_SETTINGS *aSettings)
 
virtual void SetTitle(const wxString &aTitle)
 
RENDER_SETTINGS * RenderSettings()
 
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0)=0
 
virtual void SetCreator(const wxString &aCreator)
 
bool GetColorMode() const
 
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror)=0
Set the plot offset and scaling for the current plot.
 
virtual void SetColorMode(bool aColorMode)
Plot in B/W or color.
 
virtual void SetSubject(const wxString &aSubject)
 
virtual void SetColor(const COLOR4D &color)=0
 
virtual void SetColor(const COLOR4D &color) override
The SetColor implementation is split with the subclasses: the PSLIKE computes the rgb values,...
 
virtual bool EndPlot() override
 
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0) override
 
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror) override
Set the plot offset and scaling for the current plot.
 
virtual bool StartPlot(const wxString &aPageNumber) override
The code within this function (and the CloseFilePS function) creates postscript files whose contents ...
 
static wxString GetDefaultFileExtension()
 
A pure virtual class used to derive REPORTER objects from.
 
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Report a string with a given severity.
 
virtual REPORTER & ReportTail(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Places the report at the end of the list, for objects that support report ordering.
 
These are loaded from Eeschema settings but then overwritten by the project settings.
 
wxString m_PlotDirectoryName
 
Holds all the data relating to one schematic.
 
PROJECT & Project() const
Return a reference to the project this schematic is part of.
 
const std::map< wxString, wxString > * GetProperties()
 
Schematic editor (Eeschema) main window.
 
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0) const
 
void Plot(PLOT_FORMAT aPlotFormat, const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter=nullptr)
Perform the plotting of the schematic using the given aPlotFormat and a\ aPlotSettings.
 
wxFileName getOutputFilenameSingle(const SCH_PLOT_OPTS &aPlotOpts, REPORTER *aReporter, const wxString &ext)
Return the output filename for formats where the output is a single file.
 
void createSVGFiles(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
 
void createPSFiles(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
 
void plotOneSheetPDF(PLOTTER *aPlotter, SCH_SCREEN *aScreen, const SCH_PLOT_OPTS &aPlotOpts)
 
wxFileName createPlotFileName(const SCH_PLOT_OPTS &aPlotOpts, const wxString &aPlotFileName, const wxString &aExtension, REPORTER *aReporter=nullptr)
Create a file name with an absolute path name.
 
SCH_PLOTTER(SCH_EDIT_FRAME *aFrame)
Constructor for usage with a frame having the schematic we want to print loaded.
 
bool plotOneSheetDXF(const wxString &aFileName, SCH_SCREEN *aScreen, RENDER_SETTINGS *aRenderSettings, const VECTOR2I &aPlotOffset, double aScale, const SCH_PLOT_OPTS &aPlotOpts)
 
void createDXFFiles(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
 
wxString m_lastOutputFilePath
 
void restoreEnvironment(PDF_PLOTTER *aPlotter, SCH_SHEET_PATH &aOldsheetpath)
Everything done, close the plot and restore the environment.
 
bool plotOneSheetSVG(const wxString &aFileName, SCH_SCREEN *aScreen, RENDER_SETTINGS *aRenderSettings, const SCH_PLOT_OPTS &aPlotOpts)
 
void setupPlotPagePDF(PLOTTER *aPlotter, SCH_SCREEN *aScreen, const SCH_PLOT_OPTS &aPlotOpts)
 
void createPDFFile(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
 
COLOR_SETTINGS * m_colorSettings
 
bool plotOneSheetPS(const wxString &aFileName, SCH_SCREEN *aScreen, RENDER_SETTINGS *aRenderSettings, const PAGE_INFO &aPageInfo, const VECTOR2I &aPlot0ffset, double aScale, const SCH_PLOT_OPTS &aPlotOpts)
 
const PAGE_INFO & GetPageSettings() const
 
const wxString & GetFileName() const
 
SCHEMATIC * Schematic() const
 
const TITLE_BLOCK & GetTitleBlock() const
 
void Plot(PLOTTER *aPlotter, const SCH_PLOT_OPTS &aPlotOpts) const
Plot all the schematic objects to aPlotter.
 
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
 
void TrimToPageNumbers(const std::vector< wxString > &aPageInclusions)
Truncates the list by removing sheet's with page numbers not in the given list.
 
void SortByPageNumbers(bool aUpdateVirtualPageNums=true)
Sort the list of sheets by page number.
 
void SortByHierarchicalPageNumbers(bool aUpdateVirtualPageNums=true)
This works like SortByPageNumbers, but it sorts the sheets first by their hierarchical depth and then...
 
void BuildSheetList(SCH_SHEET *aSheet, bool aCheckIntegrity)
Build the list of sheets and their sheet path from aSheet.
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
wxString GetPageNumber() const
 
SCH_SHEET * Last() const
Return a pointer to the last SCH_SHEET of the list.
 
size_t size() const
Forwarded method from std::vector.
 
void pop_back()
Forwarded method from std::vector.
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this sheet.
 
virtual bool StartPlot(const wxString &aPageNumber) override
Create SVG file header.
 
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror) override
Set the plot offset and scaling for the current plot.
 
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0) override
 
virtual bool EndPlot() override
 
static wxString GetDefaultFileExtension()
 
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject, int aFlags)
 
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.
 
void PlotDrawingSheet(PLOTTER *plotter, const PROJECT *aProject, const TITLE_BLOCK &aTitleBlock, const PAGE_INFO &aPageInfo, const std::map< wxString, wxString > *aProperties, const wxString &aSheetNumber, int aSheetCount, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aFilename, COLOR4D aColor, bool aIsFirstPage)
 
@ FILLED_SHAPE
Fill with object color.
 
const wxChar *const tracePathsAndFiles
Flag to enable path and file name debug output.
 
@ LAYER_SCHEMATIC_DRAWINGSHEET
 
@ LAYER_SCHEMATIC_BACKGROUND
 
PLOT_FORMAT
The set of supported output plot formats.
 
Plotting engines similar to ps (PostScript, Gerber, svg)
 
COLOR_SETTINGS * GetColorSettings(const wxString &aName)
 
std::vector< wxString > m_plotPages
 
DXF_UNITS m_DXF_File_Unit
 
wxString m_outputDirectory
 
bool m_useBackgroundColor
 
wxLogTrace helper definitions.
 
VECTOR2< int32_t > VECTOR2I