KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_plotter.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 1992-2018 Jean-Pierre Charras jp.charras at wanadoo.fr
5 * Copyright (C) 1992-2010 Lorenzo Marcantonio
6 * Copyright (C) 2011 Wayne Stambaugh <[email protected]>
7 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef SCH_PLOTTER_H
24#define SCH_PLOTTER_H
25
26#include <wx/filename.h>
27#include <wx/string.h>
28#include <wx/gdicmn.h>
29#include <page_info.h>
30#include <sch_render_settings.h>
31#include <sch_sheet_path.h>
32#include <plotters/plotter.h>
34
35class SCH_EDIT_FRAME;
36class PLOTTER;
37class SCHEMATIC;
38class SCH_SCREEN;
40class PDF_PLOTTER;
41class REPORTER;
42class LIB_SYMBOL;
43
50
51
53{
56 std::vector<wxString> m_plotPages;
57
65 wxString m_theme;
66
68 wxString m_outputFile;
69 wxString m_variant;
70
71 // has meaning only with DXF plotter: set DXF units in DXF file
73
76
78 m_plotAll( true ),
79 m_plotDrawingSheet( true ),
80 m_plotHopOver( false ),
81 m_blackAndWhite( false ),
84 m_PDFPropertyPopups( false ),
86 m_PDFMetadata( false ),
87 m_theme(),
92 m_pngAntialias( true )
93 {
94
95 }
96};
97
98
103{
104public:
108 SCH_PLOTTER( SCH_EDIT_FRAME* aFrame );
109
113 SCH_PLOTTER( SCHEMATIC* aSch );
114
123 void Plot( PLOT_FORMAT aPlotFormat, const SCH_PLOT_OPTS& aPlotOpts,
124 SCH_RENDER_SETTINGS* aRenderSettings, REPORTER* aReporter = nullptr );
125
130 wxString GetLastOutputFilePath() const { return m_lastOutputFilePath; }
131
135 const std::vector<wxString>& GetOutputFilePaths() const { return m_outputFilePaths; }
136
137protected:
141 wxFileName getOutputFilenameSingle( const SCH_PLOT_OPTS& aPlotOpts, REPORTER* aReporter,
142 const wxString& ext );
143
144 // PDF
145 void createPDFFile( const SCH_PLOT_OPTS& aPlotOpts, SCH_RENDER_SETTINGS* aRenderSettings,
146 REPORTER* aReporter );
147 void plotOneSheetPDF( PLOTTER* aPlotter, SCH_SCREEN* aScreen, const SCH_PLOT_OPTS& aPlotOpts );
148 void setupPlotPagePDF( PLOTTER* aPlotter, SCH_SCREEN* aScreen, const SCH_PLOT_OPTS& aPlotOpts );
149
150 // DXF
151 void createDXFFiles( const SCH_PLOT_OPTS& aPlotOpts, SCH_RENDER_SETTINGS* aRenderSettings,
152 REPORTER* aReporter );
153 bool plotOneSheetDXF( const wxString& aFileName, SCH_SCREEN* aScreen,
154 RENDER_SETTINGS* aRenderSettings, const VECTOR2I& aPlotOffset,
155 double aScale, const SCH_PLOT_OPTS& aPlotOpts );
156
157
158 // PS
159 void createPSFiles( const SCH_PLOT_OPTS& aPlotOpts, SCH_RENDER_SETTINGS* aRenderSettings,
160 REPORTER* aReporter );
161 bool plotOneSheetPS( const wxString& aFileName, SCH_SCREEN* aScreen,
162 RENDER_SETTINGS* aRenderSettings, const PAGE_INFO& aPageInfo,
163 const VECTOR2I& aPlot0ffset, double aScale,
164 const SCH_PLOT_OPTS& aPlotOpts );
165
166 // SVG
167 void createSVGFiles( const SCH_PLOT_OPTS& aPlotOpts, SCH_RENDER_SETTINGS* aRenderSettings,
168 REPORTER* aReporter );
169 bool plotOneSheetSVG( const wxString& aFileName, SCH_SCREEN* aScreen,
170 RENDER_SETTINGS* aRenderSettings, const SCH_PLOT_OPTS& aPlotOpts );
171
172 // PNG
173 void createPNGFiles( const SCH_PLOT_OPTS& aPlotOpts, SCH_RENDER_SETTINGS* aRenderSettings,
174 REPORTER* aReporter );
175 bool plotOneSheetPNG( const wxString& aFileName, SCH_SCREEN* aScreen,
176 RENDER_SETTINGS* aRenderSettings, const SCH_PLOT_OPTS& aPlotOpts );
177
184 void restoreEnvironment( PDF_PLOTTER* aPlotter, SCH_SHEET_PATH& aOldsheetpath );
185
186
196 wxFileName createPlotFileName( const SCH_PLOT_OPTS& aPlotOpts, const wxString& aPlotFileName,
197 const wxString& aExtension, REPORTER* aReporter = nullptr );
198
199private:
203 std::vector<wxString> m_outputFilePaths;
204};
205
206
218BOX2I GetSymbolPlotBBox( const LIB_SYMBOL& aSymbol, int aUnit, int aBodyStyle, bool aIncludeHiddenFields );
219
220
241bool PlotSymbolToSVG( LIB_SYMBOL& aDrawSymbol, LIB_SYMBOL& aFieldsSymbol, int aUnit, int aBodyStyle, const BOX2I& aBBox,
242 SCH_RENDER_SETTINGS& aRenderSettings, bool aBlackAndWhite, const wxString& aFileName,
243 REPORTER* aReporter = nullptr );
244
245#endif
BOX2< VECTOR2I > BOX2I
Definition box2.h:927
Color settings are a bit different than most of the settings objects in that there can be more than o...
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Define a library symbol object.
Definition lib_symbol.h:119
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition page_info.h:75
Base plotter engine class.
Definition plotter.h:136
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Holds all the data relating to one schematic.
Definition schematic.h:148
Schematic editor (Eeschema) main window.
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)
const std::vector< wxString > & GetOutputFilePaths() const
Get all output file paths generated by the last Plot() call.
wxString m_lastOutputFilePath
void restoreEnvironment(PDF_PLOTTER *aPlotter, SCH_SHEET_PATH &aOldsheetpath)
Everything done, close the plot and restore the environment.
std::vector< wxString > m_outputFilePaths
void createPNGFiles(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
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)
bool plotOneSheetPNG(const wxString &aFileName, SCH_SCREEN *aScreen, RENDER_SETTINGS *aRenderSettings, const SCH_PLOT_OPTS &aPlotOpts)
void createPDFFile(const SCH_PLOT_OPTS &aPlotOpts, SCH_RENDER_SETTINGS *aRenderSettings, REPORTER *aReporter)
wxString GetLastOutputFilePath() const
Get the last output file path, this is mainly intended for PDFs with the open after plot GUI option.
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)
SCHEMATIC * m_schematic
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
DXF_UNITS
Definition plotter.h:51
PLOT_FORMAT
The set of supported output plot formats.
Definition plotter.h:63
constexpr int DEFAULT_PNG_DPI
Definition plotter_png.h:28
@ INCH
Definition rs274x.cpp:58
PageFormatReq
Definition sch_plotter.h:45
@ PAGE_SIZE_AUTO
Definition sch_plotter.h:46
@ PAGE_SIZE_A
Definition sch_plotter.h:48
@ PAGE_SIZE_A4
Definition sch_plotter.h:47
bool PlotSymbolToSVG(LIB_SYMBOL &aDrawSymbol, LIB_SYMBOL &aFieldsSymbol, int aUnit, int aBodyStyle, const BOX2I &aBBox, SCH_RENDER_SETTINGS &aRenderSettings, bool aBlackAndWhite, const wxString &aFileName, REPORTER *aReporter=nullptr)
Plot a single symbol variant (unit and body style) to an SVG file.
BOX2I GetSymbolPlotBBox(const LIB_SYMBOL &aSymbol, int aUnit, int aBodyStyle, bool aIncludeHiddenFields)
Compute the bounding box used to size a symbol SVG plot.
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
std::vector< wxString > m_plotPages
Definition sch_plotter.h:56
wxString m_theme
Definition sch_plotter.h:65
DXF_UNITS m_DXF_File_Unit
Definition sch_plotter.h:72
bool m_PDFPropertyPopups
Definition sch_plotter.h:62
wxString m_outputDirectory
Definition sch_plotter.h:67
bool m_pngAntialias
Definition sch_plotter.h:75
wxString m_outputFile
Definition sch_plotter.h:68
bool m_blackAndWhite
Definition sch_plotter.h:59
wxString m_variant
Definition sch_plotter.h:69
bool m_PDFHierarchicalLinks
Definition sch_plotter.h:63
bool m_useBackgroundColor
Definition sch_plotter.h:61
bool m_plotDrawingSheet
Definition sch_plotter.h:55
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683