KiCad PCB EDA Suite
common_plot_functions.cpp File Reference
#include <eda_item.h>
#include <font/font.h>
#include <plotters/plotter_dxf.h>
#include <plotters/plotter_hpgl.h>
#include <plotters/plotters_pslike.h>
#include <plotters/plotter_gerber.h>
#include <drawing_sheet/ds_data_item.h>
#include <drawing_sheet/ds_draw_item.h>
#include <title_block.h>
#include <wx/filename.h>

Go to the source code of this file.

Functions

wxString GetDefaultPlotExtension (PLOT_FORMAT aFormat)
 Returns the default plot extension for a format. More...
 
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)
 

Function Documentation

◆ GetDefaultPlotExtension()

wxString GetDefaultPlotExtension ( PLOT_FORMAT  aFormat)

Returns the default plot extension for a format.

Definition at line 37 of file common_plot_functions.cpp.

38{
39 switch( aFormat )
40 {
53 default:
54 wxASSERT( false );
55 return wxEmptyString;
56 }
57}
static wxString GetDefaultFileExtension()
Definition: plotter_dxf.h:47
static wxString GetDefaultFileExtension()
static wxString GetDefaultFileExtension()
Definition: plotter_hpgl.h:43
static wxString GetDefaultFileExtension()
static wxString GetDefaultFileExtension()
static wxString GetDefaultFileExtension()

References DXF, GERBER, DXF_PLOTTER::GetDefaultFileExtension(), GERBER_PLOTTER::GetDefaultFileExtension(), HPGL_PLOTTER::GetDefaultFileExtension(), PS_PLOTTER::GetDefaultFileExtension(), PDF_PLOTTER::GetDefaultFileExtension(), SVG_PLOTTER::GetDefaultFileExtension(), HPGL, PDF, POST, and SVG.

Referenced by GENDRILL_WRITER_BASE::CreateMapFilesSet(), PCBNEW_JOBS_HANDLER::JobExportDxf(), PCBNEW_JOBS_HANDLER::JobExportGerber(), PCBNEW_JOBS_HANDLER::JobExportPdf(), PLOT_CONTROLLER::OpenPlotfile(), and DIALOG_PLOT::Plot().

◆ PlotDrawingSheet()

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 
)

Definition at line 60 of file common_plot_functions.cpp.

65{
66 /* Note: Page sizes values are given in mils
67 */
68 double iusPerMil = plotter->GetIUsPerDecimil() * 10.0;
69 COLOR4D plotColor = plotter->GetColorMode() ? aColor : COLOR4D::BLACK;
70 RENDER_SETTINGS* settings = plotter->RenderSettings();
71 int defaultPenWidth = settings->GetDefaultPenWidth();
72
73 if( plotColor == COLOR4D::UNSPECIFIED )
74 plotColor = COLOR4D( RED );
75
76 plotter->SetColor( plotColor );
77 DS_DRAW_ITEM_LIST drawList;
78
79 // Print only a short filename, if aFilename is the full filename
80 wxFileName fn( aFilename );
81
82 // Prepare plot parameters
84 drawList.SetMilsToIUfactor( iusPerMil );
85 drawList.SetPageNumber( aSheetNumber );
86 drawList.SetSheetCount( aSheetCount );
87 drawList.SetFileName( fn.GetFullName() ); // Print only the short filename
88 drawList.SetSheetName( aSheetName );
89 drawList.SetSheetPath( aSheetPath );
90 drawList.SetSheetLayer( settings->GetLayerName() );
91 drawList.SetProject( aProject );
92 drawList.SetIsFirstPage( aIsFirstPage );
93 drawList.SetProperties( aProperties );
94
95 drawList.BuildDrawItemsList( aPageInfo, aTitleBlock );
96
97 // Draw item list
98 for( DS_DRAW_ITEM_BASE* item = drawList.GetFirst(); item; item = drawList.GetNext() )
99 {
101
102 switch( item->Type() )
103 {
104 case WSG_LINE_T:
105 {
106 DS_DRAW_ITEM_LINE* line = (DS_DRAW_ITEM_LINE*) item;
107 plotter->SetCurrentLineWidth( std::max( line->GetPenWidth(), defaultPenWidth ) );
108 plotter->MoveTo( line->GetStart() );
109 plotter->FinishTo( line->GetEnd() );
110 }
111 break;
112
113 case WSG_RECT_T:
114 {
115 DS_DRAW_ITEM_RECT* rect = (DS_DRAW_ITEM_RECT*) item;
116 plotter->SetCurrentLineWidth( std::max( rect->GetPenWidth(), defaultPenWidth ) );
117 plotter->MoveTo( rect->GetStart() );
118 plotter->LineTo( VECTOR2I( rect->GetEnd().x, rect->GetStart().y ) );
119 plotter->LineTo( VECTOR2I( rect->GetEnd().x, rect->GetEnd().y ) );
120 plotter->LineTo( VECTOR2I( rect->GetStart().x, rect->GetEnd().y ) );
121 plotter->FinishTo( rect->GetStart() );
122 }
123 break;
124
125 case WSG_TEXT_T:
126 {
128 KIFONT::FONT* font = text->GetFont();
129
130 if( !font )
131 {
132 font = KIFONT::FONT::GetFont( settings->GetDefaultFont(), text->IsBold(),
133 text->IsItalic() );
134 }
135
136 int penWidth = std::max( text->GetEffectiveTextPenWidth(), defaultPenWidth );
137
138 plotter->Text( text->GetTextPos(), plotColor, text->GetShownText(),
139 text->GetTextAngle(), text->GetTextSize(), text->GetHorizJustify(),
140 text->GetVertJustify(), penWidth, text->IsItalic(), text->IsBold(),
141 text->IsMultilineAllowed(), font );
142 }
143 break;
144
145 case WSG_POLY_T:
146 {
148 int penWidth = std::max( poly->GetPenWidth(), defaultPenWidth );
149 std::vector<VECTOR2I> points;
150
151 for( int idx = 0; idx < poly->GetPolygons().OutlineCount(); ++idx )
152 {
153 points.clear();
154 SHAPE_LINE_CHAIN& outline = poly->GetPolygons().Outline( idx );
155
156 for( int ii = 0; ii < outline.PointCount(); ii++ )
157 points.emplace_back( outline.CPoint( ii ).x, outline.CPoint( ii ).y );
158
159 plotter->PlotPoly( points, FILL_T::FILLED_SHAPE, penWidth );
160 }
161 }
162 break;
163
164 case WSG_BITMAP_T:
165 {
166 DS_DRAW_ITEM_BITMAP* drawItem = (DS_DRAW_ITEM_BITMAP*) item;
167 DS_DATA_ITEM_BITMAP* bitmap = (DS_DATA_ITEM_BITMAP*) drawItem->GetPeer();
168
169 if( bitmap->m_ImageBitmap == nullptr )
170 break;
171
172 bitmap->m_ImageBitmap->PlotImage( plotter, drawItem->GetPosition(), plotColor,
174 }
175 break;
176
177 default:
178 wxFAIL_MSG( "PlotDrawingSheet(): Unknown drawing sheet item." );
179 break;
180 }
181 }
182}
void PlotImage(PLOTTER *aPlotter, const VECTOR2I &aPos, const KIGFX::COLOR4D &aDefaultColor, int aDefaultPensize) const
Plot bitmap on plotter.
BITMAP_BASE * m_ImageBitmap
Definition: ds_data_item.h:370
Base class to handle basic graphic items.
Definition: ds_draw_item.h:59
virtual int GetPenWidth() const
Definition: ds_draw_item.h:70
DS_DATA_ITEM * GetPeer() const
Definition: ds_draw_item.h:63
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:357
const VECTOR2I & GetStart() const
Definition: ds_draw_item.h:133
const VECTOR2I & GetEnd() const
Definition: ds_draw_item.h:135
Store the list of graphic items: rect, lines, polygons and texts to draw/plot the title block and fra...
Definition: ds_draw_item.h:385
DS_DRAW_ITEM_BASE * GetFirst()
Definition: ds_draw_item.h:483
void BuildDrawItemsList(const PAGE_INFO &aPageInfo, const TITLE_BLOCK &aTitleBlock)
Drawing or plot the drawing sheet.
void SetSheetPath(const wxString &aSheetPath)
Set the sheet path to draw/plot.
Definition: ds_draw_item.h:437
void SetFileName(const wxString &aFileName)
Set the filename to draw/plot.
Definition: ds_draw_item.h:427
void SetDefaultPenSize(int aPenSize)
Definition: ds_draw_item.h:444
void SetSheetName(const wxString &aSheetName)
Set the sheet name to draw/plot.
Definition: ds_draw_item.h:432
void SetIsFirstPage(bool aIsFirstPage)
Set if the page is the first page.
Definition: ds_draw_item.h:465
void SetProperties(const std::map< wxString, wxString > *aProps)
Set properties used for text variable resolution.
Definition: ds_draw_item.h:417
void SetSheetLayer(const wxString &aSheetLayer)
Set the sheet layer to draw/plot.
Definition: ds_draw_item.h:442
void SetSheetCount(int aSheetCount)
Set the value of the count of sheets, for basic inscriptions.
Definition: ds_draw_item.h:470
void SetPageNumber(const wxString &aPageNumber)
Set the value of the sheet number.
Definition: ds_draw_item.h:460
DS_DRAW_ITEM_BASE * GetNext()
Definition: ds_draw_item.h:493
void SetMilsToIUfactor(double aMils2Iu)
Set the scalar to convert pages units (mils) to draw/plot units.
Definition: ds_draw_item.h:450
void SetProject(const PROJECT *aProject)
Definition: ds_draw_item.h:407
SHAPE_POLY_SET & GetPolygons()
Definition: ds_draw_item.h:171
Non filled rectangle with thick segment.
Definition: ds_draw_item.h:208
const VECTOR2I & GetEnd() const
Definition: ds_draw_item.h:223
const VECTOR2I & GetStart() const
Definition: ds_draw_item.h:221
A graphic text.
Definition: ds_draw_item.h:303
FONT is an abstract base class for both outline and stroke fonts.
Definition: font.h:105
static FONT * GetFont(const wxString &aFontName=wxEmptyString, bool aBold=false, bool aItalic=false)
Definition: font.cpp:65
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
int GetDefaultPenWidth() const
const wxString & GetDefaultFont() const
const wxString & GetLayerName() const
static const int USE_DEFAULT_LINE_WIDTH
Definition: plotter.h:114
void MoveTo(const VECTOR2I &pos)
Definition: plotter.h:247
void FinishTo(const VECTOR2I &pos)
Definition: plotter.h:257
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:141
double GetIUsPerDecimil() const
The IUs per decimil are an essential scaling factor when plotting; they are set and saved when establ...
Definition: plotter.h:210
virtual void Text(const VECTOR2I &aPos, const COLOR4D &aColor, const wxString &aText, const EDA_ANGLE &aOrient, const VECTOR2I &aSize, enum GR_TEXT_H_ALIGN_T aH_justify, enum GR_TEXT_V_ALIGN_T aV_justify, int aPenWidth, bool aItalic, bool aBold, bool aMultilineAllowed, KIFONT::FONT *aFont, void *aData=nullptr)
Draw text with the plotter.
Definition: plotter.cpp:714
bool GetColorMode() const
Definition: plotter.h:138
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
void LineTo(const VECTOR2I &pos)
Definition: plotter.h:252
virtual void PlotPoly(const std::vector< VECTOR2I > &aCornerList, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH, void *aData=nullptr)=0
Draw a polygon ( filled or not ).
virtual void SetColor(const COLOR4D &color)=0
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
int PointCount() const
Return the number of points (vertices) in this line chain.
const VECTOR2I & CPoint(int aIndex) const
Return a reference to a given point in the line chain.
SHAPE_LINE_CHAIN & Outline(int aIndex)
@ BLACK
Definition: color4d.h:44
@ RED
Definition: color4d.h:59
@ FILLED_SHAPE
@ WSG_POLY_T
Definition: typeinfo.h:222
@ WSG_LINE_T
Definition: typeinfo.h:220
@ WSG_TEXT_T
Definition: typeinfo.h:223
@ WSG_RECT_T
Definition: typeinfo.h:221
@ WSG_BITMAP_T
Definition: typeinfo.h:224
VECTOR2< int > VECTOR2I
Definition: vector2d.h:618

References BLACK, DS_DRAW_ITEM_LIST::BuildDrawItemsList(), SHAPE_LINE_CHAIN::CPoint(), FILLED_SHAPE, PLOTTER::FinishTo(), PLOTTER::GetColorMode(), KIGFX::RENDER_SETTINGS::GetDefaultFont(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), DS_DRAW_ITEM_LINE::GetEnd(), DS_DRAW_ITEM_RECT::GetEnd(), DS_DRAW_ITEM_LIST::GetFirst(), KIFONT::FONT::GetFont(), PLOTTER::GetIUsPerDecimil(), KIGFX::RENDER_SETTINGS::GetLayerName(), DS_DRAW_ITEM_LIST::GetNext(), DS_DRAW_ITEM_BASE::GetPeer(), DS_DRAW_ITEM_BASE::GetPenWidth(), DS_DRAW_ITEM_POLYPOLYGONS::GetPolygons(), DS_DRAW_ITEM_BITMAP::GetPosition(), DS_DRAW_ITEM_LINE::GetStart(), DS_DRAW_ITEM_RECT::GetStart(), PLOTTER::LineTo(), DS_DATA_ITEM_BITMAP::m_ImageBitmap, PLOTTER::MoveTo(), SHAPE_POLY_SET::Outline(), BITMAP_BASE::PlotImage(), PLOTTER::PlotPoly(), SHAPE_LINE_CHAIN::PointCount(), RED, PLOTTER::RenderSettings(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), DS_DRAW_ITEM_LIST::SetDefaultPenSize(), DS_DRAW_ITEM_LIST::SetFileName(), DS_DRAW_ITEM_LIST::SetIsFirstPage(), DS_DRAW_ITEM_LIST::SetMilsToIUfactor(), DS_DRAW_ITEM_LIST::SetPageNumber(), DS_DRAW_ITEM_LIST::SetProject(), DS_DRAW_ITEM_LIST::SetProperties(), DS_DRAW_ITEM_LIST::SetSheetCount(), DS_DRAW_ITEM_LIST::SetSheetLayer(), DS_DRAW_ITEM_LIST::SetSheetName(), DS_DRAW_ITEM_LIST::SetSheetPath(), text, PLOTTER::Text(), PLOTTER::USE_DEFAULT_LINE_WIDTH, WSG_BITMAP_T, WSG_LINE_T, WSG_POLY_T, WSG_RECT_T, WSG_TEXT_T, VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by SCH_PLOTTER::plotOneSheetDXF(), SCH_PLOTTER::plotOneSheetHpgl(), SCH_PLOTTER::plotOneSheetPDF(), SCH_PLOTTER::plotOneSheetPS(), SCH_PLOTTER::plotOneSheetSVG(), and StartPlotBoard().