KiCad PCB EDA Suite
PAD Class Reference

#include <pad.h>

Inheritance diagram for PAD:
BOARD_CONNECTED_ITEM BOARD_ITEM EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

Public Member Functions

 PAD (FOOTPRINT *parent)
 
 PAD (const PAD &aPad)
 
PADoperator= (const PAD &aOther)
 
bool IsType (const KICAD_T aScanTypes[]) const override
 Check whether the item is one of the listed types. More...
 
FOOTPRINTGetParent () const
 
wxString GetParentAsString () const
 
bool IsLocked () const override
 
void ImportSettingsFrom (const PAD &aMasterPad)
 Import the pad settings from aMasterPad. More...
 
bool IsFlipped () const
 
void SetName (const wxString &aName)
 Set the pad name (sometimes called pad number, although it can be an array reference like AA12). More...
 
const wxString & GetName () const
 
void SetPinFunction (const wxString &aName)
 Set the pad function (pin name in schematic) More...
 
const wxString & GetPinFunction () const
 
void SetPinType (const wxString &aType)
 Set the pad electrical type. More...
 
const wxString & GetPinType () const
 
bool SameLogicalPadAs (const PAD *other) const
 Before we had custom pad shapes it was common to have multiple overlapping pads to represent a more complex shape. More...
 
void SetShape (PAD_SHAPE_T aShape)
 Set the new shape of this pad. More...
 
PAD_SHAPE_T GetShape () const
 
void SetPosition (const wxPoint &aPos) override
 
wxPoint GetPosition () const override
 
PAD_SHAPE_T GetAnchorPadShape () const
 
CUST_PAD_SHAPE_IN_ZONE GetCustomShapeInZoneOpt () const
 
void SetCustomShapeInZoneOpt (CUST_PAD_SHAPE_IN_ZONE aOption)
 Set the option for the custom pad shape to use as clearance area in copper zones. More...
 
void SetAnchorPadShape (PAD_SHAPE_T aShape)
 Set the shape of the anchor pad for custom shaped pads. More...
 
bool IsOnCopperLayer () const override
 
void SetY (int y)
 
void SetX (int x)
 
void SetPos0 (const wxPoint &aPos)
 
const wxPoint & GetPos0 () const
 
void SetY0 (int y)
 
void SetX0 (int x)
 
void SetSize (const wxSize &aSize)
 
const wxSize & GetSize () const
 
void SetSizeX (const int aX)
 
const int GetSizeX () const
 
void SetSizeY (const int aY)
 
const int GetSizeY () const
 
void SetDelta (const wxSize &aSize)
 
const wxSize & GetDelta () const
 
void SetDrillSize (const wxSize &aSize)
 
const wxSize & GetDrillSize () const
 
void SetDrillSizeX (const int aX)
 
const int GetDrillSizeX () const
 
void SetDrillSizeY (const int aY)
 
const int GetDrillSizeY () const
 
void SetOffset (const wxPoint &aOffset)
 
const wxPoint & GetOffset () const
 
wxPoint GetCenter () const override
 This defaults to the center of the bounding box if not overridden. More...
 
void AddPrimitivePoly (const SHAPE_POLY_SET &aPoly, int aThickness, bool aFilled)
 Has meaning only for custom shape pads. More...
 
void AddPrimitivePoly (const std::vector< wxPoint > &aPoly, int aThickness, bool aFilled)
 
void AddPrimitiveSegment (const wxPoint &aStart, const wxPoint &aEnd, int aThickness)
 
void AddPrimitiveCircle (const wxPoint &aCenter, int aRadius, int aThickness, bool aFilled)
 
void AddPrimitiveRect (const wxPoint &aStart, const wxPoint &aEnd, int aThickness, bool aFilled)
 
void AddPrimitiveArc (const wxPoint &aCenter, const wxPoint &aStart, int aArcAngle, int aThickness)
 
void AddPrimitiveCurve (const wxPoint &aStart, const wxPoint &aEnd, const wxPoint &aCtrl1, const wxPoint &aCtrl2, int aThickness)
 
bool GetBestAnchorPosition (VECTOR2I &aPos)
 
void MergePrimitivesAsPolygon (SHAPE_POLY_SET *aMergedPolygon, PCB_LAYER_ID aLayer) const
 Merge all basic shapes to a SHAPE_POLY_SET. More...
 
void DeletePrimitivesList ()
 Clear the basic shapes list. More...
 
const std::vector< std::shared_ptr< PCB_SHAPE > > & GetPrimitives () const
 Accessor to the basic shape list for custom-shaped pads. More...
 
void Flip (const wxPoint &aCentre, bool aFlipLeftRight) override
 Flip this object, i.e. More...
 
void FlipPrimitives (bool aFlipLeftRight)
 Flip (mirror) the primitives left to right or top to bottom, around the anchor position in custom pads. More...
 
void ReplacePrimitives (const std::vector< std::shared_ptr< PCB_SHAPE >> &aPrimitivesList)
 Clear the current custom shape primitives list and import a new list. More...
 
void AppendPrimitives (const std::vector< std::shared_ptr< PCB_SHAPE >> &aPrimitivesList)
 Import a custom shape primitive list (composed of basic shapes) and add items to the current list. More...
 
void AddPrimitive (PCB_SHAPE *aPrimitive)
 Add item to the custom shape primitives list. More...
 
void SetOrientation (double aAngle)
 Set the rotation angle of the pad. More...
 
void SetOrientationDegrees (double aOrientation)
 Set orientation in degrees. More...
 
double GetOrientation () const
 Return the rotation angle of the pad in a variety of units (the basic call returns tenths of degrees). More...
 
double GetOrientationDegrees () const
 
double GetOrientationRadians () const
 
void SetDrillShape (PAD_DRILL_SHAPE_T aShape)
 
PAD_DRILL_SHAPE_T GetDrillShape () const
 
bool IsDirty () const
 
void SetDirty ()
 
void SetLayerSet (LSET aLayers) override
 
LSET GetLayerSet () const override
 Return a std::bitset of all layers on which the item physically resides. More...
 
void SetAttribute (PAD_ATTR_T aAttribute)
 
PAD_ATTR_T GetAttribute () const
 
void SetProperty (PAD_PROP_T aProperty)
 
PAD_PROP_T GetProperty () const
 
bool IsAperturePad () const
 
void SetPadToDieLength (int aLength)
 
int GetPadToDieLength () const
 
int GetLocalSolderMaskMargin () const
 
void SetLocalSolderMaskMargin (int aMargin)
 
int GetLocalClearance (wxString *aSource) const override
 Return any local clearances set in the "classic" (ie: pre-rule) system. More...
 
int GetLocalClearance () const
 
void SetLocalClearance (int aClearance)
 
int GetLocalSolderPasteMargin () const
 
void SetLocalSolderPasteMargin (int aMargin)
 
double GetLocalSolderPasteMarginRatio () const
 
void SetLocalSolderPasteMarginRatio (double aRatio)
 
void TransformShapeWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, int aMaxError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const override
 Convert the pad shape to a closed polygon. More...
 
bool TransformHoleWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, int aInflateValue, int aError, ERROR_LOC aErrorLoc) const
 Build the corner list of the polygonal drill shape in the board coordinate system. More...
 
virtual std::shared_ptr< SHAPEGetEffectiveShape (PCB_LAYER_ID aLayer=UNDEFINED_LAYER) const override
 Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes. More...
 
const std::shared_ptr< SHAPE_POLY_SET > & GetEffectivePolygon () const
 
const SHAPE_SEGMENTGetEffectiveHoleShape () const
 Return a SHAPE object representing the pad's hole. More...
 
int GetBoundingRadius () const
 Return the radius of a minimum sized circle which fully encloses this pad. More...
 
int GetLocalClearanceOverrides (wxString *aSource) const override
 Return any local clearance overrides set in the "classic" (ie: pre-rule) system. More...
 
int GetSolderMaskMargin () const
 
wxSize GetSolderPasteMargin () const
 Usually < 0 (mask shape smaller than pad)because the margin can be dependent on the pad size, the margin has a x and a y value. More...
 
void SetZoneConnection (ZONE_CONNECTION aType)
 
ZONE_CONNECTION GetZoneConnection () const
 
ZONE_CONNECTION GetEffectiveZoneConnection (wxString *aSource=nullptr) const
 Return the zone connection in effect (either locally overridden or overridden in the parent footprint). More...
 
void SetThermalSpokeWidth (int aWidth)
 Set the width of the thermal spokes connecting the pad to a zone. More...
 
int GetThermalSpokeWidth () const
 
int GetEffectiveThermalSpokeWidth (wxString *aSource=nullptr) const
 Return the effective thermal spoke width having resolved any inheritance. More...
 
void SetThermalGap (int aGap)
 
int GetThermalGap () const
 
int GetEffectiveThermalGap (wxString *aSource=nullptr) const
 Return the effective thermal gap having resolved any inheritance. More...
 
void SetRoundRectCornerRadius (double aRadius)
 Has meaning only for rounded rectangle pads. More...
 
int GetRoundRectCornerRadius () const
 
wxPoint ShapePos () const
 
void SetRoundRectRadiusRatio (double aRadiusScale)
 Has meaning only for rounded rectangle pads. More...
 
double GetRoundRectRadiusRatio () const
 
void SetChamferRectRatio (double aChamferScale)
 Has meaning only for chamfered rectangular pads. More...
 
double GetChamferRectRatio () const
 
void SetChamferPositions (int aPositions)
 Has meaning only for chamfered rectangular pads. More...
 
int GetChamferPositions () const
 
int GetSubRatsnest () const
 
void SetSubRatsnest (int aSubRatsnest)
 
void SetRemoveUnconnected (bool aSet)
 Set the unconnected removal property. More...
 
bool GetRemoveUnconnected () const
 
void SetKeepTopBottom (bool aSet)
 Set whether we keep the top and bottom connections even if they are not connected. More...
 
bool GetKeepTopBottom () const
 
void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
 Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
bool IsOnLayer (PCB_LAYER_ID aLayer) const override
 Test to see if this object is on the given layer. More...
 
bool FlashLayer (int aLayer) const
 Check to see whether the pad should be flashed on the specific layer. More...
 
bool FlashLayer (LSET aLayers) const
 Check to see if the pad should be flashed to any of the layers in the set. More...
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Test if aPosition is contained within or on the bounding box of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const override
 Test if aRect intersects or is contained within the bounding box of an item. More...
 
wxString GetClass () const override
 Return the class name. More...
 
const EDA_RECT GetBoundingBox () const override
 The bounding box is cached, so this will be efficient most of the time. More...
 
void SetDrawCoord ()
 
void SetLocalCoord ()
 < Set relative coordinates. More...
 
void Move (const wxPoint &aMoveVector) override
 Move this object. More...
 
void Rotate (const wxPoint &aRotCentre, double aAngle) override
 Rotate this object. More...
 
wxString GetSelectMenuText (EDA_UNITS aUnits) const override
 Return the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAPS GetMenuImage () const override
 Return a pointer to an image to be used in menus. More...
 
wxString ShowPadShape () const
 
wxString ShowPadAttr () const
 
EDA_ITEMClone () const override
 Create a duplicate of this item with linked list members set to NULL. More...
 
PADClonePad () const
 Same as Clone, but returns a PAD item. More...
 
void BuildEffectiveShapes (PCB_LAYER_ID aLayer) const
 Rebuild the effective shape cache (and bounding box and radius) for the pad and clears the dirty bit. More...
 
void BuildEffectivePolygon () const
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Return the all the layers within the VIEW the object is painted on. More...
 
double ViewGetLOD (int aLayer, KIGFX::VIEW *aView) const override
 Return the level of detail (LOD) of the item. More...
 
virtual const BOX2I ViewBBox () const override
 Return the bounding box of the item covering all its layers. More...
 
virtual void SwapData (BOARD_ITEM *aImage) override
 Swap data between aItem and aImage. More...
 
bool IsConnected () const override
 Returns information if the object is derived from BOARD_CONNECTED_ITEM. More...
 
NETINFO_ITEMGetNet () const
 Return #NET_INFO object for a given item. More...
 
void SetNet (NETINFO_ITEM *aNetInfo)
 Set a NET_INFO object for the item. More...
 
int GetNetCode () const
 
bool SetNetCode (int aNetCode, bool aNoAssert)
 Set net using a net code. More...
 
void SetNetCode (int aNetCode)
 
wxString GetNetname () const
 
wxString GetNetnameMsg () const
 
wxString GetShortNetname () const
 
virtual int GetOwnClearance (PCB_LAYER_ID aLayer, wxString *aSource=nullptr) const
 Return an item's "own" clearance in internal units. More...
 
virtual NETCLASSGetNetClass () const
 Return the NETCLASS for this item. More...
 
virtual NETCLASSGetEffectiveNetclass () const
 Return the NETCLASS for this item, or the default netclass if none is defined. More...
 
virtual wxString GetNetClassName () const
 Returns the netclass of the zone. More...
 
void SetLocalRatsnestVisible (bool aVisible)
 
bool GetLocalRatsnestVisible () const
 
void SetParentGroup (PCB_GROUP *aGroup)
 
PCB_GROUPGetParentGroup () const
 
int GetX () const
 
int GetY () const
 
virtual PCB_LAYER_ID GetLayer () const
 Return the primary layer this item is on. More...
 
virtual void SetLayer (PCB_LAYER_ID aLayer)
 Set the layer this item is on. More...
 
virtual BOARD_ITEMDuplicate () const
 Create a copy of this BOARD_ITEM. More...
 
bool IsTrack () const
 Test to see if this object is a track or via (or microvia). More...
 
virtual void SetLocked (bool aLocked)
 Modify the 'lock' status for of the item. More...
 
void DeleteStructure ()
 Delete this object after removing from its parent if it has one. More...
 
void Move (const VECTOR2I &aMoveVector)
 
void Rotate (const VECTOR2I &aRotCentre, double aAngle)
 
void Flip (const VECTOR2I &aCentre, bool aFlipLeftRight)
 
virtual BOARDGetBoard () const
 Return the BOARD in which this BOARD_ITEM resides, or NULL if none. More...
 
wxString GetLayerName () const
 Return the name of the PCB layer on which the item resides. More...
 
KICAD_T Type () const
 Returns the type of object. More...
 
virtual void SetParent (EDA_ITEM *aParent)
 
bool IsModified () const
 
bool IsNew () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsEntered () const
 
bool IsResized () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, bool state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
bool HasFlag (STATUS_FLAGS aFlag) const
 
STATUS_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
void SetForceVisible (bool aEnable)
 Set and clear force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
bool IsForceVisible () const
 
virtual const wxPoint GetFocusPosition () const
 Similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 May be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
virtual bool Matches (const wxFindReplaceData &aSearchData, void *aAuxData) const
 Compare the item against the search criteria in aSearchData. More...
 
virtual bool Replace (const wxFindReplaceData &aSearchData, void *aAuxData=nullptr)
 Perform a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Override this method in any derived object that supports test find and replace. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Draw the parts of the object belonging to layer aLayer. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 
bool Set (PROPERTY_BASE *aProperty, wxAny &aValue)
 
template<typename T >
bool Set (PROPERTY_BASE *aProperty, T aValue)
 
template<typename T >
bool Set (const wxString &aProperty, T aValue)
 
wxAny Get (PROPERTY_BASE *aProperty)
 
template<typename T >
Get (PROPERTY_BASE *aProperty)
 
template<typename T >
boost::optional< T > Get (const wxString &aProperty)
 

Static Public Member Functions

static LSET PTHMask ()
 layer set for a through hole pad More...
 
static LSET SMDMask ()
 layer set for a SMD pad on Front layer More...
 
static LSET ConnSMDMask ()
 layer set for a SMD pad on Front layer used for edge board connectors More...
 
static LSET UnplatedHoleMask ()
 layer set for a mechanical unplated through hole pad More...
 
static LSET ApertureMask ()
 layer set for an aperture pad More...
 
static bool ClassOf (const EDA_ITEM *aItem)
 
static int Compare (const PAD *padref, const PAD *padcmp)
 Compare two pads and return 0 if they are equal. More...
 
static wxString ShowShape (PCB_SHAPE_TYPE_T aShape)
 Convert the enum PCB_SHAPE_TYPE_T integer value to a wxString. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 This changes first parameter to avoid the DList and use the main queue instead. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Change first parameter to avoid the DList and use std::vector instead. More...
 
static bool Replace (const wxFindReplaceData &aSearchData, wxString &aText)
 Perform a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

const KIID m_Uuid
 

Static Public Attributes

static wxPoint ZeroOffset
 A value of wxPoint(0,0) which can be passed to the Draw() functions. More...
 

Protected Member Functions

virtual wxString layerMaskDescribe () const
 Return a string (to be shown to the user) describing a layer mask. More...
 
bool Matches (const wxString &aText, const wxFindReplaceData &aSearchData) const
 Compare aText against search criteria in aSearchData. More...
 

Protected Attributes

NETINFO_ITEMm_netinfo
 Store all information about the net that item belongs to. More...
 
PCB_LAYER_ID m_layer
 
PCB_GROUPm_group
 
STATUS_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
STATUS_FLAGS m_flags
 

Private Member Functions

void addPadPrimitivesToPolygon (SHAPE_POLY_SET *aMergedPolygon, PCB_LAYER_ID aLayer, int aError, ERROR_LOC aErrorLoc) const
 

Private Attributes

wxString m_name
 
wxString m_pinFunction
 
wxString m_pinType
 
wxPoint m_pos
 
PAD_SHAPE_T m_padShape
 
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
 
bool m_shapesDirty
 
std::mutex m_shapesBuildingLock
 
EDA_RECT m_effectiveBoundingBox
 
std::shared_ptr< SHAPE_COMPOUNDm_effectiveShape
 
std::shared_ptr< SHAPE_SEGMENTm_effectiveHoleShape
 
bool m_polyDirty
 
std::mutex m_polyBuildingLock
 
std::shared_ptr< SHAPE_POLY_SETm_effectivePolygon
 
int m_effectiveBoundingRadius
 
CUST_PAD_SHAPE_IN_ZONE m_customShapeClearanceArea
 
int m_subRatsnest
 
wxSize m_drill
 
wxSize m_size
 
PAD_DRILL_SHAPE_T m_drillShape
 
double m_roundedCornerScale
 
double m_chamferScale
 
int m_chamferPositions
 
PAD_SHAPE_T m_anchorPadShape
 
wxPoint m_offset
 
LSET m_layerMask
 
wxSize m_deltaSize
 
wxPoint m_pos0
 
PAD_ATTR_T m_attribute
 
PAD_PROP_T m_property
 
double m_orient
 
int m_lengthPadToDie
 
bool m_removeUnconnectedLayer
 < If true, the pad copper is removed for layers that are not connected. More...
 
bool m_keepTopBottomLayer
 
int m_localClearance
 
int m_localSolderMaskMargin
 
int m_localSolderPasteMargin
 
double m_localSolderPasteMarginRatio
 
ZONE_CONNECTION m_zoneConnection
 
int m_thermalWidth
 
int m_thermalGap
 

Detailed Description

Definition at line 60 of file pad.h.

Constructor & Destructor Documentation

◆ PAD() [1/2]

PAD::PAD ( FOOTPRINT parent)

Definition at line 53 of file pad.cpp.

53  :
55 {
56  m_size.x = m_size.y = Mils2iu( 60 ); // Default pad size 60 mils.
57  m_drill.x = m_drill.y = Mils2iu( 30 ); // Default drill size 30 mils.
58  m_orient = 0; // Pad rotation in 1/10 degrees.
59  m_lengthPadToDie = 0;
60 
61  if( m_parent && m_parent->Type() == PCB_FOOTPRINT_T )
62  {
64  }
65 
66  SetShape( PAD_SHAPE_CIRCLE ); // Default pad shape is PAD_CIRCLE.
67  SetAnchorPadShape( PAD_SHAPE_CIRCLE ); // Default shape for custom shaped pads
68  // is PAD_CIRCLE.
69  SetDrillShape( PAD_DRILL_SHAPE_CIRCLE ); // Default pad drill shape is a circle.
70  m_attribute = PAD_ATTRIB_PTH; // Default pad type is plated through hole
71  SetProperty( PAD_PROP_NONE ); // no special fabrication property
72  m_localClearance = 0;
76  // Parameters for round rect only:
77  m_roundedCornerScale = 0.25; // from IPC-7351C standard
78  // Parameters for chamfered rect only:
79  m_chamferScale = 0.2; // Size of chamfer: ratio of smallest of X,Y size
80  m_chamferPositions = RECT_NO_CHAMFER; // No chamfered corner
81 
82  m_zoneConnection = ZONE_CONNECTION::INHERITED; // Use parent setting by default
83  m_thermalWidth = 0; // Use parent setting by default
84  m_thermalGap = 0; // Use parent setting by default
85 
87 
88  // Set layers mask to default for a standard thru hole pad.
89  m_layerMask = PTHMask();
90 
91  SetSubRatsnest( 0 ); // used in ratsnest calculations
92 
93  SetDirty();
96  m_keepTopBottomLayer = true;
97 }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:529
int m_chamferPositions
Definition: pad.h:715
no special fabrication property
Definition: pad_shapes.h:96
int m_effectiveBoundingRadius
Definition: pad.h:694
wxSize m_drill
Definition: pad.h:706
double m_roundedCornerScale
Definition: pad.h:711
LSET m_layerMask
Definition: pad.h:729
BOARD_CONNECTED_ITEM(BOARD_ITEM *aParent, KICAD_T idtype)
void SetAnchorPadShape(PAD_SHAPE_T aShape)
Set the shape of the anchor pad for custom shaped pads.
Definition: pad.h:208
void SetSubRatsnest(int aSubRatsnest)
Definition: pad.h:540
class PAD, a pad in a footprint
Definition: typeinfo.h:89
wxPoint m_pos
Definition: pad.h:673
PAD_ATTR_T m_attribute
Definition: pad.h:739
double m_localSolderPasteMarginRatio
Definition: pad.h:766
int m_localSolderPasteMargin
Definition: pad.h:765
int m_localSolderMaskMargin
Definition: pad.h:764
bool m_keepTopBottomLayer
Definition: pad.h:751
int m_localClearance
Definition: pad.h:763
double m_chamferScale
Definition: pad.h:713
int m_thermalGap
Definition: pad.h:771
int m_thermalWidth
Definition: pad.h:770
static LSET PTHMask()
layer set for a through hole pad
Definition: pad.cpp:147
double m_orient
Definition: pad.h:743
ZONE_CONNECTION m_zoneConnection
Definition: pad.h:769
void SetShape(PAD_SHAPE_T aShape)
Set the new shape of this pad.
Definition: pad.h:160
void SetDrillShape(PAD_DRILL_SHAPE_T aShape)
Definition: pad.h:345
class FOOTPRINT, a footprint
Definition: typeinfo.h:88
wxSize m_size
Definition: pad.h:707
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
bool m_removeUnconnectedLayer
< If true, the pad copper is removed for layers that are not connected.
Definition: pad.h:748
void SetDirty()
Definition: pad.h:353
Plated through hole pad.
Definition: pad_shapes.h:80
wxPoint GetPosition() const override
Definition: footprint.h:182
int m_lengthPadToDie
Definition: pad.h:745
void SetProperty(PAD_PROP_T aProperty)
Definition: pad.cpp:571
CUST_PAD_SHAPE_IN_ZONE m_customShapeClearanceArea
Definition: pad.h:701
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:163

References CUST_PAD_SHAPE_IN_ZONE_OUTLINE, GetParent(), FOOTPRINT::GetPosition(), INHERITED, m_attribute, m_chamferPositions, m_chamferScale, m_customShapeClearanceArea, m_drill, m_effectiveBoundingRadius, m_keepTopBottomLayer, m_layerMask, m_lengthPadToDie, m_localClearance, m_localSolderMaskMargin, m_localSolderPasteMargin, m_localSolderPasteMarginRatio, m_orient, EDA_ITEM::m_parent, m_pos, m_removeUnconnectedLayer, m_roundedCornerScale, m_size, m_thermalGap, m_thermalWidth, m_zoneConnection, PAD_ATTRIB_PTH, PAD_DRILL_SHAPE_CIRCLE, PAD_PROP_NONE, PAD_SHAPE_CIRCLE, PCB_FOOTPRINT_T, PTHMask(), RECT_NO_CHAMFER, SetAnchorPadShape(), SetDirty(), SetDrillShape(), SetProperty(), SetShape(), SetSubRatsnest(), and EDA_ITEM::Type().

Referenced by Clone().

◆ PAD() [2/2]

PAD::PAD ( const PAD aPad)

Definition at line 100 of file pad.cpp.

100  :
101  BOARD_CONNECTED_ITEM( aOther.GetParent(), PCB_PAD_T )
102 {
104 
105  ImportSettingsFrom( aOther );
106  SetPadToDieLength( aOther.GetPadToDieLength() );
107  SetPosition( aOther.GetPosition() );
108  SetPos0( aOther.GetPos0() );
109  SetName( aOther.GetName() );
110  SetPinFunction( aOther.GetPinFunction() );
111  SetSubRatsnest( aOther.GetSubRatsnest() );
112  m_effectiveBoundingRadius = aOther.m_effectiveBoundingRadius;
113  m_removeUnconnectedLayer = aOther.m_removeUnconnectedLayer;
114  m_keepTopBottomLayer = aOther.m_keepTopBottomLayer;
115  const_cast<KIID&>( m_Uuid ) = aOther.m_Uuid;
116 }
int m_effectiveBoundingRadius
Definition: pad.h:694
BOARD_CONNECTED_ITEM(BOARD_ITEM *aParent, KICAD_T idtype)
void SetName(const wxString &aName)
Set the pad name (sometimes called pad number, although it can be an array reference like AA12).
Definition: pad.h:132
void SetSubRatsnest(int aSubRatsnest)
Definition: pad.h:540
class PAD, a pad in a footprint
Definition: typeinfo.h:89
void SetPadToDieLength(int aLength)
Definition: pad.h:375
void ImportSettingsFrom(const PAD &aMasterPad)
Import the pad settings from aMasterPad.
Definition: pad.cpp:1338
bool m_keepTopBottomLayer
Definition: pad.h:751
void SetPos0(const wxPoint &aPos)
Definition: pad.h:225
void SetPinFunction(const wxString &aName)
Set the pad function (pin name in schematic)
Definition: pad.h:138
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Assign the members of aItem to another object.
Definition: eda_item.cpp:177
const KIID m_Uuid
Definition: eda_item.h:525
bool m_removeUnconnectedLayer
< If true, the pad copper is removed for layers that are not connected.
Definition: pad.h:748
void SetPosition(const wxPoint &aPos) override
Definition: pad.h:171

References GetName(), GetPadToDieLength(), GetPinFunction(), GetPos0(), GetPosition(), GetSubRatsnest(), ImportSettingsFrom(), m_effectiveBoundingRadius, m_keepTopBottomLayer, m_removeUnconnectedLayer, EDA_ITEM::m_Uuid, EDA_ITEM::operator=(), SetName(), SetPadToDieLength(), SetPinFunction(), SetPos0(), SetPosition(), and SetSubRatsnest().

Member Function Documentation

◆ addPadPrimitivesToPolygon()

void PAD::addPadPrimitivesToPolygon ( SHAPE_POLY_SET aMergedPolygon,
PCB_LAYER_ID  aLayer,
int  aError,
ERROR_LOC  aErrorLoc 
) const
private

Definition at line 185 of file pad_custom_shape_functions.cpp.

187 {
188  SHAPE_POLY_SET polyset;
189 
190  for( const std::shared_ptr<PCB_SHAPE>& primitive : m_editPrimitives )
191  primitive->TransformShapeWithClearanceToPolygon( polyset, aLayer, 0, aError, aErrorLoc );
192 
194 
195  // Merge all polygons with the initial pad anchor shape
196  if( polyset.OutlineCount() )
197  {
198  aMergedPolygon->BooleanAdd( polyset, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
199  aMergedPolygon->Fracture( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
200  }
201 }
int OutlineCount() const
Return the number of vertices in a given outline/hole.
void BooleanAdd(const SHAPE_POLY_SET &b, POLYGON_MODE aFastMode)
Perform boolean polyset difference For aFastMode meaning, see function booleanOp.
Represent a set of closed polygons.
void Simplify(POLYGON_MODE aFastMode)
void Fracture(POLYGON_MODE aFastMode)
Convert a single outline slitted ("fractured") polygon into a set ouf outlines with holes.
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682

References SHAPE_POLY_SET::BooleanAdd(), SHAPE_POLY_SET::Fracture(), m_editPrimitives, SHAPE_POLY_SET::OutlineCount(), SHAPE_POLY_SET::PM_FAST, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE, and SHAPE_POLY_SET::Simplify().

Referenced by GetBestAnchorPosition(), and MergePrimitivesAsPolygon().

◆ AddPrimitive()

void PAD::AddPrimitive ( PCB_SHAPE aPrimitive)

Add item to the custom shape primitives list.

Definition at line 167 of file pad_custom_shape_functions.cpp.

168 {
169  aPrimitive->SetParent( this );
170  m_editPrimitives.emplace_back( aPrimitive );
171 
172  SetDirty();
173 }
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetDirty()
Definition: pad.h:353

References m_editPrimitives, SetDirty(), and EDA_ITEM::SetParent().

Referenced by AppendPrimitives(), and PAD_TOOL::recombinePad().

◆ AddPrimitiveArc()

void PAD::AddPrimitiveArc ( const wxPoint &  aCenter,
const wxPoint &  aStart,
int  aArcAngle,
int  aThickness 
)

Definition at line 82 of file pad_custom_shape_functions.cpp.

84 {
85  PCB_SHAPE* item = new PCB_SHAPE();
86  item->SetShape( S_ARC );
87  item->SetFilled( false );
88  item->SetCenter( aCenter );
89  item->SetArcStart( aStart );
90  item->SetAngle( aArcAngle );
91  item->SetWidth( aThickness );
92  item->SetParent( this );
93  m_editPrimitives.emplace_back( item );
94  SetDirty();
95 }
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
Arcs (with rounded ends)
Definition: board_item.h:52
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
void SetCenter(const wxPoint &aCenterPoint)
For arcs and circles:
Definition: pcb_shape.h:229
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
virtual void SetAngle(double aAngle, bool aUpdateEnd=true)
Sets the angle for arcs, and normalizes it within the range 0 - 360 degrees.
Definition: pcb_shape.cpp:466
void SetArcStart(const wxPoint &aArcStartPoint)
Initialize the start arc point.
Definition: pcb_shape.h:213

References m_editPrimitives, S_ARC, PCB_SHAPE::SetAngle(), PCB_SHAPE::SetArcStart(), PCB_SHAPE::SetCenter(), SetDirty(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetShape(), and PCB_SHAPE::SetWidth().

◆ AddPrimitiveCircle()

void PAD::AddPrimitiveCircle ( const wxPoint &  aCenter,
int  aRadius,
int  aThickness,
bool  aFilled 
)

Definition at line 115 of file pad_custom_shape_functions.cpp.

116 {
117  PCB_SHAPE* item = new PCB_SHAPE();
118  item->SetShape( S_CIRCLE );
119  item->SetFilled( aFilled );
120  item->SetStart( aCenter );
121  item->SetEnd( wxPoint( aCenter.x + aRadius, aCenter.y ) );
122  item->SetWidth( aThickness );
123  item->SetParent( this );
124  m_editPrimitives.emplace_back( item );
125  SetDirty();
126 }
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetStart(const wxPoint &aStart)
Definition: pcb_shape.h:148
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
ring
Definition: board_item.h:53
void SetEnd(const wxPoint &aEnd)
Definition: pcb_shape.h:159

References m_editPrimitives, S_CIRCLE, SetDirty(), PCB_SHAPE::SetEnd(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetShape(), PCB_SHAPE::SetStart(), and PCB_SHAPE::SetWidth().

◆ AddPrimitiveCurve()

void PAD::AddPrimitiveCurve ( const wxPoint &  aStart,
const wxPoint &  aEnd,
const wxPoint &  aCtrl1,
const wxPoint &  aCtrl2,
int  aThickness 
)

Definition at line 98 of file pad_custom_shape_functions.cpp.

100 {
101  PCB_SHAPE* item = new PCB_SHAPE();
102  item->SetShape( S_CURVE );
103  item->SetFilled( false );
104  item->SetStart( aStart );
105  item->SetEnd( aEnd );
106  item->SetBezControl1( aCtrl1 );
107  item->SetBezControl2( aCtrl2 );
108  item->SetWidth( aThickness );
109  item->SetParent( this );
110  m_editPrimitives.emplace_back( item );
111  SetDirty();
112 }
void SetBezControl2(const wxPoint &aPoint)
Definition: pcb_shape.h:135
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
void SetBezControl1(const wxPoint &aPoint)
Definition: pcb_shape.h:132
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetStart(const wxPoint &aStart)
Definition: pcb_shape.h:148
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
Bezier Curve.
Definition: board_item.h:55
void SetEnd(const wxPoint &aEnd)
Definition: pcb_shape.h:159

References m_editPrimitives, S_CURVE, PCB_SHAPE::SetBezControl1(), PCB_SHAPE::SetBezControl2(), SetDirty(), PCB_SHAPE::SetEnd(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetShape(), PCB_SHAPE::SetStart(), and PCB_SHAPE::SetWidth().

◆ AddPrimitivePoly() [1/2]

void PAD::AddPrimitivePoly ( const SHAPE_POLY_SET aPoly,
int  aThickness,
bool  aFilled 
)

Has meaning only for custom shape pads.

add a free shape to the shape list. the shape can be

  • a polygon (outline can have a thickness)
  • a thick segment
  • a filled circle (thickness == 0) or ring
  • a filled rect (thickness == 0) or rectangular outline
  • a arc
  • a bezier curve

Definition at line 39 of file pad_custom_shape_functions.cpp.

40 {
41  std::vector<wxPoint> points;
42 
43  // If aPoly has holes, convert it to a polygon with no holes.
44  SHAPE_POLY_SET poly_no_hole;
45  poly_no_hole.Append( aPoly );
47 
48  for( auto iter = poly_no_hole.CIterate(); iter; iter++ )
49  points.emplace_back( iter->x, iter->y );
50 
51  AddPrimitivePoly( points, aThickness, aFilled );
52 }
Represent a set of closed polygons.
CONST_ITERATOR CIterate(int aFirst, int aLast, bool aIterateHoles=false) const
void Fracture(POLYGON_MODE aFastMode)
Convert a single outline slitted ("fractured") polygon into a set ouf outlines with holes.
void AddPrimitivePoly(const SHAPE_POLY_SET &aPoly, int aThickness, bool aFilled)
Has meaning only for custom shape pads.
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Add a new vertex to the contour indexed by aOutline and aHole (defaults to the outline of the last po...

References SHAPE_POLY_SET::Append(), SHAPE_POLY_SET::CIterate(), SHAPE_POLY_SET::Fracture(), and SHAPE_POLY_SET::PM_STRICTLY_SIMPLE.

Referenced by FABMASTER::loadFootprints().

◆ AddPrimitivePoly() [2/2]

void PAD::AddPrimitivePoly ( const std::vector< wxPoint > &  aPoly,
int  aThickness,
bool  aFilled 
)

Definition at line 55 of file pad_custom_shape_functions.cpp.

56 {
57  PCB_SHAPE* item = new PCB_SHAPE();
58  item->SetShape( S_POLYGON );
59  item->SetFilled( aFilled );
60  item->SetPolyPoints( aPoly );
61  item->SetWidth( aThickness );
62  item->SetParent( this );
63  m_editPrimitives.emplace_back( item );
64  SetDirty();
65 }
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
polygon (not yet used for tracks, but could be in microwave apps)
Definition: board_item.h:54
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
void SetPolyPoints(const std::vector< wxPoint > &aPoints)
Definition: pcb_shape.cpp:1076

References m_editPrimitives, S_POLYGON, SetDirty(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetPolyPoints(), PCB_SHAPE::SetShape(), and PCB_SHAPE::SetWidth().

◆ AddPrimitiveRect()

void PAD::AddPrimitiveRect ( const wxPoint &  aStart,
const wxPoint &  aEnd,
int  aThickness,
bool  aFilled 
)

Definition at line 129 of file pad_custom_shape_functions.cpp.

131 {
132  PCB_SHAPE* item = new PCB_SHAPE();
133  item->SetShape( S_RECT );
134  item->SetFilled( aFilled );
135  item->SetStart( aStart );
136  item->SetEnd( aEnd );
137  item->SetWidth( aThickness );
138  item->SetParent( this );
139  m_editPrimitives.emplace_back( item );
140  SetDirty();
141 }
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
segment with non rounded ends
Definition: board_item.h:51
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetStart(const wxPoint &aStart)
Definition: pcb_shape.h:148
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
void SetEnd(const wxPoint &aEnd)
Definition: pcb_shape.h:159

References m_editPrimitives, S_RECT, SetDirty(), PCB_SHAPE::SetEnd(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetShape(), PCB_SHAPE::SetStart(), and PCB_SHAPE::SetWidth().

◆ AddPrimitiveSegment()

void PAD::AddPrimitiveSegment ( const wxPoint &  aStart,
const wxPoint &  aEnd,
int  aThickness 
)

Definition at line 68 of file pad_custom_shape_functions.cpp.

69 {
70  PCB_SHAPE* item = new PCB_SHAPE();
71  item->SetShape( S_SEGMENT );
72  item->SetFilled( false );
73  item->SetStart( aStart );
74  item->SetEnd( aEnd );
75  item->SetWidth( aThickness );
76  item->SetParent( this );
77  m_editPrimitives.emplace_back( item );
78  SetDirty();
79 }
void SetFilled(bool aFlag)
Definition: pcb_shape.h:94
usual segment : line with rounded ends
Definition: board_item.h:50
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
void SetShape(PCB_SHAPE_TYPE_T aShape)
Definition: pcb_shape.h:129
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetStart(const wxPoint &aStart)
Definition: pcb_shape.h:148
void SetDirty()
Definition: pad.h:353
void SetWidth(int aWidth)
Definition: pcb_shape.h:117
void SetEnd(const wxPoint &aEnd)
Definition: pcb_shape.h:159

References m_editPrimitives, S_SEGMENT, SetDirty(), PCB_SHAPE::SetEnd(), PCB_SHAPE::SetFilled(), EDA_ITEM::SetParent(), PCB_SHAPE::SetShape(), PCB_SHAPE::SetStart(), and PCB_SHAPE::SetWidth().

◆ ApertureMask()

LSET PAD::ApertureMask ( )
static

layer set for an aperture pad

Definition at line 175 of file pad.cpp.

176 {
177  static LSET saved( 1, F_Paste );
178  return saved;
179 }
LSET is a set of PCB_LAYER_IDs.

References F_Paste.

Referenced by PAD_FIXTURE::MakeAperture(), and DIALOG_PAD_PROPERTIES::updatePadLayersList().

◆ AppendPrimitives()

void PAD::AppendPrimitives ( const std::vector< std::shared_ptr< PCB_SHAPE >> &  aPrimitivesList)

Import a custom shape primitive list (composed of basic shapes) and add items to the current list.

Copies the input, which is not altered.

Definition at line 157 of file pad_custom_shape_functions.cpp.

158 {
159  // Add duplicates of aPrimitivesList to the pad primitives list:
160  for( const std::shared_ptr<PCB_SHAPE>& prim : aPrimitivesList )
161  AddPrimitive( new PCB_SHAPE( *prim ) );
162 
163  SetDirty();
164 }
void SetDirty()
Definition: pad.h:353
void AddPrimitive(PCB_SHAPE *aPrimitive)
Add item to the custom shape primitives list.

References AddPrimitive(), and SetDirty().

Referenced by ReplacePrimitives().

◆ BuildEffectivePolygon()

void PAD::BuildEffectivePolygon ( ) const

Definition at line 476 of file pad.cpp.

477 {
478  std::lock_guard<std::mutex> RAII_lock( m_polyBuildingLock );
479 
480  // If we had to wait for the lock then we were probably waiting for someone else to
481  // finish rebuilding the shapes. So check to see if they're clean now.
482  if( !m_polyDirty )
483  return;
484 
485  BOARD* board = GetBoard();
486  int maxError = board ? board->GetDesignSettings().m_MaxError : ARC_HIGH_DEF;
487 
488  // Polygon
489  //
490  m_effectivePolygon = std::make_shared<SHAPE_POLY_SET>();
492  ERROR_INSIDE );
493 
494  // Bounding radius
495  //
496  // PADSTACKS TODO: these will both need to cycle through all layers to get the largest
497  // values....
498  //
500 
501  for( int cnt = 0; cnt < m_effectivePolygon->OutlineCount(); ++cnt )
502  {
503  const SHAPE_LINE_CHAIN& poly = m_effectivePolygon->COutline( cnt );
504 
505  for( int ii = 0; ii < poly.PointCount(); ++ii )
506  {
507  int dist = KiROUND( ( poly.CPoint( ii ) - m_pos ).EuclideanNorm() );
509  }
510  }
511 
512  // All done
513  //
514  m_polyDirty = false;
515 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:148
std::mutex m_polyBuildingLock
Definition: pad.h:692
int m_effectiveBoundingRadius
Definition: pad.h:694
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
wxPoint m_pos
Definition: pad.h:673
int PointCount() const
Function PointCount()
const VECTOR2I & CPoint(int aIndex) const
Function Point()
std::shared_ptr< SHAPE_POLY_SET > m_effectivePolygon
Definition: pad.h:693
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
void TransformShapeWithClearanceToPolygon(SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, int aMaxError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const override
Convert the pad shape to a closed polygon.
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
SHAPE_LINE_CHAIN.
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:68
bool m_polyDirty
Definition: pad.h:691

References SHAPE_LINE_CHAIN::CPoint(), ERROR_INSIDE, EuclideanNorm(), BOARD_ITEM::GetBoard(), BOARD::GetDesignSettings(), KiROUND(), m_effectiveBoundingRadius, m_effectivePolygon, BOARD_DESIGN_SETTINGS::m_MaxError, m_polyBuildingLock, m_polyDirty, m_pos, SHAPE_LINE_CHAIN::PointCount(), TransformShapeWithClearanceToPolygon(), and UNDEFINED_LAYER.

Referenced by GetBoundingRadius(), and GetEffectivePolygon().

◆ BuildEffectiveShapes()

void PAD::BuildEffectiveShapes ( PCB_LAYER_ID  aLayer) const

Rebuild the effective shape cache (and bounding box and radius) for the pad and clears the dirty bit.

Definition at line 304 of file pad.cpp.

305 {
306  std::lock_guard<std::mutex> RAII_lock( m_shapesBuildingLock );
307 
308  // If we had to wait for the lock then we were probably waiting for someone else to
309  // finish rebuilding the shapes. So check to see if they're clean now.
310  if( !m_shapesDirty )
311  return;
312 
313  BOARD* board = GetBoard();
314  int maxError = board ? board->GetDesignSettings().m_MaxError : ARC_HIGH_DEF;
315 
316  m_effectiveShape = std::make_shared<SHAPE_COMPOUND>();
317  m_effectiveHoleShape = nullptr;
318 
319  auto add = [this]( SHAPE* aShape )
320  {
321  m_effectiveShape->AddShape( aShape );
322  };
323 
324  wxPoint shapePos = ShapePos(); // Fetch only once; rotation involves trig
325  PAD_SHAPE_T effectiveShape = GetShape();
326 
327  if( GetShape() == PAD_SHAPE_CUSTOM )
328  effectiveShape = GetAnchorPadShape();
329 
330  switch( effectiveShape )
331  {
332  case PAD_SHAPE_CIRCLE:
333  add( new SHAPE_CIRCLE( shapePos, m_size.x / 2 ) );
334  break;
335 
336  case PAD_SHAPE_OVAL:
337  if( m_size.x == m_size.y ) // the oval pad is in fact a circle
338  add( new SHAPE_CIRCLE( shapePos, m_size.x / 2 ) );
339  else
340  {
341  wxSize half_size = m_size / 2;
342  int half_width = std::min( half_size.x, half_size.y );
343  wxPoint half_len( half_size.x - half_width, half_size.y - half_width );
344  RotatePoint( &half_len, m_orient );
345  add( new SHAPE_SEGMENT( shapePos - half_len, shapePos + half_len, half_width * 2 ) );
346  }
347  break;
348 
349  case PAD_SHAPE_RECT:
350  case PAD_SHAPE_TRAPEZOID:
351  case PAD_SHAPE_ROUNDRECT:
352  {
353  int r = ( effectiveShape == PAD_SHAPE_ROUNDRECT ) ? GetRoundRectCornerRadius() : 0;
354  wxPoint half_size( m_size.x / 2, m_size.y / 2 );
355  wxSize trap_delta( 0, 0 );
356 
357  if( r )
358  {
359  half_size -= wxPoint( r, r );
360 
361  // Avoid degenerated shapes (0 length segments) that always create issues
362  // For roundrect pad very near a circle, use only a circle
363  const int min_len = Millimeter2iu( 0.0001);
364 
365  if( half_size.x < min_len && half_size.y < min_len )
366  {
367  add( new SHAPE_CIRCLE( shapePos, r ) );
368  break;
369  }
370  }
371  else if( effectiveShape == PAD_SHAPE_TRAPEZOID )
372  {
373  trap_delta = m_deltaSize / 2;
374  }
375 
376  SHAPE_LINE_CHAIN corners;
377 
378  corners.Append( -half_size.x - trap_delta.y, half_size.y + trap_delta.x );
379  corners.Append( half_size.x + trap_delta.y, half_size.y - trap_delta.x );
380  corners.Append( half_size.x - trap_delta.y, -half_size.y + trap_delta.x );
381  corners.Append( -half_size.x + trap_delta.y, -half_size.y - trap_delta.x );
382 
383  corners.Rotate( -DECIDEG2RAD( m_orient ) );
384  corners.Move( shapePos );
385 
386  // GAL renders rectangles faster than 4-point polygons so it's worth checking if our
387  // body shape is a rectangle.
388  if( corners.PointCount() == 4
389  &&
390  ( ( corners.CPoint( 0 ).y == corners.CPoint( 1 ).y
391  && corners.CPoint( 1 ).x == corners.CPoint( 2 ).x
392  && corners.CPoint( 2 ).y == corners.CPoint( 3 ).y
393  && corners.CPoint( 3 ).x == corners.CPoint( 0 ).x )
394  ||
395  ( corners.CPoint( 0 ).x == corners.CPoint( 1 ).x
396  && corners.CPoint( 1 ).y == corners.CPoint( 2 ).y
397  && corners.CPoint( 2 ).x == corners.CPoint( 3 ).x
398  && corners.CPoint( 3 ).y == corners.CPoint( 0 ).y )
399  )
400  )
401  {
402  int width = std::abs( corners.CPoint( 2 ).x - corners.CPoint( 0 ).x );
403  int height = std::abs( corners.CPoint( 2 ).y - corners.CPoint( 0 ).y );
404  VECTOR2I pos( std::min( corners.CPoint( 2 ).x, corners.CPoint( 0 ).x ),
405  std::min( corners.CPoint( 2 ).y, corners.CPoint( 0 ).y ) );
406 
407  add( new SHAPE_RECT( pos, width, height ) );
408  }
409  else
410  {
411  add( new SHAPE_SIMPLE( corners ) );
412  }
413 
414  if( r )
415  {
416  add( new SHAPE_SEGMENT( corners.CPoint( 0 ), corners.CPoint( 1 ), r * 2 ) );
417  add( new SHAPE_SEGMENT( corners.CPoint( 1 ), corners.CPoint( 2 ), r * 2 ) );
418  add( new SHAPE_SEGMENT( corners.CPoint( 2 ), corners.CPoint( 3 ), r * 2 ) );
419  add( new SHAPE_SEGMENT( corners.CPoint( 3 ), corners.CPoint( 0 ), r * 2 ) );
420  }
421  }
422  break;
423 
425  {
426  SHAPE_POLY_SET outline;
427 
430  GetChamferPositions(), maxError, ERROR_INSIDE );
431 
432  add( new SHAPE_SIMPLE( outline.COutline( 0 ) ) );
433  }
434  break;
435 
436  default:
437  wxFAIL_MSG( "PAD::buildEffectiveShapes: Unsupported pad shape: "
438  + PAD_SHAPE_T_asString( effectiveShape ) );
439  break;
440  }
441 
442  if( GetShape() == PAD_SHAPE_CUSTOM )
443  {
444  for( const std::shared_ptr<PCB_SHAPE>& primitive : m_editPrimitives )
445  {
446  for( SHAPE* shape : primitive->MakeEffectiveShapes() )
447  {
448  shape->Rotate( -DECIDEG2RAD( m_orient ) );
449  shape->Move( shapePos );
450  add( shape );
451  }
452  }
453  }
454 
455  BOX2I bbox = m_effectiveShape->BBox();
456  m_effectiveBoundingBox = EDA_RECT( (wxPoint) bbox.GetPosition(),
457  wxSize( bbox.GetWidth(), bbox.GetHeight() ) );
458 
459  // Hole shape
460  //
461  wxSize half_size = m_drill / 2;
462  int half_width = std::min( half_size.x, half_size.y );
463  wxPoint half_len( half_size.x - half_width, half_size.y - half_width );
464 
465  RotatePoint( &half_len, m_orient );
466 
467  m_effectiveHoleShape = std::make_shared<SHAPE_SEGMENT>( m_pos - half_len, m_pos + half_len,
468  half_width * 2 );
469 
470  // All done
471  //
472  m_shapesDirty = false;
473 }
SHAPE_SIMPLE.
Definition: shape_simple.h:43
bool m_shapesDirty
Definition: pad.h:685
std::mutex m_shapesBuildingLock
Definition: pad.h:686
static std::string PAD_SHAPE_T_asString(PAD_SHAPE_T a)
Definition: pad_shapes.h:46
wxSize m_deltaSize
Definition: pad.h:732
wxSize m_drill
Definition: pad.h:706
void Move(const VECTOR2I &aVector) override
void TransformRoundChamferedRectToPolygon(SHAPE_POLY_SET &aCornerBuffer, const wxPoint &aPosition, const wxSize &aSize, double aRotation, int aCornerRadius, double aChamferRatio, int aChamferCorners, int aError, ERROR_LOC aErrorLoc)
convert a rectangle with rounded corners and/or chamfered corners to a polygon Convert rounded corner...
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
PAD_SHAPE_T GetShape() const
Definition: pad.h:169
wxPoint m_pos
Definition: pad.h:673
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:228
int PointCount() const
Function PointCount()
std::shared_ptr< SHAPE_COMPOUND > m_effectiveShape
Definition: pad.h:688
PAD_SHAPE_T
The set of pad shapes, used with PAD::{Set,Get}Shape()
Definition: pad_shapes.h:32
EDA_RECT m_effectiveBoundingBox
Definition: pad.h:687
void Append(int aX, int aY, bool aAllowDuplication=false)
Function Append()
std::shared_ptr< SHAPE_SEGMENT > m_effectiveHoleShape
Definition: pad.h:689
const VECTOR2I & CPoint(int aIndex) const
Function Point()
wxPoint ShapePos() const
Definition: pad.cpp:657
Represent a set of closed polygons.
coord_type GetWidth() const
Definition: box2.h:197
const wxSize & GetSize() const
Definition: pad.h:232
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
double m_orient
Definition: pad.h:743
An abstract shape on 2D plane.
Definition: shape.h:116
PAD_SHAPE_T GetAnchorPadShape() const
Definition: pad.h:182
const Vec & GetPosition() const
Definition: box2.h:194
int GetRoundRectCornerRadius() const
Definition: pad.cpp:237
wxSize m_size
Definition: pad.h:707
void Rotate(double aAngle, const VECTOR2I &aCenter=VECTOR2I(0, 0)) override
Function Rotate rotates all vertices by a given angle.
double GetChamferRectRatio() const
Definition: pad.h:524
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
SHAPE_LINE_CHAIN.
const SHAPE_LINE_CHAIN & COutline(int aIndex) const
Handle the component boundary box.
Definition: eda_rect.h:42
double DECIDEG2RAD(double deg)
Definition: trigo.h:235
coord_type GetHeight() const
Definition: box2.h:198
int GetChamferPositions() const
Definition: pad.h:534
static constexpr int Millimeter2iu(double mm)

References SHAPE_LINE_CHAIN::Append(), SHAPE_POLY_SET::COutline(), SHAPE_LINE_CHAIN::CPoint(), DECIDEG2RAD(), ERROR_INSIDE, GetAnchorPadShape(), BOARD_ITEM::GetBoard(), GetChamferPositions(), GetChamferRectRatio(), BOARD::GetDesignSettings(), BOX2< Vec >::GetHeight(), BOX2< Vec >::GetPosition(), GetRoundRectCornerRadius(), GetShape(), GetSize(), BOX2< Vec >::GetWidth(), m_deltaSize, m_drill, m_editPrimitives, m_effectiveBoundingBox, m_effectiveHoleShape, m_effectiveShape, BOARD_DESIGN_SETTINGS::m_MaxError, m_orient, m_pos, m_shapesBuildingLock, m_shapesDirty, m_size, Millimeter2iu(), SHAPE_LINE_CHAIN::Move(), PAD_SHAPE_CHAMFERED_RECT, PAD_SHAPE_CIRCLE, PAD_SHAPE_CUSTOM, PAD_SHAPE_OVAL, PAD_SHAPE_RECT, PAD_SHAPE_ROUNDRECT, PAD_SHAPE_T_asString(), PAD_SHAPE_TRAPEZOID, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Rotate(), RotatePoint(), ShapePos(), TransformRoundChamferedRectToPolygon(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by GetBoundingBox(), GetEffectiveHoleShape(), and GetEffectiveShape().

◆ ClassOf()

static bool PAD::ClassOf ( const EDA_ITEM aItem)
inlinestatic

Definition at line 82 of file pad.h.

83  {
84  return aItem && PCB_PAD_T == aItem->Type();
85  }
class PAD, a pad in a footprint
Definition: typeinfo.h:89
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:163

References PCB_PAD_T, and EDA_ITEM::Type().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearEditFlags()

◆ ClearFlags()

void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 204 of file eda_item.h.

204 { m_flags &= ~aMask; }
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References EDA_ITEM::m_flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_MOVE_TOOL::AlignElements(), FOOTPRINT::BuildPolyCourtyards(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SYMBOL_EDITOR_EDIT_TOOL::Copy(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), SYMBOL_EDITOR_PIN_TOOL::CreateImagePins(), MICROWAVE_TOOL::createMicrowaveInductor(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_SELECTION_TOOL::ExitGroup(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), EE_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::narrowSelection(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceFootprint(), SYMBOL_EDITOR_PIN_TOOL::PlacePin(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::RollbackSymbolFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 216 of file eda_item.h.

217  {
219  DO_NOT_DRAW );
220  }
#define TEMP_SELECTED
flag indicating that the structure has already selected
Definition: eda_item.h:115
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: eda_item.h:104
#define CANDIDATE
flag indicating that the structure is connected
Definition: eda_item.h:117
#define DO_NOT_DRAW
Used to disable draw function.
Definition: eda_item.h:119
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: eda_item.h:112
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:204
#define ENDPOINT
ends. (Used to support dragging.)
Definition: eda_item.h:113
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: eda_item.h:118

References CANDIDATE, EDA_ITEM::ClearFlags(), DO_NOT_DRAW, ENDPOINT, IS_LINKED, SKIP_STRUCT, STARTPOINT, and TEMP_SELECTED.

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 148 of file view_item.h.

149  {
150  m_viewPrivData = nullptr;
151  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:156

References KIGFX::VIEW_ITEM::m_viewPrivData.

Referenced by KIGFX::VIEW::OnDestroy().

◆ Clone()

EDA_ITEM * PAD::Clone ( ) const
overridevirtual

Create a duplicate of this item with linked list members set to NULL.

The default version will return NULL in release builds and likely crash the program. In debug builds, a warning message indicating the derived class has not implemented cloning. This really should be a pure virtual function. Due to the fact that there are so many objects derived from EDA_ITEM, the decision was made to return NULL until all the objects derived from EDA_ITEM implement cloning. Once that happens, this function should be made pure.

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Definition at line 1140 of file pad.cpp.

1141 {
1142  return new PAD( *this );
1143 }
PAD(FOOTPRINT *parent)
Definition: pad.cpp:53

References PAD().

Referenced by ClonePad().

◆ ClonePad()

PAD* PAD::ClonePad ( ) const
inline

Same as Clone, but returns a PAD item.

Useful mainly for python scripts, because Clone returns an EDA_ITEM.

Definition at line 639 of file pad.h.

640  {
641  return (PAD*) Clone();
642  }
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
Definition: pad.cpp:1140
Definition: pad.h:60

References Clone().

◆ Compare()

int PAD::Compare ( const PAD padref,
const PAD padcmp 
)
static

Compare two pads and return 0 if they are equal.

Returns
less than 0 if left less than right, 0 if equal, or greater than 0 if left greater than right.

Definition at line 1002 of file pad.cpp.

1003 {
1004  int diff;
1005 
1006  if( ( diff = padref->GetShape() - padcmp->GetShape() ) != 0 )
1007  return diff;
1008 
1009  if( ( diff = padref->GetDrillShape() - padcmp->GetDrillShape() ) != 0)
1010  return diff;
1011 
1012  if( ( diff = padref->m_drill.x - padcmp->m_drill.x ) != 0 )
1013  return diff;
1014 
1015  if( ( diff = padref->m_drill.y - padcmp->m_drill.y ) != 0 )
1016  return diff;
1017 
1018  if( ( diff = padref->m_size.x - padcmp->m_size.x ) != 0 )
1019  return diff;
1020 
1021  if( ( diff = padref->m_size.y - padcmp->m_size.y ) != 0 )
1022  return diff;
1023 
1024  if( ( diff = padref->m_offset.x - padcmp->m_offset.x ) != 0 )
1025  return diff;
1026 
1027  if( ( diff = padref->m_offset.y - padcmp->m_offset.y ) != 0 )
1028  return diff;
1029 
1030  if( ( diff = padref->m_deltaSize.x - padcmp->m_deltaSize.x ) != 0 )
1031  return diff;
1032 
1033  if( ( diff = padref->m_deltaSize.y - padcmp->m_deltaSize.y ) != 0 )
1034  return diff;
1035 
1036 // TODO: test custom shapes
1037 
1038  // Dick: specctra_export needs this
1039  // Lorenzo: gencad also needs it to implement padstacks!
1040 
1041 #if __cplusplus >= 201103L
1042  long long d = padref->m_layerMask.to_ullong() - padcmp->m_layerMask.to_ullong();
1043  if( d < 0 )
1044  return -1;
1045  else if( d > 0 )
1046  return 1;
1047 
1048  return 0;
1049 #else
1050  // these strings are not typically constructed, since we don't get here often.
1051  std::string s1 = padref->m_layerMask.to_string();
1052  std::string s2 = padcmp->m_layerMask.to_string();
1053  return s1.compare( s2 );
1054 #endif
1055 }
wxSize m_deltaSize
Definition: pad.h:732
wxSize m_drill
Definition: pad.h:706
LSET m_layerMask
Definition: pad.h:729
PAD_SHAPE_T GetShape() const
Definition: pad.h:169
wxSize m_size
Definition: pad.h:707
wxPoint m_offset
Definition: pad.h:727
PAD_DRILL_SHAPE_T GetDrillShape() const
Definition: pad.h:346

References GetDrillShape(), GetShape(), m_deltaSize, m_drill, m_layerMask, m_offset, and m_size.

Referenced by CreatePadsShapesSection().

◆ ConnSMDMask()

LSET PAD::ConnSMDMask ( )
static

layer set for a SMD pad on Front layer used for edge board connectors

Definition at line 161 of file pad.cpp.

162 {
163  static LSET saved( 2, F_Cu, F_Mask );
164  return saved;
165 }
LSET is a set of PCB_LAYER_IDs.

References F_Cu, and F_Mask.

Referenced by DIALOG_PAD_PROPERTIES::updatePadLayersList().

◆ DeletePrimitivesList()

void PAD::DeletePrimitivesList ( )

Clear the basic shapes list.

Definition at line 177 of file pad_custom_shape_functions.cpp.

178 {
179  m_editPrimitives.clear();
180 
181  SetDirty();
182 }
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetDirty()
Definition: pad.h:353

References m_editPrimitives, and SetDirty().

Referenced by PAD_TOOL::explodePad(), ReplacePrimitives(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ DeleteStructure()

void BOARD_ITEM::DeleteStructure ( )
inherited

Delete this object after removing from its parent if it has one.

Definition at line 113 of file board_item.cpp.

114 {
115  BOARD_ITEM_CONTAINER* parent = GetParent();
116 
117  if( parent )
118  parent->Remove( this );
119 
120  delete this;
121 }
virtual void Remove(BOARD_ITEM *aItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL)=0
Removes an item from the container.
Abstract interface for BOARD_ITEMs capable of storing other items inside.
BOARD_ITEM_CONTAINER * GetParent() const
Definition: board_item.h:168

References BOARD_ITEM::GetParent(), and BOARD_ITEM_CONTAINER::Remove().

Referenced by BOARD::PadDelete(), and DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow().

◆ Duplicate()

virtual BOARD_ITEM* BOARD_ITEM::Duplicate ( ) const
inlinevirtualinherited

Create a copy of this BOARD_ITEM.

Reimplemented in FOOTPRINT.

Definition at line 202 of file board_item.h.

203  {
204  EDA_ITEM* dupe = Clone();
205  const_cast<KIID&>( dupe->m_Uuid ) = KIID();
206 
207  return static_cast<BOARD_ITEM*>( dupe );
208  }
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
Definition: eda_item.cpp:81
Definition: kiid.h:44
const KIID m_Uuid
Definition: eda_item.h:525
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:150

References EDA_ITEM::Clone(), and EDA_ITEM::m_Uuid.

Referenced by CADSTAR_PCB_ARCHIVE_LOADER::addAttribute(), PCB_GROUP::DeepDuplicate(), KIGFX::PCB_PAINTER::draw(), DRAWING_TOOL::DrawBoardCharacteristics(), CADSTAR_PCB_ARCHIVE_LOADER::drawCadstarText(), DRAWING_TOOL::DrawSpecificationStackup(), EDIT_TOOL::Duplicate(), and ARRAY_CREATOR::Invoke().

◆ FlashLayer() [1/2]

bool PAD::FlashLayer ( int  aLayer) const

Check to see whether the pad should be flashed on the specific layer.

Parameters
aLayerLayer to check for connectivity
Returns
true if connected by pad or track (or optionally zone)

We don't remove the copper from non-PTH pads

Heatsink pads always get copper

Plated through hole pads need copper on the top/bottom layers for proper soldering Unless the user has removed them in the pad dialog

Definition at line 202 of file pad.cpp.

203 {
204  std::vector<KICAD_T> types
206 
207  // Return the "normal" shape if the caller doesn't specify a particular layer
208  if( aLayer == UNDEFINED_LAYER )
209  return true;
210 
211  BOARD* board = GetBoard();
212 
213  if( !board )
214  return false;
215 
217  if( GetAttribute() != PAD_ATTRIB_PTH )
218  return IsOnLayer( static_cast<PCB_LAYER_ID>( aLayer ) );
219 
221  if( GetProperty() == PAD_PROP_HEATSINK )
222  return IsOnLayer( static_cast<PCB_LAYER_ID>( aLayer ) );
223 
225  return IsOnLayer( static_cast<PCB_LAYER_ID>( aLayer ) );
226 
229  if( m_keepTopBottomLayer && ( aLayer == F_Cu || aLayer == B_Cu ) )
230  return IsOnLayer( static_cast<PCB_LAYER_ID>( aLayer ) );
231 
232  return board->GetConnectivity()->IsConnectedOnLayer( this, static_cast<int>( aLayer ),
233  types );
234 }
class ARC, an arc track segment on a copper layer
Definition: typeinfo.h:97
bool IsOnLayer(PCB_LAYER_ID aLayer) const override
Test to see if this object is on the given layer.
Definition: pad.h:559
class PAD, a pad in a footprint
Definition: typeinfo.h:89
a pad used as heat sink, usually in SMD footprints
Definition: pad_shapes.h:101
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
PAD_ATTR_T GetAttribute() const
Definition: pad.h:363
bool m_keepTopBottomLayer
Definition: pad.h:751
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
std::shared_ptr< CONNECTIVITY_DATA > GetConnectivity() const
Return a list of missing connections between components/tracks.
Definition: board.h:416
class ZONE, a copper pour area
Definition: typeinfo.h:105
PAD_PROP_T GetProperty() const
Definition: pad.h:366
bool m_removeUnconnectedLayer
< If true, the pad copper is removed for layers that are not connected.
Definition: pad.h:748
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
class ZONE, managed by a footprint
Definition: typeinfo.h:94
Plated through hole pad.
Definition: pad_shapes.h:80
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96

References B_Cu, F_Cu, GetAttribute(), BOARD_ITEM::GetBoard(), BOARD::GetConnectivity(), GetProperty(), IsOnLayer(), m_keepTopBottomLayer, m_removeUnconnectedLayer, PAD_ATTRIB_PTH, PAD_PROP_HEATSINK, PCB_ARC_T, PCB_FP_ZONE_T, PCB_PAD_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, and UNDEFINED_LAYER.

Referenced by KIGFX::PCB_PAINTER::draw(), FlashLayer(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), and ViewGetLOD().

◆ FlashLayer() [2/2]

bool PAD::FlashLayer ( LSET  aLayers) const

Check to see if the pad should be flashed to any of the layers in the set.

Parameters
aLayersset of layers to check the via against
Returns
true if connected by pad or track (or optionally zone) on any of the associated layers

Definition at line 190 of file pad.cpp.

191 {
192  for( auto layer : aLayers.Seq() )
193  {
194  if( FlashLayer( layer ) )
195  return true;
196  }
197 
198  return false;
199 }
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Return an LSEQ from the union of this LSET and a desired sequence.
Definition: lset.cpp:411
bool FlashLayer(int aLayer) const
Check to see whether the pad should be flashed on the specific layer.
Definition: pad.cpp:202

References FlashLayer(), and LSET::Seq().

◆ Flip() [1/2]

void PAD::Flip ( const wxPoint &  aCentre,
bool  aFlipLeftRight 
)
overridevirtual

Flip this object, i.e.

change the board side for this object.

Parameters
aCentrethe rotation point.
aFlipLeftRightmirror across Y axis instead of X (the default).

Reimplemented from BOARD_ITEM.

Definition at line 588 of file pad.cpp.

589 {
590  if( aFlipLeftRight )
591  {
592  MIRROR( m_pos.x, aCentre.x );
593  MIRROR( m_pos0.x, 0 );
594  MIRROR( m_offset.x, 0 );
595  MIRROR( m_deltaSize.x, 0 );
596  }
597  else
598  {
599  MIRROR( m_pos.y, aCentre.y );
600  MIRROR( m_pos0.y, 0 );
601  MIRROR( m_offset.y, 0 );
602  MIRROR( m_deltaSize.y, 0 );
603  }
604 
606 
607  auto mirrorBitFlags = []( int& aBitfield, int a, int b )
608  {
609  bool temp = aBitfield & a;
610 
611  if( aBitfield & b )
612  aBitfield |= a;
613  else
614  aBitfield &= ~a;
615 
616  if( temp )
617  aBitfield |= b;
618  else
619  aBitfield &= ~b;
620  };
621 
622  if( aFlipLeftRight )
623  {
626  }
627  else
628  {
631  }
632 
633  // flip pads layers
634  // PADS items are currently on all copper layers, or
635  // currently, only on Front or Back layers.
636  // So the copper layers count is not taken in account
638 
639  // Flip the basic shapes, in custom pads
640  FlipPrimitives( aFlipLeftRight );
641 
642  SetDirty();
643 }
void FlipPrimitives(bool aFlipLeftRight)
Flip (mirror) the primitives left to right or top to bottom, around the anchor position in custom pad...
Definition: pad.cpp:647
LSET FlipLayerMask(LSET aMask, int aCopperLayersCount)
Calculate the mask layer when flipping a footprint.
Definition: lset.cpp:567
int m_chamferPositions
Definition: pad.h:715
wxSize m_deltaSize
Definition: pad.h:732
LSET m_layerMask
Definition: pad.h:729
wxPoint m_pos
Definition: pad.h:673
wxPoint m_pos0
Definition: pad.h:736
void MIRROR(T &aPoint, const T &aMirrorRef)
Updates aPoint with the mirror of aPoint relative to the aMirrorRef.
Definition: mirror.h:40
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:341
wxPoint m_offset
Definition: pad.h:727
void SetLayerSet(LSET aLayers) override
Definition: pad.h:359
void SetDirty()
Definition: pad.h:353
void SetOrientation(double aAngle)
Set the rotation angle of the pad.
Definition: pad.cpp:579

References FlipLayerMask(), FlipPrimitives(), GetOrientation(), m_chamferPositions, m_deltaSize, m_layerMask, m_offset, m_pos, m_pos0, MIRROR(), RECT_CHAMFER_BOTTOM_LEFT, RECT_CHAMFER_BOTTOM_RIGHT, RECT_CHAMFER_TOP_LEFT, RECT_CHAMFER_TOP_RIGHT, SetDirty(), SetLayerSet(), and SetOrientation().

Referenced by DIALOG_PAD_PROPERTIES::initValues(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ Flip() [2/2]

void BOARD_ITEM::Flip ( const VECTOR2I aCentre,
bool  aFlipLeftRight 
)
inlineinherited

Definition at line 315 of file board_item.h.

316  {
317  Flip( wxPoint( aCentre.x, aCentre.y ), aFlipLeftRight );
318  }
virtual void Flip(const wxPoint &aCentre, bool aFlipLeftRight)
Flip this object, i.e.
Definition: board_item.h:310

References BOARD_ITEM::Flip(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ FlipPrimitives()

void PAD::FlipPrimitives ( bool  aFlipLeftRight)

Flip (mirror) the primitives left to right or top to bottom, around the anchor position in custom pads.

Definition at line 647 of file pad.cpp.

648 {
649  for( std::shared_ptr<PCB_SHAPE>& primitive : m_editPrimitives )
650  primitive->Flip( wxPoint( 0, 0 ), aFlipLeftRight );
651 
652  SetDirty();
653 }
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682
void SetDirty()
Definition: pad.h:353

References m_editPrimitives, and SetDirty().

Referenced by Flip(), and mirrorPadX().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 86 of file inspectable.h.

87  {
89  TYPE_ID thisType = TYPE_HASH( *this );
90  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
91  return object ? aProperty->getter( object ) : wxAny();
92  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
virtual wxAny getter(void *aObject) const =0
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::getter(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

Referenced by CLASS_D_DESC::CLASS_D_DESC(), PCB_EXPR_VAR_REF::GetValue(), and PAD_DESC::PAD_DESC().

◆ Get() [2/3]

template<typename T >
T INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 95 of file inspectable.h.

96  {
98  TYPE_ID thisType = TYPE_HASH( *this );
99  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
100  return object ? aProperty->get<T>( object ) : T();
101  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Get() [3/3]

template<typename T >
boost::optional<T> INSPECTABLE::Get ( const wxString &  aProperty)
inlineinherited

Definition at line 104 of file inspectable.h.

105  {
107  TYPE_ID thisType = TYPE_HASH( *this );
108  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
109  boost::optional<T> ret;
110 
111  if( prop )
112  {
113  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
114 
115  if( object )
116  ret = prop->get<T>( object );
117  }
118 
119  return ret;
120  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Return a property for a specific type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ GetAnchorPadShape()

PAD_SHAPE_T PAD::GetAnchorPadShape ( ) const
inline

◆ GetAttribute()

◆ GetBestAnchorPosition()

bool PAD::GetBestAnchorPosition ( VECTOR2I aPos)

Definition at line 232 of file pad_custom_shape_functions.cpp.

233 {
234  SHAPE_POLY_SET poly;
236 
237  if( poly.OutlineCount() > 1 )
238  return false;
239 
240  const int minSteps = 10;
241  const int maxSteps = 50;
242 
243  int stepsX, stepsY;
244 
245  auto bbox = poly.BBox();
246 
247  if( bbox.GetWidth() < bbox.GetHeight() )
248  {
249  stepsX = minSteps;
250  stepsY = minSteps * (double) bbox.GetHeight() / (double )(bbox.GetWidth() + 1);
251  }
252  else
253  {
254  stepsY = minSteps;
255  stepsX = minSteps * (double) bbox.GetWidth() / (double )(bbox.GetHeight() + 1);
256  }
257 
258  stepsX = std::max(minSteps, std::min( maxSteps, stepsX ) );
259  stepsY = std::max(minSteps, std::min( maxSteps, stepsY ) );
260 
261  VECTOR2I center = bbox.Centre();
262 
263  int64_t minDist = std::numeric_limits<int64_t>::max();
264  int64_t minDistEdge;
265 
267  {
268  minDistEdge = GetSize().x;
269  }
270  else
271  {
272  minDistEdge = std::max( GetSize().x, GetSize().y );
273  }
274 
275  OPT<VECTOR2I> bestAnchor( []()->OPT<VECTOR2I> { return NULLOPT; }() );
276 
277  for( int y = 0; y < stepsY ; y++ )
278  {
279  for( int x = 0; x < stepsX; x++ )
280  {
281  VECTOR2I p = bbox.GetPosition();
282  p.x += rescale( x, bbox.GetWidth(), (stepsX - 1) );
283  p.y += rescale( y, bbox.GetHeight(), (stepsY - 1) );
284 
285  if( poly.Contains(p) )
286  {
287 
288  int dist = (center - p).EuclideanNorm();
289  int distEdge = poly.COutline(0).Distance( p, true );
290 
291  if( distEdge >= minDistEdge )
292  {
293  if( dist < minDist )
294  {
295  bestAnchor = p;
296  minDist = dist;
297  }
298  }
299  }
300  }
301  }
302 
303  if( bestAnchor )
304  {
305  aPos = *bestAnchor;
306  return true;
307  }
308 
309  return false;
310 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:148
int OutlineCount() const
Return the number of vertices in a given outline/hole.
int Distance(const VECTOR2I &aP, bool aOutlineOnly=false) const
Function Distance()
bool Contains(const VECTOR2I &aP, int aSubpolyIndex=-1, int aAccuracy=0, bool aUseBBoxCaches=false) const
Return true if a given subpolygon contains the point aP.
const auto NULLOPT
Definition: optional.h:9
Represent a set of closed polygons.
const wxSize & GetSize() const
Definition: pad.h:232
PAD_SHAPE_T GetAnchorPadShape() const
Definition: pad.h:182
const SHAPE_LINE_CHAIN & COutline(int aIndex) const
T rescale(T aNumerator, T aValue, T aDenominator)
Function rescale()
Definition: util.h:95
coord_type GetHeight() const
Definition: box2.h:198
boost::optional< T > OPT
Definition: optional.h:7
const BOX2I BBox(int aClearance=0) const override
Compute a bounding box of the shape, with a margin of aClearance a collision.
void addPadPrimitivesToPolygon(SHAPE_POLY_SET *aMergedPolygon, PCB_LAYER_ID aLayer, int aError, ERROR_LOC aErrorLoc) const

References addPadPrimitivesToPolygon(), SHAPE_POLY_SET::BBox(), SHAPE_POLY_SET::Contains(), SHAPE_POLY_SET::COutline(), SHAPE_LINE_CHAIN::Distance(), ERROR_INSIDE, EuclideanNorm(), GetAnchorPadShape(), BOX2< Vec >::GetHeight(), GetSize(), NULLOPT, SHAPE_POLY_SET::OutlineCount(), PAD_SHAPE_CIRCLE, rescale(), UNDEFINED_LAYER, VECTOR2< T >::x, and VECTOR2< T >::y.

◆ GetBoard()

BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

Return the BOARD in which this BOARD_ITEM resides, or NULL if none.

Definition at line 46 of file board_item.cpp.

47 {
48  if( Type() == PCB_T )
49  return (BOARD*) this;
50 
51  BOARD_ITEM* parent = GetParent();
52 
53  if( parent )
54  return parent->GetBoard();
55 
56  return NULL;
57 }
Definition: typeinfo.h:84
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:82
#define NULL
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
BOARD_ITEM_CONTAINER * GetParent() const
Definition: board_item.h:168
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:163

References BOARD_ITEM::GetBoard(), BOARD_ITEM::GetParent(), NULL, PCB_T, and EDA_ITEM::Type().

Referenced by BuildEffectivePolygon(), BuildEffectiveShapes(), ZONE::BuildSmoothedPoly(), KIGFX::PCB_PAINTER::draw(), exprFromTo(), VIA::FlashLayer(), FlashLayer(), PCB_TARGET::Flip(), PCB_TEXT::Flip(), TRACK::Flip(), FP_SHAPE::Flip(), FP_TEXT::Flip(), DIMENSION_BASE::Flip(), ARC::Flip(), PCB_SHAPE::Flip(), VIA::Flip(), ZONE::Flip(), BOARD_ITEM::GetBoard(), FOOTPRINT::GetBoundingBox(), FOOTPRINT::GetBoundingHull(), BOARD_CONNECTED_ITEM::GetEffectiveNetclass(), ZONE::GetInteractingZones(), BOARD_ITEM::GetLayerName(), VIA::GetMinAnnulus(), PCB_DRAW_PANEL_GAL::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), TRACK::GetMsgPanelInfo(), TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), BOARD_CONNECTED_ITEM::GetOwnClearance(), ZONE::GetSelectMenuText(), DRC_ENGINE::GetShape(), FP_TEXT::GetShownText(), GetSolderMaskMargin(), GetSolderPasteMargin(), BOARD::GetTrackLength(), TRACK::GetWidthConstraints(), insideArea(), insideBackCourtyard(), insideCourtyard(), insideFrontCourtyard(), BOARD_ITEM::layerMaskDescribe(), VIA::layerMaskDescribe(), CONVERT_TOOL::makePolysFromCircles(), MergePrimitivesAsPolygon(), EAGLE_PLUGIN::packageWire(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), BOARD::ResolveDRCExclusions(), BOARD_CONNECTED_ITEM::SetNetCode(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), ZONE::TransformSmoothedOutlineToPolygon(), ZONE::TransformSolidAreasShapesToPolygon(), TRACK::ViewBBox(), FOOTPRINT::ViewBBox(), VIA::ViewGetLOD(), and ViewGetLOD().

◆ GetBoundingBox()

const EDA_RECT PAD::GetBoundingBox ( ) const
overridevirtual

The bounding box is cached, so this will be efficient most of the time.

Set absolute coordinates.

Reimplemented from EDA_ITEM.

Definition at line 518 of file pad.cpp.

519 {
520  if( m_shapesDirty )
522 
523  return m_effectiveBoundingBox;
524 }
bool m_shapesDirty
Definition: pad.h:685
EDA_RECT m_effectiveBoundingBox
Definition: pad.h:687
void BuildEffectiveShapes(PCB_LAYER_ID aLayer) const
Rebuild the effective shape cache (and bounding box and radius) for the pad and clears the dirty bit.
Definition: pad.cpp:304

References BuildEffectiveShapes(), m_effectiveBoundingBox, m_shapesDirty, and UNDEFINED_LAYER.

Referenced by AR_AUTOPLACER::addPad(), ZONE_FILLER::buildThermalSpokes(), KIGFX::PCB_PAINTER::draw(), HitTest(), DSN::SPECCTRA_DB::makePADSTACK(), ViewBBox(), and ViewGetLOD().

◆ GetBoundingRadius()

int PAD::GetBoundingRadius ( ) const

Return the radius of a minimum sized circle which fully encloses this pad.

The center is the pad position NOT THE SHAPE POS!

Definition at line 295 of file pad.cpp.

296 {
297  if( m_polyDirty )
299 
301 }
int m_effectiveBoundingRadius
Definition: pad.h:694
void BuildEffectivePolygon() const
Definition: pad.cpp:476
bool m_polyDirty
Definition: pad.h:691

References BuildEffectivePolygon(), m_effectiveBoundingRadius, and m_polyDirty.

Referenced by HitTest().

◆ GetCenter()

wxPoint PAD::GetCenter ( ) const
inlineoverridevirtual

This defaults to the center of the bounding box if not overridden.

Returns
center point of the item

Reimplemented from BOARD_ITEM.

Definition at line 251 of file pad.h.

251 { return GetPosition(); }
wxPoint GetPosition() const override
Definition: pad.h:177

References GetPosition().

◆ GetChamferPositions()

◆ GetChamferRectRatio()

◆ GetClass()

wxString PAD::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Implements EDA_ITEM.

Definition at line 584 of file pad.h.

585  {
586  return wxT( "PAD" );
587  }

◆ GetCustomShapeInZoneOpt()

CUST_PAD_SHAPE_IN_ZONE PAD::GetCustomShapeInZoneOpt ( ) const
inline
Returns
the option for the custom pad shape to use as clearance area in copper zones.

Definition at line 187 of file pad.h.

188  {
190  }
CUST_PAD_SHAPE_IN_ZONE m_customShapeClearanceArea
Definition: pad.h:701

References m_customShapeClearanceArea.

Referenced by ZONE_FILLER::addKnockout(), PCB_IO::format(), ImportSettingsFrom(), DIALOG_PAD_PROPERTIES::initValues(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ GetDelta()

◆ GetDrillShape()

◆ GetDrillSize()

◆ GetDrillSizeX()

const int PAD::GetDrillSizeX ( ) const
inline

Definition at line 244 of file pad.h.

244 { return m_drill.x; }
wxSize m_drill
Definition: pad.h:706

References m_drill.

Referenced by PAD_DESC::PAD_DESC(), and ViewGetLOD().

◆ GetDrillSizeY()

const int PAD::GetDrillSizeY ( ) const
inline

Definition at line 246 of file pad.h.

246 { return m_drill.y; }
wxSize m_drill
Definition: pad.h:706

References m_drill.

Referenced by PAD_DESC::PAD_DESC(), and ViewGetLOD().

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 208 of file eda_item.h.

209  {
210  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVED | IS_RESIZED | IS_DRAGGED |
212 
213  return m_flags & mask;
214  }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:108
#define STRUCT_DELETED
flag indication structures to be erased
Definition: eda_item.h:116
#define IS_MOVED
Item being moved.
Definition: eda_item.h:106
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:109
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
Definition: eda_item.h:120
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:111
STATUS_FLAGS m_flags
Definition: eda_item.h:531
#define IS_NEW
New item, just created.
Definition: eda_item.h:107

References IS_DRAGGED, IS_MOVED, IS_NEW, IS_PASTED, IS_RESIZED, IS_WIRE_IMAGE, EDA_ITEM::m_flags, and STRUCT_DELETED.

Referenced by EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), SCH_COMPONENT::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), SYMBOL_EDITOR_MOVE_TOOL::Main(), PCB_POINT_EDITOR::OnSelectionChange(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), PAD_TOOL::recombinePad(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), and DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow().

◆ GetEffectiveHoleShape()

const SHAPE_SEGMENT * PAD::GetEffectiveHoleShape ( ) const

Return a SHAPE object representing the pad's hole.

Definition at line 286 of file pad.cpp.

287 {
288  if( m_shapesDirty )
290 
291  return m_effectiveHoleShape.get();
292 }
bool m_shapesDirty
Definition: pad.h:685
std::shared_ptr< SHAPE_SEGMENT > m_effectiveHoleShape
Definition: pad.h:689
void BuildEffectiveShapes(PCB_LAYER_ID aLayer) const
Rebuild the effective shape cache (and bounding box and radius) for the pad and clears the dirty bit.
Definition: pad.cpp:304

References BuildEffectiveShapes(), m_effectiveHoleShape, m_shapesDirty, and UNDEFINED_LAYER.

Referenced by BOARD_ADAPTER::createPadWithDrill(), KIGFX::PCB_PAINTER::draw(), DRC_ENGINE::GetShape(), DIALOG_PAD_PROPERTIES::padValuesOK(), PNS_KICAD_IFACE_BASE::syncPad(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), and TransformHoleWithClearanceToPolygon().

◆ GetEffectiveNetclass()

NETCLASS * BOARD_CONNECTED_ITEM::GetEffectiveNetclass ( ) const
virtualinherited

Return the NETCLASS for this item, or the default netclass if none is defined.

Note
Do not return a std::shared_ptr from this. It is used heavily in DRC, and the std::shared_ptr stuff shows up large in performance profiling.

Definition at line 69 of file board_connected_item.cpp.

70 {
71  // NB: we must check the net first, as when it is 0 GetNetClass() will return the
72  // orphaned net netclass, not the default netclass.
73  if( !m_netinfo || m_netinfo->GetNetCode() == 0 )
75  else
76  return GetNetClass();
77 }
virtual NETCLASS * GetNetClass() const
Return the NETCLASS for this item.
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
NETINFO_ITEM * m_netinfo
Store all information about the net that item belongs to.
NETCLASS * GetDefault() const
int GetNetCode() const
Definition: netinfo.h:113

References BOARD_ITEM::GetBoard(), BOARD_DESIGN_SETTINGS::GetDefault(), BOARD::GetDesignSettings(), BOARD_CONNECTED_ITEM::GetNetClass(), NETINFO_ITEM::GetNetCode(), and BOARD_CONNECTED_ITEM::m_netinfo.

◆ GetEffectivePolygon()

const std::shared_ptr< SHAPE_POLY_SET > & PAD::GetEffectivePolygon ( ) const

Definition at line 268 of file pad.cpp.

269 {
270  if( m_polyDirty )
272 
273  return m_effectivePolygon;
274 }
std::shared_ptr< SHAPE_POLY_SET > m_effectivePolygon
Definition: pad.h:693
void BuildEffectivePolygon() const
Definition: pad.cpp:476
bool m_polyDirty
Definition: pad.h:691

References BuildEffectivePolygon(), m_effectivePolygon, and m_polyDirty.

Referenced by BOARD_ADAPTER::buildPadOutlineAsPolygon(), BOARD_ADAPTER::buildPadOutlineAsSegments(), HitTest(), and BRDITEMS_PLOTTER::PlotPad().

◆ GetEffectiveShape()

std::shared_ptr< SHAPE > PAD::GetEffectiveShape ( PCB_LAYER_ID  aLayer = UNDEFINED_LAYER) const
overridevirtual

Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.

This routine returns a COMPOUND shape (set of simple shapes which make up the pad for use with routing, collision determination, etc).

Note
This list can contain a SHAPE_SIMPLE (a simple single-outline non-intersecting polygon), but should never contain a SHAPE_POLY_SET (a complex polygon consisting of multiple outlines and/or holes).
Parameters
aLayerin case of items spanning multiple layers, only the shapes belonging to aLayer will be returned. Pass UNDEFINED_LAYER to return shapes for all layers.

Reimplemented from BOARD_ITEM.

Definition at line 277 of file pad.cpp.

278 {
279  if( m_shapesDirty )
280  BuildEffectiveShapes( aLayer );
281 
282  return m_effectiveShape;
283 }
bool m_shapesDirty
Definition: pad.h:685
std::shared_ptr< SHAPE_COMPOUND > m_effectiveShape
Definition: pad.h:688
void BuildEffectiveShapes(PCB_LAYER_ID aLayer) const
Rebuild the effective shape cache (and bounding box and radius) for the pad and clears the dirty bit.
Definition: pad.cpp:304

References BuildEffectiveShapes(), m_effectiveShape, and m_shapesDirty.

Referenced by BOARD_ADAPTER::createPadWithClearance(), KIGFX::PCB_PAINTER::draw(), and PNS_KICAD_IFACE_BASE::syncPad().

◆ GetEffectiveThermalGap()

int PAD::GetEffectiveThermalGap ( wxString *  aSource = nullptr) const

Return the effective thermal gap having resolved any inheritance.

Definition at line 832 of file pad.cpp.

833 {
834  FOOTPRINT* parentFootprint = GetParent();
835 
836  if( m_thermalGap == 0 && parentFootprint )
837  {
838  if( aSource )
839  *aSource = _( "parent footprint" );
840 
841  return parentFootprint->GetThermalGap();
842  }
843 
844  if( aSource )
845  *aSource = _( "pad" );
846 
847  return m_thermalGap;
848 }
int m_thermalGap
Definition: pad.h:771
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
#define _(s)
Definition: 3d_actions.cpp:33
int GetThermalGap() const
Definition: footprint.h:229

References _, GetParent(), FOOTPRINT::GetThermalGap(), and m_thermalGap.

Referenced by ZONE::GetThermalReliefGap().

◆ GetEffectiveThermalSpokeWidth()

int PAD::GetEffectiveThermalSpokeWidth ( wxString *  aSource = nullptr) const

Return the effective thermal spoke width having resolved any inheritance.

Definition at line 813 of file pad.cpp.

814 {
815  FOOTPRINT* parentFootprint = GetParent();
816 
817  if( m_thermalWidth == 0 && parentFootprint )
818  {
819  if( aSource )
820  *aSource = _( "parent footprint" );
821 
822  return parentFootprint->GetThermalWidth();
823  }
824 
825  if( aSource )
826  *aSource = _( "pad" );
827 
828  return m_thermalWidth;
829 }
int m_thermalWidth
Definition: pad.h:770
int GetThermalWidth() const
Definition: footprint.h:226
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
#define _(s)
Definition: 3d_actions.cpp:33

References _, GetParent(), FOOTPRINT::GetThermalWidth(), and m_thermalWidth.

Referenced by ZONE::GetThermalReliefSpokeWidth().

◆ GetEffectiveZoneConnection()

ZONE_CONNECTION PAD::GetEffectiveZoneConnection ( wxString *  aSource = nullptr) const

Return the zone connection in effect (either locally overridden or overridden in the parent footprint).

Optionally reports on the source of the property (pad, parent footprint or zone).

Definition at line 792 of file pad.cpp.

793 {
794  FOOTPRINT* parentFootprint = GetParent();
795 
796  if( m_zoneConnection == ZONE_CONNECTION::INHERITED && parentFootprint )
797  {
798  if( aSource )
799  *aSource = _( "parent footprint" );
800 
801  return parentFootprint->GetZoneConnection();
802  }
803  else
804  {
805  if( aSource )
806  *aSource = _( "pad" );
807 
808  return m_zoneConnection;
809  }
810 }
ZONE_CONNECTION m_zoneConnection
Definition: pad.h:769
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
#define _(s)
Definition: 3d_actions.cpp:33
ZONE_CONNECTION GetZoneConnection() const
Definition: footprint.h:223

References _, GetParent(), FOOTPRINT::GetZoneConnection(), INHERITED, and m_zoneConnection.

Referenced by PCB_IO::format(), ZONE::GetPadConnection(), ImportSettingsFrom(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

Similar to GetPosition, but allows items to return their visual center rather than their anchor.

Reimplemented in BOARD, PCB_SHAPE, and TRACK.

Definition at line 309 of file eda_item.h.

309 { return GetPosition(); }
virtual wxPoint GetPosition() const
Definition: eda_item.h:302

References EDA_ITEM::GetPosition().

Referenced by PCB_BASE_FRAME::FocusOnItem(), and SCH_EDIT_FRAME::FocusOnItem().

◆ GetKeepTopBottom()

bool PAD::GetKeepTopBottom ( ) const
inline

◆ GetLayer()

virtual PCB_LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlinevirtualinherited

Return the primary layer this item is on.

Reimplemented in ZONE.

Definition at line 173 of file board_item.h.

173 { return m_layer; }
PCB_LAYER_ID m_layer
Definition: board_item.h:363

References BOARD_ITEM::m_layer.

Referenced by CN_LIST::Add(), BOARD_ADAPTER::addFootprintShapesWithClearance(), GRAPHICS_CLEANER::areEquivalent(), BOARD_CONNECTED_ITEM_DESC::BOARD_CONNECTED_ITEM_DESC(), BOARD_ITEM_DESC::BOARD_ITEM_DESC(), AR_AUTOPLACER::buildFpAreas(), TRACKS_CLEANER::cleanup(), CreateBoardSection(), MICROWAVE_TOOL::createMicrowaveInductor(), PCB_BASE_FRAME::CreateNewFootprint(), CreateRoutesSection(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), EDIT_TOOL::DragArcTrack(), KIGFX::PCB_PAINTER::draw(), PCB_EDIT_FRAME::ExchangeFootprint(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), extractDiffPairCoupledItems(), EDIT_TOOL::FilletTracks(), PCB_TARGET::Flip(), PCB_TEXT::Flip(), TRACK::Flip(), FP_SHAPE::Flip(), FP_TEXT::Flip(), DIMENSION_BASE::Flip(), FOOTPRINT::Flip(), ARC::Flip(), PCB_SHAPE::Flip(), FOOTPRINT_DESC::FOOTPRINT_DESC(), PCB_IO::FootprintSave(), FootprintWriteShape(), PCB_IO::format(), PCB_IO::formatLayer(), FP_TEXT::FP_TEXT(), DSN::SPECCTRA_DB::FromBOARD(), AR_AUTOPLACER::genModuleOnRoutingMatrix(), FOOTPRINT::GetBoundingBox(), ZONE::GetLayer(), getMatchingTextItem(), TRACK::GetMsgPanelInfo(), VIA::GetMsgPanelInfo(), GetMsgPanelInfo(), AR_AUTOPLACER::getOptimalFPPlacement(), BOARD::GetPad(), TRACK::GetWidthConstraints(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), idf_export_footprint(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), isEdge(), IsFlipped(), PNS_KICAD_IFACE::IsItemVisible(), BOARD_ITEM::IsOnCopperLayer(), FP_SHAPE::IsParentFlipped(), FP_TEXT::IsParentFlipped(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), CADSTAR_PCB_ARCHIVE_LOADER::makeTracksFromDrawsegments(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DIALOG_FOOTPRINT_CHECKER::OnSelectItem(), TRACK::cmp_tracks::operator()(), BOARD_ITEM::ptr_cmp::operator()(), PCB_SHAPE::cmp_drawings::operator()(), FOOTPRINT::cmp_drawings::operator()(), EAGLE_PLUGIN::packagePad(), BRDITEMS_PLOTTER::PlotBoardGraphicItems(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), BRDITEMS_PLOTTER::PlotFootprintGraphicItems(), BRDITEMS_PLOTTER::PlotFootprintTextItem(), BRDITEMS_PLOTTER::PlotFootprintTextItems(), BRDITEMS_PLOTTER::PlotPcbShape(), BRDITEMS_PLOTTER::PlotPcbTarget(), BRDITEMS_PLOTTER::PlotPcbText(), CONVERT_TOOL::PolyToLines(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), PAD_TOOL::recombinePad(), CLIPBOARD_IO::SaveSelection(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::Selectable(), GLOBAL_EDIT_TOOL::swapBoardItem(), PNS_KICAD_IFACE_BASE::syncArc(), PNS_KICAD_IFACE_BASE::syncGraphicalItem(), PNS_KICAD_IFACE_BASE::syncTrack(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), AR_AUTOPLACER::testFootprintOnBoard(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), TRACK_VIA_DESC::TRACK_VIA_DESC(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), BOARD_ADAPTER::transformFPShapesToPolygon(), FOOTPRINT::TransformFPShapesWithClearanceToPolygon(), TRACK::ViewGetLayers(), FP_TEXT::ViewGetLayers(), FP_TEXT::ViewGetLOD(), FP_ZONE::ViewGetLOD(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetLayerName()

wxString BOARD_ITEM::GetLayerName ( ) const
inherited

Return the name of the PCB layer on which the item resides.

Returns
the layer name associated with this item.

Definition at line 60 of file board_item.cpp.

61 {
62  BOARD* board = GetBoard();
63 
64  if( board )
65  return board->GetLayerName( m_layer );
66 
67  // If no parent, return standard name
69 }
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:342
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
PCB_LAYER_ID m_layer
Definition: board_item.h:363
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Return an "English Standard" name of a PCB layer when given aLayerNumber.
Definition: board.h:676

References BOARD_ITEM::GetBoard(), BOARD::GetLayerName(), BOARD::GetStandardLayerName(), and BOARD_ITEM::m_layer.

Referenced by PCB_TEXT::GetMsgPanelInfo(), PCB_TARGET::GetMsgPanelInfo(), FP_TEXT::GetMsgPanelInfo(), DIMENSION_BASE::GetMsgPanelInfo(), PCB_SHAPE::GetMsgPanelInfo(), LEADER::GetMsgPanelInfo(), PCB_TEXT::GetSelectMenuText(), FP_SHAPE::GetSelectMenuText(), TRACK::GetSelectMenuText(), DIMENSION_BASE::GetSelectMenuText(), PCB_SHAPE::GetSelectMenuText(), PCB_TEXT::GetShownText(), and FOOTPRINT::ResolveTextVar().

◆ GetLayerSet()

◆ GetLocalClearance() [1/2]

int PAD::GetLocalClearance ( wxString *  aSource) const
overridevirtual

Return any local clearances set in the "classic" (ie: pre-rule) system.

These are things like zone clearance which are not an override.

Parameters
aSource[out] optionally reports the source as a user readable string.
Returns
the clearance in internal units.

Reimplemented from BOARD_CONNECTED_ITEM.

Definition at line 686 of file pad.cpp.

687 {
688  if( aSource )
689  *aSource = wxString::Format( _( "pad %s" ), GetName() );
690 
691  return m_localClearance;
692 }
int m_localClearance
Definition: pad.h:763
const wxString & GetName() const
Definition: pad.h:133
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
#define _(s)
Definition: 3d_actions.cpp:33

References _, Format(), GetName(), and m_localClearance.

Referenced by PCB_IO::format(), ImportSettingsFrom(), DIALOG_PAD_PROPERTIES::initValues(), DIALOG_PAD_PROPERTIES::padValuesOK(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ GetLocalClearance() [2/2]

int PAD::GetLocalClearance ( ) const
inline

Definition at line 382 of file pad.h.

382 { return m_localClearance; }
int m_localClearance
Definition: pad.h:763

References m_localClearance.

Referenced by GetLocalClearanceOverrides(), and PAD_DESC::PAD_DESC().

◆ GetLocalClearanceOverrides()

int PAD::GetLocalClearanceOverrides ( wxString *  aSource) const
overridevirtual

Return any local clearance overrides set in the "classic" (ie: pre-rule) system.

Parameters
aSource[out] optionally reports the source as a user-readable string.
Returns
the clearance in internal units.

Reimplemented from BOARD_CONNECTED_ITEM.

Definition at line 672 of file pad.cpp.

673 {
674  // A pad can have specific clearance that overrides its NETCLASS clearance value
675  if( GetLocalClearance() )
676  return GetLocalClearance( aSource );
677 
678  // A footprint can have a specific clearance value
679  if( GetParent() && GetParent()->GetLocalClearance() )
680  return GetParent()->GetLocalClearance( aSource );
681 
682  return 0;
683 }
int GetLocalClearance() const
Definition: pad.h:382
int GetLocalClearance() const
Definition: footprint.h:205
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332

References FOOTPRINT::GetLocalClearance(), GetLocalClearance(), and GetParent().

◆ GetLocalRatsnestVisible()

bool BOARD_CONNECTED_ITEM::GetLocalRatsnestVisible ( ) const
inlineinherited

◆ GetLocalSolderMaskMargin()

int PAD::GetLocalSolderMaskMargin ( ) const
inline

◆ GetLocalSolderPasteMargin()

int PAD::GetLocalSolderPasteMargin ( ) const
inline

◆ GetLocalSolderPasteMarginRatio()

double PAD::GetLocalSolderPasteMarginRatio ( ) const
inline

◆ GetMenuImage()

BITMAPS PAD::GetMenuImage ( ) const
overridevirtual

Return a pointer to an image to be used in menus.

The default version returns the right arrow image. Override this function to provide object specific menu images.

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Definition at line 1134 of file pad.cpp.

1135 {
1136  return BITMAPS::pad;
1137 }

References pad.

◆ GetMsgPanelInfo()

void PAD::GetMsgPanelInfo ( EDA_DRAW_FRAME aFrame,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Parameters
aListis the list to populate.

Reimplemented from EDA_ITEM.

Definition at line 851 of file pad.cpp.

852 {
853  EDA_UNITS units = aFrame->GetUserUnits();
854  wxString msg;
855  FOOTPRINT* parentFootprint = static_cast<FOOTPRINT*>( m_parent );
856 
857  if( parentFootprint )
858  aList.emplace_back( _( "Footprint" ), parentFootprint->GetReference() );
859 
860  aList.emplace_back( _( "Pad" ), m_name );
861 
862  if( !GetPinFunction().IsEmpty() )
863  aList.emplace_back( _( "Pin Name" ), GetPinFunction() );
864 
865  if( !GetPinType().IsEmpty() )
866  aList.emplace_back( _( "Pin Type" ), GetPinType() );
867 
868  aList.emplace_back( _( "Net" ), UnescapeString( GetNetname() ) );
869 
870  aList.emplace_back( _( "NetClass" ), UnescapeString( GetNetClass()->GetName() ) );
871 
873  aList.emplace_back( _( "Layer" ), layerMaskDescribe() );
874 
875  // Show the pad shape, attribute and property
876  wxString props = ShowPadAttr();
877 
878  if( GetProperty() != PAD_PROP_NONE )
879  props += ',';
880 
881  switch( GetProperty() )
882  {
883  case PAD_PROP_NONE: break;
884  case PAD_PROP_BGA: props += _("BGA" ); break;
885  case PAD_PROP_FIDUCIAL_GLBL: props += _("Fiducial global" ); break;
886  case PAD_PROP_FIDUCIAL_LOCAL: props += _("Fiducial local" ); break;
887  case PAD_PROP_TESTPOINT: props += _("Test point" ); break;
888  case PAD_PROP_HEATSINK: props += _("Heat sink" ); break;
889  case PAD_PROP_CASTELLATED: props += _("Castellated" ); break;
890  }
891 
892  aList.emplace_back( ShowPadShape(), props );
893 
894  if( ( GetShape() == PAD_SHAPE_CIRCLE || GetShape() == PAD_SHAPE_OVAL ) && m_size.x == m_size.y )
895  {
896  aList.emplace_back( _( "Diameter" ), MessageTextFromValue( units, m_size.x ) );
897  }
898  else
899  {
900  aList.emplace_back( _( "Width" ), MessageTextFromValue( units, m_size.x ) );
901  aList.emplace_back( _( "Height" ), MessageTextFromValue( units, m_size.y ) );
902  }
903 
904  double fp_orient_degrees = parentFootprint ? parentFootprint->GetOrientationDegrees() : 0;
905  double pad_orient_degrees = GetOrientationDegrees() - fp_orient_degrees;
906  pad_orient_degrees = NormalizeAngleDegrees( pad_orient_degrees, -180.0, +180.0 );
907 
908  if( fp_orient_degrees != 0.0 )
909  msg.Printf( wxT( "%g(+ %g)" ), pad_orient_degrees, fp_orient_degrees );
910  else
911  msg.Printf( wxT( "%g" ), GetOrientationDegrees() );
912 
913  aList.emplace_back( _( "Rotation" ), msg );
914 
915  if( GetPadToDieLength() )
916  {
917  msg = MessageTextFromValue(units, GetPadToDieLength() );
918  aList.emplace_back( _( "Length in Package" ), msg );
919  }
920 
921  if( m_drill.x > 0 || m_drill.y > 0 )
922  {
924  {
925  aList.emplace_back( _( "Hole" ),
926  wxString::Format( "%s",
927  MessageTextFromValue( units, m_drill.x ) ) );
928  }
929  else
930  {
931  aList.emplace_back( _( "Hole X / Y" ),
932  wxString::Format( "%s / %s",
933  MessageTextFromValue( units, m_drill.x ),
934  MessageTextFromValue( units, m_drill.y ) ) );
935  }
936  }
937 
938  wxString source;
939  int clearance = GetOwnClearance( GetLayer(), &source );
940 
941  aList.emplace_back( wxString::Format( _( "Min Clearance: %s" ),
942  MessageTextFromValue( units, clearance ) ),
943  wxString::Format( _( "(from %s)" ), source ) );
944 #if 0
945  // useful for debug only
946  aList.emplace_back( "UUID", m_Uuid.AsString() );
947 #endif
948 }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:529
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
Definition: base_units.cpp:125
no special fabrication property
Definition: pad_shapes.h:96
wxSize m_drill
Definition: pad.h:706
virtual NETCLASS * GetNetClass() const
Return the NETCLASS for this item.
a fiducial (usually a smd) for the full board
Definition: pad_shapes.h:98
Smd pad, appears on the solder paste layer (default)
Definition: pad_shapes.h:81
Smd pad, used in BGA footprints.
Definition: pad_shapes.h:97
wxString GetNetname() const
wxString AsString() const
Definition: kiid.cpp:218
PAD_SHAPE_T GetShape() const
Definition: pad.h:169
a pad used as heat sink, usually in SMD footprints
Definition: pad_shapes.h:101
wxString ShowPadShape() const
Definition: pad.cpp:1070
a pad with a castellated through hole
Definition: pad_shapes.h:102
PAD_ATTR_T GetAttribute() const
Definition: pad.h:363
virtual wxString layerMaskDescribe() const
Return a string (to be shown to the user) describing a layer mask.
Definition: board_item.cpp:72
const wxString & GetName() const
Definition: pad.h:133
const wxString & GetPinType() const
Definition: pad.h:145
const wxString & GetReference() const
Definition: footprint.h:426
Like smd, does not appear on the solder paste layer (default) note also has a special attribute in Ge...
Definition: pad_shapes.h:82
PAD_PROP_T GetProperty() const
Definition: pad.h:366
const KIID m_Uuid
Definition: eda_item.h:525
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
wxSize m_size
Definition: pad.h:707
EDA_UNITS
Definition: eda_units.h:38
double GetOrientationDegrees() const
Definition: footprint.h:187
a fiducial (usually a smd) local to the parent footprint
Definition: pad_shapes.h:99
PAD_DRILL_SHAPE_T GetDrillShape() const
Definition: pad.h:346
#define _(s)
Definition: 3d_actions.cpp:33
double GetOrientationDegrees() const
Definition: pad.h:342
wxString UnescapeString(const wxString &aSource)
Definition: string.cpp:150
wxString m_name
Definition: pad.h:669
double NormalizeAngleDegrees(double Angle, double aMin, double aMax)
Normalize angle to be aMin < angle <= aMax angle is in degrees.
Definition: trigo.h:323
virtual int GetOwnClearance(PCB_LAYER_ID aLayer, wxString *aSource=nullptr) const
Return an item's "own" clearance in internal units.
wxString ShowPadAttr() const
Definition: pad.cpp:1086
a test point pad
Definition: pad_shapes.h:100
int GetPadToDieLength() const
Definition: pad.h:376
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:173
const wxString & GetPinFunction() const
Definition: pad.h:139
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

References _, KIID::AsString(), Format(), GetAttribute(), GetDrillShape(), BOARD_ITEM::GetLayer(), GetName(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetname(), FOOTPRINT::GetOrientationDegrees(), GetOrientationDegrees(), BOARD_CONNECTED_ITEM::GetOwnClearance(), GetPadToDieLength(), GetPinFunction(), GetPinType(), GetProperty(), FOOTPRINT::GetReference(), GetShape(), EDA_BASE_FRAME::GetUserUnits(), BOARD_ITEM::layerMaskDescribe(), m_drill, m_name, EDA_ITEM::m_parent, m_size, EDA_ITEM::m_Uuid, MessageTextFromValue(), NormalizeAngleDegrees(), PAD_ATTRIB_CONN, PAD_ATTRIB_SMD, PAD_DRILL_SHAPE_CIRCLE, PAD_PROP_BGA, PAD_PROP_CASTELLATED, PAD_PROP_FIDUCIAL_GLBL, PAD_PROP_FIDUCIAL_LOCAL, PAD_PROP_HEATSINK, PAD_PROP_NONE, PAD_PROP_TESTPOINT, PAD_SHAPE_CIRCLE, PAD_SHAPE_OVAL, ShowPadAttr(), ShowPadShape(), and UnescapeString().

◆ GetName()

◆ GetNet()

◆ GetNetClass()

NETCLASS * BOARD_CONNECTED_ITEM::GetNetClass ( ) const
virtualinherited

Return the NETCLASS for this item.

Note
Do not return a std::shared_ptr from this. It is used heavily in DRC, and the std::shared_ptr stuff shows up large in performance profiling.

Reimplemented in ZONE.

Definition at line 108 of file board_connected_item.cpp.

109 {
110  if( m_netinfo && m_netinfo->GetNetClass() )
111  return m_netinfo->GetNetClass();
112  else
113  return GetBoard()->GetDesignSettings().GetDefault();
114 }
NETCLASS * GetNetClass()
Definition: netinfo.h:103
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
NETINFO_ITEM * m_netinfo
Store all information about the net that item belongs to.
NETCLASS * GetDefault() const

References BOARD_ITEM::GetBoard(), BOARD_DESIGN_SETTINGS::GetDefault(), BOARD::GetDesignSettings(), NETINFO_ITEM::GetNetClass(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by VIA::GetDrillValue(), BOARD_CONNECTED_ITEM::GetEffectiveNetclass(), BOARD_INSPECTION_TOOL::getItemDescription(), GetMsgPanelInfo(), TRACK::GetMsgPanelInfoBase_Common(), ZONE::GetNetClass(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), and DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow().

◆ GetNetClassName()

wxString BOARD_CONNECTED_ITEM::GetNetClassName ( ) const
virtualinherited

Returns the netclass of the zone.

If the net is not found (can happen when a netlist is reread) and the net name does not exist, return the default net class (should not return a null pointer).

Returns
the net class name of this item.

Reimplemented in ZONE.

Definition at line 117 of file board_connected_item.cpp.

118 {
119  if( m_netinfo )
120  return m_netinfo->GetNetClassName();
121  else
122  return wxEmptyString;
123 }
wxString GetNetClassName() const
Definition: netinfo.h:108
NETINFO_ITEM * m_netinfo
Store all information about the net that item belongs to.

References NETINFO_ITEM::GetNetClassName(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by BOARD_CONNECTED_ITEM_DESC::BOARD_CONNECTED_ITEM_DESC(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), ZONE::GetNetClassName(), main(), and DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem().

◆ GetNetCode()

int BOARD_CONNECTED_ITEM::GetNetCode ( ) const
inlineinherited
Returns
the net code.

Definition at line 93 of file board_connected_item.h.

94  {
95  return m_netinfo ? m_netinfo->GetNetCode() : -1;
96  }
NETINFO_ITEM * m_netinfo
Store all information about the net that item belongs to.
int GetNetCode() const
Definition: netinfo.h:113

References NETINFO_ITEM::GetNetCode(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by ZONE_FILLER::addHatchFillTypeOnZone(), BOARD_CONNECTED_ITEM_DESC::BOARD_CONNECTED_ITEM_DESC(), ZONE_FILLER::buildCopperItemClearances(), connectedItemFilter(), CreateRoutesSection(), KIGFX::PCB_PAINTER::draw(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::ExchangeFootprint(), ZONE_FILLER::Fill(), PNS::NODE::FindItemByParent(), PCB_IO::format(), DSN::SPECCTRA_DB::FromBOARD(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), CONNECTIVITY_DATA::GetConnectedItems(), ZONE::GetInteractingZones(), TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), hasThermalConnection(), BOARD_INSPECTION_TOOL::highlightNet(), DIALOG_PAD_PROPERTIES::initValues(), BOARD_INSPECTION_TOOL::InspectClearance(), CONNECTIVITY_DATA::IsConnectedOnLayer(), ZONE::IsIsland(), ZONE::IsSame(), ZONE_FILLER::knockoutThermalReliefs(), AR_AUTOPLACER::nearestPad(), ROUTER_TOOL::NeighboringSegmentFilter(), CN_ITEM::Net(), BOARD::NormalizeAreaPolygon(), TRACK::cmp_tracks::operator()(), ZONE_SETTINGS::operator<<(), DIALOG_PAD_PROPERTIES::PadTypeSelected(), process(), BOARD_EDITOR_CONTROL::RepairBoard(), PCB_SELECTION_CONDITIONS::sameNetFunc(), SaveCopyOfZones(), PCB_SELECTION_TOOL::selectNet(), ZONE_FILLER::subtractHigherPriorityZones(), PNS_KICAD_IFACE_BASE::syncArc(), PNS_KICAD_IFACE_BASE::syncPad(), PNS_KICAD_IFACE_BASE::syncTrack(), PNS_KICAD_IFACE_BASE::syncVia(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZones(), BOARD::TracksInNet(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), and BOARD_EDITOR_CONTROL::ZoneMerge().

◆ GetNetname()

◆ GetNetnameMsg()

wxString BOARD_CONNECTED_ITEM::GetNetnameMsg ( ) const
inherited
Returns
the full netname or "<no net>" in square braces, followed by "(Not Found)" if the netcode is undefined.

Definition at line 126 of file board_connected_item.cpp.

127 {
128  if( !GetBoard() )
129  return wxT( "[** NO BOARD DEFINED **]" );
130 
131  wxString netname = GetNetname();
132 
133  if( !netname.length() )
134  return wxT( "[<no net>]" );
135  else if( GetNetCode() < 0 )
136  return wxT( "[" + UnescapeString( netname ) + "](" + _( "Not Found" ) + ")" );
137  else
138  return wxT( "[" + UnescapeString( netname ) + "]" );
139 }
wxString GetNetname() const
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
#define _(s)
Definition: 3d_actions.cpp:33
wxString UnescapeString(const wxString &aSource)
Definition: string.cpp:150

References _, BOARD_ITEM::GetBoard(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD_CONNECTED_ITEM::GetNetname(), and UnescapeString().

Referenced by TRACK::GetSelectMenuText(), VIA::GetSelectMenuText(), and ZONE::GetSelectMenuText().

◆ GetOffset()

◆ GetOrientation()

◆ GetOrientationDegrees()

double PAD::GetOrientationDegrees ( ) const
inline

Definition at line 342 of file pad.h.

342 { return m_orient/10.0; }
double m_orient
Definition: pad.h:743

References m_orient.

Referenced by GetMsgPanelInfo(), and PAD_DESC::PAD_DESC().

◆ GetOrientationRadians()

double PAD::GetOrientationRadians ( ) const
inline

Definition at line 343 of file pad.h.

343 { return m_orient*M_PI/1800; }
double m_orient
Definition: pad.h:743

References m_orient.

◆ GetOwnClearance()

int BOARD_CONNECTED_ITEM::GetOwnClearance ( PCB_LAYER_ID  aLayer,
wxString *  aSource = nullptr 
) const
virtualinherited

Return an item's "own" clearance in internal units.

Parameters
aLayerthe layer in question.
aSource[out] optionally reports the source as a user-readable string.
Returns
the clearance in internal units.

Definition at line 83 of file board_connected_item.cpp.

84 {
85  DRC_CONSTRAINT constraint;
86 
87  if( GetBoard() && GetBoard()->GetDesignSettings().m_DRCEngine )
88  {
90 
91  constraint = bds.m_DRCEngine->EvalRules( CLEARANCE_CONSTRAINT, this, nullptr, aLayer );
92  }
93 
94  if( constraint.Value().HasMin() )
95  {
96  if( aSource )
97  *aSource = constraint.GetName();
98 
99  return constraint.Value().Min();
100  }
101 
102  return 0;
103 }
bool HasMin() const
Definition: minoptmax.h:37
MINOPTMAX< int > & Value()
Definition: drc_rule.h:122
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
T Min() const
Definition: minoptmax.h:33
wxString GetName() const
Definition: drc_rule.h:127
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
std::shared_ptr< DRC_ENGINE > m_DRCEngine
Container for design settings for a BOARD object.

References CLEARANCE_CONSTRAINT, BOARD_ITEM::GetBoard(), BOARD::GetDesignSettings(), DRC_CONSTRAINT::GetName(), MINOPTMAX< T >::HasMin(), BOARD_DESIGN_SETTINGS::m_DRCEngine, MINOPTMAX< T >::Min(), and DRC_CONSTRAINT::Value().

Referenced by KIGFX::PCB_PAINTER::draw(), ZONE::GetMsgPanelInfo(), TRACK::GetMsgPanelInfo(), VIA::GetMsgPanelInfo(), GetMsgPanelInfo(), and ViewBBox().

◆ GetPadToDieLength()

◆ GetParent()

◆ GetParentAsString()

wxString PAD::GetParentAsString ( ) const
inline

Definition at line 110 of file pad.h.

110 { return m_parent->m_Uuid.AsString(); }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:529
wxString AsString() const
Definition: kiid.cpp:218
const KIID m_Uuid
Definition: eda_item.h:525

References KIID::AsString(), EDA_ITEM::m_parent, and EDA_ITEM::m_Uuid.

Referenced by PAD_DESC::PAD_DESC().

◆ GetParentGroup()

◆ GetPinFunction()

const wxString& PAD::GetPinFunction ( ) const
inline

◆ GetPinType()

const wxString& PAD::GetPinType ( ) const
inline

Definition at line 145 of file pad.h.

145 { return m_pinType; }
wxString m_pinType
Definition: pad.h:671

References m_pinType.

Referenced by KIGFX::PCB_PAINTER::draw(), PCB_IO::format(), GetMsgPanelInfo(), and PAD_DESC::PAD_DESC().

◆ GetPos0()

const wxPoint& PAD::GetPos0 ( ) const
inline

Definition at line 226 of file pad.h.

226 { return m_pos0; }
wxPoint m_pos0
Definition: pad.h:736

References m_pos0.

Referenced by MICROWAVE_TOOL::createPolygonShape(), PCB_IO::format(), operator=(), and PAD().

◆ GetPosition()

◆ GetPrimitives()

const std::vector<std::shared_ptr<PCB_SHAPE> >& PAD::GetPrimitives ( ) const
inline

Accessor to the basic shape list for custom-shaped pads.

Definition at line 293 of file pad.h.

294  {
295  return m_editPrimitives;
296  }
std::vector< std::shared_ptr< PCB_SHAPE > > m_editPrimitives
Definition: pad.h:682

References m_editPrimitives.

Referenced by PAD_TOOL::explodePad(), PCB_IO::format(), ImportSettingsFrom(), DIALOG_PAD_PROPERTIES::initValues(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ GetProperty()

PAD_PROP_T PAD::GetProperty ( ) const
inline

◆ GetRemoveUnconnected()

bool PAD::GetRemoveUnconnected ( ) const
inline

Definition at line 549 of file pad.h.

549 { return m_removeUnconnectedLayer; }
bool m_removeUnconnectedLayer
< If true, the pad copper is removed for layers that are not connected.
Definition: pad.h:748

References m_removeUnconnectedLayer.

Referenced by PCB_IO::format(), DIALOG_PAD_PROPERTIES::initValues(), DIALOG_PAD_PROPERTIES::OnUpdateUI(), DIALOG_PAD_PROPERTIES::PadTypeSelected(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ GetRoundRectCornerRadius()

int PAD::GetRoundRectCornerRadius ( ) const

Definition at line 237 of file pad.cpp.

238 {
239  return KiROUND( std::min( m_size.x, m_size.y ) * m_roundedCornerScale );
240 }
double m_roundedCornerScale
Definition: pad.h:711
wxSize m_size
Definition: pad.h:707
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:68

References KiROUND(), m_roundedCornerScale, and m_size.

Referenced by BuildEffectiveShapes(), DSN::SPECCTRA_DB::makePADSTACK(), DIALOG_PAD_PROPERTIES::onCornerSizePercentChange(), BRDITEMS_PLOTTER::PlotPad(), TransformShapeWithClearanceToPolygon(), and DIALOG_PAD_PROPERTIES::updateRoundRectCornerValues().

◆ GetRoundRectRadiusRatio()

◆ GetSelectMenuText()

wxString PAD::GetSelectMenuText ( EDA_UNITS  aUnits) const
overridevirtual

Return the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position.

The default version of this function raises an assertion in the debug mode and returns a string to indicate that it was not overridden to provide the object specific text.

Returns
The menu text string.

Reimplemented from EDA_ITEM.

Definition at line 1099 of file pad.cpp.

1100 {
1101  if( GetName().IsEmpty() )
1102  {
1104  {
1105  return wxString::Format( _( "Pad of %s on %s" ),
1106  GetParent()->GetReference(),
1107  layerMaskDescribe() );
1108  }
1109  else
1110  {
1111  return wxString::Format( _( "Through hole pad of %s" ),
1112  GetParent()->GetReference() );
1113  }
1114  }
1115  else
1116  {
1118  {
1119  return wxString::Format( _( "Pad %s of %s on %s" ),
1120  GetName(),
1121  GetParent()->GetReference(),
1122  layerMaskDescribe() );
1123  }
1124  else
1125  {
1126  return wxString::Format( _( "Through hole pad %s of %s" ),
1127  GetName(),
1128  GetParent()->GetReference() );
1129  }
1130  }
1131 }
Smd pad, appears on the solder paste layer (default)
Definition: pad_shapes.h:81
PAD_ATTR_T GetAttribute() const
Definition: pad.h:363
virtual wxString layerMaskDescribe() const
Return a string (to be shown to the user) describing a layer mask.
Definition: board_item.cpp:72
const wxString & GetName() const
Definition: pad.h:133
Like smd, does not appear on the solder paste layer (default) note also has a special attribute in Ge...
Definition: pad_shapes.h:82
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
#define _(s)
Definition: 3d_actions.cpp:33

References _, Format(), GetAttribute(), GetName(), GetParent(), BOARD_ITEM::layerMaskDescribe(), PAD_ATTRIB_CONN, and PAD_ATTRIB_SMD.

◆ GetShape()

◆ GetShortNetname()

wxString BOARD_CONNECTED_ITEM::GetShortNetname ( ) const
inlineinherited
Returns
the short netname.

Definition at line 133 of file board_connected_item.h.

134  {
135  return m_netinfo->GetShortNetname();
136  }
const wxString & GetShortNetname() const
Definition: netinfo.h:124
NETINFO_ITEM * m_netinfo
Store all information about the net that item belongs to.

References NETINFO_ITEM::GetShortNetname(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by KIGFX::PCB_PAINTER::draw().

◆ GetSize()

◆ GetSizeX()

const int PAD::GetSizeX ( ) const
inline

Definition at line 234 of file pad.h.

234 { return m_size.x; }
wxSize m_size
Definition: pad.h:707

References m_size.

Referenced by PAD_DESC::PAD_DESC(), and ViewGetLOD().

◆ GetSizeY()

const int PAD::GetSizeY ( ) const
inline

Definition at line 236 of file pad.h.

236 { return m_size.y; }
wxSize m_size
Definition: pad.h:707

References m_size.

Referenced by PAD_DESC::PAD_DESC(), and ViewGetLOD().

◆ GetSolderMaskMargin()

int PAD::GetSolderMaskMargin ( ) const
Returns
the margin for the solder mask layer

Usually > 0 (mask shape bigger than pad). For pads not on copper layers, the value is the local value because there is no default shape to build. For pads also on copper layers, the value (used to build a default shape) is: 1 the local value 2 if 0, the parent footprint value 3 if 0, the global value

Definition at line 697 of file pad.cpp.

698 {
699  // The pad inherits the margin only to calculate a default shape,
700  // therefore only if it is also a copper layer
701  // Pads defined only on mask layers (and perhaps on other tech layers) use the shape
702  // defined by the pad settings only
703  bool isOnCopperLayer = ( m_layerMask & LSET::AllCuMask() ).any();
704 
705  if( !isOnCopperLayer )
706  return 0;
707 
708  int margin = m_localSolderMaskMargin;
709 
710  FOOTPRINT* parentFootprint = GetParent();
711 
712  if( parentFootprint )
713  {
714  if( margin == 0 )
715  {
716  if( parentFootprint->GetLocalSolderMaskMargin() )
717  margin = parentFootprint->GetLocalSolderMaskMargin();
718  }
719 
720  if( margin == 0 )
721  {
722  BOARD* brd = GetBoard();
723 
724  if( brd )
725  margin = brd->GetDesignSettings().m_SolderMaskMargin;
726  }
727  }
728 
729  // ensure mask have a size always >= 0
730  if( margin < 0 )
731  {
732  int minsize = -std::min( m_size.x, m_size.y ) / 2;
733 
734  if( margin < minsize )
735  margin = minsize;
736  }
737 
738  return margin;
739 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSET m_layerMask
Definition: pad.h:729
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
int m_localSolderMaskMargin
Definition: pad.h:764
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
wxSize m_size
Definition: pad.h:707
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
int GetLocalSolderMaskMargin() const
Definition: footprint.h:202
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190

References LSET::AllCuMask(), BOARD_ITEM::GetBoard(), BOARD::GetDesignSettings(), FOOTPRINT::GetLocalSolderMaskMargin(), GetParent(), m_layerMask, m_localSolderMaskMargin, m_size, and BOARD_DESIGN_SETTINGS::m_SolderMaskMargin.

Referenced by KIGFX::PCB_PAINTER::draw(), and ViewBBox().

◆ GetSolderPasteMargin()

wxSize PAD::GetSolderPasteMargin ( ) const

Usually < 0 (mask shape smaller than pad)because the margin can be dependent on the pad size, the margin has a x and a y value.

For pads not on copper layers, the value is the local value because there is no default shape to build. For pads also on copper layers, the value (used to build a default shape) is: 1 the local value 2 if 0, the parent footprint value 3 if 0, the global value

Returns
the margin for the solder mask layer.

Definition at line 742 of file pad.cpp.

743 {
744  // The pad inherits the margin only to calculate a default shape,
745  // therefore only if it is also a copper layer.
746  // Pads defined only on mask layers (and perhaps on other tech layers) use the shape
747  // defined by the pad settings only
748  bool isOnCopperLayer = ( m_layerMask & LSET::AllCuMask() ).any();
749 
750  if( !isOnCopperLayer )
751  return wxSize( 0, 0 );
752 
753  int margin = m_localSolderPasteMargin;
754  double mratio = m_localSolderPasteMarginRatio;
755 
756  FOOTPRINT* parentFootprint = GetParent();
757 
758  if( parentFootprint )
759  {
760  if( margin == 0 )
761  margin = parentFootprint->GetLocalSolderPasteMargin();
762 
763  auto brd = GetBoard();
764 
765  if( margin == 0 && brd )
766  margin = brd->GetDesignSettings().m_SolderPasteMargin;
767 
768  if( mratio == 0.0 )
769  mratio = parentFootprint->GetLocalSolderPasteMarginRatio();
770 
771  if( mratio == 0.0 && brd )
772  {
773  mratio = brd->GetDesignSettings().m_SolderPasteMarginRatio;
774  }
775  }
776 
777  wxSize pad_margin;
778  pad_margin.x = margin + KiROUND( m_size.x * mratio );
779  pad_margin.y = margin + KiROUND( m_size.y * mratio );
780 
781  // ensure mask have a size always >= 0
782  if( pad_margin.x < -m_size.x / 2 )
783  pad_margin.x = -m_size.x / 2;
784 
785  if( pad_margin.y < -m_size.y / 2 )
786  pad_margin.y = -m_size.y / 2;
787 
788  return pad_margin;
789 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSET m_layerMask
Definition: pad.h:729
double m_localSolderPasteMarginRatio
Definition: pad.h:766
int m_localSolderPasteMargin
Definition: pad.h:765
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
wxSize m_size
Definition: pad.h:707
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
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:68
double GetLocalSolderPasteMarginRatio() const
Definition: footprint.h:219
int GetLocalSolderPasteMargin() const
Definition: footprint.h:216

References LSET::AllCuMask(), BOARD_ITEM::GetBoard(), FOOTPRINT::GetLocalSolderPasteMargin(), FOOTPRINT::GetLocalSolderPasteMarginRatio(), GetParent(), KiROUND(), m_layerMask, m_localSolderPasteMargin, m_localSolderPasteMarginRatio, and m_size.

Referenced by KIGFX::PCB_PAINTER::draw(), and ViewBBox().

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 187 of file eda_item.h.

188  {
189  return m_status & type;
190  }
STATUS_FLAGS m_status
Definition: eda_item.h:528

References EDA_ITEM::m_status.

Referenced by BOARD_ITEM::IsLocked().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 200 of file eda_item.h.

200 { return m_status; }
STATUS_FLAGS m_status
Definition: eda_item.h:528

References EDA_ITEM::m_status.

◆ GetSubRatsnest()

int PAD::GetSubRatsnest ( ) const
inline
Returns
the netcode.

Definition at line 539 of file pad.h.

539 { return m_subRatsnest; }
int m_subRatsnest
Definition: pad.h:703

References m_subRatsnest.

Referenced by operator=(), and PAD().

◆ GetThermalGap()

int PAD::GetThermalGap ( ) const
inline

◆ GetThermalSpokeWidth()

int PAD::GetThermalSpokeWidth ( ) const
inline

◆ GetX()

int BOARD_ITEM::GetX ( ) const
inlineinherited

◆ GetY()

int BOARD_ITEM::GetY ( ) const
inlineinherited

◆ GetZoneConnection()

ZONE_CONNECTION PAD::GetZoneConnection ( ) const
inline

Definition at line 468 of file pad.h.

468 { return m_zoneConnection; }
ZONE_CONNECTION m_zoneConnection
Definition: pad.h:769

References m_zoneConnection.

Referenced by DIALOG_PAD_PROPERTIES::initValues().

◆ HasFlag()

◆ HitTest() [1/2]

bool PAD::HitTest ( const wxPoint &  aPosition,
int  aAccuracy = 0 
) const
overridevirtual

Test if aPosition is contained within or on the bounding box of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
aAccuracyIncrease the item bounding box by this amount.
Returns
True if aPosition is within the item bounding box.

Reimplemented from EDA_ITEM.

Definition at line 951 of file pad.cpp.

952 {
953  VECTOR2I delta = aPosition - GetPosition();
954  int boundingRadius = GetBoundingRadius() + aAccuracy;
955 
956  if( delta.SquaredEuclideanNorm() > SEG::Square( boundingRadius ) )
957  return false;
958 
959  return GetEffectivePolygon()->Contains( aPosition, -1, aAccuracy );
960 }
extended_type SquaredEuclideanNorm() const
Compute the squared euclidean norm of the vector, which is defined as (x ** 2 + y ** 2).
Definition: vector2d.h:300
static SEG::ecoord Square(int a)
Definition: seg.h:123
int GetBoundingRadius() const
Return the radius of a minimum sized circle which fully encloses this pad.
Definition: pad.cpp:295
wxPoint GetPosition() const override
Definition: pad.h:177
const std::shared_ptr< SHAPE_POLY_SET > & GetEffectivePolygon() const
Definition: pad.cpp:268

References GetBoundingRadius(), GetEffectivePolygon(), GetPosition(), SEG::Square(), and VECTOR2< T >::SquaredEuclideanNorm().

◆ HitTest() [2/2]

bool PAD::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
overridevirtual

Test if aRect intersects or is contained within the bounding box of an item.

Parameters
aRectA reference to a EDA_RECT object containing the rectangle to test.
aContainedSet to true to test for containment instead of an intersection.
aAccuracyIncrease aRect by this amount.
Returns
True if aRect contains or intersects the item bounding box.

Reimplemented from EDA_ITEM.

Definition at line 963 of file pad.cpp.

964 {
965  auto getArea = []( const SHAPE_POLY_SET& aPoly ) -> double
966  {
967  return aPoly.OutlineCount() ? aPoly.COutline( 0 ).Area() : 0;
968  };
969 
970  EDA_RECT arect = aRect;
971  arect.Normalize();
972  arect.Inflate( aAccuracy );
973 
974  EDA_RECT bbox = GetBoundingBox();
975 
976  if( !arect.Intersects( bbox ) )
977  return false;
978 
979  // This covers total containment for all test cases
980  if( arect.Contains( bbox ) )
981  return true;
982 
983  SHAPE_POLY_SET selRect;
984  selRect.NewOutline();
985  selRect.Append( arect.GetOrigin() );
986  selRect.Append( VECTOR2I( arect.GetRight(), arect.GetTop() ) );
987  selRect.Append( VECTOR2I( arect.GetRight(), arect.GetBottom() ) );
988  selRect.Append( VECTOR2I( arect.GetLeft(), arect.GetBottom() ) );
989 
991 
992  double padArea = getArea( *GetEffectivePolygon() );
993  double intersection = getArea( selRect );
994 
995  if( intersection > ( padArea * 0.99 ) )
996  return true;
997  else
998  return !aContained && intersection > 0;
999 }
int GetTop() const
Definition: eda_rect.h:118
int GetLeft() const
Definition: eda_rect.h:117
VECTOR2< int > VECTOR2I
Definition: vector2d.h:623
bool Contains(const wxPoint &aPoint) const
Definition: eda_rect.cpp:57
int GetBottom() const
Definition: eda_rect.h:119
Represent a set of closed polygons.
const wxPoint GetOrigin() const
Definition: eda_rect.h:106
int GetRight() const
Definition: eda_rect.h:116
const EDA_RECT GetBoundingBox() const override
The bounding box is cached, so this will be efficient most of the time.
Definition: pad.cpp:518
void BooleanIntersection(const SHAPE_POLY_SET &b, POLYGON_MODE aFastMode)
Perform boolean polyset union between a and b, store the result in it self For aFastMode meaning,...
int NewOutline()
Creates a new hole in a given outline.
void Normalize()
Ensures that the height ant width are positive.
Definition: eda_rect.cpp:35
Handle the component boundary box.
Definition: eda_rect.h:42
const std::shared_ptr< SHAPE_POLY_SET > & GetEffectivePolygon() const
Definition: pad.cpp:268
bool Intersects(const EDA_RECT &aRect) const
Test for a common area between rectangles.
Definition: eda_rect.cpp:150
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:363
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Add a new vertex to the contour indexed by aOutline and aHole (defaults to the outline of the last po...

References SHAPE_POLY_SET::Append(), SHAPE_POLY_SET::BooleanIntersection(), EDA_RECT::Contains(), EDA_RECT::GetBottom(), GetBoundingBox(), GetEffectivePolygon(), EDA_RECT::GetLeft(), EDA_RECT::GetOrigin(), EDA_RECT::GetRight(), EDA_RECT::GetTop(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), SHAPE_POLY_SET::NewOutline(), EDA_RECT::Normalize(), and SHAPE_POLY_SET::PM_FAST.

◆ ImportSettingsFrom()

void PAD::ImportSettingsFrom ( const PAD aMasterPad)

Import the pad settings from aMasterPad.

The result is "this" has the same settings (sizes, shapes ... ) as aMasterPad.

Parameters
aMasterPadthe template pad.

Definition at line 1338 of file pad.cpp.

1339 {
1340  SetShape( aMasterPad.GetShape() );
1341  SetLayerSet( aMasterPad.GetLayerSet() );
1342  SetAttribute( aMasterPad.GetAttribute() );
1343  SetProperty( aMasterPad.GetProperty() );
1344 
1345  // I am not sure the m_LengthPadToDie must be imported, because this is
1346  // a parameter really specific to a given pad (JPC).
1347  // So this is currently non imported
1348  #if 0
1349  SetPadToDieLength( aMasterPad.GetPadToDieLength() );
1350  #endif
1351 
1352  // The pad orientation, for historical reasons is the
1353  // pad rotation + parent rotation.
1354  // So we have to manage this parent rotation
1355  double pad_rot = aMasterPad.GetOrientation();
1356 
1357  if( aMasterPad.GetParent() )
1358  pad_rot -= aMasterPad.GetParent()->GetOrientation();
1359 
1360  if( GetParent() )
1361  pad_rot += GetParent()->GetOrientation();
1362 
1363  SetOrientation( pad_rot );
1364 
1365  SetSize( aMasterPad.GetSize() );
1366  SetDelta( wxSize( 0, 0 ) );
1367  SetOffset( aMasterPad.GetOffset() );
1368  SetDrillSize( aMasterPad.GetDrillSize() );
1369  SetDrillShape( aMasterPad.GetDrillShape() );
1371  SetChamferRectRatio( aMasterPad.GetChamferRectRatio() );
1372  SetChamferPositions( aMasterPad.GetChamferPositions() );
1373 
1374  switch( aMasterPad.GetShape() )
1375  {
1376  case PAD_SHAPE_TRAPEZOID:
1377  SetDelta( aMasterPad.GetDelta() );
1378  break;
1379 
1380  case PAD_SHAPE_CIRCLE:
1381  // ensure size.y == size.x
1382  SetSize( wxSize( GetSize().x, GetSize().x ) );
1383  break;
1384 
1385  default:
1386  ;
1387  }
1388 
1389  switch( aMasterPad.GetAttribute() )
1390  {
1391  case PAD_ATTRIB_SMD:
1392  case PAD_ATTRIB_CONN:
1393  // These pads do not have hole (they are expected to be only on one
1394  // external copper layer)
1395  SetDrillSize( wxSize( 0, 0 ) );
1396  break;
1397 
1398  default:
1399  ;
1400  }
1401 
1402  // copy also local settings:
1403  SetLocalClearance( aMasterPad.GetLocalClearance() );
1407 
1410  SetThermalGap( aMasterPad.GetThermalGap() );
1411 
1413 
1414  // Add or remove custom pad shapes:
1415  ReplacePrimitives( aMasterPad.GetPrimitives() );
1416  SetAnchorPadShape( aMasterPad.GetAnchorPadShape() );
1417 
1418  SetDirty();
1419 }
int GetLocalSolderMaskMargin() const
Definition: pad.h:378
void SetOffset(const wxPoint &aOffset)
Definition: pad.h:248
void SetLocalSolderPasteMarginRatio(double aRatio)
Definition: pad.h:389
int GetLocalSolderPasteMargin() const
Definition: pad.h:385
double GetRoundRectRadiusRatio() const
Definition: pad.h:515
void SetLocalClearance(int aClearance)
Definition: pad.h:383
void SetThermalSpokeWidth(int aWidth)
Set the width of the thermal spokes connecting the pad to a zone.
Definition: pad.h:482
void SetAnchorPadShape(PAD_SHAPE_T aShape)
Set the shape of the anchor pad for custom shaped pads.
Definition: pad.h:208
Smd pad, appears on the solder paste layer (default)
Definition: pad_shapes.h:81
double GetOrientation() const
Definition: footprint.h:186
PAD_SHAPE_T GetShape() const
Definition: pad.h:169
void ReplacePrimitives(const std::vector< std::shared_ptr< PCB_SHAPE >> &aPrimitivesList)
Clear the current custom shape primitives list and import a new list.
void SetSize(const wxSize &aSize)
Definition: pad.h:231
void SetDelta(const wxSize &aSize)
Definition: pad.h:238
int GetThermalGap() const
Definition: pad.h:491
void SetPadToDieLength(int aLength)
Definition: pad.h:375
PAD_ATTR_T GetAttribute() const
Definition: pad.h:363
void SetLocalSolderMaskMargin(int aMargin)
Definition: pad.h:379
const wxPoint & GetOffset() const
Definition: pad.h:249
const wxSize & GetDrillSize() const
Definition: pad.h:242
int GetThermalSpokeWidth() const
Definition: pad.h:483
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:341
void SetThermalGap(int aGap)
Definition: pad.h:490
void SetDrillSize(const wxSize &aSize)
Definition: pad.h:241
const wxSize & GetSize() const
Definition: pad.h:232
ZONE_CONNECTION GetEffectiveZoneConnection(wxString *aSource=nullptr) const
Return the zone connection in effect (either locally overridden or overridden in the parent footprint...
Definition: pad.cpp:792
LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
Definition: pad.h:360
void SetZoneConnection(ZONE_CONNECTION aType)
Definition: pad.h:467
PAD_SHAPE_T GetAnchorPadShape() const
Definition: pad.h:182
void SetCustomShapeInZoneOpt(CUST_PAD_SHAPE_IN_ZONE aOption)
Set the option for the custom pad shape to use as clearance area in copper zones.
Definition: pad.h:197
void SetShape(PAD_SHAPE_T aShape)
Set the new shape of this pad.
Definition: pad.h:160
Like smd, does not appear on the solder paste layer (default) note also has a special attribute in Ge...
Definition: pad_shapes.h:82
void SetRoundRectRadiusRatio(double aRadiusScale)
Has meaning only for rounded rectangle pads.
Definition: pad.cpp:252
int GetLocalClearance(wxString *aSource) const override
Return any local clearances set in the "classic" (ie: pre-rule) system.
Definition: pad.cpp:686
void SetDrillShape(PAD_DRILL_SHAPE_T aShape)
Definition: pad.h:345
PAD_PROP_T GetProperty() const
Definition: pad.h:366
double GetLocalSolderPasteMarginRatio() const
Definition: pad.h:388
const wxSize & GetDelta() const
Definition: pad.h:239
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
void SetChamferPositions(int aPositions)
Has meaning only for chamfered rectangular pads.
Definition: pad.h:533
void SetLayerSet(LSET aLayers) override
Definition: pad.h:359
CUST_PAD_SHAPE_IN_ZONE GetCustomShapeInZoneOpt() const
Definition: pad.h:187
double GetChamferRectRatio() const
Definition: pad.h:524
void SetLocalSolderPasteMargin(int aMargin)
Definition: pad.h:386
PAD_DRILL_SHAPE_T GetDrillShape() const
Definition: pad.h:346
void SetDirty()
Definition: pad.h:353
int GetChamferPositions() const
Definition: pad.h:534
void SetProperty(PAD_PROP_T aProperty)
Definition: pad.cpp:571
void SetChamferRectRatio(double aChamferScale)
Has meaning only for chamfered rectangular pads.
Definition: pad.cpp:260
int GetPadToDieLength() const
Definition: pad.h:376
const std::vector< std::shared_ptr< PCB_SHAPE > > & GetPrimitives() const
Accessor to the basic shape list for custom-shaped pads.
Definition: pad.h:293
void SetOrientation(double aAngle)
Set the rotation angle of the pad.
Definition: pad.cpp:579
void SetAttribute(PAD_ATTR_T aAttribute)
Definition: pad.cpp:560

References GetAnchorPadShape(), GetAttribute(), GetChamferPositions(), GetChamferRectRatio(), GetCustomShapeInZoneOpt(), GetDelta(), GetDrillShape(), GetDrillSize(), GetEffectiveZoneConnection(), GetLayerSet(), GetLocalClearance(), GetLocalSolderMaskMargin(), GetLocalSolderPasteMargin(), GetLocalSolderPasteMarginRatio(), GetOffset(), FOOTPRINT::GetOrientation(), GetOrientation(), GetPadToDieLength(), GetParent(), GetPrimitives(), GetProperty(), GetRoundRectRadiusRatio(), GetShape(), GetSize(), GetThermalGap(), GetThermalSpokeWidth(), PAD_ATTRIB_CONN, PAD_ATTRIB_SMD, PAD_SHAPE_CIRCLE, PAD_SHAPE_TRAPEZOID, ReplacePrimitives(), SetAnchorPadShape(), SetAttribute(), SetChamferPositions(), SetChamferRectRatio(), SetCustomShapeInZoneOpt(), SetDelta(), SetDirty(), SetDrillShape(), SetDrillSize(), SetLayerSet(), SetLocalClearance(), SetLocalSolderMaskMargin(), SetLocalSolderPasteMargin(), SetLocalSolderPasteMarginRatio(), SetOffset(), SetOrientation(), SetPadToDieLength(), SetProperty(), SetRoundRectRadiusRatio(), SetShape(), SetSize(), SetThermalGap(), SetThermalSpokeWidth(), and SetZoneConnection().

Referenced by PAD_TOOL::copyPadSettings(), operator=(), and PAD().

◆ IsAperturePad()

bool PAD::IsAperturePad ( ) const
inline

Definition at line 370 of file pad.h.

371  {
372  return ( m_layerMask & LSET::AllCuMask() ).none();
373  }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSET m_layerMask
Definition: pad.h:729

References LSET::AllCuMask(), and m_layerMask.

Referenced by doPushPadProperties(), DIALOG_PAD_PROPERTIES::initValues(), and PAD_NAMING::PadCanHaveName().

◆ IsBrightened()

◆ IsConnected()

bool BOARD_CONNECTED_ITEM::IsConnected ( ) const
inlineoverridevirtualinherited

Returns information if the object is derived from BOARD_CONNECTED_ITEM.

Returns
True if the object is of BOARD_CONNECTED_ITEM type, false otherwise.

Reimplemented from BOARD_ITEM.

Reimplemented in ZONE.

Definition at line 69 of file board_connected_item.h.

70  {
71  return true;
72  }

Referenced by BOARD_INSPECTION_TOOL::InspectClearance().

◆ IsDirty()

bool PAD::IsDirty ( ) const
inline

Definition at line 348 of file pad.h.

349  {
350  return m_shapesDirty || m_polyDirty;
351  }
bool m_shapesDirty
Definition: pad.h:685
bool m_polyDirty
Definition: pad.h:691

References m_polyDirty, and m_shapesDirty.

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 171 of file eda_item.h.

171 { return m_flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:109
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References IS_DRAGGED, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 174 of file eda_item.h.

174 { return m_flags & ENTERED; }
#define ENTERED
indicates a group has been entered
Definition: eda_item.h:138
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References ENTERED, and EDA_ITEM::m_flags.

Referenced by KIGFX::PCB_PAINTER::draw().

◆ IsFlipped()

bool PAD::IsFlipped ( ) const
Returns
true if the pad has a footprint parent flipped on the back/bottom layer.

Definition at line 182 of file pad.cpp.

183 {
184  if( GetParent() && GetParent()->GetLayer() == B_Cu )
185  return true;
186  return false;
187 }
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:173

References B_Cu, BOARD_ITEM::GetLayer(), and GetParent().

Referenced by DIALOG_PAD_PROPERTIES::initValues(), and ViewGetLOD().

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 256 of file eda_item.h.

256 { return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:530

References EDA_ITEM::m_forceVisible.

Referenced by KIGFX::SCH_PAINTER::draw(), and SCH_FIELD::Print().

◆ IsLocked()

bool PAD::IsLocked ( ) const
overridevirtual
Returns
true if the object is locked, else false.

Reimplemented from BOARD_ITEM.

Definition at line 138 of file pad.cpp.

139 {
140  if( GetParent() && static_cast<FOOTPRINT*>( GetParent() )->IsLocked() )
141  return true;
142 
143  return BOARD_ITEM::IsLocked();
144 };
bool IsLocked() const override
Definition: pad.cpp:138
FOOTPRINT * GetParent() const
Definition: pad.cpp:1332
virtual bool IsLocked() const
Definition: board_item.h:249

References GetParent(), and BOARD_ITEM::IsLocked().

Referenced by PCB_EDIT_FRAME::ExchangeFootprint(), PCB_IO::format(), and DIALOG_PAD_PROPERTIES::initValues().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 168 of file eda_item.h.

168 { return m_flags & IS_CHANGED; }
#define IS_CHANGED
Item was edited, and modified.
Definition: eda_item.h:103
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References IS_CHANGED, and EDA_ITEM::m_flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsOnCopperLayer()

bool PAD::IsOnCopperLayer ( ) const
inlineoverridevirtual
Returns
true if the pad is on any copper layer, false otherwise.

Reimplemented from BOARD_ITEM.

Definition at line 217 of file pad.h.

218  {
219  return ( GetLayerSet() & LSET::AllCuMask() ) != 0;
220  }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
Definition: pad.h:360

References LSET::AllCuMask(), and GetLayerSet().

Referenced by DIALOG_PAD_PROPERTIES::padValuesOK().

◆ IsOnLayer()

bool PAD::IsOnLayer ( PCB_LAYER_ID  aLayer) const
inlineoverridevirtual

Test to see if this object is on the given layer.

Virtual so objects like PAD, which reside on multiple layers can do their own form of testing.

Parameters
aLayerThe layer to test for.
Returns
true if on given layer, else false.

Reimplemented from BOARD_ITEM.

Definition at line 559 of file pad.h.

560  {
561  return m_layerMask[aLayer];
562  }
LSET m_layerMask
Definition: pad.h:729

References m_layerMask.

Referenced by AR_AUTOPLACER::addPad(), PAD_TOOL::explodePad(), FlashLayer(), DSN::SPECCTRA_DB::makePADSTACK(), PAD_TOOL::recombinePad(), and ViewGetLayers().

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Override this method in any derived object that supports test find and replace.

Returns
True if the item has replaceable text that can be modified using the find and replace dialog.

Reimplemented in SCH_COMPONENT, SCH_LABEL, SCH_SHEET, SCH_TEXT, SCH_FIELD, and SCH_SHEET_PIN.

Definition at line 453 of file eda_item.h.

453 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 175 of file eda_item.h.

175 { return m_flags & IS_RESIZED; }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:108
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References IS_RESIZED, and EDA_ITEM::m_flags.

◆ IsSelected()

bool EDA_ITEM::IsSelected ( ) const
inlineinherited

Definition at line 173 of file eda_item.h.

173 { return m_flags & SELECTED; }
#define SELECTED
Definition: eda_item.h:114
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References EDA_ITEM::m_flags, and SELECTED.

Referenced by ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), KIGFX::SCH_PAINTER::draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DS_PROXY_UNDO_ITEM::DS_PROXY_UNDO_ITEM(), KIGFX::DS_RENDER_SETTINGS::GetColor(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_PAINTER::getLineWidth(), KIGFX::SCH_PAINTER::getRenderColor(), KIGFX::SCH_PAINTER::getTextThickness(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), EE_SELECTION_TOOL::RebuildSelection(), RENDER_3D_LEGACY::renderFootprint(), SCH_EDIT_TOOL::Rotate(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), GERBVIEW_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::selectionContains(), EE_SELECTION_TOOL::selectMultiple(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), KIGFX::SCH_PAINTER::setDeviceColors(), and GERBVIEW_SELECTION_TOOL::unselect().

◆ IsTrack()

bool BOARD_ITEM::IsTrack ( ) const
inlineinherited

Test to see if this object is a track or via (or microvia).

Returns
true if a track or via, else false.

Definition at line 241 of file board_item.h.

242  {
243  return ( Type() == PCB_TRACE_T ) || ( Type() == PCB_VIA_T );
244  }
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:163

References PCB_TRACE_T, PCB_VIA_T, and EDA_ITEM::Type().

◆ IsType()

bool PAD::IsType ( const KICAD_T  aScanTypes[]) const
inlineoverridevirtual

Check whether the item is one of the listed types.

Parameters
aScanTypesList of item types
Returns
true if the item type is contained in the list aScanTypes

Reimplemented from EDA_ITEM.

Definition at line 87 of file pad.h.

88  {
89  if( BOARD_CONNECTED_ITEM::IsType( aScanTypes ) )
90  return true;
91 
92  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
93  {
94  if( m_drill.x > 0 && m_drill.y > 0 )
95  {
96  if( *p == PCB_LOCATE_HOLE_T )
97  return true;
98  else if( *p == PCB_LOCATE_PTH_T && m_attribute != PAD_ATTRIB_NPTH )
99  return true;
100  else if( *p == PCB_LOCATE_NPTH_T && m_attribute == PAD_ATTRIB_NPTH )
101  return true;
102  }
103  }
104 
105  return false;
106  }
wxSize m_drill
Definition: pad.h:706
PAD_ATTR_T m_attribute
Definition: pad.h:739
like PAD_PTH, but not plated mechanical use only, no connection allowed
Definition: pad_shapes.h:85
search types array terminator (End Of Types)
Definition: typeinfo.h:81
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:77
virtual bool IsType(const KICAD_T aScanTypes[]) const
Check whether the item is one of the listed types.
Definition: eda_item.h:233

References EOT, EDA_ITEM::IsType(), m_attribute, m_drill, PAD_ATTRIB_NPTH, PCB_LOCATE_HOLE_T, PCB_LOCATE_NPTH_T, and PCB_LOCATE_PTH_T.

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 172 of file eda_item.h.

172 { return m_flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:111
STATUS_FLAGS m_flags
Definition: eda_item.h:531

References IS_WIRE_IMAGE, and EDA_ITEM::m_flags.

◆ IterateForward() [1/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::deque< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

This changes first parameter to avoid the DList and use the main queue instead.

Definition at line 345 of file eda_item.h.

349  {
350  for( auto it : aList )
351  {
352  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
354  return SEARCH_RESULT::QUIT;
355  }
356 
358  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:91

References CONTINUE, QUIT, and EDA_ITEM::Visit().

Referenced by GERBER_FILE_IMAGE::Visit().

◆ IterateForward() [2/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::vector< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

Change first parameter to avoid the DList and use std::vector instead.

Definition at line 364 of file eda_item.h.

366  {
367  for( auto it : aList )
368  {
369  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
371  return SEARCH_RESULT::QUIT;
372  }
373 
375  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:91

References CONTINUE, QUIT, and EDA_ITEM::Visit().

◆ layerMaskDescribe()

wxString BOARD_ITEM::layerMaskDescribe ( ) const
protectedvirtualinherited

Return a string (to be shown to the user) describing a layer mask.

The BOARD is needed because layer names are customizable.

Reimplemented in VIA.

Definition at line 72 of file board_item.cpp.

73 {
74  BOARD* board = GetBoard();
75  LSET layers = GetLayerSet();
76 
77  // Try to be smart and useful. Check all copper first.
78  if( layers[F_Cu] && layers[B_Cu] )
79  return _( "all copper layers" );
80 
81  LSET copperLayers = layers & board->GetEnabledLayers().AllCuMask();
82  LSET techLayers = layers & board->GetEnabledLayers().AllTechMask();
83 
84  for( LSET testLayers : { copperLayers, techLayers, layers } )
85  {
86  for( int bit = PCBNEW_LAYER_ID_START; bit < PCB_LAYER_ID_COUNT; ++bit )
87  {
88  if( testLayers[ bit ] )
89  {
90  wxString layerInfo = board->GetLayerName( static_cast<PCB_LAYER_ID>( bit ) );
91 
92  if( testLayers.count() > 1 )
93  layerInfo << wxS( " " ) + _( "and others" );
94 
95  return layerInfo;
96  }
97  }
98  }
99 
100  // No copper, no technicals: no layer
101  return _( "no layers" );
102 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:342
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings Returns a bit-mask of all t...
Definition: board.cpp:447
static LSET AllTechMask()
Return a mask holding all technical layers (no CU layer) on both side.
Definition: lset.cpp:820
LSET is a set of PCB_LAYER_IDs.
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
#define _(s)
Definition: 3d_actions.cpp:33
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition: board_item.h:178

References _, LSET::AllCuMask(), LSET::AllTechMask(), B_Cu, F_Cu, BOARD_ITEM::GetBoard(), BOARD::GetEnabledLayers(), BOARD::GetLayerName(), BOARD_ITEM::GetLayerSet(), PCB_LAYER_ID_COUNT, and PCBNEW_LAYER_ID_START.

Referenced by TRACK::GetMsgPanelInfo(), GetMsgPanelInfo(), and GetSelectMenuText().

◆ Matches() [1/2]

virtual bool EDA_ITEM::Matches ( const wxFindReplaceData &  aSearchData,
void *  aAuxData 
) const
inlinevirtualinherited

Compare the item against the search criteria in aSearchData.

The base class returns false since many of the objects derived from EDA_ITEM do not have any text to search.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_TEXT, SCH_FIELD, SCH_SHEET_PIN, ZONE, SCH_PIN, SCH_MARKER, PCB_MARKER, FP_TEXT, and PCB_TEXT.

Definition at line 415 of file eda_item.h.

416  {
417  return false;
418  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), PCB_TEXT::Matches(), FP_TEXT::Matches(), PCB_MARKER::Matches(), SCH_MARKER::Matches(), SCH_PIN::Matches(), ZONE::Matches(), SCH_SHEET_PIN::Matches(), SCH_FIELD::Matches(), SCH_TEXT::Matches(), SCH_EDITOR_CONTROL::ReplaceAndFindNext(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ Matches() [2/2]

bool EDA_ITEM::Matches ( const wxString &  aText,
const wxFindReplaceData &  aSearchData 
) const
protectedinherited

Compare aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

Parameters
aTextA reference to a wxString object containing the string to test.
aSearchDataThe criteria to search against.
Returns
True if aText matches the search criteria in aSearchData.

Definition at line 116 of file eda_item.cpp.

117 {
118  wxString text = aText;
119  wxString searchText = aSearchData.GetFindString();
120 
121  // Don't match if searching for replaceable item and the item doesn't support text replace.
122  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
123  return false;
124 
125  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
126  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
127 
128  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
129  {
130  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
131  return text.Matches( searchText );
132 
133  return text.MakeUpper().Matches( searchText.MakeUpper() );
134  }
135 
136  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
137  return aText.Find( searchText ) != wxNOT_FOUND;
138 
139  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
140 }
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition: eda_item.h:453

References FR_MATCH_WILDCARD, FR_SEARCH_REPLACE, EDA_ITEM::IsReplaceable(), and text.

◆ MergePrimitivesAsPolygon()

void PAD::MergePrimitivesAsPolygon ( SHAPE_POLY_SET aMergedPolygon,
PCB_LAYER_ID  aLayer 
) const

Merge all basic shapes to a SHAPE_POLY_SET.

Note
The results are relative to the pad position, orientation 0.

Definition at line 203 of file pad_custom_shape_functions.cpp.

204 {
205  BOARD* board = GetBoard();
206  int maxError = board ? board->GetDesignSettings().m_MaxError: ARC_HIGH_DEF;
207 
208  aMergedPolygon->RemoveAllContours();
209 
210  // Add the anchor pad shape in aMergedPolygon, others in aux_polyset:
211  // The anchor pad is always at 0,0
212  switch( GetAnchorPadShape() )
213  {
214  case PAD_SHAPE_RECT:
215  {
216  SHAPE_RECT rect( -GetSize().x / 2, -GetSize().y / 2, GetSize().x, GetSize().y );
217  aMergedPolygon->AddOutline( rect.Outline() );
218  }
219  break;
220 
221  default:
222  case PAD_SHAPE_CIRCLE:
223  TransformCircleToPolygon( *aMergedPolygon, wxPoint( 0, 0 ), GetSize().x / 2, maxError,
224  ERROR_INSIDE );
225  break;
226  }
227 
228  addPadPrimitivesToPolygon( aMergedPolygon, aLayer, maxError, ERROR_INSIDE );
229 }
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:593
const wxSize & GetSize() const
Definition: pad.h:232
virtual BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:46
PAD_SHAPE_T GetAnchorPadShape() const
Definition: pad.h:182
int AddOutline(const SHAPE_LINE_CHAIN &aOutline)
Adds a new hole to the given outline (default: last) and returns its index.
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
void TransformCircleToPolygon(SHAPE_LINE_CHAIN &aCornerBuffer, wxPoint aCenter, int aRadius, int aError, ERROR_LOC aErrorLoc)
Function TransformCircleToPolygon convert a circle to a polygon, using multiple straight lines.
void addPadPrimitivesToPolygon(SHAPE_POLY_SET *aMergedPolygon, PCB_LAYER_ID aLayer, int aError, ERROR_LOC aErrorLoc) const

References SHAPE_POLY_SET::AddOutline(), addPadPrimitivesToPolygon(), ERROR_INSIDE, GetAnchorPadShape(), BOARD_ITEM::GetBoard(), BOARD::GetDesignSettings(), GetSize(), BOARD_DESIGN_SETTINGS::m_MaxError, SHAPE_RECT::Outline(), PAD_SHAPE_CIRCLE, PAD_SHAPE_RECT, SHAPE_POLY_SET::RemoveAllContours(), and TransformCircleToPolygon().

Referenced by FABMASTER::loadFootprints(), DSN::SPECCTRA_DB::makePADSTACK(), DIALOG_PAD_PROPERTIES::padValuesOK(), and TransformShapeWithClearanceToPolygon().

◆ Move() [1/2]

void BOARD_ITEM::Move ( const VECTOR2I aMoveVector)
inlineinherited

Definition at line 283 of file board_item.h.

284  {
285  Move( wxPoint( aMoveVector.x, aMoveVector.y ) );
286  }
virtual void Move(const wxPoint &aMoveVector)
Move this object.
Definition: board_item.h:277

References BOARD_ITEM::Move(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ Move() [2/2]

void PAD::Move ( const wxPoint &  aMoveVector)
inlineoverridevirtual

Move this object.

Parameters
aMoveVectorthe move vector for this object.

Reimplemented from BOARD_ITEM.

Definition at line 609 of file pad.h.

610  {
611  m_pos += aMoveVector;
612  SetLocalCoord();
613  SetDirty();
614  }
wxPoint m_pos
Definition: pad.h:673
void SetLocalCoord()
< Set relative coordinates.
Definition: pad.cpp:545
void SetDirty()
Definition: pad.h:353

References m_pos, SetDirty(), and SetLocalCoord().

◆ operator<()

bool EDA_ITEM::operator< ( const EDA_ITEM aItem) const
inherited

Test if another item is less than this object.

Parameters
aItem- Item to compare against.
Returns
- True if aItem is less than the item.

Definition at line 169 of file eda_item.cpp.

170 {
171  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
172  GetClass() ) );
173 
174  return false;
175 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
virtual wxString GetClass() const =0
Return the class name.

References Format(), and EDA_ITEM::GetClass().

◆ operator=()

PAD & PAD::operator= ( const PAD aOther)

Definition at line 119 of file pad.cpp.

120 {
122 
123  ImportSettingsFrom( aOther );
125  SetPosition( aOther.GetPosition() );
126  SetPos0( aOther.GetPos0() );
127  SetName( aOther.GetName() );
128  SetPinFunction( aOther.GetPinFunction() );
129  SetSubRatsnest( aOther.GetSubRatsnest() );
133 
134  return *this;
135 }
int m_effectiveBoundingRadius
Definition: pad.h:694
void SetName(const wxString &aName)
Set the pad name (sometimes called pad number, although it can be an array reference like AA12).
Definition: pad.h:132
void SetSubRatsnest(int aSubRatsnest)
Definition: pad.h:540
void SetPadToDieLength(int aLength)
Definition: pad.h:375
void ImportSettingsFrom(const PAD &aMasterPad)
Import the pad settings from aMasterPad.
Definition: pad.cpp:1338
bool m_keepTopBottomLayer
Definition: pad.h:751
void SetPos0(const wxPoint &aPos)
Definition: pad.h:225
const wxString & GetName() const
Definition: pad.h:133
void SetPinFunction(const wxString &aName)
Set the pad function (pin name in schematic)
Definition: pad.h:138
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Assign the members of aItem to another object.
Definition: eda_item.cpp:177
const wxPoint & GetPos0() const
Definition: pad.h:226
bool m_removeUnconnectedLayer
< If true, the pad copper is removed for layers that are not connected.
Definition: pad.h:748
int GetSubRatsnest() const
Definition: pad.h:539
wxPoint GetPosition() const override
Definition: pad.h:177
void SetPosition(const wxPoint &aPos) override
Definition: pad.h:171
int GetPadToDieLength() const
Definition: pad.h:376
const wxString & GetPinFunction() const
Definition: pad.h:139

References GetName(), GetPadToDieLength(), GetPinFunction(), GetPos0(), GetPosition(), GetSubRatsnest(), ImportSettingsFrom(), m_effectiveBoundingRadius, m_keepTopBottomLayer, m_removeUnconnectedLayer, EDA_ITEM::operator=(), SetName(), SetPadToDieLength(), SetPinFunction(), SetPos0(), SetPosition(), and SetSubRatsnest().

◆ PTHMask()

LSET PAD::PTHMask ( )