88 if( padNumber.IsEmpty() )
103 position = primitive->GetCenter();
107 padsize.
x =
std::abs( primitive->GetBotRight().x - primitive->GetTopLeft().x );
108 padsize.
y =
std::abs( primitive->GetBotRight().y - primitive->GetTopLeft().y );
121 if( padsize.
x > limit && padsize.
y > limit )
132 if( padsize.
x < ( padsize.
y * 0.95 ) )
135 std::swap( padsize.
x, padsize.
y );
141 tsize = std::min( tsize, padsize.
y );
144 tsize = std::min( tsize,
pcbIUScale.mmToIU( 5.0 ) );
151 m_plotter->PlotText( position, aColor, padNumber, textAttrs );
172 if( plotOnCopperLayer )
183 const bool useUTF8 =
false;
184 const bool useQuoting =
false;
198 if( !plotOnExternalCopperLayer )
227 if( plotOnExternalCopperLayer )
233 if( plotOnExternalCopperLayer )
243 if( plotOnExternalCopperLayer )
256 if( plotOnExternalCopperLayer )
355 coord[0] =
VECTOR2I( -half_size.
x - trap_delta.
y, half_size.
y + trap_delta.
x );
356 coord[1] =
VECTOR2I( half_size.
x + trap_delta.
y, half_size.
y - trap_delta.
x );
357 coord[2] =
VECTOR2I( half_size.
x - trap_delta.
y, -half_size.
y + trap_delta.
x );
358 coord[3] =
VECTOR2I( -half_size.
x + trap_delta.
y, -half_size.
y - trap_delta.
x );
384 if( polygons->OutlineCount() )
387 polygons.get(), &metadata );
400 const wxString variantName =
m_board ?
m_board->GetCurrentVariant() : wxString();
412 m_plotter->MarkFootprintPlotted( aFootprint );
425 m_plotter->MarkFootprintPlotted( aFootprint );
429 std::vector<PCB_TEXT*> texts;
434 wxCHECK2( field,
continue );
436 if( field->IsReference() || field->IsValue() )
439 if( field->IsVisible() )
440 texts.push_back( field );
446 texts.push_back( textItem );
452 bool strikeout =
false;
463 if(
text->GetText() == wxT(
"${REFERENCE}" ) )
471 if(
text->GetText() == wxT(
"${VALUE}" ) )
477 m_plotter->MarkFootprintPlotted( aFootprint );
485 switch( item->
Type() )
529 PlotText( cell, cell->GetLayer(), cell->IsKnockout(), cell->GetFontMetrics() );
580 for(
const std::shared_ptr<SHAPE>& shape : aDim->
GetShapes() )
582 switch( shape->Type() )
619 int dx1, dx2, dy1, dy2,
radius;
673 const wxString variantName =
m_board ?
m_board->GetCurrentVariant() : wxString();
689 m_plotter->MarkFootprintPlotted( aFootprint );
691 switch( item->Type() )
730 PlotText( cell, cell->GetLayer(), cell->IsKnockout(), cell->GetFontMetrics() );
770 default:
return nullptr;
775#define getMetadata() plotMetadata( m_plotter, gbr_metadata, this )
781 int maxError =
m_board->GetDesignSettings().m_MaxError;
787 if( shownText.IsEmpty() && !knockoutBox )
811 const auto strikeoutText =
847 if( font->
IsOutline() && !
m_board->GetEmbeddedFiles()->GetAreFontsEmbedded() )
867 std::vector<VECTOR2I> positions;
868 wxArrayString strings_list;
870 positions.reserve( strings_list.Count() );
874 for(
unsigned ii = 0; ii < strings_list.Count(); ii++ )
876 wxString& txt = strings_list.Item( ii );
880 if( aStrikeout && strings_list.Count() == 1 )
881 strikeoutText(
static_cast<const PCB_TEXT*
>( aText ) );
888 strikeoutText(
static_cast<const PCB_TEXT*
>( aText ) );
928 for(
int idx = 0; idx < aPolysList.
OutlineCount(); ++idx )
958 int margin = thickness;
965 if( onSolderMaskLayer
970 thickness = std::max( margin, 0 );
975 isHatchedFill =
false;
983 const wxString variantName =
m_board ?
m_board->GetCurrentVariant() : wxString();
984 const bool parentDnp = parentFP ? parentFP->
GetDNPForVariant( variantName ) :
false;
998 isHatchedFill =
false;
1006 else if( onCopperLayer )
1050 int diameter = aShape->
GetRadius() * 2 + thickness;
1055 diameter = std::max( diameter, 0 );
1081 EDA_ANGLE arcAngle = endAngle - startAngle;
1105 for(
size_t i = 0; i + 1 < pts.size(); i++ )
1115 auto plotStrokeOutline =
1124 std::vector<VECTOR2I> pts;
1149 m_plotter->SetCurrentLineWidth( thickness, &gbr_metadata );
1167 plotStrokeOutline( origPoly.
COutline( jj ), jj );
1266 chain.SetClosed(
true );
1291 for(
SHAPE* shape : shapes )
1297 m_plotter->ThickSegment( a, b, thickness, getMetadata() );
1301 for(
SHAPE* shape : shapes )
1323 for(
int ii = 0; ii < aShape->
GetHatching().OutlineCount(); ++ii )
1349 dummy.SetWidth( 0 );
1353 dummy.SetPolyShape( shape );
1389 m_plotter->ThickSegment( a, b, lineWidth, getMetadata() );
1398 const EDA_ANGLE& aOrientation,
int aSmallDrill )
const
1404 drillSize.
x = std::min( aSmallDrill, drillSize.
x );
1408 drillSize.
x = std::clamp( drillSize.
x, 1, aPadSize.
x - 1 );
1413 drillSize.
y = std::clamp( drillSize.
y, 1, aPadSize.
y - 1 );
1415 m_plotter->FlashPadOval( aDrillPos, drillSize, aOrientation,
nullptr );
1419 m_plotter->FlashPadCircle( aDrillPos, drillSize.
x,
nullptr );
1462 for(
PAD*
pad : footprint->Pads() )
1464 if(
pad->GetDrillSize().x == 0 )
1479 if( !
pad->IsOnLayer( layer ) )
1484 if( padSize.
x >
pad->GetDrillSize().x || padSize.
y >
pad->GetDrillSize().y )
1504 const std::vector<const PCB_DRILL_MAP*> maps =
m_board->DrillMapsOnLayer( aLayer );
1513 const std::shared_ptr<const DRILL_SYMBOL_CACHE> cache =
m_board->DrillSymbolCache();
1530 const std::shared_ptr<const SHAPE_POLY_SET> outlines = map->GetBoardOutlines();
1532 for(
int ii = 0; ii < outlines->OutlineCount(); ++ii )
1537 for(
int jj = 0; jj < outlines->HoleCount( ii ); ++jj )
1547 if( !map->GetAllSpans() && !( span == map->GetSpan() ) )
1556 const VECTOR2I pos = op.m_Position + map->GetOffset();
1558 const auto it = cache->m_ByGroup.find( profile.
GroupKeyString( op ) );
1560 if( it == cache->m_ByGroup.end() )
1567 m_plotter->Marker( pos, map->GetSymbolSize(),
1572 const wxString
text =
1575 : wxString::Format( wxT(
"%.2f" ),
1579 attrs.
m_Size =
VECTOR2I( map->GetSymbolSize(), map->GetSymbolSize() );
1588 if( map->GetGuideCross() )
1590 const int reach = map->GetSymbolSize();
1601 if( map->GetOutlineSlots() && op.m_IsSlot )
1603 m_plotter->ThickOval( pos, op.m_SizeXY, op.m_Orientation,
1625 for(
const auto& [row, shapeIndex] : aChart->
RowShapes() )
constexpr EDA_IU_SCALE pcbIUScale
constexpr int ARC_LOW_DEF
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
Generic cubic Bezier representation.
wxString GetNetname() const
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
virtual bool IsKnockout() const
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
FOOTPRINT * GetParentFootprint() const
virtual void TransformShapeToPolySet(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aError, ERROR_LOC aErrorLoc, KIGFX::RENDER_SETTINGS *aRenderSettings=nullptr) const
Convert the item shape to a polyset.
const KIFONT::METRICS & GetFontMetrics() const
BOARD_ITEM_CONTAINER * GetParent() const
constexpr BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
constexpr BOX2< Vec > & Normalize()
Ensure that the height and width are positive.
constexpr size_type GetWidth() const
constexpr Vec Centre() const
constexpr const Vec GetCenter() const
constexpr size_type GetHeight() const
constexpr coord_type GetLeft() const
constexpr coord_type GetRight() const
constexpr const SizeVec & GetSize() const
constexpr coord_type GetTop() const
constexpr coord_type GetBottom() const
void PlotFootprintGraphicItems(const FOOTPRINT *aFootprint) const
void PlotBoardGraphicItem(const BOARD_ITEM *item) const
Plot items like text and graphics but not tracks and footprints.
void PlotText(const EDA_TEXT *aText, PCB_LAYER_ID aLayer, bool aIsKnockout, const KIFONT::METRICS &aFontMetrics, bool aStrikeout=false) const
void PlotPadNumber(const PAD *aPad, const COLOR4D &aColor) const
void PlotDimension(const PCB_DIMENSION_BASE *aDim) const
void PlotDrillSymbols(PCB_LAYER_ID aLayer) const
Draw each hole's chart symbol on aLayer, from the board's shared symbol profile.
void PlotZone(const ZONE *aZone, PCB_LAYER_ID aLayer, const SHAPE_POLY_SET &aPolysList) const
void plotOneDrillMark(PAD_DRILL_SHAPE aDrillShape, const VECTOR2I &aDrillPos, const VECTOR2I &aDrillSize, const VECTOR2I &aPadSize, const EDA_ANGLE &aOrientation, int aSmallDrill) const
Helper function to plot a single drill mark.
bool crossoutDNPItems(PCB_LAYER_ID aLayer) const
void PlotTableBorders(const PCB_TABLE *aTable) const
bool hideDNPItems(PCB_LAYER_ID aLayer) const
void PlotFootprintTextItems(const FOOTPRINT *aFootprint) const
void PlotPcbTarget(const PCB_TARGET *aMire) const
COLOR4D getColor(int aLayer) const
White color is special because it cannot be seen on a white paper in B&W mode.
void PlotDrillMarks() const
Draw a drill mark for pads and vias.
void PlotShape(const PCB_SHAPE *aShape) const
int getFineWidthAdj() const
void PlotBarCode(const PCB_BARCODE *aBarCode) const
void PlotChartSymbols(const PCB_DRILL_CHART *aChart) const
Shape marks in a chart's symbol column, which carry no cell text of their own.
void PlotPad(const PAD *aPad, PCB_LAYER_ID aLayer, const COLOR4D &aColor, bool aSketchMode) const
Plot a pad.
static const COLOR4D WHITE
COLOR4D GetColor(int aLayer) const
Grouping rules and symbol assignments, shared by reference so a chart and its map can never disagree ...
std::string GroupKeyString(const DRILL_OPERATION &aOperation) const
Stable identity for a group under the currently enabled keys.
int GetSymbolWidth() const
int GetSymbolSize() const
KICAD_T Type() const
Returns the type of object.
static bool ShortenSegmentForEndings(VECTOR2I &aStart, VECTOR2I &aEnd, const LINE_ENDING &aStartEnding, const LINE_ENDING &aEndEnding, int aLineWidth)
Shorten a segment body for line endings.
EDA_ANGLE GetArcAngle() const
int GetEllipseMinorRadius() const
const VECTOR2I & GetEllipseCenter() const
const SHAPE_POLY_SET & GetHatching() const
EDA_ANGLE GetEllipseEndAngle() const
int GetEllipseMajorRadius() const
SHAPE_POLY_SET & GetPolyShape()
void GetEndingTangents(EDA_ANGLE &aStartTangent, EDA_ANGLE &aEndTangent, int aLineWidth=0) const
Compute outward-facing tangent angles at the start and end of the shape.
void CalcArcAngles(EDA_ANGLE &aStartAngle, EDA_ANGLE &aEndAngle) const
Calc arc start and end angles such that aStartAngle < aEndAngle.
EDA_ANGLE GetEllipseRotation() const
std::vector< SHAPE * > MakeEffectiveShapesForStroking(int aLineWidth=-1) const
Make a set of SHAPE objects to hand to STROKE_PARAMS::Stroke().
bool GetShortenedBodyPolyPoints(const SHAPE_LINE_CHAIN &aOutline, int aOutlineIdx, std::vector< VECTOR2I > &aPoints, int aLineWidth) const
Copy an outline and apply line-ending body shortening when applicable.
bool IsHatchedFill() const
bool GetLineEndingEndpoints(VECTOR2I &aStartPoint, VECTOR2I &aEndPoint) const
Return the source endpoints used to place line endings.
virtual void SetFilled(bool aFlag)
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
const VECTOR2I & GetStart() const
Return the starting point of the graphic.
std::vector< VECTOR2I > GetRectCorners() const
EDA_ANGLE GetEllipseStartAngle() const
const LINE_ENDING & GetStartEnding() const
wxString SHAPE_T_asString() const
std::optional< BEZIER< double > > ShortenedBezierCurve(int aLineWidth) const
Return the cubic Bezier curve shortened for line endings.
bool ShortenArcForEndings(EDA_ANGLE &aStartAngle, EDA_ANGLE &aArcAngle, double aRadius, int aLineWidth) const
Shorten an arc body for line endings.
std::vector< VECTOR2D > ShortenedBezierPolyline(int aLineWidth) const
Return the flattened Bezier polyline after line-ending shortening.
const LINE_ENDING & GetEndEnding() const
int GetCornerRadius() const
bool IsPolyShapeValid() const
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
virtual VECTOR2I GetTextSize() const
virtual VECTOR2I GetTextPos() const
bool IsMultilineAllowed() const
virtual bool IsVisible() const
std::vector< std::unique_ptr< KIFONT::GLYPH > > * GetRenderCache(const KIFONT::FONT *aFont, const wxString &forResolvedText, const VECTOR2I &aOffset={ 0, 0 }) const
virtual EDA_ANGLE GetDrawRotation() const
virtual wxString GetShownText(RESOLUTION_CONTEXT aContext, int aDepth=0) const
Return the string actually shown after processing of the base text.
virtual KIFONT::FONT * GetDrawFont(const RENDER_SETTINGS *aSettings) const
const TEXT_ATTRIBUTES & GetAttributes() const
int GetEffectiveTextPenWidth(int aDefaultPenWidth=0) const
The EffectiveTextPenWidth uses the text thickness if > 1 or aDefaultPenWidth.
void GetLinePositions(const RENDER_SETTINGS *aSettings, std::vector< VECTOR2I > &aPositions, int aLineCount) const
Populate aPositions with the position of each line of a multiline text, according to the vertical jus...
void FlashPadChamferRoundRect(const VECTOR2I &aShapePos, const VECTOR2I &aPadSize, int aCornerRadius, double aChamferRatio, int aChamferPositions, const EDA_ANGLE &aPadOrient, void *aData)
Flash a chamfered round rect pad.
void PlotPolyAsRegion(const SHAPE_LINE_CHAIN &aPoly, FILL_T aFill, int aWidth, GBR_METADATA *aGbrMetadata)
Similar to PlotPoly(), plot a filled polygon using Gerber region, therefore adding X2 attributes to t...
FONT is an abstract base class for both outline and stroke fonts.
virtual bool IsOutline() const
static const METRICS & Default()
A color representation with 4 components: red, green, blue, alpha.
virtual void DrawGlyphs(const std::vector< std::unique_ptr< KIFONT::GLYPH > > &aGlyphs)
Draw polygons representing font glyphs.
int GetShortenDepth(int aLineWidth) const
Return how far the line should be shortened at this ending.
LINE_ENDING_STYLE GetStyle() const
void Plot(PLOTTER *aPlotter, const VECTOR2I &aPoint, const EDA_ANGLE &aTangent, int aLineWidth, void *aData=nullptr) const
LSET is a set of PCB_LAYER_IDs.
static const LSET & AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
static const LSET & ExternalCuMask()
Return a mask holding the Front and Bottom layers.
static constexpr PCB_LAYER_ID TEMP_ALL_LAYERS
! Temporary layer identifier to identify code that is not padstack-aware
PAD_PROP GetProperty() const
static wxString ShowPadShape(PAD_SHAPE aShape)
const std::vector< std::shared_ptr< PCB_SHAPE > > & GetPrimitives(PCB_LAYER_ID aLayer) const
Accessor to the basic shape list for custom-shaped pads.
int GetRoundRectCornerRadius(PCB_LAYER_ID aLayer) const
const BOX2I GetBoundingBox() const override
The bounding box is cached, so this will be efficient most of the time.
PAD_ATTRIB GetAttribute() const
const wxString & GetPinFunction() const
const wxString & GetNumber() const
const VECTOR2I & GetDelta(PCB_LAYER_ID aLayer) const
void TransformShapeToPolygon(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aMaxError, ERROR_LOC aErrorLoc=ERROR_INSIDE, bool aIgnoreLineWidth=false) const override
Convert the pad shape to a closed polygon.
PAD_SHAPE GetShape(PCB_LAYER_ID aLayer) const
VECTOR2I GetSize(PCB_LAYER_ID aLayer) const
EDA_ANGLE GetOrientation() const
Return the rotation angle of the pad.
int GetChamferPositions(PCB_LAYER_ID aLayer) const
const std::shared_ptr< SHAPE_POLY_SET > & GetEffectivePolygon(PCB_LAYER_ID aLayer, ERROR_LOC aErrorLoc=ERROR_INSIDE) const
double GetChamferRectRatio(PCB_LAYER_ID aLayer) const
VECTOR2I ShapePos(PCB_LAYER_ID aLayer) const
int GetLineThickness() const
const std::vector< std::shared_ptr< SHAPE > > & GetShapes() const
A drill chart placed on the board, kept in step with the holes.
const std::map< int, int > & RowShapes() const
Curated shape index for each generated row, by table row.
int GetSymbolColumn() const
Table column the symbol is drawn in, or -1 when the chart has no symbol column.
Turns on drill symbols at the holes, for one layer.
bool GetSketchDNPFPsOnFabLayers() const
PLOT_TEXT_MODE GetTextMode() const override
bool GetPlotReference() const
DXF_OUTLINE_MODE GetDXFPlotMode() const override
int GetSketchPadLineWidth() const
DRILL_MARKS GetDrillMarksType() const
bool GetPlotValue() const
bool GetPlotFPText() const
COLOR_SETTINGS * ColorSettings() const
VECTOR2I GetCenter() const override
This defaults to the center of the bounding box if not overridden.
int GetWidth() const override
bool HasSolderMask() const
int GetSolderMaskExpansion() const
void SetShape(SHAPE_T aShape) override
void SetEnd(const VECTOR2I &aEnd) override
virtual LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
void SetLayer(PCB_LAYER_ID aLayer) override
Set the layer this item is on.
STROKE_PARAMS GetStroke() const override
void SetStart(const VECTOR2I &aStart) override
void SetStroke(const STROKE_PARAMS &aStroke) override
PCB_LAYER_ID GetLayer() const override
Return the primary layer this item is on.
PCB_TABLECELL * GetCell(int aRow, int aCol) const
void DrawBorders(const std::function< void(const VECTOR2I &aPt1, const VECTOR2I &aPt2, const STROKE_PARAMS &aStroke)> &aCallback) const
VECTOR2I GetPosition() const override
bool IsBorderEnabled() const
Tests whether the border is disabled, as configured by the stroke.
void TransformTextToPolySet(SHAPE_POLY_SET &aBuffer, int aClearance, int aMaxError, ERROR_LOC aErrorLoc) const
Convert the text to a polygonSet describing the actual character strokes (one per segment).
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
PCB_SHAPE GetPolygonalBoxShape() const
Base plotter engine class.
static const int USE_DEFAULT_LINE_WIDTH
virtual PLOT_FORMAT GetPlotterType() const =0
Return the effective plot engine in use.
SHAPE_LINE_CHAIN ConvertToPolyline(int aMaxError) const
Build a polyline approximation of the ellipse or arc.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
bool IsClosed() const override
void SetClosed(bool aClosed)
Mark the line chain as closed (i.e.
int PointCount() const
Return the number of points (vertices) in this line chain.
void Append(int aX, int aY, bool aAllowDuplication=false)
Append a new point at the end of the line chain.
Represent a set of closed polygons.
void Rotate(const EDA_ANGLE &aAngle, const VECTOR2I &aCenter={ 0, 0 }) override
Rotate all vertices by a given angle.
bool IsEmpty() const
Return true if the set is empty (no polygons at all)
void Inflate(int aAmount, CORNER_STRATEGY aCornerStrategy, int aMaxError, bool aSimplify=false)
Perform outline inflation/deflation.
SHAPE_LINE_CHAIN & Outline(int aIndex)
Return the reference to aIndex-th outline in the set.
int OutlineCount() const
Return the number of outlines in the set.
void Fracture(bool aSimplify=true)
Convert a set of polygons with holes to a single outline with "slits"/"fractures" connecting the oute...
SHAPE_POLY_SET CloneDropTriangulation() 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.
const SHAPE_LINE_CHAIN Outline() const
void SetRadius(int aRadius)
const SEG & GetSeg() const
An abstract shape on 2D plane.
Simple container to manage line stroke parameters.
LINE_STYLE GetLineStyle() const
static void Stroke(const SHAPE *aShape, LINE_STYLE aLineStyle, int aWidth, const KIGFX::RENDER_SETTINGS *aRenderSettings, const std::function< void(const VECTOR2I &a, const VECTOR2I &b)> &aStroker)
GR_TEXT_H_ALIGN_T m_Halign
GR_TEXT_V_ALIGN_T m_Valign
Handle a list of polygons defining a copper zone.
bool IsOnCopperLayer() const override
A type-safe container of any type.
constexpr any() noexcept
Default constructor, creates an empty object.
@ ROUND_ALL_CORNERS
All angles are rounded.
std::vector< DRILL_SPAN > EnumerateDrillSpans(const BOARD &aBoard, bool aPadBackdrills)
Every drill span present on the board, through-holes first.
std::vector< DRILL_OPERATION > EnumerateDrillOperations(const BOARD &aBoard, const DRILL_QUERY &aQuery)
The one place that decides what the board's holes are.
static constexpr EDA_ANGLE ANGLE_0
static constexpr EDA_ANGLE ANGLE_90
@ FILLED_SHAPE
Fill with object color.
@ RECTANGLE
Use RECTANGLE instead of RECT to avoid collision in a Windows header.
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
bool IsExternalCopperLayer(int aLayerId)
Test whether a layer is an external (F_Cu or B_Cu) copper layer.
PCB_LAYER_ID
A quick note on layer IDs:
This file contains miscellaneous commonly used macros and functions.
#define KI_FALLTHROUGH
The KI_FALLTHROUGH macro is to be used when switch statement cases should purposely fallthrough from ...
#define UNIMPLEMENTED_FOR(type)
unsigned CuratedShape(int aIndex)
Pattern index for the nth curated mark.
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
PAD_DRILL_SHAPE
The set of pad drill shapes, used with PAD::{Set,Get}DrillShape()
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
@ SMD
Smd pad, appears on the solder paste layer (default)
@ PTH
Plated through hole pad.
@ CONN
Like smd, does not appear on the solder paste layer (default) Note: also has a special attribute in G...
@ FIDUCIAL_LOCAL
a fiducial (usually a smd) local to the parent footprint
@ FIDUCIAL_GLBL
a fiducial (usually a smd) for the full board
@ MECHANICAL
a pad used for mechanical support
@ PRESSFIT
a PTH with a hole diameter with tight tolerances for press fit pin
@ HEATSINK
a pad used as heat sink, usually in SMD footprints
@ NONE
no special fabrication property
@ TESTPOINT
a test point pad
@ CASTELLATED
a pad with a castellated through hole
@ BGA
Smd pad, used in BGA footprints.
BARCODE class definition.
static void * plotMetadata(PLOTTER *aPlotter, GBR_METADATA &aMetadata, const PLOT_PARAMS *aPlotOptions)
std::vector< FAB_LAYER_COLOR > dummy
wxString UnescapeString(const wxString &aSource)
void wxStringSplit(const wxString &aText, wxArrayString &aStrings, wxChar aSplitter)
Split aString to a string list separated at aSplitter.
int PrintableCharCount(const wxString &aString)
Return the number of printable (ie: non-formatting) chars.
LINE_STYLE
Dashed line types.
One machining action, which is also one NC hit and one tool assignment.
Selects which operations EnumerateDrillOperations() returns.
bool m_MergePTHNPTH
Emit plated and non-plated together, as the merged drill file does.
DRILL_MARK_MODE m_MarkMode
const SHAPE_LINE_CHAIN chain
void RotatePoint(int *pX, int *pY, const EDA_ANGLE &aAngle)
Calculate the new point of coord coord pX, pY, for a rotation center 0, 0.
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
@ PCB_BARCODE_T
class PCB_BARCODE, a barcode (graphic item)
@ PCB_TARGET_T
class PCB_TARGET, a target (graphic item)
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
@ PCB_DRILL_CHART_T
class PCB_DRILL_CHART, a live drill chart derived from PCB_TABLE
VECTOR2< int32_t > VECTOR2I
VECTOR2< double > VECTOR2D