51                        bool aPlotFPText, 
bool aPlotReferences, 
bool aPlotValues );
 
   69    LSET             layers = { aLayer };
 
   83    itemplotter.
PlotZone( &zone, aLayer, *aPolySet );
 
 
   98        PlotLayer( aBoard, aPlotter, aLayerMask, aPlotOpt );
 
  108    PlotPolySet( aBoard, aPlotter, aPlotOpt, &solderMask, layer );
 
 
  125    PlotPolySet( aBoard, aPlotter, aPlotOpt, &silkscreen, silkLayer );
 
 
  132    if( !aBoard || !aPlotter || aLayers.empty() )
 
 
  160        std::vector<wxString> properties;
 
  162        properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ),
 
  163                                                   _( 
"Reference designator" ),
 
  164                                                   fp->Reference().GetShownText( 
false ) ) );
 
  166        properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ),
 
  168                                                   fp->Value().GetShownText( 
false ) ) );
 
  170        properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ),
 
  172                                                   fp->GetFPID().GetUniStringLibItemName() ) );
 
  174        for( 
const PCB_FIELD* field : fp->GetFields() )
 
  176            if( field->IsReference() || field->IsValue() )
 
  179            if( field->GetText().IsEmpty() )
 
  182            properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ),
 
  184                                                       field->GetText() ) );
 
  189        properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ), 
_( 
"Library Description" ),
 
  190                                                   fp->GetLibDescription() ) );
 
  192        properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ), 
_( 
"Keywords" ),
 
  193                                                   fp->GetKeywords() ) );
 
  200        BOX2I bbox = fp->GetBoundingBox( 
false );
 
  207        bbox = fp->GetBoundingBox( 
true );
 
  210        aPlotter->
Bookmark( bbox, fp->GetReference(), 
_( 
"Footprints" ) );
 
 
  226    LSET    layer_mask( { aLayer } );
 
  237        PlotLayer( aBoard, aPlotter, layer_mask, plotOpt );
 
  263            PlotLayer( aBoard, aPlotter, layer_mask, plotOpt );
 
  301            PlotLayer( aBoard, aPlotter, layer_mask, plotOpt );
 
  315            PlotLayer( aBoard, aPlotter, layer_mask, plotOpt );
 
 
  336    bool onFrontFab = ( 
LSET( { 
F_Fab } ) & aLayerMask ).any();
 
  337    bool onBackFab  = ( 
LSET( { 
B_Fab } ) & aLayerMask ).any();
 
  357        for( 
PAD* 
pad : footprint->Pads() )
 
  359            bool doSketchPads = 
false;
 
  361            if( !( 
pad->GetLayerSet() & aLayerMask ).any() )
 
  363                if( sketchPads && (   ( onFrontFab && 
pad->GetLayerSet().Contains( 
F_Cu ) )
 
  364                                    || ( onBackFab && 
pad->GetLayerSet().Contains( 
B_Cu ) ) ) )
 
  374            if( onCopperLayer && !
pad->IsOnCopperLayer() )
 
  378            if( onCopperLayer && !
pad->FlashLayer( aLayerMask ) )
 
  386            if( aLayerMask.count() == 1 )
 
  392                if( ( 
pad->GetLayerSet() & aLayerMask )[
B_Cu] )
 
  395                if( ( 
pad->GetLayerSet() & aLayerMask )[
F_Cu] )
 
  398                if( sketchPads && aLayerMask[
F_Fab] )
 
  400                else if( sketchPads && aLayerMask[
B_Fab] )
 
  404            if( sketchPads && (   ( onFrontFab && 
pad->GetLayerSet().Contains( 
F_Cu ) )
 
  405                                || ( onBackFab && 
pad->GetLayerSet().Contains( 
B_Cu ) ) ) )
 
  420                    if( onSolderMaskLayer )
 
  421                        margin.
x = margin.
y = 
pad->GetSolderMaskExpansion( aLayer );
 
  423                    if( onSolderPasteLayer )
 
  424                        margin = 
pad->GetSolderPasteMargin( aLayer );
 
  430                    int mask_clearance = margin.
x;
 
  433                    VECTOR2I padPlotsSize = 
pad->GetSize( aLayer ) + margin * 2 + 
VECTOR2I( width_adj, width_adj );
 
  441                    double    padCornerRadiusRatio = 
pad->GetRoundRectRadiusRatio( aLayer );
 
  446                        && ( padPlotsSize.
x <= 0 || padPlotsSize.
y <= 0 ) )
 
  455                        pad->SetSize( aLayer, padPlotsSize );
 
  459                            ( 
pad->GetSize(aLayer ) == 
pad->GetDrillSize() ) &&
 
  469                        pad->SetSize( aLayer, padPlotsSize );
 
  471                        if( mask_clearance > 0 )
 
  474                            pad->SetRoundRectCornerRadius( aLayer, mask_clearance );
 
  486                        if( mask_clearance == 0 )
 
  497                            int dx = padSize.
x / 2;
 
  498                            int dy = padSize.
y / 2;
 
  499                            int ddx = padDelta.
x / 2;
 
  500                            int ddy = padDelta.
y / 2;
 
  502                            outline.
Append( -dx - ddy,  dy + ddx );
 
  503                            outline.
Append(  dx + ddy,  dy - ddx );
 
  504                            outline.
Append(  dx - ddy, -dy + ddx );
 
  505                            outline.
Append( -dx + ddy, -dy - ddx );
 
  511                            dummy.DeletePrimitivesList();
 
  512                            dummy.AddPrimitivePoly( aLayer, outline, 0, 
true );
 
  529                        double radius_ratio = 
pad->GetRoundRectRadiusRatio( aLayer );
 
  530                        pad->SetSize( aLayer, padPlotsSize );
 
  531                        pad->SetRoundRectRadiusRatio( aLayer, radius_ratio );
 
  538                        if( mask_clearance == 0 )
 
  541                            pad->SetSize( aLayer, padPlotsSize );
 
  564                            dummy.DeletePrimitivesList();
 
  565                            dummy.AddPrimitivePoly( aLayer, outline, 0, 
true );
 
  572                            dummy.SetPosition( 
pad->GetPosition() );
 
  573                            dummy.SetOffset( aLayer, 
pad->GetOffset( aLayer ) );
 
  574                            dummy.SetOrientation( 
pad->GetOrientation() );
 
  586                        dummy.SetParentGroup( 
nullptr );
 
  589                        pad->MergePrimitivesAsPolygon( aLayer, &shape );
 
  595                        dummy.DeletePrimitivesList();
 
  596                        dummy.AddPrimitivePoly( aLayer, shape, 0, 
true );
 
  601                        if( mask_clearance < 0 )  
 
  604                                                             std::max( 0, padPlotsSize.
y ) ) );
 
  613                    pad->SetSize( aLayer, padSize );
 
  614                    pad->SetDelta( aLayer, padDelta );
 
  615                    pad->SetShape( aLayer, padShape );
 
  616                    pad->SetRoundRectRadiusRatio( aLayer, padCornerRadiusRatio );
 
  620                plotPadLayer( layer );
 
  623        if( footprint->IsDNP()
 
  626                && (   ( onFrontFab && footprint->GetLayer() == 
F_Cu )
 
  627                    || ( onBackFab && footprint->GetLayer() == 
B_Cu ) ) )
 
  630            const SHAPE_POLY_SET& courtyard = footprint->GetCourtyard( footprint->GetLayer() );
 
  633                rect = footprint->GetEffectiveShape()->BBox();
 
  635                rect = courtyard.
BBox();
 
  662                    return (
void*) &gbr_metadata;
 
  664                    return (
void*) &aPlotOpt;
 
  666                    return (
void*) 
nullptr;
 
  679        LSET via_mask_layer = 
via->GetLayerSet();
 
  681        if( !( via_mask_layer & aLayerMask ).
any() )
 
  685        double width_adj = 0;
 
  688        if( onSolderMaskLayer )
 
  689            via_margin = 
via->GetSolderMaskExpansion();
 
  695        if( onCopperLayer && !
via->FlashLayer( aLayerMask ) )
 
  701            diameter = std::max( diameter, 
via->GetWidth( layer ) );
 
  703        diameter += 2 * via_margin + width_adj;
 
  718        if( aLayerMask.count() == 1 )
 
  753        if( !( aLayerMask & track->GetLayerSet() ).any() )
 
  760        gbr_metadata.
SetNetName( track->GetNetname() );
 
  764        if( onSolderMaskLayer )
 
  765            margin = track->GetSolderMaskExpansion();
 
  767        int width = track->GetWidth() + 2 * margin + itemplotter.
getFineWidthAdj();
 
  801    for( 
const ZONE* zone : aBoard->
Zones() )
 
  803        if( zone->GetIsRuleArea() )
 
  808            if( !aLayerMask[layer] )
 
  816                if( zone->IsIsland( layer, i ) )
 
  823            itemplotter.
PlotZone( zone, layer, mainArea );
 
  828                dummy.SetNet( &nonet );
 
 
  859        std::vector<VECTOR2I> cornerList;
 
  864            for( 
int kk = 0; kk <= outlines.
HoleCount(ii); kk++ )
 
  868                                                           : outlines.
CHole( ii, kk - 1 );
 
  879                for( 
PAD* 
pad : footprint->Pads() )
 
  883                        if( 
pad->GetDrillSizeX() == 
pad->GetDrillSizeY() )
 
  885                            int drill = 
pad->GetDrillSizeX();
 
  888                                drill = std::min( smallDrill, drill );
 
  914            if( 
via->GetLayerSet().Contains( layer ) )   
 
 
  928                         bool aPlotFPText, 
bool aPlotReferences, 
bool aPlotValues )
 
  951    auto handleFPTextItem =
 
  957                if( aText.GetText() == wxT( 
"${REFERENCE}" ) && !aPlotReferences )
 
  960                if( aText.GetText() == wxT( 
"${VALUE}" ) && !aPlotValues )
 
  964                    aText.TransformTextToPolySet( exactPolys, 0, maxError, 
ERROR_OUTSIDE );
 
  966                aText.TransformTextToPolySet( *aResult, inflate, maxError, 
ERROR_OUTSIDE );
 
  977                footprint->TransformPadsToPolySet( exactPolys, aLayer, 0, maxError, 
ERROR_OUTSIDE );
 
  979            footprint->TransformPadsToPolySet( *aResult, aLayer, inflate, maxError, 
ERROR_OUTSIDE );
 
  981            for( 
const PCB_FIELD* field : footprint->GetFields() )
 
  983                if( field->IsReference() && !aPlotReferences )
 
  986                if( field->IsValue() && !aPlotValues )
 
  989                if( field->IsVisible() && field->IsOnLayer( aLayer ) )
 
  990                    handleFPTextItem( 
static_cast<const PCB_TEXT&
>( *field ) );
 
  993            for( 
const BOARD_ITEM* item : footprint->GraphicalItems() )
 
  995                if( item->IsOnLayer( aLayer ) )
 
  999                        handleFPTextItem( 
static_cast<const PCB_TEXT&
>( *item ) );
 
 1004                            item->TransformShapeToPolySet( exactPolys, aLayer, 0, maxError, 
ERROR_OUTSIDE );
 
 1006                        item->TransformShapeToPolySet( *aResult, aLayer, inflate, maxError, 
ERROR_OUTSIDE );
 
 1016            if( !track->IsOnLayer( aLayer ) )
 
 1019            int clearance = track->GetSolderMaskExpansion();
 
 1029            if( item->IsOnLayer( aLayer ) )
 
 1043                        item->TransformShapeToPolygon( exactPolys, aLayer, 0, maxError, 
ERROR_OUTSIDE );
 
 1045                    item->TransformShapeToPolygon( *aResult, aLayer, inflate, maxError, 
ERROR_OUTSIDE );
 
 1053            if( zone->GetIsRuleArea() )
 
 1056            if( !zone->IsOnLayer( aLayer ) )
 
 1062                exactPolys.
Append( area );
 
 
 1097    bool autocenter = 
false;
 
 1106        sheet_info  = &pageA4;
 
 1108        paperscale  = (double) paperSizeIU.
x / pageSizeIU.
x;
 
 1113        sheet_info  = &pageInfo;
 
 1114        paperSizeIU = pageSizeIU;
 
 1125    double compound_scale;
 
 1129    if( aPlotOpts->
GetAutoScale() && boardSize.
x > 0 && boardSize.
y > 0 )
 
 1131        double xscale = (paperSizeIU.
x * 0.8) / boardSize.
x;
 
 1132        double yscale = (paperSizeIU.
y * 0.8) / boardSize.
y;
 
 1134        compound_scale = std::min( xscale, yscale ) * paperscale;
 
 1138        compound_scale = aPlotOpts->
GetScale() * paperscale;
 
 1147        offset.
x = 
KiROUND( boardCenter.
x - ( paperSizeIU.
x / 2.0 ) / compound_scale );
 
 1148        offset.
y = 
KiROUND( boardCenter.
y - ( paperSizeIU.
y / 2.0 ) / compound_scale );
 
 
 1181    BOX2I area = aBbbox;
 
 
 1213                         const wxString& aLayerName, 
const wxString& aFullFileName,
 
 1214                         const wxString& aSheetName, 
const wxString& aSheetPath,
 
 1215                         const wxString& aPageName, 
const wxString& aPageNumber,
 
 1216                         const int aPageCount )
 
 1218    wxCHECK( aBoard && aPlotOpts, 
nullptr );
 
 1230        plotter = DXF_plotter;
 
 1238        plotter = PS_plotter;
 
 1246        wxLogError( 
_( 
"HPGL plotting is no longer supported as of KiCad 10.0" ) );
 
 1254            wxLogError( wxString::Format( 
"Invalid board layer %d, cannot build a valid Gerber file header",
 
 1294    if( plotter->
OpenFile( aFullFileName ) )
 
 1312        bool startPlotSuccess = 
false;
 
 1316                startPlotSuccess = 
static_cast<PDF_PLOTTER*
>( plotter )->StartPlot( aPageNumber, aPageName );
 
 1318                startPlotSuccess = plotter->
StartPlot( aPageName );
 
 1322            startPlotSuccess = 
false;
 
 1326        if( startPlotSuccess )
 
 1336                                  aPageCount, aSheetName, aSheetPath, aBoard->
GetFileName(),
 
 
 1363                             const wxString& aLayerName, 
const wxString& aSheetName,
 
 1364                             const wxString& aSheetPath, 
const wxString& aPageNumber,
 
 1375        bool   revertOps = 
false;
 
 1376        bool   oldMirror = aPlotOpts->
GetMirror();
 
 1378        double oldScale = aPlotOpts->
GetScale();
 
 1380        if( oldMirror || oldAutoScale || oldScale != 1.0 )
 
 
constexpr EDA_IU_SCALE pcbIUScale
 
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
 
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
 
const VECTOR2I & GetAuxOrigin() const
 
int m_LineThickness[LAYER_CLASS_COUNT]
 
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
 
Information pertinent to a Pcbnew printed circuit board.
 
void ConvertBrdLayerToPolygonalContours(PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aOutlines, KIGFX::RENDER_SETTINGS *aRenderSettings=nullptr) const
Build a set of polygons which are the outlines of copper items (pads, tracks, vias,...
 
const PAGE_INFO & GetPageSettings() const
 
const ZONES & Zones() const
 
TITLE_BLOCK & GetTitleBlock()
 
BOX2I ComputeBoundingBox(bool aBoardEdgesOnly=false) const
Calculate the bounding box containing all board items (or board edge segments).
 
const std::map< wxString, wxString > & GetProperties() const
 
const FOOTPRINTS & Footprints() const
 
const TRACKS & Tracks() const
 
const wxString & GetFileName() const
 
PROJECT * GetProject() const
 
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
 
const DRAWINGS & Drawings() const
 
constexpr BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
 
constexpr const Vec GetEnd() const
 
constexpr size_type GetWidth() const
 
constexpr Vec Centre() const
 
constexpr size_type GetHeight() const
 
constexpr coord_type GetLeft() const
 
constexpr void Move(const Vec &aMoveVector)
Move the rectangle by the aMoveVector.
 
constexpr const Vec & GetOrigin() const
 
constexpr coord_type GetRight() const
 
constexpr const SizeVec & GetSize() const
 
constexpr coord_type GetTop() const
 
constexpr coord_type GetBottom() const
 
void SetLayerSet(const LSET &aLayerMask)
 
void PlotDrillMarks()
Draw a drill mark for pads and vias.
 
void PlotZone(const ZONE *aZone, PCB_LAYER_ID aLayer, const SHAPE_POLY_SET &aPolysList)
 
void PlotPadNumber(const PAD *aPad, const COLOR4D &aColor)
 
void PlotBoardGraphicItem(const BOARD_ITEM *item)
Plot items like text and graphics but not tracks and footprints.
 
void PlotPad(const PAD *aPad, PCB_LAYER_ID aLayer, const COLOR4D &aColor, bool aSketchMode)
Plot a pad.
 
COLOR4D getColor(int aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
 
void PlotFootprintTextItems(const FOOTPRINT *aFootprint)
 
int getFineWidthAdj() const
 
void PlotFootprintGraphicItems(const FOOTPRINT *aFootprint)
 
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
 
static const COLOR4D BLACK
 
COLOR4D GetColor(int aLayer) const
 
When creating polygons to create a clearance polygonal area, the polygon must be same or bigger than ...
 
void SetUnits(DXF_UNITS aUnit)
Set the units to use for plotting the DXF file.
 
void UseX2format(bool aEnable)
 
void UseX2NetAttributes(bool aEnable)
 
void DisableApertMacros(bool aDisable)
Disable Aperture Macro (AM) command, only for broken Gerber Readers.
 
A color representation with 4 components: red, green, blue, alpha.
 
PCB specific render settings.
 
void LoadColors(const COLOR_SETTINGS *aSettings) override
 
void SetDefaultPenWidth(int aWidth)
 
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
 
void SetLayerName(const wxString &aLayerName)
 
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
 
LSET is a set of PCB_LAYER_IDs.
 
LSEQ SeqStackupForPlotting() const
Return the sequence that is typical for a bottom-to-top stack-up.
 
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
 
static LSET AllCuMask(int aCuLayerCount)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
 
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
 
Handle the data for a net.
 
Describe the page size and margins of a paper page on which to eventually print or plot.
 
int GetHeightIU(double aIUScale) const
Gets the page height in IU.
 
const VECTOR2D GetSizeIU(double aIUScale) const
Gets the page size in internal units.
 
int GetWidthIU(double aIUScale) const
Gets the page width in IU.
 
bool IsDegenerated(int aThreshold=5) const
 
EDA_ANGLE GetArcAngleStart() const
 
EDA_ANGLE GetAngle() const
 
virtual VECTOR2I GetCenter() const override
This defaults to the center of the bounding box if not overridden.
 
Parameters and options when plotting/printing a board.
 
PLOT_FORMAT GetFormat() const
 
bool GetSkipPlotNPTH_Pads() const
 
void SetDrillMarksType(DRILL_MARKS aVal)
 
bool GetUseAuxOrigin() const
 
bool GetHideDNPFPsOnFabLayers() const
 
void SetSkipPlotNPTH_Pads(bool aSkip)
 
DXF_UNITS GetDXFPlotUnits() const
 
bool GetAutoScale() const
 
bool GetCrossoutDNPFPsOnFabLayers() const
 
void SetDXFPlotPolygonMode(bool aFlag)
 
void SetAutoScale(bool aFlag)
 
unsigned GetSvgPrecision() const
 
PLOT_TEXT_MODE GetTextMode() const override
 
bool GetDXFPlotPolygonMode() const
 
bool GetPlotReference() const
 
bool m_PDFFrontFPPropertyPopups
Generate PDF property popup menus for footprints.
 
void SetScale(double aVal)
 
void SetMirror(bool aFlag)
 
bool GetSketchPadsOnFabLayers() const
 
bool GetSubtractMaskFromSilk() const
 
int GetGerberPrecision() const
 
double GetFineScaleAdjustY() const
 
bool GetPlotPadNumbers() const
 
DRILL_MARKS GetDrillMarksType() const
 
bool GetUseGerberX2format() const
 
bool GetPlotValue() const
 
bool GetIncludeGerberNetlistInfo() const
 
double GetFineScaleAdjustX() const
 
bool GetBlackAndWhite() const
 
bool m_PDFBackFPPropertyPopups
on front and/or back of board
 
bool GetPlotFPText() const
 
bool GetPlotFrameRef() const
 
COLOR4D GetPDFBackgroundColor() const
 
bool GetDisableGerberMacros() const
 
COLOR_SETTINGS * ColorSettings() const
 
Base plotter engine class.
 
virtual void Circle(const VECTOR2I &pos, int diametre, FILL_T fill, int width)=0
 
virtual bool OpenFile(const wxString &aFullFilename)
Open or create the plot file aFullFilename.
 
virtual void SetNegative(bool aNegative)
 
virtual void SetSvgCoordinatesFormat(unsigned aPrecision)
Set the number of digits for mantissa in coordinates in mm for SVG plotter.
 
virtual void SetPageSettings(const PAGE_INFO &aPageSettings)
 
void SetRenderSettings(RENDER_SETTINGS *aSettings)
 
static const int USE_DEFAULT_LINE_WIDTH
 
virtual void ThickOval(const VECTOR2I &aPos, const VECTOR2I &aSize, const EDA_ANGLE &aOrient, int aWidth, void *aData)
 
virtual bool StartPlot(const wxString &aPageNumber)=0
 
RENDER_SETTINGS * RenderSettings()
 
virtual void SetGerberCoordinatesFormat(int aResolution, bool aUseInches=false)
 
virtual void Bookmark(const BOX2I &aBox, const wxString &aName, const wxString &aGroupName=wxEmptyString)
Create a bookmark to a symbol.
 
virtual PLOT_FORMAT GetPlotterType() const =0
Return the effective plot engine in use.
 
virtual void ThickArc(const EDA_SHAPE &aArcShape, void *aData, int aWidth)
 
virtual void SetTextMode(PLOT_TEXT_MODE mode)
Change the current text mode.
 
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0)=0
 
virtual void SetCreator(const wxString &aCreator)
 
VECTOR2I GetPlotOffsetUserUnits()
 
void ClearHeaderLinesList()
Remove all lines from the list of free lines to print at the beginning of the file.
 
bool GetColorMode() const
 
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror)=0
Set the plot offset and scaling for the current plot.
 
virtual void SetColorMode(bool aColorMode)
Plot in B/W or color.
 
virtual void StartBlock(void *aData)
calling this function allows one to define the beginning of a group of drawing items,...
 
virtual void ThickSegment(const VECTOR2I &start, const VECTOR2I &end, int width, void *aData)
 
virtual void PlotPoly(const std::vector< VECTOR2I > &aCornerList, FILL_T aFill, int aWidth, void *aData)=0
Draw a polygon ( filled or not ).
 
virtual void FlashPadCircle(const VECTOR2I &aPadPos, int aDiameter, void *aData)=0
 
virtual void HyperlinkMenu(const BOX2I &aBox, const std::vector< wxString > &aDestURLs)
Create a clickable hyperlink menu with a rectangular click area.
 
virtual void SetLayerPolarity(bool aPositive)
Set the current Gerber layer polarity to positive or negative by writing %LPD*% or %LPC*% to the Gerb...
 
virtual void ThickCircle(const VECTOR2I &pos, int diametre, int width, void *aData)
 
virtual void SetColor(const COLOR4D &color)=0
 
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...
 
void SetScaleAdjust(double scaleX, double scaleY)
Set the 'fine' scaling for the postscript engine.
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
Represent a set of closed polygons.
 
void RemoveAllContours()
Remove all outlines & holes (clears) the polygon set.
 
void BooleanAdd(const SHAPE_POLY_SET &b)
Perform boolean polyset union.
 
int AddOutline(const SHAPE_LINE_CHAIN &aOutline)
Adds a new outline to the set and returns its index.
 
void DeletePolygon(int aIdx)
Delete aIdx-th polygon from the set.
 
bool IsEmpty() const
Return true if the set is empty (no polygons at all)
 
void Fracture()
Convert a set of polygons with holes to a single outline with "slits"/"fractures" connecting the oute...
 
void Inflate(int aAmount, CORNER_STRATEGY aCornerStrategy, int aMaxError, bool aSimplify=false)
Perform outline inflation/deflation.
 
int HoleCount(int aOutline) const
Returns the number of holes in a given outline.
 
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Appends a vertex at the end of the given outline/hole (default: the last outline)
 
void Simplify()
Simplify the polyset (merges overlapping polys, eliminates degeneracy/self-intersections)
 
int NewOutline()
Creates a new empty polygon in the set and returns its index.
 
void Deflate(int aAmount, CORNER_STRATEGY aCornerStrategy, int aMaxError)
 
const SHAPE_LINE_CHAIN & CHole(int aOutline, int aHole) const
 
int OutlineCount() const
Return the number of outlines in the set.
 
void InflateWithLinkedHoles(int aFactor, CORNER_STRATEGY aCornerStrategy, int aMaxError)
Perform outline inflation/deflation, using round corners.
 
SHAPE_POLY_SET CloneDropTriangulation() const
 
void BooleanSubtract(const SHAPE_POLY_SET &b)
Perform boolean polyset difference.
 
const POLYGON & CPolygon(int aIndex) const
 
const SHAPE_LINE_CHAIN & COutline(int aIndex) const
 
const BOX2I BBox(int aClearance=0) const override
Compute a bounding box of the shape, with a margin of aClearance a collision.
 
Handle a list of polygons defining a copper zone.
 
void SetMinThickness(int aMinThickness)
 
virtual void SetLayer(PCB_LAYER_ID aLayer) override
Set the layer this item is on.
 
A type-safe container of any type.
 
constexpr any() noexcept
Default constructor, creates an empty object.
 
void PlotDrawingSheet(PLOTTER *plotter, const PROJECT *aProject, const TITLE_BLOCK &aTitleBlock, const PAGE_INFO &aPageInfo, const std::map< wxString, wxString > *aProperties, const wxString &aSheetNumber, int aSheetCount, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aFilename, COLOR4D aColor, bool aIsFirstPage)
 
@ CHAMFER_ALL_CORNERS
All angles are chamfered.
 
@ ROUND_ALL_CORNERS
All angles are rounded.
 
static constexpr EDA_ANGLE ANGLE_0
 
@ FILLED_SHAPE
Fill with object color.
 
a few functions useful in geometry calculations.
 
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
 
@ LAYER_DRAWINGSHEET
Sheet frame and title block.
 
@ LAYER_VIAS
Meta control for all vias opacity/visibility.
 
PCB_LAYER_ID
A quick note on layer IDs:
 
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
 
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
 
void AddGerberX2Attribute(PLOTTER *aPlotter, const BOARD *aBoard, int aLayer, bool aUseX1CompatibilityMode)
Calculate some X2 attributes as defined in the Gerber file format specification and add them to the g...
 
static void FillNegativeKnockout(PLOTTER *aPlotter, const BOX2I &aBbbox)
Prefill in black an area a little bigger than the board to prepare for the negative plot.
 
void PlotClippedSilkLayer(BOARD *aBoard, PLOTTER *aPlotter, const LSET &aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
 
void PlotBoardLayers(BOARD *aBoard, PLOTTER *aPlotter, const LSEQ &aLayers, const PCB_PLOT_PARAMS &aPlotOptions)
Plot a sequence of board layer IDs.
 
void PlotStandardLayer(BOARD *aBoard, PLOTTER *aPlotter, const LSET &aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
Plot any layer EXCEPT a solder-mask with an enforced minimum width.
 
PLOTTER * StartPlotBoard(BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aLayer, const wxString &aLayerName, const wxString &aFullFileName, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageName, const wxString &aPageNumber, const int aPageCount)
Open a new plotfile using the options (and especially the format) specified in the options and prepar...
 
void GenerateLayerPoly(SHAPE_POLY_SET *aResult, BOARD *aBoard, PCB_LAYER_ID aLayer, bool aPlotFPText, bool aPlotReferences, bool aPlotValues)
Generates a SHAPE_POLY_SET representing the plotted items on a layer.
 
void PlotPolySet(BOARD *aBoard, PLOTTER *aPlotter, const PCB_PLOT_PARAMS &aPlotOpt, SHAPE_POLY_SET *aPolySet, PCB_LAYER_ID aLayer)
 
void setupPlotterNewPDFPage(PLOTTER *aPlotter, BOARD *aBoard, PCB_PLOT_PARAMS *aPlotOpts, const wxString &aLayerName, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageNumber, int aPageCount)
 
void PlotSolderMaskLayer(BOARD *aBoard, PLOTTER *aPlotter, const LSET &aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
Plot a solder mask layer.
 
static void initializePlotter(PLOTTER *aPlotter, const BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts)
Set up most plot options for plotting a board (especially the viewport) Important thing: page size is...
 
void PlotInteractiveLayer(BOARD *aBoard, PLOTTER *aPlotter, const PCB_PLOT_PARAMS &aPlotOpt)
Plot interactive items (hypertext links, properties, etc.).
 
void PlotOneBoardLayer(BOARD *aBoard, PLOTTER *aPlotter, PCB_LAYER_ID aLayer, const PCB_PLOT_PARAMS &aPlotOpt, bool isPrimaryLayer)
Plot one copper or technical layer.
 
void PlotLayer(BOARD *aBoard, PLOTTER *aPlotter, const LSET &layerMask, const PCB_PLOT_PARAMS &plotOpts)
 
void PlotLayerOutlines(BOARD *aBoard, PLOTTER *aPlotter, const LSET &aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
Plot outlines.
 
static void plotPdfBackground(BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, PLOTTER *aPlotter)
 
Plotting engines similar to ps (PostScript, Gerber, svg)
 
std::vector< FAB_LAYER_COLOR > dummy
 
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
 
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
 
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
 
VECTOR2< int32_t > VECTOR2I