KiCad PCB EDA Suite
BRDITEMS_PLOTTER Class Reference

#include <pcbplot.h>

Inheritance diagram for BRDITEMS_PLOTTER:
PCB_PLOT_PARAMS

Public Types

enum  DrillMarksType { NO_DRILL_SHAPE = 0, SMALL_DRILL_SHAPE = 1, FULL_DRILL_SHAPE = 2 }
 

Public Member Functions

 BRDITEMS_PLOTTER (PLOTTER *aPlotter, BOARD *aBoard, const PCB_PLOT_PARAMS &aPlotOpts)
 
int getFineWidthAdj () const
 
void SetLayerSet (LSET aLayerMask)
 
void PlotFootprintGraphicItems (const FOOTPRINT *aFootprint)
 
void PlotFootprintGraphicItem (const FP_SHAPE *aShape)
 
void PlotFootprintTextItem (const FP_TEXT *aText, const COLOR4D &aColor)
 
void PlotFootprintTextItems (const FOOTPRINT *aFootprint)
 
void PlotDimension (const PCB_DIMENSION_BASE *aDim)
 
void PlotPcbTarget (const PCB_TARGET *aMire)
 
void PlotFilledAreas (const ZONE *aZone, const SHAPE_POLY_SET &aPolysList)
 
void PlotPcbText (const PCB_TEXT *aText)
 
void PlotPcbShape (const PCB_SHAPE *aShape)
 
void PlotPad (const PAD *aPad, const COLOR4D &aColor, OUTLINE_MODE aPlotMode)
 Plot a pad. More...
 
void PlotBoardGraphicItems ()
 Plot items like text and graphics but not tracks and footprints. More...
 
void PlotDrillMarks ()
 Draw a drill mark for pads and vias. More...
 
COLOR4D getColor (LAYER_NUM aLayer) const
 White color is special because it cannot be seen on a white paper in B&W mode. More...
 
void SetSkipPlotNPTH_Pads (bool aSkip)
 
bool GetSkipPlotNPTH_Pads () const
 
void Format (OUTPUTFORMATTER *aFormatter, int aNestLevel, int aControl=0) const
 
void Parse (PCB_PLOT_PARAMS_PARSER *aParser)
 
bool IsSameAs (const PCB_PLOT_PARAMS &aPcbPlotParams) const
 Compare current settings to aPcbPlotParams, including not saved parameters in brd file. More...
 
void SetColorSettings (COLOR_SETTINGS *aSettings)
 
COLOR_SETTINGSColorSettings () const
 
void SetTextMode (PLOT_TEXT_MODE aVal)
 
PLOT_TEXT_MODE GetTextMode () const
 
void SetPlotMode (OUTLINE_MODE aPlotMode)
 
OUTLINE_MODE GetPlotMode () const
 
void SetDXFPlotPolygonMode (bool aFlag)
 
bool GetDXFPlotPolygonMode () const
 
void SetDXFPlotUnits (DXF_UNITS aUnit)
 
DXF_UNITS GetDXFPlotUnits () const
 
void SetDrillMarksType (DrillMarksType aVal)
 
DrillMarksType GetDrillMarksType () const
 
void SetScale (double aVal)
 
double GetScale () const
 
void SetFineScaleAdjustX (double aVal)
 
double GetFineScaleAdjustX () const
 
void SetFineScaleAdjustY (double aVal)
 
double GetFineScaleAdjustY () const
 
void SetWidthAdjust (int aVal)
 
int GetWidthAdjust () const
 
void SetAutoScale (bool aFlag)
 
bool GetAutoScale () const
 
void SetMirror (bool aFlag)
 
bool GetMirror () const
 
void SetSketchPadsOnFabLayers (bool aFlag)
 
bool GetSketchPadsOnFabLayers () const
 
void SetSketchPadLineWidth (int aWidth)
 
int GetSketchPadLineWidth () const
 
void SetPlotInvisibleText (bool aFlag)
 
bool GetPlotInvisibleText () const
 
void SetPlotValue (bool aFlag)
 
bool GetPlotValue () const
 
void SetPlotReference (bool aFlag)
 
bool GetPlotReference () const
 
void SetNegative (bool aFlag)
 
bool GetNegative () const
 
void SetPlotViaOnMaskLayer (bool aFlag)
 
bool GetPlotViaOnMaskLayer () const
 
void SetPlotFrameRef (bool aFlag)
 
bool GetPlotFrameRef () const
 
void SetExcludeEdgeLayer (bool aFlag)
 
bool GetExcludeEdgeLayer () const
 
void SetFormat (PLOT_FORMAT aFormat)
 
PLOT_FORMAT GetFormat () const
 
void SetOutputDirectory (const wxString &aDir)
 
wxString GetOutputDirectory () const
 
void SetDisableGerberMacros (bool aDisable)
 
bool GetDisableGerberMacros () const
 
void SetUseGerberX2format (bool aUse)
 
bool GetUseGerberX2format () const
 
void SetIncludeGerberNetlistInfo (bool aUse)
 
bool GetIncludeGerberNetlistInfo () const
 
void SetCreateGerberJobFile (bool aCreate)
 
bool GetCreateGerberJobFile () const
 
void SetUseGerberProtelExtensions (bool aUse)
 
bool GetUseGerberProtelExtensions () const
 
void SetGerberPrecision (int aPrecision)
 
int GetGerberPrecision () const
 
void SetSvgPrecision (unsigned aPrecision, bool aUseInch)
 
unsigned GetSvgPrecision () const
 
bool GetSvgUseInch () const
 
void SetSubtractMaskFromSilk (bool aSubtract)
 
bool GetSubtractMaskFromSilk () const
 
void SetLayerSelection (LSET aSelection)
 
LSET GetLayerSelection () const
 
void SetUseAuxOrigin (bool aAux)
 
bool GetUseAuxOrigin () const
 
void SetScaleSelection (int aSelection)
 
int GetScaleSelection () const
 
void SetA4Output (int aForce)
 
bool GetA4Output () const
 
double GetHPGLPenDiameter () const
 
bool SetHPGLPenDiameter (double aValue)
 
int GetHPGLPenSpeed () const
 
bool SetHPGLPenSpeed (int aValue)
 
void SetHPGLPenNum (int aVal)
 
int GetHPGLPenNum () const
 

Static Public Member Functions

static int GetGerberDefaultPrecision ()
 Default precision of coordinates in Gerber files. More...
 

Private Member Functions

void plotOneDrillMark (PAD_DRILL_SHAPE_T aDrillShape, const wxPoint &aDrillPos, const wxSize &aDrillSize, const wxSize &aPadSize, double aOrientation, int aSmallDrill)
 Helper function to plot a single drill mark. More...
 

Private Attributes

PLOTTERm_plotter
 
BOARDm_board
 
LSET m_layerMask
 

Detailed Description

Definition at line 60 of file pcbplot.h.

Member Enumeration Documentation

◆ DrillMarksType

Enumerator
NO_DRILL_SHAPE 
SMALL_DRILL_SHAPE 
FULL_DRILL_SHAPE 

Definition at line 38 of file pcb_plot_params.h.

Constructor & Destructor Documentation

◆ BRDITEMS_PLOTTER()

BRDITEMS_PLOTTER::BRDITEMS_PLOTTER ( PLOTTER aPlotter,
BOARD aBoard,
const PCB_PLOT_PARAMS aPlotOpts 
)
inline

Definition at line 63 of file pcbplot.h.

64  : PCB_PLOT_PARAMS( aPlotOpts )
65  {
66  m_plotter = aPlotter;
67  m_board = aBoard;
68  }
PLOTTER * m_plotter
Definition: pcbplot.h:142
BOARD * m_board
Definition: pcbplot.h:143

References m_board, and m_plotter.

Member Function Documentation

◆ ColorSettings()

COLOR_SETTINGS* PCB_PLOT_PARAMS::ColorSettings ( ) const
inlineinherited

Definition at line 64 of file pcb_plot_params.h.

64 { return m_colors; }
COLOR_SETTINGS * m_colors
Pointer to active color settings to be used for plotting.

References PCB_PLOT_PARAMS::m_colors.

Referenced by getColor(), PlotDimension(), PlotStandardLayer(), and StartPlotBoard().

◆ Format()

void PCB_PLOT_PARAMS::Format ( OUTPUTFORMATTER aFormatter,
int  aNestLevel,
int  aControl = 0 
) const
inherited

Definition at line 166 of file pcb_plot_params.cpp.

168 {
169  const char* falseStr = getTokenName( T_false );
170  const char* trueStr = getTokenName( T_true );
171 
172  aFormatter->Print( aNestLevel, "(%s\n", getTokenName( T_pcbplotparams ) );
173 
174  aFormatter->Print( aNestLevel+1, "(%s 0x%s)\n", getTokenName( T_layerselection ),
175  m_layerSelection.FmtHex().c_str() );
176 
177  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_disableapertmacros ),
178  m_gerberDisableApertMacros ? trueStr : falseStr );
179 
180  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_usegerberextensions ),
181  m_useGerberProtelExtensions ? trueStr : falseStr );
182 
183  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_usegerberattributes ),
184  GetUseGerberX2format() ? trueStr : falseStr );
185 
186  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_usegerberadvancedattributes ),
187  GetIncludeGerberNetlistInfo() ? trueStr : falseStr );
188 
189  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_creategerberjobfile ),
190  GetCreateGerberJobFile() ? trueStr : falseStr );
191 
192  // save this option only if it is not the default value,
193  // to avoid incompatibility with older Pcbnew version
195  aFormatter->Print( aNestLevel+1, "(%s %d)\n",
196  getTokenName( T_gerberprecision ), m_gerberPrecision );
197 
198  // SVG options
199  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_svguseinch ),
200  m_svgUseInch ? trueStr : falseStr );
201  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_svgprecision ),
202  m_svgPrecision );
203 
204  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_excludeedgelayer ),
205  m_excludeEdgeLayer ? trueStr : falseStr );
206  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotframeref ),
207  m_plotFrameRef ? trueStr : falseStr );
208  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_viasonmask ),
209  m_plotViaOnMaskLayer ? trueStr : falseStr );
210  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_mode ),
211  GetPlotMode() == SKETCH ? 2 : 1 ); // Value 0 (LINE mode) no more used
212  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_useauxorigin ),
213  m_useAuxOrigin ? trueStr : falseStr );
214 
215  // HPGL options
216  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_hpglpennumber ),
217  m_HPGLPenNum );
218  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_hpglpenspeed ),
219  m_HPGLPenSpeed );
220  aFormatter->Print( aNestLevel+1, "(%s %f)\n", getTokenName( T_hpglpendiameter ),
221  m_HPGLPenDiam );
222 
223  // DXF options
224  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_dxfpolygonmode ),
225  m_DXFplotPolygonMode ? trueStr : falseStr );
226  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_dxfimperialunits ),
227  m_DXFplotUnits == DXF_UNITS::INCHES ? trueStr : falseStr );
228  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_dxfusepcbnewfont ),
229  m_textMode == PLOT_TEXT_MODE::NATIVE ? falseStr : trueStr );
230 
231  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_psnegative ),
232  m_negative ? trueStr : falseStr );
233  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_psa4output ),
234  m_A4Output ? trueStr : falseStr );
235  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotreference ),
236  m_plotReference ? trueStr : falseStr );
237  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotvalue ),
238  m_plotValue ? trueStr : falseStr );
239  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotinvisibletext ),
240  m_plotInvisibleText ? trueStr : falseStr );
241  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_sketchpadsonfab ),
242  m_sketchPadsOnFabLayers ? trueStr : falseStr );
243  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_subtractmaskfromsilk ),
244  m_subtractMaskFromSilk ? trueStr : falseStr );
245  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_outputformat ),
246  static_cast<int>( m_format ) );
247  aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_mirror ),
248  m_mirror ? trueStr : falseStr );
249  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_drillshape ),
250  m_drillMarks );
251  aFormatter->Print( aNestLevel+1, "(%s %d)\n", getTokenName( T_scaleselection ),
253  aFormatter->Print( aNestLevel+1, "(%s \"%s\")", getTokenName( T_outputdirectory ),
254  (const char*) m_outputDirectory.utf8_str() );
255  aFormatter->Print( 0, "\n" );
256  aFormatter->Print( aNestLevel, ")\n" );
257 }
bool m_plotValue
Enable plotting of part values.
OUTLINE_MODE GetPlotMode() const
bool GetCreateGerberJobFile() const
wxString m_outputDirectory
Output directory for plot files (usually relative to the board file)
bool m_mirror
Mirror the plot around the X axis.
bool m_excludeEdgeLayer
If false always plot (merge) the pcb edge layer on other layers.
DXF_UNITS m_DXFplotUnits
DXF format: Units to use when plotting the DXF.
static const int gbrDefaultPrecision
bool m_svgUseInch
units for SVG plot false for metric, true for inch/mils
bool m_plotReference
Enable plotting of part references.
bool m_useGerberProtelExtensions
When plotting gerber files, use a conventional set of Protel extensions instead of ....
int m_scaleSelection
Scale ratio index (UI only)
bool m_negative
Plot in negative color (supported only by some drivers)
bool GetUseGerberX2format() const
bool m_plotFrameRef
True to plot/print frame references.
double m_HPGLPenDiam
HPGL only: pen diameter in MILS, useful to fill areas However, it is in mm in hpgl files.
bool m_plotInvisibleText
Force plotting of fields marked invisible.
bool m_DXFplotPolygonMode
DXF format: Plot items in outline (polygon) mode.
bool m_A4Output
Autoscale the plot to fit an A4 (landscape?) sheet.
unsigned m_svgPrecision
precision of coordinates in SVG files: accepted 3 - 6 6 is the internal resolution of Pcbnew
bool m_sketchPadsOnFabLayers
Plots pads outlines on fab layers.
bool m_subtractMaskFromSilk
On gerbers 'scrape' away the solder mask from silkscreen (trim silks)
bool GetIncludeGerberNetlistInfo() const
bool m_plotViaOnMaskLayer
True if vias are drawn on Mask layer (ie untented, exposed by mask)
static const char * getTokenName(T aTok)
bool m_useAuxOrigin
Plot gerbers using auxiliary (drill) origin instead of absolute coordinates.
PLOT_FORMAT m_format
Plot format type (chooses the driver to be used)
bool m_gerberDisableApertMacros
Disable aperture macros in Gerber format (only for broken Gerber readers) Ideally,...
int m_HPGLPenNum
HPGL only: pen number selection(1 to 9)
LSET m_layerSelection
Set of layers to plot.
std::string FmtHex() const
Return a hex string showing contents of this LSEQ.
Definition: lset.cpp:321
PLOT_TEXT_MODE m_textMode
Choose how represent text with PS, PDF and DXF drivers.
int m_HPGLPenSpeed
HPGL only: pen speed, always in cm/s (1 to 99 cm/s)
int PRINTF_FUNC Print(int nestLevel, const char *fmt,...)
Format and write text to the output stream.
Definition: richio.cpp:426
DrillMarksType m_drillMarks
Holes can be not plotted, have a small mark or plotted in actual size.
int m_gerberPrecision
precision of coordinates in Gerber files: accepted 5 or 6 when units are in mm (6 or 7 in inches,...

References gbrDefaultPrecision, getTokenName(), INCHES, NATIVE, OUTPUTFORMATTER::Print(), and SKETCH.

Referenced by PCB_PLUGIN::formatSetup().

◆ GetA4Output()

bool PCB_PLOT_PARAMS::GetA4Output ( ) const
inlineinherited

Definition at line 184 of file pcb_plot_params.h.

184 { return m_A4Output; };
bool m_A4Output
Autoscale the plot to fit an A4 (landscape?) sheet.

References PCB_PLOT_PARAMS::m_A4Output.

Referenced by DIALOG_PLOT::init_Dialog(), and initializePlotter().

◆ GetAutoScale()

bool PCB_PLOT_PARAMS::GetAutoScale ( ) const
inlineinherited

Definition at line 106 of file pcb_plot_params.h.

106 { return m_autoScale; }
bool m_autoScale
When true set the scale to fit the board in the page.

References PCB_PLOT_PARAMS::m_autoScale.

Referenced by initializePlotter().

◆ getColor()

COLOR4D BRDITEMS_PLOTTER::getColor ( LAYER_NUM  aLayer) const

White color is special because it cannot be seen on a white paper in B&W mode.

It is plotted as white but other colors are plotted in BLACK so the returned color is LIGHTGRAY when the layer color is WHITE.

Parameters
aLayeris the layer id.
Returns
the layer color.

Definition at line 68 of file plot_brditems_plotter.cpp.

69 {
70  COLOR4D color = ColorSettings()->GetColor( aLayer );
71 
72  // A hack to avoid plotting a white item in white color, expecting the paper
73  // is also white: use a non white color:
74  if( color == COLOR4D::WHITE )
75  color = COLOR4D( LIGHTGRAY );
76 
77  return color;
78 }
int color
Definition: DXF_plotter.cpp:57
Definition: color4d.h:48
COLOR4D GetColor(int aLayer) const
COLOR_SETTINGS * ColorSettings() const
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, PCB_PLOT_PARAMS::ColorSettings(), COLOR_SETTINGS::GetColor(), LIGHTGRAY, and WHITE.

Referenced by PlotFilledAreas(), PlotFootprintGraphicItem(), PlotFootprintTextItems(), PlotPcbShape(), PlotPcbTarget(), PlotPcbText(), and PlotStandardLayer().

◆ GetCreateGerberJobFile()

bool PCB_PLOT_PARAMS::GetCreateGerberJobFile ( ) const
inlineinherited

Definition at line 151 of file pcb_plot_params.h.

151 { return m_createGerberJobFile; }
bool m_createGerberJobFile
generate the auxiliary "job file" in gerber format

References PCB_PLOT_PARAMS::m_createGerberJobFile.

Referenced by DIALOG_PLOT::init_Dialog(), and DIALOG_PLOT::Plot().

◆ GetDisableGerberMacros()

bool PCB_PLOT_PARAMS::GetDisableGerberMacros ( ) const
inlineinherited

Definition at line 142 of file pcb_plot_params.h.

142 { return m_gerberDisableApertMacros; }
bool m_gerberDisableApertMacros
Disable aperture macros in Gerber format (only for broken Gerber readers) Ideally,...

References PCB_PLOT_PARAMS::m_gerberDisableApertMacros.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetDrillMarksType()

DrillMarksType PCB_PLOT_PARAMS::GetDrillMarksType ( ) const
inlineinherited

Definition at line 93 of file pcb_plot_params.h.

93 { return m_drillMarks; }
DrillMarksType m_drillMarks
Holes can be not plotted, have a small mark or plotted in actual size.

References PCB_PLOT_PARAMS::m_drillMarks.

Referenced by DIALOG_PLOT::init_Dialog(), PlotDrillMarks(), PlotLayerOutlines(), and PlotStandardLayer().

◆ GetDXFPlotPolygonMode()

bool PCB_PLOT_PARAMS::GetDXFPlotPolygonMode ( ) const
inlineinherited

Definition at line 80 of file pcb_plot_params.h.

80 { return m_DXFplotPolygonMode; }
bool m_DXFplotPolygonMode
DXF format: Plot items in outline (polygon) mode.

References PCB_PLOT_PARAMS::m_DXFplotPolygonMode.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotOneBoardLayer().

◆ GetDXFPlotUnits()

DXF_UNITS PCB_PLOT_PARAMS::GetDXFPlotUnits ( ) const
inlineinherited

Definition at line 87 of file pcb_plot_params.h.

88  {
89  return m_DXFplotUnits;
90  }
DXF_UNITS m_DXFplotUnits
DXF format: Units to use when plotting the DXF.

References PCB_PLOT_PARAMS::m_DXFplotUnits.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetExcludeEdgeLayer()

bool PCB_PLOT_PARAMS::GetExcludeEdgeLayer ( ) const
inlineinherited

Definition at line 133 of file pcb_plot_params.h.

133 { return m_excludeEdgeLayer; }
bool m_excludeEdgeLayer
If false always plot (merge) the pcb edge layer on other layers.

References PCB_PLOT_PARAMS::m_excludeEdgeLayer.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotOneBoardLayer().

◆ GetFineScaleAdjustX()

double PCB_PLOT_PARAMS::GetFineScaleAdjustX ( ) const
inlineinherited

Definition at line 99 of file pcb_plot_params.h.

99 { return m_fineScaleAdjustX; }
double m_fineScaleAdjustX
fine scale adjust X axis

References PCB_PLOT_PARAMS::m_fineScaleAdjustX.

Referenced by StartPlotBoard().

◆ GetFineScaleAdjustY()

double PCB_PLOT_PARAMS::GetFineScaleAdjustY ( ) const
inlineinherited

Definition at line 101 of file pcb_plot_params.h.

101 { return m_fineScaleAdjustY; }
double m_fineScaleAdjustY
fine scale adjust Y axis

References PCB_PLOT_PARAMS::m_fineScaleAdjustY.

Referenced by StartPlotBoard().

◆ getFineWidthAdj()

int BRDITEMS_PLOTTER::getFineWidthAdj ( ) const
inline
Returns
a 'width adjustment' for the postscript engine (useful for controlling toner bleeding during direct transfer) added to track width and via/pads size

Definition at line 75 of file pcbplot.h.

76  {
77  if( GetFormat() == PLOT_FORMAT::POST )
78  return GetWidthAdjust();
79  else
80  return 0;
81  }
int GetWidthAdjust() const
PLOT_FORMAT GetFormat() const

References PCB_PLOT_PARAMS::GetFormat(), PCB_PLOT_PARAMS::GetWidthAdjust(), and POST.

Referenced by plotOneDrillMark(), and PlotStandardLayer().

◆ GetFormat()

PLOT_FORMAT PCB_PLOT_PARAMS::GetFormat ( ) const
inlineinherited

Definition at line 136 of file pcb_plot_params.h.

136 { return m_format; }
PLOT_FORMAT m_format
Plot format type (chooses the driver to be used)

References PCB_PLOT_PARAMS::m_format.

Referenced by getFineWidthAdj(), DIALOG_PLOT::init_Dialog(), DIALOG_PLOT::Plot(), PlotOneBoardLayer(), and StartPlotBoard().

◆ GetGerberDefaultPrecision()

static int PCB_PLOT_PARAMS::GetGerberDefaultPrecision ( )
inlinestaticinherited

Default precision of coordinates in Gerber files.

When units are in mm (7 in inches, but Pcbnew uses mm). 6 is the internal resolution of Pcbnew, so the default is 6.

Definition at line 169 of file pcb_plot_params.h.

169 { return 6; }

◆ GetGerberPrecision()

int PCB_PLOT_PARAMS::GetGerberPrecision ( ) const
inlineinherited

Definition at line 157 of file pcb_plot_params.h.

157 { return m_gerberPrecision; }
int m_gerberPrecision
precision of coordinates in Gerber files: accepted 5 or 6 when units are in mm (6 or 7 in inches,...

References PCB_PLOT_PARAMS::m_gerberPrecision.

Referenced by DIALOG_GENDRILL::GenDrillAndMapFiles(), DIALOG_PLOT::init_Dialog(), initializePlotter(), and DIALOG_GENDRILL::onFileFormatSelection().

◆ GetHPGLPenDiameter()

double PCB_PLOT_PARAMS::GetHPGLPenDiameter ( ) const
inlineinherited

Definition at line 188 of file pcb_plot_params.h.

188 { return m_HPGLPenDiam; };
double m_HPGLPenDiam
HPGL only: pen diameter in MILS, useful to fill areas However, it is in mm in hpgl files.

References PCB_PLOT_PARAMS::m_HPGLPenDiam.

Referenced by DIALOG_PLOT::applyPlotSettings(), ConfigureHPGLPenSizes(), and DIALOG_PLOT::init_Dialog().

◆ GetHPGLPenNum()

int PCB_PLOT_PARAMS::GetHPGLPenNum ( ) const
inlineinherited

Definition at line 196 of file pcb_plot_params.h.

196 { return m_HPGLPenNum; }
int m_HPGLPenNum
HPGL only: pen number selection(1 to 9)

References PCB_PLOT_PARAMS::m_HPGLPenNum.

Referenced by ConfigureHPGLPenSizes().

◆ GetHPGLPenSpeed()

int PCB_PLOT_PARAMS::GetHPGLPenSpeed ( ) const
inlineinherited

Definition at line 192 of file pcb_plot_params.h.

192 { return m_HPGLPenSpeed; };
int m_HPGLPenSpeed
HPGL only: pen speed, always in cm/s (1 to 99 cm/s)

References PCB_PLOT_PARAMS::m_HPGLPenSpeed.

Referenced by ConfigureHPGLPenSizes().

◆ GetIncludeGerberNetlistInfo()

bool PCB_PLOT_PARAMS::GetIncludeGerberNetlistInfo ( ) const
inlineinherited

Definition at line 148 of file pcb_plot_params.h.

148 { return m_includeGerberNetlistInfo; }
bool m_includeGerberNetlistInfo
Include netlist info (only in Gerber X2 format) (chapter ? in revision ?)

References PCB_PLOT_PARAMS::m_includeGerberNetlistInfo.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetLayerSelection()

LSET PCB_PLOT_PARAMS::GetLayerSelection ( ) const
inlineinherited

Definition at line 175 of file pcb_plot_params.h.

175 { return m_layerSelection; };
LSET m_layerSelection
Set of layers to plot.

References PCB_PLOT_PARAMS::m_layerSelection.

Referenced by DIALOG_PLOT::init_Dialog(), and DIALOG_PLOT::Plot().

◆ GetMirror()

bool PCB_PLOT_PARAMS::GetMirror ( ) const
inlineinherited

Definition at line 109 of file pcb_plot_params.h.

109 { return m_mirror; }
bool m_mirror
Mirror the plot around the X axis.

References PCB_PLOT_PARAMS::m_mirror.

Referenced by DIALOG_PLOT::init_Dialog(), initializePlotter(), and StartPlotBoard().

◆ GetNegative()

bool PCB_PLOT_PARAMS::GetNegative ( ) const
inlineinherited

Definition at line 124 of file pcb_plot_params.h.

124 { return m_negative; }
bool m_negative
Plot in negative color (supported only by some drivers)

References PCB_PLOT_PARAMS::m_negative.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetOutputDirectory()

◆ GetPlotFrameRef()

bool PCB_PLOT_PARAMS::GetPlotFrameRef ( ) const
inlineinherited

Definition at line 130 of file pcb_plot_params.h.

130 { return m_plotFrameRef; }
bool m_plotFrameRef
True to plot/print frame references.

References PCB_PLOT_PARAMS::m_plotFrameRef.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetPlotInvisibleText()

bool PCB_PLOT_PARAMS::GetPlotInvisibleText ( ) const
inlineinherited

Definition at line 117 of file pcb_plot_params.h.

117 { return m_plotInvisibleText; }
bool m_plotInvisibleText
Force plotting of fields marked invisible.

References PCB_PLOT_PARAMS::m_plotInvisibleText.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotFootprintTextItems().

◆ GetPlotMode()

OUTLINE_MODE PCB_PLOT_PARAMS::GetPlotMode ( ) const
inlineinherited

Definition at line 77 of file pcb_plot_params.h.

77 { return m_plotMode; }
OUTLINE_MODE m_plotMode
FILLED or SKETCH selects how to plot filled objects.

References PCB_PLOT_PARAMS::m_plotMode.

Referenced by DIALOG_PLOT::init_Dialog(), PlotDrillMarks(), PlotFilledAreas(), PlotFootprintGraphicItem(), plotOneDrillMark(), PlotPcbShape(), and PlotStandardLayer().

◆ GetPlotReference()

bool PCB_PLOT_PARAMS::GetPlotReference ( ) const
inlineinherited

Definition at line 121 of file pcb_plot_params.h.

121 { return m_plotReference; }
bool m_plotReference
Enable plotting of part references.

References PCB_PLOT_PARAMS::m_plotReference.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotFootprintTextItems().

◆ GetPlotValue()

bool PCB_PLOT_PARAMS::GetPlotValue ( ) const
inlineinherited

Definition at line 119 of file pcb_plot_params.h.

119 { return m_plotValue; }
bool m_plotValue
Enable plotting of part values.

References PCB_PLOT_PARAMS::m_plotValue.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotFootprintTextItems().

◆ GetPlotViaOnMaskLayer()

bool PCB_PLOT_PARAMS::GetPlotViaOnMaskLayer ( ) const
inlineinherited

Definition at line 127 of file pcb_plot_params.h.

127 { return m_plotViaOnMaskLayer; }
bool m_plotViaOnMaskLayer
True if vias are drawn on Mask layer (ie untented, exposed by mask)

References PCB_PLOT_PARAMS::m_plotViaOnMaskLayer.

Referenced by DIALOG_PLOT::init_Dialog(), PlotSolderMaskLayer(), and PlotStandardLayer().

◆ GetScale()

double PCB_PLOT_PARAMS::GetScale ( ) const
inlineinherited

Definition at line 96 of file pcb_plot_params.h.

96 { return m_scale; }
double m_scale
Global scale factor, 1.0 plots a board with its actual size.

References PCB_PLOT_PARAMS::m_scale.

Referenced by ConfigureHPGLPenSizes(), initializePlotter(), and DIALOG_PLOT::Plot().

◆ GetScaleSelection()

int PCB_PLOT_PARAMS::GetScaleSelection ( ) const
inlineinherited

Definition at line 181 of file pcb_plot_params.h.

181 { return m_scaleSelection; };
int m_scaleSelection
Scale ratio index (UI only)

References PCB_PLOT_PARAMS::m_scaleSelection.

Referenced by DIALOG_PLOT::init_Dialog(), and DIALOG_PLOT::Plot().

◆ GetSketchPadLineWidth()

int PCB_PLOT_PARAMS::GetSketchPadLineWidth ( ) const
inlineinherited

Definition at line 114 of file pcb_plot_params.h.

114 { return m_sketchPadLineWidth; }

References PCB_PLOT_PARAMS::m_sketchPadLineWidth.

Referenced by PlotPad().

◆ GetSketchPadsOnFabLayers()

bool PCB_PLOT_PARAMS::GetSketchPadsOnFabLayers ( ) const
inlineinherited

Definition at line 112 of file pcb_plot_params.h.

112 { return m_sketchPadsOnFabLayers; }
bool m_sketchPadsOnFabLayers
Plots pads outlines on fab layers.

References PCB_PLOT_PARAMS::m_sketchPadsOnFabLayers.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotStandardLayer().

◆ GetSkipPlotNPTH_Pads()

bool PCB_PLOT_PARAMS::GetSkipPlotNPTH_Pads ( ) const
inlineinherited

Definition at line 47 of file pcb_plot_params.h.

47 { return m_skipNPTH_Pads; }

References PCB_PLOT_PARAMS::m_skipNPTH_Pads.

Referenced by PlotStandardLayer().

◆ GetSubtractMaskFromSilk()

bool PCB_PLOT_PARAMS::GetSubtractMaskFromSilk ( ) const
inlineinherited

Definition at line 172 of file pcb_plot_params.h.

172 { return m_subtractMaskFromSilk; }
bool m_subtractMaskFromSilk
On gerbers 'scrape' away the solder mask from silkscreen (trim silks)

References PCB_PLOT_PARAMS::m_subtractMaskFromSilk.

Referenced by DIALOG_PLOT::init_Dialog(), and PlotOneBoardLayer().

◆ GetSvgPrecision()

unsigned PCB_PLOT_PARAMS::GetSvgPrecision ( ) const
inlineinherited

Definition at line 160 of file pcb_plot_params.h.

160 { return m_svgPrecision; }
unsigned m_svgPrecision
precision of coordinates in SVG files: accepted 3 - 6 6 is the internal resolution of Pcbnew

References PCB_PLOT_PARAMS::m_svgPrecision.

Referenced by DIALOG_PLOT::init_Dialog(), and initializePlotter().

◆ GetSvgUseInch()

bool PCB_PLOT_PARAMS::GetSvgUseInch ( ) const
inlineinherited

Definition at line 161 of file pcb_plot_params.h.

161 { return m_svgUseInch; }
bool m_svgUseInch
units for SVG plot false for metric, true for inch/mils

References PCB_PLOT_PARAMS::m_svgUseInch.

Referenced by DIALOG_PLOT::init_Dialog(), and initializePlotter().

◆ GetTextMode()

PLOT_TEXT_MODE PCB_PLOT_PARAMS::GetTextMode ( ) const
inlineinherited

Definition at line 71 of file pcb_plot_params.h.

72  {
73  return m_textMode;
74  }
PLOT_TEXT_MODE m_textMode
Choose how represent text with PS, PDF and DXF drivers.

References PCB_PLOT_PARAMS::m_textMode.

Referenced by DIALOG_PLOT::init_Dialog(), initializePlotter(), and PlotOneBoardLayer().

◆ GetUseAuxOrigin()

bool PCB_PLOT_PARAMS::GetUseAuxOrigin ( ) const
inlineinherited

Definition at line 178 of file pcb_plot_params.h.

178 { return m_useAuxOrigin; };
bool m_useAuxOrigin
Plot gerbers using auxiliary (drill) origin instead of absolute coordinates.

References PCB_PLOT_PARAMS::m_useAuxOrigin.

Referenced by AddGerberX2Header(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), DIALOG_PLOT::init_Dialog(), DIALOG_GENDRILL::initDialog(), initializePlotter(), and DIALOG_PLOT::reInitDialog().

◆ GetUseGerberProtelExtensions()

bool PCB_PLOT_PARAMS::GetUseGerberProtelExtensions ( ) const
inlineinherited

Definition at line 154 of file pcb_plot_params.h.

154 { return m_useGerberProtelExtensions; }
bool m_useGerberProtelExtensions
When plotting gerber files, use a conventional set of Protel extensions instead of ....

References PCB_PLOT_PARAMS::m_useGerberProtelExtensions.

Referenced by DIALOG_PLOT::init_Dialog().

◆ GetUseGerberX2format()

bool PCB_PLOT_PARAMS::GetUseGerberX2format ( ) const
inlineinherited

Definition at line 145 of file pcb_plot_params.h.

145 { return m_useGerberX2format; }
bool m_useGerberX2format
Include attributes from the Gerber X2 format (chapter 5 in revision J2)

References PCB_PLOT_PARAMS::m_useGerberX2format.

Referenced by DIALOG_PLOT::init_Dialog(), and StartPlotBoard().

◆ GetWidthAdjust()

int PCB_PLOT_PARAMS::GetWidthAdjust ( ) const
inlineinherited

Definition at line 103 of file pcb_plot_params.h.

103 { return m_widthAdjust; }
int m_widthAdjust
This width factor is intended to compensate PS printers/ plotters that do not strictly obey line widt...

References PCB_PLOT_PARAMS::m_widthAdjust.

Referenced by getFineWidthAdj().

◆ IsSameAs()

bool PCB_PLOT_PARAMS::IsSameAs ( const PCB_PLOT_PARAMS aPcbPlotParams) const
inherited

Compare current settings to aPcbPlotParams, including not saved parameters in brd file.

Parameters
aPcbPlotParamsis the PCB_PLOT_PARAMS to compare/
aCompareOnlySavedPrmsset to true to compare only saved in file parameters, or false to compare the full set of parameters.
Returns
true is parameters are same, false if one (or more) parameter does not match.

Definition at line 266 of file pcb_plot_params.cpp.

267 {
268  if( m_layerSelection != aPcbPlotParams.m_layerSelection )
269  return false;
270 
272  return false;
273 
275  return false;
276 
277  if( m_useGerberX2format != aPcbPlotParams.m_useGerberX2format )
278  return false;
279 
281  return false;
282 
283  if( m_createGerberJobFile != aPcbPlotParams.m_createGerberJobFile )
284  return false;
285 
286  if( m_gerberPrecision != aPcbPlotParams.m_gerberPrecision )
287  return false;
288 
289  if( m_excludeEdgeLayer != aPcbPlotParams.m_excludeEdgeLayer )
290  return false;
291 
292  if( m_plotFrameRef != aPcbPlotParams.m_plotFrameRef )
293  return false;
294 
295  if( m_plotViaOnMaskLayer != aPcbPlotParams.m_plotViaOnMaskLayer )
296  return false;
297 
298  if( m_plotMode != aPcbPlotParams.m_plotMode )
299  return false;
300 
301  if( m_DXFplotPolygonMode != aPcbPlotParams.m_DXFplotPolygonMode )
302  return false;
303 
304  if( m_DXFplotUnits != aPcbPlotParams.m_DXFplotUnits )
305  return false;
306 
307  if( m_svgPrecision != aPcbPlotParams.m_svgPrecision )
308  return false;
309 
310  if( m_svgUseInch != aPcbPlotParams.m_svgUseInch )
311  return false;
312 
313  if( m_useAuxOrigin != aPcbPlotParams.m_useAuxOrigin )
314  return false;
315 
316  if( m_HPGLPenNum != aPcbPlotParams.m_HPGLPenNum )
317  return false;
318 
319  if( m_HPGLPenSpeed != aPcbPlotParams.m_HPGLPenSpeed )
320  return false;
321 
322  if( m_HPGLPenDiam != aPcbPlotParams.m_HPGLPenDiam )
323  return false;
324 
325  if( m_negative != aPcbPlotParams.m_negative )
326  return false;
327 
328  if( m_A4Output != aPcbPlotParams.m_A4Output )
329  return false;
330 
331  if( m_plotReference != aPcbPlotParams.m_plotReference )
332  return false;
333 
334  if( m_plotValue != aPcbPlotParams.m_plotValue )
335  return false;
336 
337  if( m_plotInvisibleText != aPcbPlotParams.m_plotInvisibleText )
338  return false;
339 
340  if( m_sketchPadsOnFabLayers != aPcbPlotParams.m_sketchPadsOnFabLayers )
341  return false;
342 
343  if( m_subtractMaskFromSilk != aPcbPlotParams.m_subtractMaskFromSilk )
344  return false;
345 
346  if( m_format != aPcbPlotParams.m_format )
347  return false;
348 
349  if( m_mirror != aPcbPlotParams.m_mirror )
350  return false;
351 
352  if( m_drillMarks != aPcbPlotParams.m_drillMarks )
353  return false;
354 
355  if( m_scaleSelection != aPcbPlotParams.m_scaleSelection )
356  return false;
357 
358  if( m_autoScale != aPcbPlotParams.m_autoScale )
359  return false;
360 
361  if( m_scale != aPcbPlotParams.m_scale )
362  return false;
363 
364  if( m_fineScaleAdjustX != aPcbPlotParams.m_fineScaleAdjustX )
365  return false;
366 
367  if( m_fineScaleAdjustY != aPcbPlotParams.m_fineScaleAdjustY )
368  return false;
369 
370  if( m_widthAdjust != aPcbPlotParams.m_widthAdjust )
371  return false;
372 
373  if( m_textMode != aPcbPlotParams.m_textMode )
374  return false;
375 
376  if( !m_outputDirectory.IsSameAs( aPcbPlotParams.m_outputDirectory ) )
377  return false;
378 
379  return true;
380 }
double m_fineScaleAdjustX
fine scale adjust X axis
bool m_plotValue
Enable plotting of part values.
wxString m_outputDirectory
Output directory for plot files (usually relative to the board file)
bool m_mirror
Mirror the plot around the X axis.
bool m_excludeEdgeLayer
If false always plot (merge) the pcb edge layer on other layers.
DXF_UNITS m_DXFplotUnits
DXF format: Units to use when plotting the DXF.
bool m_svgUseInch
units for SVG plot false for metric, true for inch/mils
bool m_useGerberX2format
Include attributes from the Gerber X2 format (chapter 5 in revision J2)
double m_scale
Global scale factor, 1.0 plots a board with its actual size.
bool m_plotReference
Enable plotting of part references.
bool m_useGerberProtelExtensions
When plotting gerber files, use a conventional set of Protel extensions instead of ....
OUTLINE_MODE m_plotMode
FILLED or SKETCH selects how to plot filled objects.
int m_scaleSelection
Scale ratio index (UI only)
bool m_negative
Plot in negative color (supported only by some drivers)
bool m_plotFrameRef
True to plot/print frame references.
double m_HPGLPenDiam
HPGL only: pen diameter in MILS, useful to fill areas However, it is in mm in hpgl files.
bool m_includeGerberNetlistInfo
Include netlist info (only in Gerber X2 format) (chapter ? in revision ?)
bool m_plotInvisibleText
Force plotting of fields marked invisible.
bool m_DXFplotPolygonMode
DXF format: Plot items in outline (polygon) mode.
bool m_autoScale
When true set the scale to fit the board in the page.
bool m_A4Output
Autoscale the plot to fit an A4 (landscape?) sheet.
unsigned m_svgPrecision
precision of coordinates in SVG files: accepted 3 - 6 6 is the internal resolution of Pcbnew
bool m_sketchPadsOnFabLayers
Plots pads outlines on fab layers.
bool m_subtractMaskFromSilk
On gerbers 'scrape' away the solder mask from silkscreen (trim silks)
double m_fineScaleAdjustY
fine scale adjust Y axis
bool m_plotViaOnMaskLayer
True if vias are drawn on Mask layer (ie untented, exposed by mask)
int m_widthAdjust
This width factor is intended to compensate PS printers/ plotters that do not strictly obey line widt...
bool m_useAuxOrigin
Plot gerbers using auxiliary (drill) origin instead of absolute coordinates.
PLOT_FORMAT m_format
Plot format type (chooses the driver to be used)
bool m_createGerberJobFile
generate the auxiliary "job file" in gerber format
bool m_gerberDisableApertMacros
Disable aperture macros in Gerber format (only for broken Gerber readers) Ideally,...
int m_HPGLPenNum
HPGL only: pen number selection(1 to 9)
LSET m_layerSelection
Set of layers to plot.
PLOT_TEXT_MODE m_textMode
Choose how represent text with PS, PDF and DXF drivers.
int m_HPGLPenSpeed
HPGL only: pen speed, always in cm/s (1 to 99 cm/s)
DrillMarksType m_drillMarks
Holes can be not plotted, have a small mark or plotted in actual size.
int m_gerberPrecision
precision of coordinates in Gerber files: accepted 5 or 6 when units are in mm (6 or 7 in inches,...

References PCB_PLOT_PARAMS::m_A4Output, PCB_PLOT_PARAMS::m_autoScale, PCB_PLOT_PARAMS::m_createGerberJobFile, PCB_PLOT_PARAMS::m_drillMarks, PCB_PLOT_PARAMS::m_DXFplotPolygonMode, PCB_PLOT_PARAMS::m_DXFplotUnits, PCB_PLOT_PARAMS::m_excludeEdgeLayer, PCB_PLOT_PARAMS::m_fineScaleAdjustX, PCB_PLOT_PARAMS::m_fineScaleAdjustY, PCB_PLOT_PARAMS::m_format, PCB_PLOT_PARAMS::m_gerberDisableApertMacros, PCB_PLOT_PARAMS::m_gerberPrecision, PCB_PLOT_PARAMS::m_HPGLPenDiam, PCB_PLOT_PARAMS::m_HPGLPenNum, PCB_PLOT_PARAMS::m_HPGLPenSpeed, PCB_PLOT_PARAMS::m_includeGerberNetlistInfo, PCB_PLOT_PARAMS::m_layerSelection, PCB_PLOT_PARAMS::m_mirror, PCB_PLOT_PARAMS::m_negative, PCB_PLOT_PARAMS::m_outputDirectory, PCB_PLOT_PARAMS::m_plotFrameRef, PCB_PLOT_PARAMS::m_plotInvisibleText, PCB_PLOT_PARAMS::m_plotMode, PCB_PLOT_PARAMS::m_plotReference, PCB_PLOT_PARAMS::m_plotValue, PCB_PLOT_PARAMS::m_plotViaOnMaskLayer, PCB_PLOT_PARAMS::m_scale, PCB_PLOT_PARAMS::m_scaleSelection, PCB_PLOT_PARAMS::m_sketchPadsOnFabLayers, PCB_PLOT_PARAMS::m_subtractMaskFromSilk, PCB_PLOT_PARAMS::m_svgPrecision, PCB_PLOT_PARAMS::m_svgUseInch, PCB_PLOT_PARAMS::m_textMode, PCB_PLOT_PARAMS::m_useAuxOrigin, PCB_PLOT_PARAMS::m_useGerberProtelExtensions, PCB_PLOT_PARAMS::m_useGerberX2format, and PCB_PLOT_PARAMS::m_widthAdjust.

Referenced by DIALOG_PLOT::applyPlotSettings(), and DIALOG_GENDRILL::UpdateDrillParams().

◆ Parse()

void PCB_PLOT_PARAMS::Parse ( PCB_PLOT_PARAMS_PARSER aParser)
inherited

Definition at line 260 of file pcb_plot_params.cpp.

261 {
262  aParser->Parse( this );
263 }
void Parse(PCB_PLOT_PARAMS *aPcbPlotParams)

References PCB_PLOT_PARAMS_PARSER::Parse().

Referenced by LEGACY_PLUGIN::loadSETUP(), and PCB_PARSER::parseSetup().

◆ PlotBoardGraphicItems()

void BRDITEMS_PLOTTER::PlotBoardGraphicItems ( )

Plot items like text and graphics but not tracks and footprints.

Definition at line 343 of file plot_brditems_plotter.cpp.

344 {
345  for( BOARD_ITEM* item : m_board->Drawings() )
346  {
347  switch( item->Type() )
348  {
349  case PCB_SHAPE_T:
350  PlotPcbShape( (PCB_SHAPE*) item );
351  break;
352 
353  case PCB_TEXT_T:
354  PlotPcbText( (PCB_TEXT*) item );
355  break;
356 
357  case PCB_DIM_ALIGNED_T:
358  case PCB_DIM_CENTER_T:
360  case PCB_DIM_LEADER_T:
362  break;
363 
364  case PCB_TARGET_T:
365  PlotPcbTarget( (PCB_TARGET*) item );
366  break;
367 
368  default:
369  break;
370  }
371  }
372 }
void PlotPcbTarget(const PCB_TARGET *aMire)
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:100
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition: typeinfo.h:101
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:102
class PCB_TEXT, text on a layer
Definition: typeinfo.h:91
void PlotPcbText(const PCB_TEXT *aText)
Abstract dimension API.
Definition: pcb_dimension.h:95
BOARD * m_board
Definition: pcbplot.h:143
class PCB_TARGET, a target (graphic item)
Definition: typeinfo.h:104
void PlotPcbShape(const PCB_SHAPE *aShape)
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition: typeinfo.h:103
class PCB_SHAPE, a segment not on copper layers
Definition: typeinfo.h:90
void PlotDimension(const PCB_DIMENSION_BASE *aDim)
DRAWINGS & Drawings()
Definition: board.h:237

References BOARD::Drawings(), m_board, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_SHAPE_T, PCB_TARGET_T, PCB_TEXT_T, PlotDimension(), PlotPcbShape(), PlotPcbTarget(), and PlotPcbText().

Referenced by PLACEFILE_GERBER_WRITER::CreatePlaceFile(), PlotSolderMaskLayer(), and PlotStandardLayer().

◆ PlotDimension()

void BRDITEMS_PLOTTER::PlotDimension ( const PCB_DIMENSION_BASE aDim)

Definition at line 416 of file plot_brditems_plotter.cpp.

417 {
418  if( !m_layerMask[aDim->GetLayer()] )
419  return;
420 
421  PCB_SHAPE draw;
422 
423  draw.SetWidth( aDim->GetLineThickness() );
424  draw.SetLayer( aDim->GetLayer() );
425 
426  COLOR4D color = ColorSettings()->GetColor( aDim->GetLayer() );
427 
428  // Set plot color (change WHITE to LIGHTGRAY because
429  // the white items are not seen on a white paper or screen
431 
432  PlotPcbText( &aDim->Text() );
433 
434  for( const std::shared_ptr<SHAPE>& shape : aDim->GetShapes() )
435  {
436  switch( shape->Type() )
437  {
438  case SH_SEGMENT:
439  {
440  const SEG& seg = static_cast<const SHAPE_SEGMENT*>( shape.get() )->GetSeg();
441 
442  draw.SetShape( SHAPE_T::SEGMENT );
443  draw.SetStart( wxPoint( seg.A ) );
444  draw.SetEnd( wxPoint( seg.B ) );
445 
446  PlotPcbShape( &draw );
447  break;
448  }
449 
450  case SH_CIRCLE:
451  {
452  wxPoint start( shape->Centre() );
453  int radius = static_cast<const SHAPE_CIRCLE*>( shape.get() )->GetRadius();
454 
455  draw.SetShape( SHAPE_T::CIRCLE );
456  draw.SetFilled( false );
457  draw.SetStart( start );
458  draw.SetEnd( wxPoint( start.x + radius, start.y ) );
459 
460  PlotPcbShape( &draw );
461  break;
462  }
463 
464  default:
465  break;
466  }
467  }
468 }
void SetFilled(bool aFlag)
Definition: eda_shape.h:92
void SetEnd(const wxPoint &aEnd)
Definition: eda_shape.h:135
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:164
PCB_TEXT & Text()
int color
Definition: DXF_plotter.cpp:57
PLOTTER * m_plotter
Definition: pcbplot.h:142
void PlotPcbText(const PCB_TEXT *aText)
const std::vector< std::shared_ptr< SHAPE > > & GetShapes() const
void SetStart(const wxPoint &aStart)
Definition: eda_shape.h:110
void SetWidth(int aWidth)
Definition: eda_shape.h:97
circle
Definition: shape.h:46
virtual void SetColor(const COLOR4D &color)=0
Definition: color4d.h:48
Definition: seg.h:40
COLOR4D GetColor(int aLayer) const
void PlotPcbShape(const PCB_SHAPE *aShape)
LSET m_layerMask
Definition: pcbplot.h:144
VECTOR2I A
Definition: seg.h:48
void SetShape(SHAPE_T aShape)
Definition: eda_shape.h:100
COLOR_SETTINGS * ColorSettings() const
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143
int GetLineThickness() const
line segment
Definition: shape.h:44
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103
VECTOR2I B
Definition: seg.h:49

References SEG::A, SEG::B, CIRCLE, color, PCB_PLOT_PARAMS::ColorSettings(), COLOR_SETTINGS::GetColor(), BOARD_ITEM::GetLayer(), PCB_DIMENSION_BASE::GetLineThickness(), PCB_DIMENSION_BASE::GetShapes(), LIGHTGRAY, m_layerMask, m_plotter, PlotPcbShape(), PlotPcbText(), SEGMENT, PLOTTER::SetColor(), EDA_SHAPE::SetEnd(), EDA_SHAPE::SetFilled(), BOARD_ITEM::SetLayer(), EDA_SHAPE::SetShape(), EDA_SHAPE::SetStart(), EDA_SHAPE::SetWidth(), SH_CIRCLE, SH_SEGMENT, PCB_DIMENSION_BASE::Text(), and WHITE.

Referenced by PlotBoardGraphicItems().

◆ PlotDrillMarks()

void BRDITEMS_PLOTTER::PlotDrillMarks ( )

Draw a drill mark for pads and vias.

Must be called after all drawings, because it redraws the drill mark on a pad or via, as a negative (i.e. white) shape in FILLED plot mode (for PS and PDF outputs).

Definition at line 1032 of file plot_brditems_plotter.cpp.

1033 {
1034  /* If small drills marks were requested prepare a clamp value to pass
1035  to the helper function */
1037  ? Millimeter2iu( ADVANCED_CFG::GetCfg().m_SmallDrillMarkSize ) : 0;
1038 
1039  /* In the filled trace mode drill marks are drawn white-on-black to scrape
1040  the underlying pad. This works only for drivers supporting color change,
1041  obviously... it means that:
1042  - PS, SVG and PDF output is correct (i.e. you have a 'donut' pad)
1043  - In HPGL you can't see them
1044  - In gerbers you can't see them, too. This is arguably the right thing to
1045  do since having drill marks and high speed drill stations is a sure
1046  recipe for broken tools and angry manufacturers. If you *really* want them
1047  you could start a layer with negative polarity to scrape the film.
1048  - In DXF they go into the 'WHITE' layer. This could be useful.
1049  */
1050  if( GetPlotMode() == FILLED )
1051  m_plotter->SetColor( WHITE );
1052 
1053  for( PCB_TRACK* tracks : m_board->Tracks() )
1054  {
1055  const PCB_VIA* via = dyn_cast<const PCB_VIA*>( tracks );
1056 
1057  if( via )
1058  {
1060  wxSize( via->GetDrillValue(), 0 ),
1061  wxSize( via->GetWidth(), 0 ), 0, smallDrill );
1062  }
1063  }
1064 
1065  for( FOOTPRINT* footprint : m_board->Footprints() )
1066  {
1067  for( PAD* pad : footprint->Pads() )
1068  {
1069  if( pad->GetDrillSize().x == 0 )
1070  continue;
1071 
1072  plotOneDrillMark( pad->GetDrillShape(), pad->GetPosition(), pad->GetDrillSize(),
1073  pad->GetSize(), pad->GetOrientation(), smallDrill );
1074  }
1075  }
1076 
1077  if( GetPlotMode() == FILLED )
1078  m_plotter->SetColor( BLACK );
1079 }
OUTLINE_MODE GetPlotMode() const
void plotOneDrillMark(PAD_DRILL_SHAPE_T aDrillShape, const wxPoint &aDrillPos, const wxSize &aDrillSize, const wxSize &aPadSize, double aOrientation, int aSmallDrill)
Helper function to plot a single drill mark.
PLOTTER * m_plotter
Definition: pcbplot.h:142
Definition: color4d.h:44
BOARD * m_board
Definition: pcbplot.h:143
FOOTPRINTS & Footprints()
Definition: board.h:234
virtual void SetColor(const COLOR4D &color)=0
Definition: color4d.h:48
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
Definition: pad.h:57
DrillMarksType GetDrillMarksType() const
static constexpr int Millimeter2iu(double mm)
TRACKS & Tracks()
Definition: board.h:231

References BLACK, FILLED, BOARD::Footprints(), ADVANCED_CFG::GetCfg(), PCB_PLOT_PARAMS::GetDrillMarksType(), PCB_PLOT_PARAMS::GetPlotMode(), m_board, m_plotter, Millimeter2iu(), pad, PAD_DRILL_SHAPE_CIRCLE, plotOneDrillMark(), PLOTTER::SetColor(), PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE, BOARD::Tracks(), via, and WHITE.

Referenced by PlotStandardLayer().

◆ PlotFilledAreas()

void BRDITEMS_PLOTTER::PlotFilledAreas ( const ZONE aZone,
const SHAPE_POLY_SET aPolysList 
)

Definition at line 761 of file plot_brditems_plotter.cpp.

762 {
763  if( polysList.IsEmpty() )
764  return;
765 
766  GBR_METADATA gbr_metadata;
767 
768  bool isOnCopperLayer = aZone->IsOnCopperLayer();
769 
770  if( isOnCopperLayer )
771  {
772  gbr_metadata.SetNetName( aZone->GetNetname() );
773  gbr_metadata.SetCopper( true );
774 
775  // Zones with no net name can exist.
776  // they are not used to connect items, so the aperture attribute cannot
777  // be set as conductor
778  if( aZone->GetNetname().IsEmpty() )
779  {
780  gbr_metadata.SetApertureAttrib(
782  }
783  else
784  {
787  }
788  }
789 
790  m_plotter->SetColor( getColor( aZone->GetLayer() ) );
791 
792  m_plotter->StartBlock( nullptr ); // Clean current object attributes
793 
794  /* Plot all filled areas: filled areas have a filled area and a thick
795  * outline (depending on the fill area option we must plot the filled area itself
796  * and plot the thick outline itself, if the thickness has meaning (at least is > 1)
797  *
798  * in non filled mode the outline is plotted, but not the filling items
799  */
800  int outline_thickness = aZone->GetFilledPolysUseThickness() ? aZone->GetMinThickness() : 0;
801 
802  for( int idx = 0; idx < polysList.OutlineCount(); ++idx )
803  {
804  const SHAPE_LINE_CHAIN& outline = polysList.Outline( idx );
805 
806  // Plot the current filled area (as region for Gerber plotter
807  // to manage attributes) and its outline for thick outline
808  if( GetPlotMode() == FILLED )
809  {
811  {
812  if( outline_thickness > 0 )
813  {
814  m_plotter->PlotPoly( outline, FILL_T::NO_FILL, outline_thickness,
815  &gbr_metadata );
816 
817  // Ensure the outline is closed:
818  int last_idx = outline.PointCount() - 1;
819 
820  if( outline.CPoint( 0 ) != outline.CPoint( last_idx ) )
821  {
822  m_plotter->ThickSegment( wxPoint( outline.CPoint( 0 ) ),
823  wxPoint( outline.CPoint( last_idx ) ),
824  outline_thickness, GetPlotMode(), &gbr_metadata );
825  }
826  }
827 
828  static_cast<GERBER_PLOTTER*>( m_plotter )->PlotGerberRegion( outline,
829  &gbr_metadata );
830  }
831  else
832  {
833  m_plotter->PlotPoly( outline, FILL_T::FILLED_SHAPE, outline_thickness,
834  &gbr_metadata );
835  }
836  }
837  else
838  {
839  if( outline_thickness )
840  {
841  int last_idx = outline.PointCount() - 1;
842 
843  for( int jj = 1; jj <= last_idx; jj++ )
844  {
845  m_plotter->ThickSegment( wxPoint( outline.CPoint( jj - 1) ),
846  wxPoint( outline.CPoint( jj ) ),
847  outline_thickness,
848  GetPlotMode(), &gbr_metadata );
849  }
850 
851  // Ensure the outline is closed:
852  if( outline.CPoint( 0 ) != outline.CPoint( last_idx ) )
853  {
854  m_plotter->ThickSegment( wxPoint( outline.CPoint( 0 ) ),
855  wxPoint( outline.CPoint( last_idx ) ),
856  outline_thickness,
857  GetPlotMode(), &gbr_metadata );
858  }
859  }
860 
862  }
863  }
864 
865  m_plotter->EndBlock( nullptr ); // Clear object attributes
866 }
OUTLINE_MODE GetPlotMode() const
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
virtual void EndBlock(void *aData)
calling this function allows one to define the end of a group of drawing items for instance in SVG or...
Definition: plotter.h:496
virtual void PlotPoly(const std::vector< wxPoint > &aCornerList, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH, void *aData=nullptr)=0
Draw a polygon ( filled or not ).
void SetNetAttribType(int aNetAttribType)
Definition: gbr_metadata.h:219
PLOTTER * m_plotter
Definition: pcbplot.h:142
virtual void StartBlock(void *aData)
calling this function allows one to define the beginning of a group of drawing items,...
Definition: plotter.h:487
int PointCount() const
Return the number of points (vertices) in this line chain.
virtual void ThickSegment(const wxPoint &start, const wxPoint &end, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:519
const VECTOR2I & CPoint(int aIndex) const
Return a reference to a given point in the line chain.
int GetMinThickness() const
Definition: zone.h:244
virtual PCB_LAYER_ID GetLayer() const override
Return the primary layer this item is on.
Definition: zone.cpp:222
virtual PLOT_FORMAT GetPlotterType() const =0
Returns the effective plot engine in use.
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
virtual void SetColor(const COLOR4D &color)=0
void SetNetName(const wxString &aNetname)
Definition: gbr_metadata.h:229
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
bool IsOnCopperLayer() const override
Definition: zone.cpp:228
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
void SetCopper(bool aValue)
Definition: gbr_metadata.h:252
print info associated to a net (TO.N attribute)
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
bool GetFilledPolysUseThickness() const
Definition: zone.h:691

References SHAPE_LINE_CHAIN::CPoint(), PLOTTER::EndBlock(), FILLED, FILLED_SHAPE, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONDUCTOR, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONCONDUCTOR, GBR_NETLIST_METADATA::GBR_NETINFO_NET, GERBER, getColor(), ZONE::GetFilledPolysUseThickness(), ZONE::GetLayer(), ZONE::GetMinThickness(), BOARD_CONNECTED_ITEM::GetNetname(), PCB_PLOT_PARAMS::GetPlotMode(), PLOTTER::GetPlotterType(), SHAPE_POLY_SET::IsEmpty(), ZONE::IsOnCopperLayer(), m_plotter, NO_FILL, SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), PLOTTER::PlotPoly(), SHAPE_LINE_CHAIN::PointCount(), GBR_METADATA::SetApertureAttrib(), PLOTTER::SetColor(), GBR_METADATA::SetCopper(), PLOTTER::SetCurrentLineWidth(), GBR_METADATA::SetNetAttribType(), GBR_METADATA::SetNetName(), PLOTTER::StartBlock(), and PLOTTER::ThickSegment().

Referenced by PlotSolderMaskLayer(), and PlotStandardLayer().

◆ PlotFootprintGraphicItem()

void BRDITEMS_PLOTTER::PlotFootprintGraphicItem ( const FP_SHAPE aShape)

Definition at line 537 of file plot_brditems_plotter.cpp.

538 {
539  if( aShape->Type() != PCB_FP_SHAPE_T )
540  return;
541 
542  m_plotter->SetColor( getColor( aShape->GetLayer() ) );
543 
544  bool sketch = GetPlotMode() == SKETCH;
545  int thickness = aShape->GetWidth();
546 
547  GBR_METADATA gbr_metadata;
549  const FOOTPRINT* parent = static_cast<const FOOTPRINT*> ( aShape->GetParent() );
550  gbr_metadata.SetCmpReference( parent->GetReference() );
551 
552  bool isOnCopperLayer = ( m_layerMask & LSET::AllCuMask() ).any();
553 
554  if( aShape->GetLayer() == Edge_Cuts ) // happens also when plotting copper layers
555  {
557  }
558  else if( isOnCopperLayer ) // only for items not on Edge_Cuts.
559  {
561  gbr_metadata.SetCopper( true );
562  }
563 
564  int radius; // Circle/arc radius.
565 
566  switch( aShape->GetShape() )
567  {
568  case SHAPE_T::SEGMENT:
569  m_plotter->ThickSegment( aShape->GetStart(), aShape->GetEnd(), thickness, GetPlotMode(),
570  &gbr_metadata );
571  break;
572 
573  case SHAPE_T::RECT:
574  {
575  std::vector<wxPoint> pts = aShape->GetRectCorners();
576 
577  if( sketch || thickness > 0 )
578  {
579  m_plotter->ThickSegment( pts[0], pts[1], thickness, GetPlotMode(), &gbr_metadata );
580  m_plotter->ThickSegment( pts[1], pts[2], thickness, GetPlotMode(), &gbr_metadata );
581  m_plotter->ThickSegment( pts[2], pts[3], thickness, GetPlotMode(), &gbr_metadata );
582  m_plotter->ThickSegment( pts[3], pts[0], thickness, GetPlotMode(), &gbr_metadata );
583  }
584 
585  if( !sketch && aShape->IsFilled() )
586  {
587  SHAPE_LINE_CHAIN poly;
588 
589  for( const wxPoint& pt : pts )
590  poly.Append( pt );
591 
592  m_plotter->PlotPoly( poly, FILL_T::FILLED_SHAPE, -1, &gbr_metadata );
593  }
594  }
595  break;
596 
597  case SHAPE_T::CIRCLE:
598  radius = KiROUND( GetLineLength( aShape->GetStart(), aShape->GetEnd() ) );
599 
600  if( aShape->IsFilled() )
601  {
602  m_plotter->FilledCircle( aShape->GetStart(), radius * 2 + thickness, GetPlotMode(),
603  &gbr_metadata );
604  }
605  else
606  {
607  m_plotter->ThickCircle( aShape->GetStart(), radius * 2, thickness, GetPlotMode(),
608  &gbr_metadata );
609  }
610 
611  break;
612 
613  case SHAPE_T::ARC:
614  {
615  radius = KiROUND( GetLineLength( aShape->GetCenter(), aShape->GetStart() ) );
616  double startAngle = ArcTangente( aShape->GetStart().y - aShape->GetCenter().y,
617  aShape->GetStart().x - aShape->GetCenter().x );
618  double endAngle = startAngle + aShape->GetArcAngle();
619 
620  // when startAngle == endAngle ThickArc() doesn't know whether it's 0 deg and 360 deg
621  if( std::abs( aShape->GetArcAngle() ) == 3600.0 )
622  {
623  m_plotter->ThickCircle( aShape->GetCenter(), radius * 2, thickness, GetPlotMode(),
624  &gbr_metadata );
625  }
626  else
627  {
628  m_plotter->ThickArc( aShape->GetCenter(), -endAngle, -startAngle, radius, thickness,
629  GetPlotMode(), &gbr_metadata );
630  }
631  }
632  break;
633 
634  case SHAPE_T::POLY:
635  if( aShape->IsPolyShapeValid() )
636  {
637  std::vector<wxPoint> cornerList;
638  aShape->DupPolyPointsList( cornerList );
639 
640  // We must compute board coordinates from m_PolyList which are relative to the parent
641  // position at orientation 0
642  const FOOTPRINT *parentFootprint = aShape->GetParentFootprint();
643 
644  if( parentFootprint )
645  {
646  for( unsigned ii = 0; ii < cornerList.size(); ++ii )
647  {
648  wxPoint* corner = &cornerList[ii];
649  RotatePoint( corner, parentFootprint->GetOrientation() );
650  *corner += parentFootprint->GetPosition();
651  }
652  }
653 
654  if( sketch )
655  {
656  for( size_t i = 1; i < cornerList.size(); i++ )
657  {
658  m_plotter->ThickSegment( cornerList[i - 1], cornerList[i], thickness,
659  GetPlotMode(), &gbr_metadata );
660  }
661 
662  m_plotter->ThickSegment( cornerList.back(), cornerList.front(), thickness,
663  GetPlotMode(), &gbr_metadata );
664 
665  }
666  else
667  {
668  // This must be simplified and fractured to prevent overlapping polygons
669  // from generating invalid Gerber files
670 
671  SHAPE_LINE_CHAIN line( cornerList );
672  SHAPE_POLY_SET tmpPoly;
673 
674  line.SetClosed( true );
675  tmpPoly.AddOutline( line );
678 
679  for( int jj = 0; jj < tmpPoly.OutlineCount(); ++jj )
680  {
681  SHAPE_LINE_CHAIN &poly = tmpPoly.Outline( jj );
682  m_plotter->PlotPoly( poly, fill, thickness, &gbr_metadata );
683  }
684  }
685  }
686 
687  break;
688 
689  case SHAPE_T::BEZIER:
690  m_plotter->BezierCurve( aShape->GetStart(), aShape->GetBezierC1(),
691  aShape->GetBezierC2(), aShape->GetEnd(), 0, thickness );
692  break;
693 
694  default:
695  wxASSERT_MSG( false, wxT( "Unhandled FP_SHAPE shape" ) );
696  break;
697  }
698 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:759
OUTLINE_MODE GetPlotMode() const
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
aperture used for etched components.
Definition: gbr_metadata.h:94
int GetWidth() const
Definition: eda_shape.h:98
int OutlineCount() const
Return the number of vertices in a given outline/hole.
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Return the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:222
virtual void ThickCircle(const wxPoint &pos, int diametre, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:585
print info associated to a component (TO.C attribute)
const wxPoint & GetStart() const
Return the starting point of the graphic.
Definition: eda_shape.h:106
virtual void PlotPoly(const std::vector< wxPoint > &aCornerList, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH, void *aData=nullptr)=0
Draw a polygon ( filled or not ).
void SetNetAttribType(int aNetAttribType)
Definition: gbr_metadata.h:219
PLOTTER * m_plotter
Definition: pcbplot.h:142
double GetOrientation() const
Definition: footprint.h:191
void DupPolyPointsList(std::vector< wxPoint > &aBuffer) const
Duplicate the list of corners in a std::vector<wxPoint>
Definition: eda_shape.cpp:1193
double GetArcAngle() const
Definition: eda_shape.cpp:536
virtual void FilledCircle(const wxPoint &pos, int diametre, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:601
class FP_SHAPE, a footprint edge
Definition: typeinfo.h:93
virtual void BezierCurve(const wxPoint &aStart, const wxPoint &aControl1, const wxPoint &aControl2, const wxPoint &aEnd, int aTolerance, int aLineThickness=USE_DEFAULT_LINE_WIDTH)
Generic fallback: Cubic Bezier curve rendered as a polyline In KiCad the bezier curves have 4 control...
Definition: plotter.cpp:205
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:229
bool IsPolyShapeValid() const
Definition: eda_shape.cpp:1210
virtual void ThickSegment(const wxPoint &start, const wxPoint &end, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:519
FILL_T
Definition: eda_shape.h:53
void Append(int aX, int aY, bool aAllowDuplication=false)
Append a new point at the end of the line chain.
bool IsFilled() const
Definition: eda_shape.h:90
const wxPoint & GetBezierC1() const
Definition: eda_shape.h:154
std::vector< wxPoint > GetRectCorners() const
Definition: eda_shape.cpp:981
const wxPoint & GetEnd() const
Return the ending point of the graphic.
Definition: eda_shape.h:131
Represent a set of closed polygons.
SHAPE_LINE_CHAIN & Outline(int aIndex)
wxPoint GetCenter() const override
This defaults to the center of the bounding box if not overridden.
Definition: pcb_shape.h:79
const wxPoint & GetBezierC2() const
Definition: eda_shape.h:157
const wxString & GetReference() const
Definition: footprint.h:466
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
void Fracture(POLYGON_MODE aFastMode)
Convert a single outline slitted ("fractured") polygon into a set ouf outlines with holes.
virtual void SetColor(const COLOR4D &color)=0
int AddOutline(const SHAPE_LINE_CHAIN &aOutline)
Adds a new hole to the given outline (default: last) and returns its index.
FOOTPRINT * GetParentFootprint() const
Return the parent footprint or NULL if PCB_SHAPE does not belong to a footprint.
Definition: pcb_shape.cpp:123
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
LSET m_layerMask
Definition: pcbplot.h:144
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:73
wxPoint GetPosition() const override
Definition: footprint.h:187
virtual void ThickArc(const wxPoint &centre, double StAngle, double EndAngle, int rayon, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:543
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
SHAPE_T GetShape() const
Definition: eda_shape.h:101
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:183
BOARD_ITEM_CONTAINER * GetParent() const
Definition: board_item.h:136
void SetCopper(bool aValue)
Definition: gbr_metadata.h:252
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143
void SetCmpReference(const wxString &aComponentRef)
Definition: gbr_metadata.h:241
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:112

References SHAPE_POLY_SET::AddOutline(), LSET::AllCuMask(), SHAPE_LINE_CHAIN::Append(), ARC, ArcTangente(), BEZIER, PLOTTER::BezierCurve(), CIRCLE, EDA_SHAPE::DupPolyPointsList(), Edge_Cuts, FILLED_SHAPE, PLOTTER::FilledCircle(), SHAPE_POLY_SET::Fracture(), GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_EDGECUT, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_ETCHEDCMP, GBR_NETLIST_METADATA::GBR_NETINFO_CMP, EDA_SHAPE::GetArcAngle(), EDA_SHAPE::GetBezierC1(), EDA_SHAPE::GetBezierC2(), PCB_SHAPE::GetCenter(), getColor(), EDA_SHAPE::GetEnd(), BOARD_ITEM::GetLayer(), GetLineLength(), FOOTPRINT::GetOrientation(), BOARD_ITEM::GetParent(), PCB_SHAPE::GetParentFootprint(), PCB_PLOT_PARAMS::GetPlotMode(), FOOTPRINT::GetPosition(), EDA_SHAPE::GetRectCorners(), FOOTPRINT::GetReference(), EDA_SHAPE::GetShape(), EDA_SHAPE::GetStart(), EDA_SHAPE::GetWidth(), EDA_SHAPE::IsFilled(), EDA_SHAPE::IsPolyShapeValid(), KiROUND(), m_layerMask, m_plotter, NO_FILL, SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), PCB_FP_SHAPE_T, PLOTTER::PlotPoly(), SHAPE_POLY_SET::PM_FAST, POLY, RECT, RotatePoint(), SEGMENT, GBR_METADATA::SetApertureAttrib(), SHAPE_LINE_CHAIN::SetClosed(), GBR_METADATA::SetCmpReference(), PLOTTER::SetColor(), GBR_METADATA::SetCopper(), GBR_METADATA::SetNetAttribType(), SKETCH, PLOTTER::ThickArc(), PLOTTER::ThickCircle(), PLOTTER::ThickSegment(), and EDA_ITEM::Type().

Referenced by PLACEFILE_GERBER_WRITER::CreatePlaceFile(), PlotFootprintGraphicItems(), and PlotSolderMaskLayer().

◆ PlotFootprintGraphicItems()

void BRDITEMS_PLOTTER::PlotFootprintGraphicItems ( const FOOTPRINT aFootprint)

Definition at line 525 of file plot_brditems_plotter.cpp.

526 {
527  for( const BOARD_ITEM* item : aFootprint->GraphicalItems() )
528  {
529  const FP_SHAPE* shape = dynamic_cast<const FP_SHAPE*>( item );
530 
531  if( shape && m_layerMask[ shape->GetLayer() ] )
532  PlotFootprintGraphicItem( shape );
533  }
534 }
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
void PlotFootprintGraphicItem(const FP_SHAPE *aShape)
DRAWINGS & GraphicalItems()
Definition: footprint.h:172
LSET m_layerMask
Definition: pcbplot.h:144
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143

References BOARD_ITEM::GetLayer(), FOOTPRINT::GraphicalItems(), m_layerMask, and PlotFootprintGraphicItem().

Referenced by PlotStandardLayer().

◆ PlotFootprintTextItem()

void BRDITEMS_PLOTTER::PlotFootprintTextItem ( const FP_TEXT aText,
const COLOR4D aColor 
)

Definition at line 375 of file plot_brditems_plotter.cpp.

376 {
377  COLOR4D color = aColor;
378 
379  if( aColor == COLOR4D::WHITE )
380  color = COLOR4D( LIGHTGRAY );
381 
383 
384  // calculate some text parameters :
385  wxSize size = aTextMod->GetTextSize();
386  wxPoint pos = aTextMod->GetTextPos();
387  double orient = aTextMod->GetDrawRotation();
388  int thickness = aTextMod->GetEffectiveTextPenWidth();
389 
390  if( aTextMod->IsMirrored() )
391  size.x = -size.x; // Text is mirrored
392 
393  // Non bold texts thickness is clamped at 1/6 char size by the low level draw function.
394  // but in Pcbnew we do not manage bold texts and thickness up to 1/4 char size
395  // (like bold text) and we manage the thickness.
396  // So we set bold flag to true
397  bool allow_bold = true;
398 
399  GBR_METADATA gbr_metadata;
400 
401  if( IsCopperLayer( aTextMod->GetLayer() ) )
403 
404  gbr_metadata.SetNetAttribType( GBR_NETLIST_METADATA::GBR_NETINFO_CMP );
405  const FOOTPRINT* parent = static_cast<const FOOTPRINT*> ( aTextMod->GetParent() );
406  gbr_metadata.SetCmpReference( parent->GetReference() );
407 
408  m_plotter->SetCurrentLineWidth( thickness );
409 
410  m_plotter->Text( pos, aColor, aTextMod->GetShownText(), orient, size,
411  aTextMod->GetHorizJustify(), aTextMod->GetVertJustify(), thickness,
412  aTextMod->IsItalic(), allow_bold, false, &gbr_metadata );
413 }
print info associated to a component (TO.C attribute)
int color
Definition: DXF_plotter.cpp:57
PLOTTER * m_plotter
Definition: pcbplot.h:142
const wxString & GetReference() const
Definition: footprint.h:466
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:808
virtual void SetColor(const COLOR4D &color)=0
Definition: color4d.h:48
virtual void Text(const wxPoint &aPos, const COLOR4D &aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, bool aMultilineAllowed=false, void *aData=nullptr)
Draw text with the plotter.
Definition: gr_text.cpp:219
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONCONDUCTOR, GBR_NETLIST_METADATA::GBR_NETINFO_CMP, FP_TEXT::GetDrawRotation(), EDA_TEXT::GetEffectiveTextPenWidth(), EDA_TEXT::GetHorizJustify(), BOARD_ITEM::GetLayer(), BOARD_ITEM::GetParent(), FOOTPRINT::GetReference(), FP_TEXT::GetShownText(), EDA_TEXT::GetTextPos(), EDA_TEXT::GetTextSize(), EDA_TEXT::GetVertJustify(), IsCopperLayer(), EDA_TEXT::IsItalic(), EDA_TEXT::IsMirrored(), LIGHTGRAY, m_plotter, GBR_METADATA::SetApertureAttrib(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), PLOTTER::Text(), and WHITE.

Referenced by PlotFootprintTextItems().

◆ PlotFootprintTextItems()

void BRDITEMS_PLOTTER::PlotFootprintTextItems ( const FOOTPRINT aFootprint)

Definition at line 293 of file plot_brditems_plotter.cpp.

294 {
295  const FP_TEXT* textItem = &aFootprint->Reference();
296  LAYER_NUM textLayer = textItem->GetLayer();
297 
298  // Reference and value are specific items, not in graphic items list
299  if( GetPlotReference() && m_layerMask[textLayer]
300  && ( textItem->IsVisible() || GetPlotInvisibleText() ) )
301  {
302  PlotFootprintTextItem( textItem, getColor( textLayer ) );
303  }
304 
305  textItem = &aFootprint->Value();
306  textLayer = textItem->GetLayer();
307 
308  if( GetPlotValue() && m_layerMask[textLayer]
309  && ( textItem->IsVisible() || GetPlotInvisibleText() ) )
310  {
311  PlotFootprintTextItem( textItem, getColor( textLayer ) );
312  }
313 
314  for( const BOARD_ITEM* item : aFootprint->GraphicalItems() )
315  {
316  textItem = dyn_cast<const FP_TEXT*>( item );
317 
318  if( !textItem )
319  continue;
320 
321  if( !textItem->IsVisible() )
322  continue;
323 
324  textLayer = textItem->GetLayer();
325 
326  if( textLayer == Edge_Cuts || textLayer >= PCB_LAYER_ID_COUNT )
327  continue;
328 
329  if( !m_layerMask[textLayer] )
330  continue;
331 
332  if( textItem->GetText() == wxT( "${REFERENCE}" ) && !GetPlotReference() )
333  continue;
334 
335  if( textItem->GetText() == wxT( "${VALUE}" ) && !GetPlotValue() )
336  continue;
337 
338  PlotFootprintTextItem( textItem, getColor( textLayer ) );
339  }
340 }
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
int LAYER_NUM
This can be replaced with int and removed.
Definition: layer_ids.h:41
FP_TEXT & Value()
read/write accessors:
Definition: footprint.h:502
FP_TEXT & Reference()
Definition: footprint.h:503
virtual bool IsVisible() const
Definition: eda_text.h:207
DRAWINGS & GraphicalItems()
Definition: footprint.h:172
bool GetPlotValue() const
LSET m_layerMask
Definition: pcbplot.h:144
bool GetPlotInvisibleText() const
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143
bool GetPlotReference() const
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:154
void PlotFootprintTextItem(const FP_TEXT *aText, const COLOR4D &aColor)

References Edge_Cuts, getColor(), BOARD_ITEM::GetLayer(), PCB_PLOT_PARAMS::GetPlotInvisibleText(), PCB_PLOT_PARAMS::GetPlotReference(), PCB_PLOT_PARAMS::GetPlotValue(), EDA_TEXT::GetText(), FOOTPRINT::GraphicalItems(), EDA_TEXT::IsVisible(), m_layerMask, PCB_LAYER_ID_COUNT, PlotFootprintTextItem(), FOOTPRINT::Reference(), and FOOTPRINT::Value().

Referenced by PlotSolderMaskLayer(), and PlotStandardLayer().

◆ plotOneDrillMark()

void BRDITEMS_PLOTTER::plotOneDrillMark ( PAD_DRILL_SHAPE_T  aDrillShape,
const wxPoint &  aDrillPos,
const wxSize &  aDrillSize,
const wxSize &  aPadSize,
double  aOrientation,
int  aSmallDrill 
)
private

Helper function to plot a single drill mark.

It compensate and clamp the drill mark size depending on the current plot options.

Definition at line 1005 of file plot_brditems_plotter.cpp.

1008 {
1009  wxSize drillSize = aDrillSize;
1010 
1011  // Small drill marks have no significance when applied to slots
1012  if( aSmallDrill && aDrillShape == PAD_DRILL_SHAPE_CIRCLE )
1013  drillSize.x = std::min( aSmallDrill, drillSize.x );
1014 
1015  // Round holes only have x diameter, slots have both
1016  drillSize.x -= getFineWidthAdj();
1017  drillSize.x = Clamp( 1, drillSize.x, aPadSize.x - 1 );
1018 
1019  if( aDrillShape == PAD_DRILL_SHAPE_OBLONG )
1020  {
1021  drillSize.y -= getFineWidthAdj();
1022  drillSize.y = Clamp( 1, drillSize.y, aPadSize.y - 1 );
1023  m_plotter->FlashPadOval( aDrillPos, drillSize, aOrientation, GetPlotMode(), nullptr );
1024  }
1025  else
1026  {
1027  m_plotter->FlashPadCircle( aDrillPos, drillSize.x, GetPlotMode(), nullptr );
1028  }
1029 }
OUTLINE_MODE GetPlotMode() const
virtual void FlashPadOval(const wxPoint &aPadPos, const wxSize &aSize, double aPadOrient, OUTLINE_MODE aTraceMode, void *aData)=0
PLOTTER * m_plotter
Definition: pcbplot.h:142
int getFineWidthAdj() const
Definition: pcbplot.h:75
const T & Clamp(const T &lower, const T &value, const T &upper)
Limit value within the range lower <= value <= upper.
Definition: util.h:52
virtual void FlashPadCircle(const wxPoint &aPadPos, int aDiameter, OUTLINE_MODE aTraceMode, void *aData)=0

References Clamp(), PLOTTER::FlashPadCircle(), PLOTTER::FlashPadOval(), getFineWidthAdj(), PCB_PLOT_PARAMS::GetPlotMode(), m_plotter, PAD_DRILL_SHAPE_CIRCLE, and PAD_DRILL_SHAPE_OBLONG.

Referenced by PlotDrillMarks().

◆ PlotPad()

void BRDITEMS_PLOTTER::PlotPad ( const PAD aPad,
const COLOR4D aColor,
OUTLINE_MODE  aPlotMode 
)

Plot a pad.

Unlike other items, a pad had not a specific color and be drawn as a non filled item although the plot mode is filled color and plot mode are needed by this function.

Definition at line 81 of file plot_brditems_plotter.cpp.

82 {
83  wxPoint shape_pos = aPad->ShapePos();
84  GBR_METADATA gbr_metadata;
85 
86  bool plotOnCopperLayer = ( m_layerMask & LSET::AllCuMask() ).any();
87  bool plotOnExternalCopperLayer = ( m_layerMask & LSET::ExternalCuMask() ).any();
88 
89  // Pad not on the solder mask layer cannot be soldered.
90  // therefore it can have a specific aperture attribute.
91  // Not yet in use.
92  // bool isPadOnBoardTechLayers = ( aPad->GetLayerSet() & LSET::AllBoardTechMask() ).any();
93 
94  gbr_metadata.SetCmpReference( aPad->GetParent()->GetReference() );
95 
96  if( plotOnCopperLayer )
97  {
98  gbr_metadata.SetNetAttribType( GBR_NETINFO_ALL );
99  gbr_metadata.SetCopper( true );
100 
101  // Gives a default attribute, for instance for pads used as tracks in net ties:
102  // Connector pads and SMD pads are on external layers
103  // if on internal layers, they are certainly used as net tie
104  // and are similar to tracks: just conductor items
106 
107  const bool useUTF8 = false;
108  const bool useQuoting = false;
109  gbr_metadata.SetPadName( aPad->GetNumber(), useUTF8, useQuoting );
110 
111  if( !aPad->GetNumber().IsEmpty() )
112  gbr_metadata.SetPadPinFunction( aPad->GetPinFunction(), useUTF8, useQuoting );
113 
114  gbr_metadata.SetNetName( aPad->GetNetname() );
115 
116  // Some pads are mechanical pads ( through hole or smd )
117  // when this is the case, they have no pad name and/or are not plated.
118  // In this case gerber files have slightly different attributes.
119  if( aPad->GetAttribute() == PAD_ATTRIB::NPTH || aPad->GetNumber().IsEmpty() )
120  gbr_metadata.m_NetlistMetadata.m_NotInNet = true;
121 
122  if( !plotOnExternalCopperLayer )
123  {
124  // the .P object attribute (GBR_NETLIST_METADATA::GBR_NETINFO_PAD)
125  // is used on outer layers, unless the component is embedded
126  // or a "etched" component (fp only drawn, not a physical component)
127  // Currently, Pcbnew does not handle embedded component, so we disable the .P
128  // attribute on internal layers
129  // Note the Gerber doc is not really clear about through holes pads about the .P
132 
133  }
134 
135  // Some attributes are reserved to the external copper layers:
136  // GBR_APERTURE_ATTRIB_CONNECTORPAD and GBR_APERTURE_ATTRIB_SMDPAD_CUDEF
137  // for instance.
138  // Pad with type PAD_ATTRIB::CONN or PAD_ATTRIB::SMD that is not on outer layer
139  // has its aperture attribute set to GBR_APERTURE_ATTRIB_CONDUCTOR
140  switch( aPad->GetAttribute() )
141  {
142  case PAD_ATTRIB::NPTH: // Mechanical pad through hole
144  break;
145 
146  case PAD_ATTRIB::PTH : // Pad through hole, a hole is also expected
147  gbr_metadata.SetApertureAttrib(
149  break;
150 
151  case PAD_ATTRIB::CONN: // Connector pads, no solder paste but with solder mask.
152  if( plotOnExternalCopperLayer )
153  gbr_metadata.SetApertureAttrib(
155  break;
156 
157  case PAD_ATTRIB::SMD: // SMD pads (on external copper layer only)
158  // with solder paste and mask
159  if( plotOnExternalCopperLayer )
160  gbr_metadata.SetApertureAttrib(
162  break;
163  }
164 
165  // Fabrication properties can have specific GBR_APERTURE_METADATA options
166  // that replace previous aperture attribute:
167  switch( aPad->GetProperty() )
168  {
169  case PAD_PROP::BGA: // Only applicable to outer layers
170  if( plotOnExternalCopperLayer )
171  gbr_metadata.SetApertureAttrib(
173  break;
174 
176  gbr_metadata.SetApertureAttrib(
178  break;
179 
181  gbr_metadata.SetApertureAttrib(
183  break;
184 
185  case PAD_PROP::TESTPOINT: // Only applicable to outer layers
186  if( plotOnExternalCopperLayer )
187  gbr_metadata.SetApertureAttrib(
189  break;
190 
191  case PAD_PROP::HEATSINK:
192  gbr_metadata.SetApertureAttrib(
194  break;
195 
197  gbr_metadata.SetApertureAttrib(
199  break;
200 
201  case PAD_PROP::NONE:
202  break;
203  }
204 
205  // Ensure NPTH pads have *always* the GBR_APERTURE_ATTRIB_WASHERPAD attribute
206  if( aPad->GetAttribute() == PAD_ATTRIB::NPTH )
208  }
209  else
210  {
212  }
213 
214  // Set plot color (change WHITE to LIGHTGRAY because
215  // the white items are not seen on a white paper or screen
216  m_plotter->SetColor( aColor != WHITE ? aColor : LIGHTGRAY);
217 
218  if( aPlotMode == SKETCH )
220 
221  switch( aPad->GetShape() )
222  {
223  case PAD_SHAPE::CIRCLE:
224  m_plotter->FlashPadCircle( shape_pos, aPad->GetSize().x, aPlotMode, &gbr_metadata );
225  break;
226 
227  case PAD_SHAPE::OVAL:
228  m_plotter->FlashPadOval( shape_pos, aPad->GetSize(), aPad->GetOrientation(), aPlotMode,
229  &gbr_metadata );
230  break;
231 
232  case PAD_SHAPE::RECT:
233  m_plotter->FlashPadRect( shape_pos, aPad->GetSize(), aPad->GetOrientation(), aPlotMode,
234  &gbr_metadata );
235  break;
236 
238  m_plotter->FlashPadRoundRect( shape_pos, aPad->GetSize(), aPad->GetRoundRectCornerRadius(),
239  aPad->GetOrientation(), aPlotMode, &gbr_metadata );
240  break;
241 
243  {
244  // Build the pad polygon in coordinates relative to the pad
245  // (i.e. for a pad at pos 0,0, rot 0.0). Needed to use aperture macros,
246  // to be able to create a pattern common to all trapezoid pads having the same shape
247  wxPoint coord[4];
248 
249  // Order is lower left, lower right, upper right, upper left.
250  wxSize half_size = aPad->GetSize()/2;
251  wxSize trap_delta = aPad->GetDelta()/2;
252 
253  coord[0] = wxPoint( -half_size.x - trap_delta.y, half_size.y + trap_delta.x );
254  coord[1] = wxPoint( half_size.x + trap_delta.y, half_size.y - trap_delta.x );
255  coord[2] = wxPoint( half_size.x - trap_delta.y, -half_size.y + trap_delta.x );
256  coord[3] = wxPoint( -half_size.x + trap_delta.y, -half_size.y - trap_delta.x );
257 
258  m_plotter->FlashPadTrapez( shape_pos, coord, aPad->GetOrientation(), aPlotMode,
259  &gbr_metadata );
260  }
261  break;
262 
265  {
266  static_cast<GERBER_PLOTTER*>( m_plotter )->FlashPadChamferRoundRect(
267  shape_pos, aPad->GetSize(),
268  aPad->GetRoundRectCornerRadius(),
269  aPad->GetChamferRectRatio(),
270  aPad->GetChamferPositions(),
271  aPad->GetOrientation(), aPlotMode, &gbr_metadata );
272  break;
273  }
274 
276 
277  default:
278  case PAD_SHAPE::CUSTOM:
279  {
280  const std::shared_ptr<SHAPE_POLY_SET>& polygons = aPad->GetEffectivePolygon();
281 
282  if( polygons->OutlineCount() )
283  {
284  m_plotter->FlashPadCustom( shape_pos, aPad->GetSize(), aPad->GetOrientation(),
285  polygons.get(), aPlotMode, &gbr_metadata );
286  }
287  }
288  break;
289  }
290 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:759
virtual void FlashPadRoundRect(const wxPoint &aPadPos, const wxSize &aSize, int aCornerRadius, double aOrient, OUTLINE_MODE aTraceMode, void *aData)=0
aperture used for castellated pads in copper layer files.
Definition: gbr_metadata.h:131
print info associated to a component (TO.C attribute)
PAD_PROP GetProperty() const
Definition: pad.h:374
void SetNetAttribType(int aNetAttribType)
Definition: gbr_metadata.h:219
Like smd, does not appear on the solder paste layer (default)
Smd pad, appears on the solder paste layer (default)
virtual void FlashPadOval(const wxPoint &aPadPos, const wxSize &aSize, double aPadOrient, OUTLINE_MODE aTraceMode, void *aData)=0
PLOTTER * m_plotter
Definition: pcbplot.h:142
aperture used for SMD pad. Excluded BGA pads which have their own type.
Definition: gbr_metadata.h:105
#define KI_FALLTHROUGH
The KI_FALLTHROUGH macro is to be used when switch statement cases should purposely fallthrough from ...
Definition: macros.h:83
aperture used for castellated pads in drill files.
Definition: gbr_metadata.h:134
a test point pad
Plated through hole pad.
virtual void FlashPadTrapez(const wxPoint &aPadPos, const wxPoint *aCorners, double aPadOrient, OUTLINE_MODE aTraceMode, void *aData)=0
Flash a trapezoidal pad.
void SetPadPinFunction(const wxString &aPadPinFunction, bool aUseUTF8, bool aEscapeString)
Definition: gbr_metadata.h:236
a pad used as heat sink, usually in SMD footprints
aperture used for edge connector pad (outer layers).
Definition: gbr_metadata.h:117
wxPoint ShapePos() const
Definition: pad.cpp:706
like PAD_PTH, but not plated
aperture used for fiducial pad (outer layers), at footprint level.
Definition: gbr_metadata.h:125
virtual void FlashPadRect(const wxPoint &aPadPos, const wxSize &aSize, double aPadOrient, OUTLINE_MODE aTraceMode, void *aData)=0
double GetOrientation() const
Return the rotation angle of the pad in a variety of units (the basic call returns tenths of degrees)...
Definition: pad.h:349
void SetPadName(const wxString &aPadname, bool aUseUTF8=false, bool aEscapeString=false)
Definition: gbr_metadata.h:231
virtual PLOT_FORMAT GetPlotterType() const =0
Returns the effective plot engine in use.
const wxSize & GetSize() const
Definition: pad.h:233
Smd pad, used in BGA footprints.
static LSET ExternalCuMask()
Return a mask holding the Front and Bottom layers.
Definition: lset.cpp:789
const wxString & GetNumber() const
Definition: pad.h:129
PAD_SHAPE GetShape() const
Definition: pad.h:170
const wxString & GetReference() const
Definition: footprint.h:466
a fiducial (usually a smd) local to the parent footprint
aperture used for mechanical pads (NPTH).
Definition: gbr_metadata.h:121
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
virtual void SetColor(const COLOR4D &color)=0
aperture used for test point pad (outer layers).
Definition: gbr_metadata.h:122
int GetRoundRectCornerRadius() const
Definition: pad.cpp:269
Definition: color4d.h:48
const wxSize & GetDelta() const
Definition: pad.h:240
FOOTPRINT * GetParent() const
Definition: pad.cpp:1439
void SetNetName(const wxString &aNetname)
Definition: gbr_metadata.h:229
a fiducial (usually a smd) for the full board
double GetChamferRectRatio() const
Definition: pad.h:533
no special fabrication property
PAD_ATTRIB GetAttribute() const
Definition: pad.h:371
LSET m_layerMask
Definition: pcbplot.h:144
aperture used for heat sink pad (typically for SMDs).
Definition: gbr_metadata.h:128
const std::shared_ptr< SHAPE_POLY_SET > & GetEffectivePolygon() const
Definition: pad.cpp:300
aperture used for BGA pads with a solder mask defined by the copper shape.
Definition: gbr_metadata.h:111
int GetSketchPadLineWidth() const
virtual void FlashPadCustom(const wxPoint &aPadPos, const wxSize &aSize, double aPadOrient, SHAPE_POLY_SET *aPolygons, OUTLINE_MODE aTraceMode, void *aData)=0
int GetChamferPositions() const
Definition: pad.h:543
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
a pad with a castellated through hole
bool m_NotInNet
true if a pad of a footprint cannot be connected (for instance a mechanical NPTH, ot a not named pad)...
GBR_NETLIST_METADATA m_NetlistMetadata
An item to handle object attribute.
Definition: gbr_metadata.h:262
void SetCopper(bool aValue)
Definition: gbr_metadata.h:252
print info associated to a net (TO.N attribute)
const wxString & GetPinFunction() const
Definition: pad.h:140
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
void SetCmpReference(const wxString &aComponentRef)
Definition: gbr_metadata.h:241
virtual void FlashPadCircle(const wxPoint &aPadPos, int aDiameter, OUTLINE_MODE aTraceMode, void *aData)=0
#define GBR_NETINFO_ALL

References LSET::AllCuMask(), BGA, CASTELLATED, CHAMFERED_RECT, CIRCLE, CONN, CUSTOM, LSET::ExternalCuMask(), FIDUCIAL_GLBL, FIDUCIAL_LOCAL, PLOTTER::FlashPadCircle(), PLOTTER::FlashPadCustom(), PLOTTER::FlashPadOval(), PLOTTER::FlashPadRect(), PLOTTER::FlashPadRoundRect(), PLOTTER::FlashPadTrapez(), GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_BGAPAD_CUDEF, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CASTELLATEDPAD, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_COMPONENTPAD, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONDUCTOR, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONNECTORPAD, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_FIDUCIAL_GLBL, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_FIDUCIAL_LOCAL, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_HEATSINKPAD, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_SMDPAD_CUDEF, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_TESTPOINT, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_WASHERPAD, GBR_NETINFO_ALL, GBR_NETLIST_METADATA::GBR_NETINFO_CMP, GBR_NETLIST_METADATA::GBR_NETINFO_NET, GERBER, PAD::GetAttribute(), PAD::GetChamferPositions(), PAD::GetChamferRectRatio(), PAD::GetDelta(), PAD::GetEffectivePolygon(), BOARD_CONNECTED_ITEM::GetNetname(), PAD::GetNumber(), PAD::GetOrientation(), PAD::GetParent(), PAD::GetPinFunction(), PLOTTER::GetPlotterType(), PAD::GetProperty(), FOOTPRINT::GetReference(), PAD::GetRoundRectCornerRadius(), PAD::GetShape(), PAD::GetSize(), PCB_PLOT_PARAMS::GetSketchPadLineWidth(), HEATSINK, KI_FALLTHROUGH, LIGHTGRAY, m_layerMask, GBR_METADATA::m_NetlistMetadata, GBR_NETLIST_METADATA::m_NotInNet, m_plotter, NONE, NPTH, OVAL, PTH, RECT, ROUNDRECT, GBR_METADATA::SetApertureAttrib(), GBR_METADATA::SetCmpReference(), PLOTTER::SetColor(), GBR_METADATA::SetCopper(), PLOTTER::SetCurrentLineWidth(), GBR_METADATA::SetNetAttribType(), GBR_METADATA::SetNetName(), GBR_METADATA::SetPadName(), GBR_METADATA::SetPadPinFunction(), PAD::ShapePos(), SKETCH, SMD, TESTPOINT, TRAPEZOID, and WHITE.

Referenced by PlotStandardLayer().

◆ PlotPcbShape()

void BRDITEMS_PLOTTER::PlotPcbShape ( const PCB_SHAPE aShape)

Definition at line 869 of file plot_brditems_plotter.cpp.

870 {
871  if( !m_layerMask[aShape->GetLayer()] )
872  return;
873 
874  bool sketch = GetPlotMode() == SKETCH;
875  int thickness = aShape->GetWidth();
876 
877  m_plotter->SetColor( getColor( aShape->GetLayer() ) );
878 
879  GBR_METADATA gbr_metadata;
880 
881  if( aShape->GetLayer() == Edge_Cuts )
883 
884  if( IsCopperLayer( aShape->GetLayer() ) )
885  // Graphic items (PCB_SHAPE, TEXT) having no net have the NonConductor attribute
886  // Graphic items having a net have the Conductor attribute, but are not (yet?)
887  // supported in Pcbnew
889 
890  switch( aShape->GetShape() )
891  {
892  case SHAPE_T::SEGMENT:
893  m_plotter->ThickSegment( aShape->GetStart(), aShape->GetEnd(), thickness, GetPlotMode(),
894  &gbr_metadata );
895  break;
896 
897  case SHAPE_T::CIRCLE:
898  if( aShape->IsFilled() )
899  {
900  m_plotter->FilledCircle( aShape->GetStart(), aShape->GetRadius() * 2 + thickness,
901  GetPlotMode(), &gbr_metadata );
902  }
903  else
904  {
905  m_plotter->ThickCircle( aShape->GetStart(), aShape->GetRadius() * 2, thickness,
906  GetPlotMode(), &gbr_metadata );
907  }
908 
909  break;
910 
911  case SHAPE_T::ARC:
912  {
913  double startAngle = ArcTangente( aShape->GetStart().y - aShape->GetCenter().y,
914  aShape->GetStart().x - aShape->GetCenter().x );
915  double endAngle = startAngle + aShape->GetArcAngle();
916 
917  // when startAngle == endAngle ThickArc() doesn't know whether it's 0 deg and 360 deg
918  if( std::abs( aShape->GetArcAngle() ) == 3600.0 )
919  {
920  m_plotter->ThickCircle( aShape->GetCenter(), aShape->GetRadius() * 2, thickness,
921  GetPlotMode(), &gbr_metadata );
922  }
923  else
924  {
925  m_plotter->ThickArc( aShape->GetCenter(), -endAngle, -startAngle, aShape->GetRadius(),
926  thickness, GetPlotMode(), &gbr_metadata );
927  }
928  }
929  break;
930 
931  case SHAPE_T::BEZIER:
932  m_plotter->BezierCurve( aShape->GetStart(), aShape->GetBezierC1(),
933  aShape->GetBezierC2(), aShape->GetEnd(), 0, thickness );
934  break;
935 
936  case SHAPE_T::POLY:
937  if( aShape->IsPolyShapeValid() )
938  {
939  if( sketch )
940  {
941  for( auto it = aShape->GetPolyShape().CIterateSegments( 0 ); it; it++ )
942  {
943  auto seg = it.Get();
944  m_plotter->ThickSegment( wxPoint( seg.A ), wxPoint( seg.B ),
945  thickness, GetPlotMode(), &gbr_metadata );
946  }
947  }
948  else
949  {
950  m_plotter->SetCurrentLineWidth( thickness, &gbr_metadata );
951 
952  // Draw the polygon: only one polygon is expected
953  // However we provide a multi polygon shape drawing
954  // ( for the future or to show a non expected shape )
955  // This must be simplified and fractured to prevent overlapping polygons
956  // from generating invalid Gerber files
957  SHAPE_POLY_SET tmpPoly = SHAPE_POLY_SET( aShape->GetPolyShape() );
960 
961  for( int jj = 0; jj < tmpPoly.OutlineCount(); ++jj )
962  {
963  SHAPE_LINE_CHAIN& poly = tmpPoly.Outline( jj );
964 
965  // Ensure the polygon is closed:
966  poly.SetClosed( true );
967 
968  m_plotter->PlotPoly( poly, fill, thickness, &gbr_metadata );
969  }
970  }
971  }
972  break;
973 
974  case SHAPE_T::RECT:
975  {
976  std::vector<wxPoint> pts = aShape->GetRectCorners();
977 
978  if( sketch || thickness > 0 )
979  {
980  m_plotter->ThickSegment( pts[0], pts[1], thickness, GetPlotMode(), &gbr_metadata );
981  m_plotter->ThickSegment( pts[1], pts[2], thickness, GetPlotMode(), &gbr_metadata );
982  m_plotter->ThickSegment( pts[2], pts[3], thickness, GetPlotMode(), &gbr_metadata );
983  m_plotter->ThickSegment( pts[3], pts[0], thickness, GetPlotMode(), &gbr_metadata );
984  }
985 
986  if( !sketch && aShape->IsFilled() )
987  {
988  SHAPE_LINE_CHAIN poly;
989 
990  for( const wxPoint& pt : pts )
991  poly.Append( pt );
992 
993  m_plotter->PlotPoly( poly, FILL_T::FILLED_SHAPE, -1, &gbr_metadata );
994  }
995 
996  break;
997  }
998 
999  default:
1000  UNIMPLEMENTED_FOR( aShape->SHAPE_T_asString() );
1001  }
1002 }
OUTLINE_MODE GetPlotMode() const
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
int GetWidth() const
Definition: eda_shape.h:98
int OutlineCount() const
Return the number of vertices in a given outline/hole.
virtual void ThickCircle(const wxPoint &pos, int diametre, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:585
const wxPoint & GetStart() const
Return the starting point of the graphic.
Definition: eda_shape.h:106
virtual void PlotPoly(const std::vector< wxPoint > &aCornerList, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH, void *aData=nullptr)=0
Draw a polygon ( filled or not ).
PLOTTER * m_plotter
Definition: pcbplot.h:142
double GetArcAngle() const
Definition: eda_shape.cpp:536
virtual void FilledCircle(const wxPoint &pos, int diametre, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:601
virtual void BezierCurve(const wxPoint &aStart, const wxPoint &aControl1, const wxPoint &aControl2, const wxPoint &aEnd, int aTolerance, int aLineThickness=USE_DEFAULT_LINE_WIDTH)
Generic fallback: Cubic Bezier curve rendered as a polyline In KiCad the bezier curves have 4 control...
Definition: plotter.cpp:205
bool IsPolyShapeValid() const
Definition: eda_shape.cpp:1210
virtual void ThickSegment(const wxPoint &start, const wxPoint &end, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:519
FILL_T
Definition: eda_shape.h:53
void Append(int aX, int aY, bool aAllowDuplication=false)
Append a new point at the end of the line chain.
bool IsFilled() const
Definition: eda_shape.h:90
const wxPoint & GetBezierC1() const
Definition: eda_shape.h:154
std::vector< wxPoint > GetRectCorners() const
Definition: eda_shape.cpp:981
void SetClosed(bool aClosed)
Mark the line chain as closed (i.e.
const wxPoint & GetEnd() const
Return the ending point of the graphic.
Definition: eda_shape.h:131
Represent a set of closed polygons.
SHAPE_LINE_CHAIN & Outline(int aIndex)
wxPoint GetCenter() const override
This defaults to the center of the bounding box if not overridden.
Definition: pcb_shape.h:79
const wxPoint & GetBezierC2() const
Definition: eda_shape.h:157
#define UNIMPLEMENTED_FOR(type)
Definition: macros.h:120
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
wxString SHAPE_T_asString() const
Definition: eda_shape.cpp:71
void Fracture(POLYGON_MODE aFastMode)
Convert a single outline slitted ("fractured") polygon into a set ouf outlines with holes.
SHAPE_POLY_SET & GetPolyShape()
Definition: eda_shape.h:227
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:808
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...
LSET m_layerMask
Definition: pcbplot.h:144
virtual void ThickArc(const wxPoint &centre, double StAngle, double EndAngle, int rayon, int width, OUTLINE_MODE tracemode, void *aData)
Definition: plotter.cpp:543
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
SHAPE_T GetShape() const
Definition: eda_shape.h:101
CONST_SEGMENT_ITERATOR CIterateSegments(int aFirst, int aLast, bool aIterateHoles=false) const
Return an iterator object, for iterating aPolygonIdx-th polygon edges.
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:183
int GetRadius() const
Definition: eda_shape.cpp:472
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.

References SHAPE_LINE_CHAIN::Append(), ARC, ArcTangente(), BEZIER, PLOTTER::BezierCurve(), CIRCLE, SHAPE_POLY_SET::CIterateSegments(), Edge_Cuts, FILLED_SHAPE, PLOTTER::FilledCircle(), SHAPE_POLY_SET::Fracture(), GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_EDGECUT, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONCONDUCTOR, EDA_SHAPE::GetArcAngle(), EDA_SHAPE::GetBezierC1(), EDA_SHAPE::GetBezierC2(), PCB_SHAPE::GetCenter(), getColor(), EDA_SHAPE::GetEnd(), BOARD_ITEM::GetLayer(), PCB_PLOT_PARAMS::GetPlotMode(), EDA_SHAPE::GetPolyShape(), EDA_SHAPE::GetRadius(), EDA_SHAPE::GetRectCorners(), EDA_SHAPE::GetShape(), EDA_SHAPE::GetStart(), EDA_SHAPE::GetWidth(), IsCopperLayer(), EDA_SHAPE::IsFilled(), EDA_SHAPE::IsPolyShapeValid(), m_layerMask, m_plotter, NO_FILL, SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), PLOTTER::PlotPoly(), SHAPE_POLY_SET::PM_FAST, POLY, RECT, SEGMENT, GBR_METADATA::SetApertureAttrib(), SHAPE_LINE_CHAIN::SetClosed(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), EDA_SHAPE::SHAPE_T_asString(), SKETCH, PLOTTER::ThickArc(), PLOTTER::ThickCircle(), PLOTTER::ThickSegment(), and UNIMPLEMENTED_FOR.

Referenced by GENDRILL_WRITER_BASE::genDrillMapFile(), PlotBoardGraphicItems(), PlotDimension(), and PlotPcbTarget().

◆ PlotPcbTarget()

void BRDITEMS_PLOTTER::PlotPcbTarget ( const PCB_TARGET aMire)

Definition at line 471 of file plot_brditems_plotter.cpp.

472 {
473  int dx1, dx2, dy1, dy2, radius;
474 
475  if( !m_layerMask[aMire->GetLayer()] )
476  return;
477 
478  m_plotter->SetColor( getColor( aMire->GetLayer() ) );
479 
480  PCB_SHAPE draw;
481 
482  draw.SetShape( SHAPE_T::CIRCLE );
483  draw.SetFilled( false );
484  draw.SetWidth( aMire->GetWidth() );
485  draw.SetLayer( aMire->GetLayer() );
486  draw.SetStart( aMire->GetPosition() );
487  radius = aMire->GetSize() / 3;
488 
489  if( aMire->GetShape() ) // shape X
490  radius = aMire->GetSize() / 2;
491 
492  // Draw the circle
493  draw.SetEnd( wxPoint( draw.GetStart().x + radius, draw.GetStart().y ) );
494 
495  PlotPcbShape( &draw );
496 
497  draw.SetShape( SHAPE_T::SEGMENT );
498 
499  radius = aMire->GetSize() / 2;
500  dx1 = radius;
501  dy1 = 0;
502  dx2 = 0;
503  dy2 = radius;
504 
505  if( aMire->GetShape() ) // Shape X
506  {
507  dx1 = dy1 = radius;
508  dx2 = dx1;
509  dy2 = -dy1;
510  }
511 
512  wxPoint mirePos( aMire->GetPosition() );
513 
514  // Draw the X or + shape:
515  draw.SetStart( wxPoint( mirePos.x - dx1, mirePos.y - dy1 ) );
516  draw.SetEnd( wxPoint( mirePos.x + dx1, mirePos.y + dy1 ) );
517  PlotPcbShape( &draw );
518 
519  draw.SetStart( wxPoint( mirePos.x - dx2, mirePos.y - dy2 ) );
520  draw.SetEnd( wxPoint( mirePos.x + dx2, mirePos.y + dy2 ) );
521  PlotPcbShape( &draw );
522 }
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
void SetFilled(bool aFlag)
Definition: eda_shape.h:92
void SetEnd(const wxPoint &aEnd)
Definition: eda_shape.h:135
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:164
const wxPoint & GetStart() const
Return the starting point of the graphic.
Definition: eda_shape.h:106
int GetSize() const
Definition: pcb_target.h:62
PLOTTER * m_plotter
Definition: pcbplot.h:142
void SetStart(const wxPoint &aStart)
Definition: eda_shape.h:110
wxPoint GetPosition() const override
Definition: pcb_target.h:56
int GetWidth() const
Definition: pcb_target.h:65
void SetWidth(int aWidth)
Definition: eda_shape.h:97
virtual void SetColor(const COLOR4D &color)=0
void PlotPcbShape(const PCB_SHAPE *aShape)
LSET m_layerMask
Definition: pcbplot.h:144
void SetShape(SHAPE_T aShape)
Definition: eda_shape.h:100
int GetShape() const
Definition: pcb_target.h:59
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143

References CIRCLE, getColor(), BOARD_ITEM::GetLayer(), PCB_TARGET::GetPosition(), PCB_TARGET::GetShape(), PCB_TARGET::GetSize(), EDA_SHAPE::GetStart(), PCB_TARGET::GetWidth(), m_layerMask, m_plotter, PlotPcbShape(), SEGMENT, PLOTTER::SetColor(), EDA_SHAPE::SetEnd(), EDA_SHAPE::SetFilled(), BOARD_ITEM::SetLayer(), EDA_SHAPE::SetShape(), EDA_SHAPE::SetStart(), and EDA_SHAPE::SetWidth().

Referenced by PlotBoardGraphicItems().

◆ PlotPcbText()

void BRDITEMS_PLOTTER::PlotPcbText ( const PCB_TEXT aText)

Definition at line 701 of file plot_brditems_plotter.cpp.

702 {
703  wxString shownText( aText->GetShownText() );
704 
705  if( shownText.IsEmpty() )
706  return;
707 
708  if( !m_layerMask[aText->GetLayer()] )
709  return;
710 
711  GBR_METADATA gbr_metadata;
712 
713  if( IsCopperLayer( aText->GetLayer() ) )
715 
716  COLOR4D color = getColor( aText->GetLayer() );
718 
719  wxSize size = aText->GetTextSize();
720  wxPoint pos = aText->GetTextPos();
721  double orient = aText->GetTextAngle();
722  int thickness = aText->GetEffectiveTextPenWidth();
723 
724  if( aText->IsMirrored() )
725  size.x = -size.x;
726 
727  // Non bold texts thickness is clamped at 1/6 char size by the low level draw function.
728  // but in Pcbnew we do not manage bold texts and thickness up to 1/4 char size
729  // (like bold text) and we manage the thickness.
730  // So we set bold flag to true
731  bool allow_bold = true;
732 
733  m_plotter->SetCurrentLineWidth( thickness );
734 
735  if( aText->IsMultilineAllowed() )
736  {
737  std::vector<wxPoint> positions;
738  wxArrayString strings_list;
739  wxStringSplit( shownText, strings_list, '\n' );
740  positions.reserve( strings_list.Count() );
741 
742  aText->GetLinePositions( positions, strings_list.Count() );
743 
744  for( unsigned ii = 0; ii < strings_list.Count(); ii++ )
745  {
746  wxString& txt = strings_list.Item( ii );
747  m_plotter->Text( positions[ii], color, txt, orient, size, aText->GetHorizJustify(),
748  aText->GetVertJustify(), thickness, aText->IsItalic(),
749  allow_bold, false, &gbr_metadata );
750  }
751  }
752  else
753  {
754  m_plotter->Text( pos, color, shownText, orient, size, aText->GetHorizJustify(),
755  aText->GetVertJustify(), thickness, aText->IsItalic(), allow_bold,
756  false, &gbr_metadata );
757  }
758 }
COLOR4D getColor(LAYER_NUM aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
EDA_TEXT_VJUSTIFY_T GetVertJustify() const
Definition: eda_text.h:220
bool IsMirrored() const
Definition: eda_text.h:210
int color
Definition: DXF_plotter.cpp:57
PLOTTER * m_plotter
Definition: pcbplot.h:142
double GetTextAngle() const
Definition: eda_text.h:195
int GetEffectiveTextPenWidth(int aDefaultWidth=0) const
The EffectiveTextPenWidth uses the text thickness if > 1 or aDefaultWidth.
Definition: eda_text.cpp:159
bool IsItalic() const
Definition: eda_text.h:201
wxString GetShownText(int aDepth=0) const override
Return the string actually shown after processing of the base text.
Definition: pcb_text.cpp:56
EDA_TEXT_HJUSTIFY_T GetHorizJustify() const
Definition: eda_text.h:219
const wxSize & GetTextSize() const
Definition: eda_text.h:259
Metadata which can be added in a gerber file as attribute in X2 format.
Definition: gbr_metadata.h:204
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:808
bool IsMultilineAllowed() const
Definition: eda_text.h:217
virtual void SetColor(const COLOR4D &color)=0
void wxStringSplit(const wxString &aText, wxArrayString &aStrings, wxChar aSplitter)
Split aString to a string list separated at aSplitter.
LSET m_layerMask
Definition: pcbplot.h:144
void GetLinePositions(std::vector< wxPoint > &aPositions, int aLineCount) const
Populate aPositions with the position of each line of a multiline text, according to the vertical jus...
Definition: eda_text.cpp:443
const wxPoint & GetTextPos() const
Definition: eda_text.h:268
virtual void Text(const wxPoint &aPos, const COLOR4D &aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, bool aMultilineAllowed=false, void *aData=nullptr)
Draw text with the plotter.
Definition: gr_text.cpp:219
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition: gbr_metadata.h:209
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:143
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONCONDUCTOR, getColor(), EDA_TEXT::GetEffectiveTextPenWidth(), EDA_TEXT::GetHorizJustify(), BOARD_ITEM::GetLayer(), EDA_TEXT::GetLinePositions(), PCB_TEXT::GetShownText(), EDA_TEXT::GetTextAngle(), EDA_TEXT::GetTextPos(), EDA_TEXT::GetTextSize(), EDA_TEXT::GetVertJustify(), IsCopperLayer(), EDA_TEXT::IsItalic(), EDA_TEXT::IsMirrored(), EDA_TEXT::IsMultilineAllowed(), m_layerMask, m_plotter, GBR_METADATA::SetApertureAttrib(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), PLOTTER::Text(), and wxStringSplit().

Referenced by PlotBoardGraphicItems(), and PlotDimension().

◆ SetA4Output()

void PCB_PLOT_PARAMS::SetA4Output ( int  aForce)
inlineinherited

Definition at line 183 of file pcb_plot_params.h.

183 { m_A4Output = aForce; };
bool m_A4Output
Autoscale the plot to fit an A4 (landscape?) sheet.

References PCB_PLOT_PARAMS::m_A4Output.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetAutoScale()

void PCB_PLOT_PARAMS::SetAutoScale ( bool  aFlag)
inlineinherited

Definition at line 105 of file pcb_plot_params.h.

105 { m_autoScale = aFlag; }
bool m_autoScale
When true set the scale to fit the board in the page.

References PCB_PLOT_PARAMS::m_autoScale.

Referenced by DIALOG_PLOT::Plot().

◆ SetColorSettings()

void PCB_PLOT_PARAMS::SetColorSettings ( COLOR_SETTINGS aSettings)
inlineinherited

Definition at line 62 of file pcb_plot_params.h.

62 { m_colors = aSettings; }
COLOR_SETTINGS * m_colors
Pointer to active color settings to be used for plotting.

References PCB_PLOT_PARAMS::m_colors.

Referenced by DIALOG_EXPORT_SVG::CreateSVGFile(), and DIALOG_PLOT::Plot().

◆ SetCreateGerberJobFile()

void PCB_PLOT_PARAMS::SetCreateGerberJobFile ( bool  aCreate)
inlineinherited

Definition at line 150 of file pcb_plot_params.h.

150 { m_createGerberJobFile = aCreate; }
bool m_createGerberJobFile
generate the auxiliary "job file" in gerber format

References PCB_PLOT_PARAMS::m_createGerberJobFile.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetDisableGerberMacros()

void PCB_PLOT_PARAMS::SetDisableGerberMacros ( bool  aDisable)
inlineinherited

Definition at line 141 of file pcb_plot_params.h.

141 { m_gerberDisableApertMacros = aDisable; }
bool m_gerberDisableApertMacros
Disable aperture macros in Gerber format (only for broken Gerber readers) Ideally,...

References PCB_PLOT_PARAMS::m_gerberDisableApertMacros.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetDrillMarksType()

void PCB_PLOT_PARAMS::SetDrillMarksType ( DrillMarksType  aVal)
inlineinherited

Definition at line 92 of file pcb_plot_params.h.

92 { m_drillMarks = aVal; }
DrillMarksType m_drillMarks
Holes can be not plotted, have a small mark or plotted in actual size.

References PCB_PLOT_PARAMS::m_drillMarks.

Referenced by DIALOG_PLOT::applyPlotSettings(), DIALOG_EXPORT_SVG::CreateSVGFile(), and PlotOneBoardLayer().

◆ SetDXFPlotPolygonMode()

void PCB_PLOT_PARAMS::SetDXFPlotPolygonMode ( bool  aFlag)
inlineinherited

Definition at line 79 of file pcb_plot_params.h.

79 { m_DXFplotPolygonMode = aFlag; }
bool m_DXFplotPolygonMode
DXF format: Plot items in outline (polygon) mode.

References PCB_PLOT_PARAMS::m_DXFplotPolygonMode.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetDXFPlotUnits()

void PCB_PLOT_PARAMS::SetDXFPlotUnits ( DXF_UNITS  aUnit)
inlineinherited

Definition at line 82 of file pcb_plot_params.h.

83  {
84  m_DXFplotUnits = aUnit;
85  }
DXF_UNITS m_DXFplotUnits
DXF format: Units to use when plotting the DXF.

References PCB_PLOT_PARAMS::m_DXFplotUnits.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetExcludeEdgeLayer()

void PCB_PLOT_PARAMS::SetExcludeEdgeLayer ( bool  aFlag)
inlineinherited

Definition at line 132 of file pcb_plot_params.h.

132 { m_excludeEdgeLayer = aFlag; }
bool m_excludeEdgeLayer
If false always plot (merge) the pcb edge layer on other layers.

References PCB_PLOT_PARAMS::m_excludeEdgeLayer.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetFineScaleAdjustX()

void PCB_PLOT_PARAMS::SetFineScaleAdjustX ( double  aVal)
inlineinherited

Definition at line 98 of file pcb_plot_params.h.

98 { m_fineScaleAdjustX = aVal; }
double m_fineScaleAdjustX
fine scale adjust X axis

References PCB_PLOT_PARAMS::m_fineScaleAdjustX.

Referenced by DIALOG_PLOT::Plot().

◆ SetFineScaleAdjustY()

void PCB_PLOT_PARAMS::SetFineScaleAdjustY ( double  aVal)
inlineinherited

Definition at line 100 of file pcb_plot_params.h.

100 { m_fineScaleAdjustY = aVal; }
double m_fineScaleAdjustY
fine scale adjust Y axis

References PCB_PLOT_PARAMS::m_fineScaleAdjustY.

Referenced by DIALOG_PLOT::Plot().

◆ SetFormat()

void PCB_PLOT_PARAMS::SetFormat ( PLOT_FORMAT  aFormat)
inlineinherited

Definition at line 135 of file pcb_plot_params.h.

135 { m_format = aFormat; }
PLOT_FORMAT m_format
Plot format type (chooses the driver to be used)

References PCB_PLOT_PARAMS::m_format.

Referenced by DIALOG_PLOT::applyPlotSettings(), DIALOG_EXPORT_SVG::CreateSVGFile(), PLOT_CONTROLLER::OpenPlotfile(), and PCB_EDIT_FRAME::ToPlotter().

◆ SetGerberPrecision()

void PCB_PLOT_PARAMS::SetGerberPrecision ( int  aPrecision)
inherited

Definition at line 147 of file pcb_plot_params.cpp.

148 {
149  // Currently Gerber files use mm.
150  // accepted precision is only 6 (max value, this is the resolution of Pcbnew)
151  // or 5, min value for professional boards, when 6 creates problems
152  // to board makers.
153 
156 }
static const int gbrDefaultPrecision
int m_gerberPrecision
precision of coordinates in Gerber files: accepted 5 or 6 when units are in mm (6 or 7 in inches,...

References gbrDefaultPrecision.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetHPGLPenDiameter()

bool PCB_PLOT_PARAMS::SetHPGLPenDiameter ( double  aValue)
inherited

Definition at line 383 of file pcb_plot_params.cpp.

384 {
386 }
static bool setDouble(double *aTarget, double aValue, double aMin, double aMax)
double m_HPGLPenDiam
HPGL only: pen diameter in MILS, useful to fill areas However, it is in mm in hpgl files.
#define HPGL_PEN_DIAMETER_MAX
#define HPGL_PEN_DIAMETER_MIN

References HPGL_PEN_DIAMETER_MAX, HPGL_PEN_DIAMETER_MIN, and setDouble().

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetHPGLPenNum()

void PCB_PLOT_PARAMS::SetHPGLPenNum ( int  aVal)
inlineinherited

Definition at line 195 of file pcb_plot_params.h.

195 { m_HPGLPenNum = aVal; }
int m_HPGLPenNum
HPGL only: pen number selection(1 to 9)

References PCB_PLOT_PARAMS::m_HPGLPenNum.

◆ SetHPGLPenSpeed()

bool PCB_PLOT_PARAMS::SetHPGLPenSpeed ( int  aValue)
inherited

Definition at line 389 of file pcb_plot_params.cpp.

390 {
392 }
#define HPGL_PEN_SPEED_MAX
static bool setInt(int *aTarget, int aValue, int aMin, int aMax)
#define HPGL_PEN_SPEED_MIN
int m_HPGLPenSpeed
HPGL only: pen speed, always in cm/s (1 to 99 cm/s)

References HPGL_PEN_SPEED_MAX, HPGL_PEN_SPEED_MIN, and setInt().

◆ SetIncludeGerberNetlistInfo()

void PCB_PLOT_PARAMS::SetIncludeGerberNetlistInfo ( bool  aUse)
inlineinherited

Definition at line 147 of file pcb_plot_params.h.

147 { m_includeGerberNetlistInfo = aUse; }
bool m_includeGerberNetlistInfo
Include netlist info (only in Gerber X2 format) (chapter ? in revision ?)

References PCB_PLOT_PARAMS::m_includeGerberNetlistInfo.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetLayerSelection()

void PCB_PLOT_PARAMS::SetLayerSelection ( LSET  aSelection)
inlineinherited

Definition at line 174 of file pcb_plot_params.h.

174 { m_layerSelection = aSelection; };
LSET m_layerSelection
Set of layers to plot.

References PCB_PLOT_PARAMS::m_layerSelection.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetLayerSet()

void BRDITEMS_PLOTTER::SetLayerSet ( LSET  aLayerMask)
inline

◆ SetMirror()

void PCB_PLOT_PARAMS::SetMirror ( bool  aFlag)
inlineinherited

Definition at line 108 of file pcb_plot_params.h.

108 { m_mirror = aFlag; }
bool m_mirror
Mirror the plot around the X axis.

References PCB_PLOT_PARAMS::m_mirror.

Referenced by DIALOG_PLOT::applyPlotSettings(), DIALOG_EXPORT_SVG::CreateSVGFile(), and StartPlotBoard().

◆ SetNegative()

void PCB_PLOT_PARAMS::SetNegative ( bool  aFlag)
inlineinherited

Definition at line 123 of file pcb_plot_params.h.

123 { m_negative = aFlag; }
bool m_negative
Plot in negative color (supported only by some drivers)

References PCB_PLOT_PARAMS::m_negative.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetOutputDirectory()

void PCB_PLOT_PARAMS::SetOutputDirectory ( const wxString &  aDir)
inlineinherited

Definition at line 138 of file pcb_plot_params.h.

138 { m_outputDirectory = aDir; }
wxString m_outputDirectory
Output directory for plot files (usually relative to the board file)

References PCB_PLOT_PARAMS::m_outputDirectory.

Referenced by DIALOG_PLOT::applyPlotSettings(), DIALOG_GEN_FOOTPRINT_POSITION::OnGenerate(), and DIALOG_GENDRILL::UpdateDrillParams().

◆ SetPlotFrameRef()

void PCB_PLOT_PARAMS::SetPlotFrameRef ( bool  aFlag)
inlineinherited

Definition at line 129 of file pcb_plot_params.h.

129 { m_plotFrameRef = aFlag; }
bool m_plotFrameRef
True to plot/print frame references.

References PCB_PLOT_PARAMS::m_plotFrameRef.

Referenced by DIALOG_PLOT::applyPlotSettings(), and DIALOG_EXPORT_SVG::CreateSVGFile().

◆ SetPlotInvisibleText()

void PCB_PLOT_PARAMS::SetPlotInvisibleText ( bool  aFlag)
inlineinherited

Definition at line 116 of file pcb_plot_params.h.

116 { m_plotInvisibleText = aFlag; }
bool m_plotInvisibleText
Force plotting of fields marked invisible.

References PCB_PLOT_PARAMS::m_plotInvisibleText.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetPlotMode()

void PCB_PLOT_PARAMS::SetPlotMode ( OUTLINE_MODE  aPlotMode)
inlineinherited

Definition at line 76 of file pcb_plot_params.h.

76 { m_plotMode = aPlotMode; }
OUTLINE_MODE m_plotMode
FILLED or SKETCH selects how to plot filled objects.

References PCB_PLOT_PARAMS::m_plotMode.

Referenced by DIALOG_PLOT::applyPlotSettings(), and PCB_PLOT_PARAMS_PARSER::Parse().

◆ SetPlotReference()

void PCB_PLOT_PARAMS::SetPlotReference ( bool  aFlag)
inlineinherited

Definition at line 120 of file pcb_plot_params.h.

120 { m_plotReference = aFlag; }
bool m_plotReference
Enable plotting of part references.

References PCB_PLOT_PARAMS::m_plotReference.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetPlotValue()

void PCB_PLOT_PARAMS::SetPlotValue ( bool  aFlag)
inlineinherited

Definition at line 118 of file pcb_plot_params.h.

118 { m_plotValue = aFlag; }
bool m_plotValue
Enable plotting of part values.

References PCB_PLOT_PARAMS::m_plotValue.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetPlotViaOnMaskLayer()

void PCB_PLOT_PARAMS::SetPlotViaOnMaskLayer ( bool  aFlag)
inlineinherited

Definition at line 126 of file pcb_plot_params.h.

126 { m_plotViaOnMaskLayer = aFlag; }
bool m_plotViaOnMaskLayer
True if vias are drawn on Mask layer (ie untented, exposed by mask)

References PCB_PLOT_PARAMS::m_plotViaOnMaskLayer.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetScale()

void PCB_PLOT_PARAMS::SetScale ( double  aVal)
inlineinherited

Definition at line 95 of file pcb_plot_params.h.

95 { m_scale = aVal; }
double m_scale
Global scale factor, 1.0 plots a board with its actual size.

References PCB_PLOT_PARAMS::m_scale.

Referenced by DIALOG_PLOT::Plot().

◆ SetScaleSelection()

void PCB_PLOT_PARAMS::SetScaleSelection ( int  aSelection)
inlineinherited

Definition at line 180 of file pcb_plot_params.h.

180 { m_scaleSelection = aSelection; };
int m_scaleSelection
Scale ratio index (UI only)

References PCB_PLOT_PARAMS::m_scaleSelection.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetSketchPadLineWidth()

void PCB_PLOT_PARAMS::SetSketchPadLineWidth ( int  aWidth)
inlineinherited

Definition at line 113 of file pcb_plot_params.h.

113 { m_sketchPadLineWidth = aWidth; }

References PCB_PLOT_PARAMS::m_sketchPadLineWidth.

Referenced by DIALOG_PLOT::Plot().

◆ SetSketchPadsOnFabLayers()

void PCB_PLOT_PARAMS::SetSketchPadsOnFabLayers ( bool  aFlag)
inlineinherited

Definition at line 111 of file pcb_plot_params.h.

111 { m_sketchPadsOnFabLayers = aFlag; }
bool m_sketchPadsOnFabLayers
Plots pads outlines on fab layers.

References PCB_PLOT_PARAMS::m_sketchPadsOnFabLayers.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetSkipPlotNPTH_Pads()

void PCB_PLOT_PARAMS::SetSkipPlotNPTH_Pads ( bool  aSkip)
inlineinherited

Definition at line 46 of file pcb_plot_params.h.

46 { m_skipNPTH_Pads = aSkip; }

References PCB_PLOT_PARAMS::m_skipNPTH_Pads.

Referenced by DIALOG_EXPORT_SVG::CreateSVGFile(), and PlotOneBoardLayer().

◆ SetSubtractMaskFromSilk()

void PCB_PLOT_PARAMS::SetSubtractMaskFromSilk ( bool  aSubtract)
inlineinherited

Definition at line 171 of file pcb_plot_params.h.

171 { m_subtractMaskFromSilk = aSubtract; };
bool m_subtractMaskFromSilk
On gerbers 'scrape' away the solder mask from silkscreen (trim silks)

References PCB_PLOT_PARAMS::m_subtractMaskFromSilk.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetSvgPrecision()

void PCB_PLOT_PARAMS::SetSvgPrecision ( unsigned  aPrecision,
bool  aUseInch 
)
inherited

Definition at line 159 of file pcb_plot_params.cpp.

160 {
161  m_svgUseInch = aUseInch;
163 }
bool m_svgUseInch
units for SVG plot false for metric, true for inch/mils
unsigned m_svgPrecision
precision of coordinates in SVG files: accepted 3 - 6 6 is the internal resolution of Pcbnew
#define SVG_PRECISION_MAX
const T & Clamp(const T &lower, const T &value, const T &upper)
Limit value within the range lower <= value <= upper.
Definition: util.h:52
#define SVG_PRECISION_MIN

References Clamp(), SVG_PRECISION_MAX, and SVG_PRECISION_MIN.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetTextMode()

void PCB_PLOT_PARAMS::SetTextMode ( PLOT_TEXT_MODE  aVal)
inlineinherited

Definition at line 66 of file pcb_plot_params.h.

67  {
68  m_textMode = aVal;
69  }
PLOT_TEXT_MODE m_textMode
Choose how represent text with PS, PDF and DXF drivers.

References PCB_PLOT_PARAMS::m_textMode.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetUseAuxOrigin()

void PCB_PLOT_PARAMS::SetUseAuxOrigin ( bool  aAux)
inlineinherited

Definition at line 177 of file pcb_plot_params.h.

177 { m_useAuxOrigin = aAux; };
bool m_useAuxOrigin
Plot gerbers using auxiliary (drill) origin instead of absolute coordinates.

References PCB_PLOT_PARAMS::m_useAuxOrigin.

Referenced by DIALOG_PLOT::applyPlotSettings(), DIALOG_EXPORT_SVG::CreateSVGFile(), and DIALOG_GENDRILL::UpdateDrillParams().

◆ SetUseGerberProtelExtensions()

void PCB_PLOT_PARAMS::SetUseGerberProtelExtensions ( bool  aUse)
inlineinherited

Definition at line 153 of file pcb_plot_params.h.

153 { m_useGerberProtelExtensions = aUse; }
bool m_useGerberProtelExtensions
When plotting gerber files, use a conventional set of Protel extensions instead of ....

References PCB_PLOT_PARAMS::m_useGerberProtelExtensions.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetUseGerberX2format()

void PCB_PLOT_PARAMS::SetUseGerberX2format ( bool  aUse)
inlineinherited

Definition at line 144 of file pcb_plot_params.h.

144 { m_useGerberX2format = aUse; }
bool m_useGerberX2format
Include attributes from the Gerber X2 format (chapter 5 in revision J2)

References PCB_PLOT_PARAMS::m_useGerberX2format.

Referenced by DIALOG_PLOT::applyPlotSettings().

◆ SetWidthAdjust()

void PCB_PLOT_PARAMS::SetWidthAdjust ( int  aVal)
inlineinherited

Definition at line 102 of file pcb_plot_params.h.

102 { m_widthAdjust = aVal; }
int m_widthAdjust
This width factor is intended to compensate PS printers/ plotters that do not strictly obey line widt...

References PCB_PLOT_PARAMS::m_widthAdjust.

Referenced by DIALOG_PLOT::Plot().

Member Data Documentation

◆ m_board

BOARD* BRDITEMS_PLOTTER::m_board
private

Definition at line 143 of file pcbplot.h.

Referenced by BRDITEMS_PLOTTER(), PlotBoardGraphicItems(), and PlotDrillMarks().

◆ m_layerMask

◆ m_plotter


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