KiCad PCB EDA Suite
BOARD Class Reference

Information pertinent to a Pcbnew printed circuit board. More...

#include <board.h>

Inheritance diagram for BOARD:
BOARD_ITEM_CONTAINER BOARD_ITEM EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

Classes

struct  cmp_drawings
 
struct  cmp_items
 
struct  GroupLegalOpsField
 

Public Member Functions

void SetBoardUse (BOARD_USE aUse)
 Set what the board is going to be used for. More...
 
BOARD_USE GetBoardUse () const
 Get what the board use is. More...
 
void IncrementTimeStamp ()
 
int GetTimeStamp () const
 
bool IsFootprintHolder () const
 Find out if the board is being used to hold a single footprint for editing/viewing. More...
 
void SetFileName (const wxString &aFileName)
 
const wxString & GetFileName () const
 
TRACKS & Tracks ()
 
const TRACKS & Tracks () const
 
FOOTPRINTS & Footprints ()
 
const FOOTPRINTS & Footprints () const
 
DRAWINGS & Drawings ()
 
const DRAWINGS & Drawings () const
 
ZONESZones ()
 
const ZONESZones () const
 
MARKERS & Markers ()
 
const MARKERS & Markers () const
 
GROUPS & Groups ()
 The groups must maintain the following invariants. More...
 
const GROUPS & Groups () const
 
const std::vector< BOARD_CONNECTED_ITEM * > AllConnectedItems ()
 
const std::map< wxString, wxString > & GetProperties () const
 
void SetProperties (const std::map< wxString, wxString > &aProps)
 
bool ResolveTextVar (wxString *token, int aDepth) const
 
 BOARD ()
 
 ~BOARD ()
 
VECTOR2I GetPosition () const override
 
void SetPosition (const VECTOR2I &aPos) override
 
const VECTOR2I GetFocusPosition () const override
 Similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
bool IsEmpty () const
 
void Move (const VECTOR2I &aMoveVector) override
 Move this object. More...
 
void SetFileFormatVersionAtLoad (int aVersion)
 
int GetFileFormatVersionAtLoad () const
 
void SetGenerator (const wxString &aGenerator)
 
const wxString & GetGenerator () const
 Adds an item to the container. More...
 
void Add (BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
 Removes an item from the container. More...
 
void Remove (BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
 Removes an item from the container. More...
 
void FinalizeBulkAdd (std::vector< BOARD_ITEM * > &aNewItems)
 Must be used if Add() is used using a BULK_x ADD_MODE to generate a change event for listeners. More...
 
void FinalizeBulkRemove (std::vector< BOARD_ITEM * > &aRemovedItems)
 Must be used if Remove() is used using a BULK_x REMOVE_MODE to generate a change event for listeners. More...
 
void CacheTriangulation (PROGRESS_REPORTER *aReporter=nullptr, const std::vector< ZONE * > &aZones={})
 
FOOTPRINTGetFirstFootprint () const
 Get the first footprint on the board or nullptr. More...
 
void DeleteAllFootprints ()
 Remove all footprints from the deque and free the memory associated with them. More...
 
BOARD_ITEMGetItem (const KIID &aID) const
 
void FillItemMap (std::map< KIID, EDA_ITEM * > &aMap)
 
wxString ConvertCrossReferencesToKIIDs (const wxString &aSource) const
 Convert cross-references back and forth between ${refDes:field} and ${kiid:field}. More...
 
wxString ConvertKIIDsToCrossReferences (const wxString &aSource) const
 
std::shared_ptr< CONNECTIVITY_DATAGetConnectivity () const
 Return a list of missing connections between components/tracks. More...
 
void BuildConnectivity (PROGRESS_REPORTER *aReporter=nullptr)
 Build or rebuild the board connectivity database for the board, especially the list of connected items, list of nets and rastnest data Needed after loading a board to have the connectivity database updated. More...
 
void DeleteMARKERs ()
 Delete all MARKERS from the board. More...
 
void DeleteMARKERs (bool aWarningsAndErrors, bool aExclusions)
 
PROJECTGetProject () const
 
void SetProject (PROJECT *aProject, bool aReferenceOnly=false)
 Link a board to a given project. More...
 
void ClearProject ()
 
std::vector< PCB_MARKER * > ResolveDRCExclusions ()
 Rebuild DRC markers from the serialized data in BOARD_DESIGN_SETTINGS. More...
 
void ResetNetHighLight ()
 Reset all high light data to the init state. More...
 
const std::set< int > & GetHighLightNetCodes () const
 
void SetHighLightNet (int aNetCode, bool aMulti=false)
 Select the netcode to be highlighted. More...
 
bool IsHighLightNetON () const
 
void HighLightON (bool aValue=true)
 Enable or disable net highlighting. More...
 
void HighLightOFF ()
 Disable net highlight. More...
 
int GetCopperLayerCount () const
 
void SetCopperLayerCount (int aCount)
 
LSET GetEnabledLayers () const
 A proxy function that calls the corresponding function in m_BoardSettings. More...
 
void SetEnabledLayers (LSET aLayerMask)
 A proxy function that calls the correspondent function in m_BoardSettings. More...
 
bool IsLayerEnabled (PCB_LAYER_ID aLayer) const
 A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer is enabled. More...
 
bool IsLayerVisible (PCB_LAYER_ID aLayer) const
 A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer is visible. More...
 
LSET GetVisibleLayers () const
 A proxy function that calls the correspondent function in m_BoardSettings. More...
 
void SetVisibleLayers (LSET aLayerMask)
 A proxy function that calls the correspondent function in m_BoardSettings changes the bit-mask of visible layers. More...
 
GAL_SET GetVisibleElements () const
 Return a set of all the element categories that are visible. More...
 
void SetVisibleElements (const GAL_SET &aMask)
 A proxy function that calls the correspondent function in m_BoardSettings. More...
 
void SetVisibleAlls ()
 Change the bit-mask of visible element categories and layers. More...
 
bool IsElementVisible (GAL_LAYER_ID aLayer) const
 Test whether a given element category is visible. More...
 
void SetElementVisibility (GAL_LAYER_ID aLayer, bool aNewState)
 Change the visibility of an element category. More...
 
bool IsFootprintLayerVisible (PCB_LAYER_ID aLayer) const
 Expect either of the two layers on which a footprint can reside, and returns whether that layer is visible. More...
 
BOARD_DESIGN_SETTINGSGetDesignSettings () const
 
const ZONE_SETTINGSGetZoneSettings () const override
 Fetch the zone settings for this container. More...
 
void SetZoneSettings (const ZONE_SETTINGS &aSettings) override
 Set the zone settings for this container. More...
 
bool GetTentVias () const
 
void SetTentVias (bool aFlag)
 
const PAGE_INFOGetPageSettings () const
 
void SetPageSettings (const PAGE_INFO &aPageSettings)
 
const PCB_PLOT_PARAMSGetPlotOptions () const
 
void SetPlotOptions (const PCB_PLOT_PARAMS &aOptions)
 
TITLE_BLOCKGetTitleBlock ()
 
const TITLE_BLOCKGetTitleBlock () const
 
void SetTitleBlock (const TITLE_BLOCK &aTitleBlock)
 
wxString GetSelectMenuText (UNITS_PROVIDER *aUnitsProvider) 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...
 
bool GetBoardPolygonOutlines (SHAPE_POLY_SET &aOutlines, OUTLINE_ERROR_HANDLER *aErrorHandler=nullptr)
 Extract the board outlines and build a closed polygon from lines, arcs and circle items on edge cut layer. More...
 
void ConvertBrdLayerToPolygonalContours (PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aOutlines) const
 Build a set of polygons which are the outlines of copper items (pads, tracks, vias, texts, zones). More...
 
const PCB_LAYER_ID GetLayerID (const wxString &aLayerName) const
 Return the ID of a layer. More...
 
const wxString GetLayerName (PCB_LAYER_ID aLayer) const
 Return the name of a aLayer. More...
 
bool SetLayerName (PCB_LAYER_ID aLayer, const wxString &aLayerName)
 Changes the name of the layer given by aLayer. More...
 
bool SetLayerDescr (PCB_LAYER_ID aIndex, const LAYER &aLayer)
 Return the type of the copper layer given by aLayer. More...
 
LAYER_T GetLayerType (PCB_LAYER_ID aLayer) const
 Return the type of the copper layer given by aLayer. More...
 
bool SetLayerType (PCB_LAYER_ID aLayer, LAYER_T aLayerType)
 Change the type of the layer given by aLayer. More...
 
unsigned GetNodesCount (int aNet=-1) const
 
unsigned GetUnconnectedNetCount () const
 
const std::vector< PAD * > GetPads () const
 Return a reference to a list of all the pads. More...
 
void BuildListOfNets ()
 
NETINFO_ITEMFindNet (int aNetcode) const
 Search for a net with the given netcode. More...
 
NETINFO_ITEMFindNet (const wxString &aNetname) const
 Search for a net with the given name. More...
 
const NETINFO_LISTGetNetInfo () const
 
NETINFO_LISTGetNetInfo ()
 
NETINFO_LIST::iterator BeginNets () const
 
NETINFO_LIST::iterator EndNets () const
 
unsigned GetNetCount () const
 
BOX2I ComputeBoundingBox (bool aBoardEdgesOnly=false) const
 Calculate the bounding box containing all board items (or board edge segments). More...
 
const BOX2I GetBoundingBox () const override
 Return the orthogonal bounding box of this object for display purposes. More...
 
const BOX2I GetBoardEdgesBoundingBox () const
 Return the board bounding box calculated using exclusively the board edges (graphics on Edge.Cuts layer). More...
 
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...
 
INSPECT_RESULT Visit (INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes) override
 May be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
FOOTPRINTFindFootprintByReference (const wxString &aReference) const
 Search for a FOOTPRINT within this board with the given reference designator. More...
 
FOOTPRINTFindFootprintByPath (const KIID_PATH &aPath) const
 Search for a FOOTPRINT within this board with the given path. More...
 
std::set< wxString > GetNetClassAssignmentCandidates () const
 Return the set of netname candidates for netclass assignment. More...
 
void SynchronizeNetsAndNetClasses ()
 Copy NETCLASS info to each NET, based on NET membership in a NETCLASS. More...
 
void SynchronizeProperties ()
 Copy the current project's text variables into the boards property cache. More...
 
wxString GetClass () const override
 Return the class name. More...
 
int SetAreasNetCodesFromNetNames ()
 Set the .m_NetCode member of all copper areas, according to the area Net Name The SetNetCodesFromNetNames is an equivalent to net name, for fast comparisons. More...
 
ZONEGetArea (int index) const
 Return the Zone at a given index. More...
 
std::list< ZONE * > GetZoneList (bool aIncludeZonesInFootprints=false) const
 
int GetAreaCount () const
 
ZONEAddArea (PICKED_ITEMS_LIST *aNewZonesList, int aNetcode, PCB_LAYER_ID aLayer, VECTOR2I aStartPointPosition, ZONE_BORDER_DISPLAY_STYLE aHatch)
 Add an empty copper area to board areas list. More...
 
bool TestZoneIntersection (ZONE *aZone1, ZONE *aZone2)
 Test for intersection of 2 copper areas. More...
 
PADGetPad (const VECTOR2I &aPosition, LSET aLayerMask) const
 Find a pad aPosition on aLayer. More...
 
PADGetPad (const VECTOR2I &aPosition) const
 
PADGetPad (const PCB_TRACK *aTrace, ENDPOINT_T aEndPoint) const
 Find a pad connected to aEndPoint of aTrace. More...
 
PADGetPadFast (const VECTOR2I &aPosition, LSET aLayerMask) const
 Return pad found at aPosition on aLayerMask using the fast search method. More...
 
PADGetPad (std::vector< PAD * > &aPadList, const VECTOR2I &aPosition, LSET aLayerMask) const
 Locate the pad connected at aPosition on aLayer starting at list position aPad. More...
 
void PadDelete (PAD *aPad)
 Delete a given pad from the BOARD by removing it from its footprint and from the m_NetInfo. More...
 
void GetSortedPadListByXthenYCoord (std::vector< PAD * > &aVector, int aNetCode=-1) const
 First empties then fills the vector with all pads and sorts them by increasing x coordinate, and for increasing y coordinate for same values of x coordinates. More...
 
std::tuple< int, double, double > GetTrackLength (const PCB_TRACK &aTrack) const
 Return data on the length and number of track segments connected to a given track. More...
 
TRACKS TracksInNet (int aNetCode)
 Collect all the TRACKs and VIAs that are members of a net given by aNetCode. More...
 
FOOTPRINTGetFootprint (const VECTOR2I &aPosition, PCB_LAYER_ID aActiveLayer, bool aVisibleOnly, bool aIgnoreLocked=false) const
 Get a footprint by its bounding rectangle at aPosition on aLayer. More...
 
void MapNets (const BOARD *aDestBoard)
 Map all nets in the given board to nets with the same name (if any) in the destination board. More...
 
void SanitizeNetcodes ()
 
void AddListener (BOARD_LISTENER *aListener)
 Add a listener to the board to receive calls whenever something on the board has been modified. More...
 
void RemoveListener (BOARD_LISTENER *aListener)
 Remove the specified listener. More...
 
void RemoveAllListeners ()
 Remove all listeners. More...
 
void OnItemChanged (BOARD_ITEM *aItem)
 Notify the board and its listeners that an item on the board has been modified in some way. More...
 
void OnItemsChanged (std::vector< BOARD_ITEM * > &aItems)
 Notify the board and its listeners that an item on the board has been modified in some way. More...
 
wxString GroupsSanityCheck (bool repair=false)
 Consistency check of internal m_groups structure. More...
 
wxString GroupsSanityCheckInternal (bool repair)
 
GroupLegalOpsField GroupLegalOps (const PCB_SELECTION &selection) const
 Check which selection tool group operations are legal given the selection. More...
 
virtual void Delete (BOARD_ITEM *aItem)
 Removes an item from the container and deletes it. More...
 
void SetParentGroup (PCB_GROUP *aGroup)
 
PCB_GROUPGetParentGroup () const
 
int GetX () const
 
int GetY () const
 
virtual VECTOR2I GetCenter () const
 This defaults to the center of the bounding box if not overridden. More...
 
void SetX (int aX)
 
void SetY (int aY)
 
virtual bool IsConnected () const
 Returns information if the object is derived from BOARD_CONNECTED_ITEM. More...
 
virtual bool IsOnCopperLayer () const
 
virtual bool HasHole () const
 
virtual bool IsTented () const
 
virtual std::shared_ptr< SHAPEGetEffectiveShape (PCB_LAYER_ID aLayer=UNDEFINED_LAYER, FLASHING aFlash=FLASHING::DEFAULT) const
 Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes. More...
 
virtual std::shared_ptr< SHAPE_SEGMENTGetEffectiveHoleShape () const
 
BOARD_ITEM_CONTAINERGetParent () const
 
BOARD_ITEM_CONTAINERGetParentFootprint () const
 
virtual bool HasLineStroke () const
 Check if this item has line stoke properties. More...
 
virtual STROKE_PARAMS GetStroke () const
 
virtual void SetStroke (const STROKE_PARAMS &aStroke)
 
virtual PCB_LAYER_ID GetLayer () const
 Return the primary layer this item is on. More...
 
virtual LSET GetLayerSet () const
 Return a std::bitset of all layers on which the item physically resides. More...
 
virtual void SetLayerSet (LSET aLayers)
 
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...
 
virtual void SwapData (BOARD_ITEM *aImage)
 Swap data between aItem and aImage. More...
 
virtual bool IsOnLayer (PCB_LAYER_ID aLayer) const
 Test to see if this object is on the given layer. More...
 
virtual bool IsKnockout () const
 
virtual void SetIsKnockout (bool aKnockout)
 
virtual bool IsLocked () const
 
virtual void SetLocked (bool aLocked)
 
void DeleteStructure ()
 Delete this object after removing from its parent if it has one. More...
 
virtual void Rotate (const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle)
 Rotate this object. More...
 
virtual void Flip (const VECTOR2I &aCentre, bool aFlipLeftRight)
 Flip this object, i.e. More...
 
virtual const BOARDGetBoard () const
 Return the BOARD in which this BOARD_ITEM resides, or NULL if none. More...
 
virtual BOARDGetBoard ()
 
wxString GetLayerName () const
 Return the name of the PCB layer on which the item resides. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Return the all the layers within the VIEW the object is painted on. More...
 
virtual void TransformShapeWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, int aError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const
 Convert the item shape to a closed polygon. 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
 
bool IsRollover () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (EDA_ITEM_FLAGS type) const
 
void SetState (EDA_ITEM_FLAGS type, bool state)
 
EDA_ITEM_FLAGS GetStatus () const
 
void SetStatus (EDA_ITEM_FLAGS aStatus)
 
void SetFlags (EDA_ITEM_FLAGS aMask)
 
void ClearFlags (EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
EDA_ITEM_FLAGS GetFlags () const
 
bool HasFlag (EDA_ITEM_FLAGS aFlag) const
 
EDA_ITEM_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool RenderAsBitmap (double aWorldScale) const
 
void SetIsShownAsBitmap (bool aBitmap)
 
bool IsShownAsBitmap () const
 
virtual bool IsType (const std::vector< KICAD_T > &aScanTypes) const
 Check whether the item is one of the listed types. More...
 
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 bool HitTest (const VECTOR2I &aPosition, int aAccuracy=0) const
 Test if aPosition is inside or on the boundary of this item. More...
 
virtual bool HitTest (const BOX2I &aRect, bool aContained, int aAccuracy=0) const
 Test if aRect intersects this item. More...
 
virtual VECTOR2I GetSortPosition () const
 Return the coordinates that should be used for sorting this element visually compared to other elements. More...
 
virtual EDA_ITEMClone () const
 Create a duplicate of this item with linked list members set to NULL. More...
 
wxString GetTypeDesc ()
 Return a translated description of the type for this EDA_ITEM for display in user facing messages. More...
 
virtual BITMAPS GetMenuImage () const
 Return a pointer to an image to be used in menus. More...
 
virtual bool Matches (const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const
 Compare the item against the search criteria in aSearchData. More...
 
virtual bool Replace (const EDA_SEARCH_DATA &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 const BOX2I ViewBBox () const override
 Return the bounding box of the item covering all its layers. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Draw the parts of the object belonging to layer aLayer. More...
 
virtual double ViewGetLOD (int aLayer, VIEW *aView) const
 Return the level of detail (LOD) of the item. 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) const
 
template<typename T >
Get (PROPERTY_BASE *aProperty) const
 
template<typename T >
std::optional< T > Get (const wxString &aProperty) const
 

Static Public Member Functions

static bool ClassOf (const EDA_ITEM *aItem)
 
static wxString GetStandardLayerName (PCB_LAYER_ID aLayerId)
 Return an "English Standard" name of a PCB layer when given aLayerNumber. More...
 
template<class T >
static INSPECT_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes)
 This changes first parameter to avoid the DList and use the main queue instead. More...
 
template<class T >
static INSPECT_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes)
 Change first parameter to avoid the DList and use std::vector instead. More...
 
static bool Replace (const EDA_SEARCH_DATA &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

LSET m_LegacyVisibleLayers
 Visibility settings stored in board prior to 6.0, only used for loading legacy files. More...
 
GAL_SET m_LegacyVisibleItems
 
bool m_LegacyDesignSettingsLoaded
 True if the legacy board design settings were loaded from a file. More...
 
bool m_LegacyCopperEdgeClearanceLoaded
 
bool m_LegacyNetclassesLoaded
 True if netclasses were loaded from the file. More...
 
std::mutex m_CachesMutex
 
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsCourtyardCache
 
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsFCourtyardCache
 
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsBCourtyardCache
 
std::unordered_map< PTR_PTR_LAYER_CACHE_KEY, bool > m_IntersectsAreaCache
 
std::unordered_map< PTR_PTR_LAYER_CACHE_KEY, bool > m_EnclosedByAreaCache
 
std::unordered_map< wxString, LSETm_LayerExpressionCache
 
std::unordered_map< ZONE *, std::unique_ptr< DRC_RTREE > > m_CopperZoneRTreeCache
 
std::unique_ptr< DRC_RTREEm_CopperItemRTreeCache
 
std::vector< ZONE * > m_DRCZones
 
std::vector< ZONE * > m_DRCCopperZones
 
int m_DRCMaxClearance
 
int m_DRCMaxPhysicalClearance
 
ZONEm_SolderMask
 
const KIID m_Uuid
 

Static Public Attributes

static VECTOR2I 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 EDA_SEARCH_DATA &aSearchData) const
 Compare aText against search criteria in aSearchData. More...
 

Protected Attributes

PCB_LAYER_ID m_layer
 
bool m_isKnockout
 
bool m_isLocked
 
PCB_GROUPm_group
 
EDA_ITEM_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
EDA_ITEM_FLAGS m_flags
 

Private Member Functions

 BOARD (const BOARD &aOther)=delete
 
BOARDoperator= (const BOARD &aOther)=delete
 
template<typename Func , typename... Args>
void InvokeListeners (Func &&aFunc, Args &&... args)
 

Private Attributes

BOARD_USE m_boardUse
 What is this board being used for. More...
 
int m_timeStamp
 
wxString m_fileName
 
MARKERS m_markers
 
DRAWINGS m_drawings
 
FOOTPRINTS m_footprints
 
TRACKS m_tracks
 
GROUPS m_groups
 
ZONES m_zones
 
LAYER m_layers [PCB_LAYER_ID_COUNT]
 
HIGH_LIGHT_INFO m_highLight
 
HIGH_LIGHT_INFO m_highLightPrevious
 
int m_fileFormatVersionAtLoad
 
wxString m_generator
 
std::map< wxString, wxString > m_properties
 
std::shared_ptr< CONNECTIVITY_DATAm_connectivity
 
PAGE_INFO m_paper
 
TITLE_BLOCK m_titles
 
PCB_PLOT_PARAMS m_plotOptions
 
PROJECTm_project
 
std::unique_ptr< BOARD_DESIGN_SETTINGSm_designSettings
 All of the board design settings are stored as a JSON object inside the project file. More...
 
NETINFO_LIST m_NetInfo
 
std::vector< BOARD_LISTENER * > m_listeners
 
ZONE_SETTINGS m_zoneSettings
 
KICAD_T m_structType
 Run time identification, keep private so it can never be changed after a ctor sets it. More...
 
VIEW_ITEM_DATA * m_viewPrivData
 

Friends

class PCB_EDIT_FRAME
 

Detailed Description

Information pertinent to a Pcbnew printed circuit board.

Definition at line 264 of file board.h.

Constructor & Destructor Documentation

◆ BOARD() [1/2]

BOARD::BOARD ( )

Definition at line 69 of file board.cpp.

69 :
75 m_timeStamp( 1 ),
77 m_project( nullptr ),
78 m_designSettings( new BOARD_DESIGN_SETTINGS( nullptr, "board.design_settings" ) ),
79 m_NetInfo( this )
80{
81 // we have not loaded a board yet, assume latest until then.
82 m_fileFormatVersionAtLoad = LEGACY_BOARD_FILE_VERSION;
83
84 for( int layer = 0; layer < PCB_LAYER_ID_COUNT; ++layer )
85 {
87
88 if( IsCopperLayer( layer ) )
89 m_layers[layer].m_type = LT_SIGNAL;
90 else
92 }
93
94 m_SolderMask = new ZONE( this );
95 m_SolderMask->SetLayerSet( LSET().set( F_Mask ).set( B_Mask ) );
96 int infinity = ( std::numeric_limits<int>::max() / 2 ) - pcbIUScale.mmToIU( 1 );
98 m_SolderMask->Outline()->Append( VECTOR2I( -infinity, -infinity ) );
99 m_SolderMask->Outline()->Append( VECTOR2I( -infinity, +infinity ) );
100 m_SolderMask->Outline()->Append( VECTOR2I( +infinity, +infinity ) );
101 m_SolderMask->Outline()->Append( VECTOR2I( +infinity, -infinity ) );
103
105
106 // Initialize default netclass.
107 bds.m_NetSettings->m_DefaultNetClass = std::make_shared<NETCLASS>( NETCLASS::Default );
108 bds.m_NetSettings->m_DefaultNetClass->SetDescription( _( "This is the default net class." ) );
109
110 bds.UseCustomTrackViaSize( false );
111
112 // Initialize ratsnest
113 m_connectivity.reset( new CONNECTIVITY_DATA() );
114
115 // Set flag bits on these that will only be cleared if these are loaded from a legacy file
116 m_LegacyVisibleLayers.reset().set( Rescue );
118}
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:109
@ LT_UNDEFINED
Definition: board.h:144
@ LT_SIGNAL
Definition: board.h:145
Container for design settings for a BOARD object.
void UseCustomTrackViaSize(bool aEnabled)
Enables/disables custom track/via size settings.
std::shared_ptr< NET_SETTINGS > m_NetSettings
BOARD_ITEM_CONTAINER(BOARD_ITEM *aParent, KICAD_T aType)
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:52
bool m_LegacyDesignSettingsLoaded
True if the legacy board design settings were loaded from a file.
Definition: board.h:342
int m_fileFormatVersionAtLoad
Definition: board.h:1195
GAL_SET m_LegacyVisibleItems
Definition: board.h:339
LAYER m_layers[PCB_LAYER_ID_COUNT]
Definition: board.h:1190
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Return an "English Standard" name of a PCB layer when given aLayerNumber.
Definition: board.h:689
BOARD_USE m_boardUse
What is this board being used for.
Definition: board.h:1179
PAGE_INFO m_paper
Definition: board.h:1201
std::unique_ptr< BOARD_DESIGN_SETTINGS > m_designSettings
All of the board design settings are stored as a JSON object inside the project file.
Definition: board.h:1216
NETINFO_LIST m_NetInfo
Definition: board.h:1218
LSET m_LegacyVisibleLayers
Visibility settings stored in board prior to 6.0, only used for loading legacy files.
Definition: board.h:338
int m_timeStamp
Definition: board.h:1180
std::shared_ptr< CONNECTIVITY_DATA > m_connectivity
Definition: board.h:1199
bool m_LegacyNetclassesLoaded
True if netclasses were loaded from the file.
Definition: board.h:346
PROJECT * m_project
Definition: board.h:1204
ZONE * m_SolderMask
Definition: board.h:1160
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:602
bool m_LegacyCopperEdgeClearanceLoaded
Definition: board.h:343
GAL_SET & set()
Definition: layer_ids.h:311
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:530
static const char Default[]
the name of the default NETCLASS
Definition: netclass.h:49
static const wxChar A4[]
Definition: page_info.h:63
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...
int NewOutline()
Creates a new hole in a given outline.
Handle a list of polygons defining a copper zone.
Definition: zone.h:57
void SetMinThickness(int aMinThickness)
Definition: zone.h:245
SHAPE_POLY_SET * Outline()
Definition: zone.h:305
void SetLayerSet(LSET aLayerSet) override
Definition: zone.cpp:257
#define _(s)
bool IsCopperLayer(int aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:823
@ GAL_LAYER_ID_BITMASK_END
This is the end of the layers used for visibility bit masks in legacy board files.
Definition: layer_ids.h:226
@ B_Mask
Definition: layer_ids.h:106
@ F_Mask
Definition: layer_ids.h:107
@ Rescue
Definition: layer_ids.h:133
@ PCB_LAYER_ID_COUNT
Definition: layer_ids.h:137
#define GAL_LAYER_INDEX(x)
Use this macro to convert a GAL layer to a 0-indexed offset from LAYER_VIAS.
Definition: layer_ids.h:264
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:926
constexpr int mmToIU(double mm) const
Definition: base_units.h:89
LAYER_T m_type
The type of the layer.
Definition: board.h:184
wxString m_name
The canonical name of the layer.
Definition: board.h:182
@ PCB_T
Definition: typeinfo.h:82
VECTOR2< int > VECTOR2I
Definition: vector2d.h:618

References _, A4, SHAPE_POLY_SET::Append(), B_Mask, NETCLASS::Default, F_Mask, GAL_LAYER_ID_BITMASK_END, GAL_LAYER_INDEX, GetDesignSettings(), GetStandardLayerName(), IsCopperLayer(), LT_SIGNAL, LT_UNDEFINED, m_connectivity, m_fileFormatVersionAtLoad, m_layers, m_LegacyVisibleItems, m_LegacyVisibleLayers, LAYER::m_name, BOARD_DESIGN_SETTINGS::m_NetSettings, m_SolderMask, LAYER::m_type, EDA_IU_SCALE::mmToIU(), SHAPE_POLY_SET::NewOutline(), NORMAL, ZONE::Outline(), PCB_LAYER_ID_COUNT, pcbIUScale, Rescue, GAL_SET::set(), ZONE::SetLayerSet(), ZONE::SetMinThickness(), ToLAYER_ID(), and BOARD_DESIGN_SETTINGS::UseCustomTrackViaSize().

◆ ~BOARD()

BOARD::~BOARD ( )

Definition at line 121 of file board.cpp.

122{
123 // Clean up the owned elements
125
126 for( ZONE* zone : m_zones )
127 delete zone;
128
129 m_zones.clear();
130
131 delete m_SolderMask;
132
133 for( FOOTPRINT* footprint : m_footprints )
134 delete footprint;
135
136 m_footprints.clear();
137
138 for( PCB_TRACK* t : m_tracks )
139 delete t;
140
141 m_tracks.clear();
142
143 for( BOARD_ITEM* d : m_drawings )
144 delete d;
145
146 m_drawings.clear();
147
148 for( PCB_GROUP* g : m_groups )
149 delete g;
150
151 m_groups.clear();
152}
FOOTPRINTS m_footprints
Definition: board.h:1185
DRAWINGS m_drawings
Definition: board.h:1184
ZONES m_zones
Definition: board.h:1188
void DeleteMARKERs()
Delete all MARKERS from the board.
Definition: board.cpp:876
GROUPS m_groups
Definition: board.h:1187
TRACKS m_tracks
Definition: board.h:1186
A set of BOARD_ITEMs (i.e., without duplicates).
Definition: pcb_group.h:51

References DeleteMARKERs(), m_drawings, m_footprints, m_groups, m_SolderMask, m_tracks, and m_zones.

◆ BOARD() [2/2]

BOARD::BOARD ( const BOARD aOther)
privatedelete

Member Function Documentation

◆ Add()

void BOARD::Add ( BOARD_ITEM aItem,
ADD_MODE  aMode = ADD_MODE::INSERT,
bool  aSkipConnectivity = false 
)
overridevirtual

Removes an item from the container.

Implements BOARD_ITEM_CONTAINER.

Definition at line 670 of file board.cpp.

671{
672 if( aBoardItem == nullptr )
673 {
674 wxFAIL_MSG( wxT( "BOARD::Add() param error: aBoardItem nullptr" ) );
675 return;
676 }
677
678 switch( aBoardItem->Type() )
679 {
680 case PCB_NETINFO_T:
681 m_NetInfo.AppendNet( (NETINFO_ITEM*) aBoardItem );
682 break;
683
684 // this one uses a vector
685 case PCB_MARKER_T:
686 m_markers.push_back( (PCB_MARKER*) aBoardItem );
687 break;
688
689 // this one uses a vector
690 case PCB_GROUP_T:
691 m_groups.push_back( (PCB_GROUP*) aBoardItem );
692 break;
693
694 // this one uses a vector
695 case PCB_ZONE_T:
696 m_zones.push_back( (ZONE*) aBoardItem );
697 break;
698
699 case PCB_TRACE_T:
700 case PCB_VIA_T:
701 case PCB_ARC_T:
702
703 // N.B. This inserts a small memory leak as we lose the
704 if( !IsCopperLayer( aBoardItem->GetLayer() ) )
705 {
706 wxFAIL_MSG( wxT( "BOARD::Add() Cannot place Track on non-copper layer" ) );
707 return;
708 }
709
710 if( aMode == ADD_MODE::APPEND || aMode == ADD_MODE::BULK_APPEND )
711 m_tracks.push_back( static_cast<PCB_TRACK*>( aBoardItem ) );
712 else
713 m_tracks.push_front( static_cast<PCB_TRACK*>( aBoardItem ) );
714
715 break;
716
717 case PCB_FOOTPRINT_T:
718 if( aMode == ADD_MODE::APPEND || aMode == ADD_MODE::BULK_APPEND )
719 m_footprints.push_back( static_cast<FOOTPRINT*>( aBoardItem ) );
720 else
721 m_footprints.push_front( static_cast<FOOTPRINT*>( aBoardItem ) );
722
723 break;
724
726 case PCB_DIM_CENTER_T:
727 case PCB_DIM_RADIAL_T:
729 case PCB_DIM_LEADER_T:
730 case PCB_SHAPE_T:
731 case PCB_BITMAP_T:
732 case PCB_TEXT_T:
733 case PCB_TEXTBOX_T:
734 case PCB_TARGET_T:
735 if( aMode == ADD_MODE::APPEND || aMode == ADD_MODE::BULK_APPEND )
736 m_drawings.push_back( aBoardItem );
737 else
738 m_drawings.push_front( aBoardItem );
739
740 break;
741
742 // other types may use linked list
743 default:
744 {
745 wxString msg;
746 msg.Printf( wxT( "BOARD::Add() needs work: BOARD_ITEM type (%d) not handled" ),
747 aBoardItem->Type() );
748 wxFAIL_MSG( msg );
749 return;
750 }
751 break;
752 }
753
754 aBoardItem->SetParent( this );
755 aBoardItem->ClearEditFlags();
756
757 if( !aSkipConnectivity )
758 m_connectivity->Add( aBoardItem );
759
760 if( aMode != ADD_MODE::BULK_INSERT && aMode != ADD_MODE::BULK_APPEND )
761 {
763 }
764}
virtual void OnBoardItemAdded(BOARD &aBoard, BOARD_ITEM *aBoardItem)
Definition: board.h:240
void InvokeListeners(Func &&aFunc, Args &&... args)
Definition: board.h:1170
MARKERS m_markers
Definition: board.h:1183
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:111
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:114
void ClearEditFlags()
Definition: eda_item.h:174
Handle the data for a net.
Definition: netinfo.h:66
void AppendNet(NETINFO_ITEM *aNewElement)
Add aNewElement to the end of the net list.
virtual PCB_LAYER_ID GetLayer() const override
Return the primary layer this item is on.
Definition: zone.cpp:230
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
Definition: typeinfo.h:88
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition: typeinfo.h:110
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition: typeinfo.h:107
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:102
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:108
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
Definition: typeinfo.h:115
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
Definition: typeinfo.h:91
@ PCB_ZONE_T
class ZONE, a copper pour area
Definition: typeinfo.h:112
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
Definition: typeinfo.h:90
@ PCB_MARKER_T
class PCB_MARKER, a marker used to show something
Definition: typeinfo.h:104
@ PCB_TARGET_T
class PCB_TARGET, a target (graphic item)
Definition: typeinfo.h:111
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
Definition: typeinfo.h:86
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:106
@ PCB_BITMAP_T
class PCB_BITMAP, bitmap on a layer
Definition: typeinfo.h:89
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
Definition: typeinfo.h:103
@ PCB_NETINFO_T
class NETINFO_ITEM, a description of a net
Definition: typeinfo.h:114
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:101
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition: typeinfo.h:109

References APPEND, NETINFO_LIST::AppendNet(), BULK_APPEND, BULK_INSERT, EDA_ITEM::ClearEditFlags(), BOARD_ITEM::GetLayer(), InvokeListeners(), IsCopperLayer(), m_connectivity, m_drawings, m_footprints, m_groups, m_markers, m_NetInfo, m_tracks, m_zones, BOARD_LISTENER::OnBoardItemAdded(), PCB_ARC_T, PCB_BITMAP_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FOOTPRINT_T, PCB_GROUP_T, PCB_MARKER_T, PCB_NETINFO_T, PCB_SHAPE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, EDA_ITEM::SetParent(), and EDA_ITEM::Type().

Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), PCB_BASE_FRAME::AddFootprintToBoard(), TEARDROP_MANAGER::addTeardropsOnTracks(), PCAD2KICAD::PCB::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_FOOTPRINT::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToFootprint(), ALTIUM_PCB::ConvertArcs6ToBoardItem(), ALTIUM_PCB::ConvertArcs6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertFills6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertFills6ToBoardItemWithNet(), ALTIUM_PCB::ConvertPads6ToBoardItem(), ALTIUM_PCB::ConvertPads6ToBoardItemOnNonCopper(), ALTIUM_PCB::ConvertShapeBasedRegions6ToBoardItem(), ALTIUM_PCB::ConvertShapeBasedRegions6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertTexts6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertTracks6ToBoardItem(), ALTIUM_PCB::ConvertTracks6ToBoardItemOnLayer(), CADSTAR_PCB_ARCHIVE_LOADER::createUniqueGroupID(), FOOTPRINT_VIEWER_FRAME::displayFootprint(), CADSTAR_PCB_ARCHIVE_LOADER::drawCadstarText(), DSN::SPECCTRA_DB::FromSESSION(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadNet(), ZONE_SEARCH_HANDLER::GetResultCell(), GROUP_TOOL::Group(), ALTIUM_PCB::HelperCreateAndAddShape(), ALTIUM_PCB::HelperCreateBoardOutline(), ALTIUM_PCB::HelperParseDimensions6Center(), ALTIUM_PCB::HelperParseDimensions6Datum(), ALTIUM_PCB::HelperParseDimensions6Leader(), ALTIUM_PCB::HelperParseDimensions6Linear(), ALTIUM_PCB::HelperParseDimensions6Radial(), ALTIUM_PCB::HelperPcpShapeAsBoardKeepoutRegion(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), LEGACY_PLUGIN::loadAllSections(), CADSTAR_PCB_ARCHIVE_LOADER::loadAreas(), LoadBoard(), CADSTAR_PCB_ARCHIVE_LOADER::loadComponents(), CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers(), LEGACY_PLUGIN::loadDIMENSION(), CADSTAR_PCB_ARCHIVE_LOADER::loadDimensions(), EAGLE_PLUGIN::loadElements(), FABMASTER::loadEtch(), FABMASTER::loadFootprints(), FABMASTER::loadGraphics(), CADSTAR_PCB_ARCHIVE_LOADER::loadGroups(), LEGACY_PLUGIN::loadNETINFO_ITEM(), FABMASTER::loadNets(), CADSTAR_PCB_ARCHIVE_LOADER::loadNetVia(), FABMASTER::loadOutline(), LEGACY_PLUGIN::loadPCB_LINE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), FABMASTER::loadPolygon(), EAGLE_PLUGIN::loadPolygon(), EAGLE_PLUGIN::loadSignals(), CADSTAR_PCB_ARCHIVE_LOADER::loadTemplates(), LEGACY_PLUGIN::loadTrackList(), FABMASTER::loadVias(), FABMASTER::loadZone(), LEGACY_PLUGIN::loadZONE_CONTAINER(), DIALOG_NET_INSPECTOR::onAddNet(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), PCB_PARSER::parseBOARD_unchecked(), ALTIUM_PCB::ParseComponents6Data(), PCB_PARSER::parseNETINFO_ITEM(), ALTIUM_PCB::ParseNets6Data(), ALTIUM_PCB::ParsePolygons6Data(), ALTIUM_PCB::ParseVias6Data(), PCB_PARSER::parseZONE(), BOARD_COMMIT::Push(), FOOTPRINT_WIZARD_FRAME::ReloadFootprint(), BOARD_EDITOR_CONTROL::RepairBoard(), BOARD_COMMIT::Revert(), DIALOG_FOOTPRINT_CHECKER::runChecks(), and TEARDROP_MANAGER::SetTeardrops().

◆ AddArea()

ZONE * BOARD::AddArea ( PICKED_ITEMS_LIST aNewZonesList,
int  aNetcode,
PCB_LAYER_ID  aLayer,
VECTOR2I  aStartPointPosition,
ZONE_BORDER_DISPLAY_STYLE  aHatch 
)

Add an empty copper area to board areas list.

Parameters
aNewZonesListis a PICKED_ITEMS_LIST * where to store new areas pickers (useful in undo commands) can be NULL.
aNetcodeis the netcode of the copper area (0 = no net).
aLayeris the layer of area.
aStartPointPositionis position of the first point of the polygon outline of this area.
aHatchis the hatch option.
Returns
a reference to the new area.

Definition at line 1858 of file board.cpp.

1860{
1861 ZONE* new_area = new ZONE( this );
1862
1863 new_area->SetNetCode( aNetcode );
1864 new_area->SetLayer( aLayer );
1865
1866 m_zones.push_back( new_area );
1867
1868 new_area->SetHatchStyle( (ZONE_BORDER_DISPLAY_STYLE) aHatch );
1869
1870 // Add the first corner to the new zone
1871 new_area->AppendCorner( aStartPointPosition, -1 );
1872
1873 if( aNewZonesList )
1874 {
1875 ITEM_PICKER picker( nullptr, new_area, UNDO_REDO::NEWITEM );
1876 aNewZonesList->PushItem( picker );
1877 }
1878
1879 return new_area;
1880}
bool SetNetCode(int aNetCode, bool aNoAssert)
Set net using a net code.
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
virtual void SetLayer(PCB_LAYER_ID aLayer) override
Set the layer this item is on.
Definition: zone.cpp:251
void SetHatchStyle(ZONE_BORDER_DISPLAY_STYLE aStyle)
Definition: zone.h:575
bool AppendCorner(VECTOR2I aPosition, int aHoleIdx, bool aAllowDuplication=false)
Add a new corner to the zone outline (to the main outline or a hole)
Definition: zone.cpp:696
ZONE_BORDER_DISPLAY_STYLE
Zone border styles.
Definition: zone_settings.h:49

References ZONE::AppendCorner(), m_zones, NEWITEM, PICKED_ITEMS_LIST::PushItem(), ZONE::SetHatchStyle(), ZONE::SetLayer(), and BOARD_CONNECTED_ITEM::SetNetCode().

◆ AddListener()

void BOARD::AddListener ( BOARD_LISTENER aListener)

Add a listener to the board to receive calls whenever something on the board has been modified.

The board does not take ownership of the listener object. Make sure to call RemoveListener before deleting the listener object. The order of listener invocations is not guaranteed. If the specified listener object has been added before, it will not be added again.

Definition at line 1956 of file board.cpp.

1957{
1958 if( !alg::contains( m_listeners, aListener ) )
1959 m_listeners.push_back( aListener );
1960}
std::vector< BOARD_LISTENER * > m_listeners
Definition: board.h:1220
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99

References alg::contains(), and m_listeners.

Referenced by DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), APPEARANCE_CONTROLS::OnBoardChanged(), DIALOG_NET_INSPECTOR::onBoardChanged(), PCB_SEARCH_PANE::onBoardChanged(), and PCB_SEARCH_PANE::PCB_SEARCH_PANE().

◆ AllConnectedItems()

const std::vector< BOARD_CONNECTED_ITEM * > BOARD::AllConnectedItems ( )

Definition at line 1912 of file board.cpp.

1913{
1914 std::vector<BOARD_CONNECTED_ITEM*> items;
1915
1916 for( PCB_TRACK* track : Tracks() )
1917 items.push_back( track );
1918
1919 for( FOOTPRINT* footprint : Footprints() )
1920 {
1921 for( PAD* pad : footprint->Pads() )
1922 items.push_back( pad );
1923 }
1924
1925 for( ZONE* zone : Zones() )
1926 items.push_back( zone );
1927
1928 return items;
1929}
ZONES & Zones()
Definition: board.h:313
FOOTPRINTS & Footprints()
Definition: board.h:307
TRACKS & Tracks()
Definition: board.h:304
Definition: pad.h:58

References Footprints(), pad, Tracks(), and Zones().

Referenced by MapNets(), and SanitizeNetcodes().

◆ BeginNets()

NETINFO_LIST::iterator BOARD::BeginNets ( ) const
inline
Returns
iterator to the first element of the NETINFO_ITEMs list.

Definition at line 777 of file board.h.

778 {
779 return m_NetInfo.begin();
780 }
iterator begin() const
Definition: netinfo.h:444

References NETINFO_LIST::begin(), and m_NetInfo.

◆ BuildConnectivity()

void BOARD::BuildConnectivity ( PROGRESS_REPORTER aReporter = nullptr)

Build or rebuild the board connectivity database for the board, especially the list of connected items, list of nets and rastnest data Needed after loading a board to have the connectivity database updated.

Definition at line 155 of file board.cpp.

156{
157 GetConnectivity()->Build( this, aReporter );
158}
std::shared_ptr< CONNECTIVITY_DATA > GetConnectivity() const
Return a list of missing connections between components/tracks.
Definition: board.h:424

References GetConnectivity().

Referenced by PCB_CONTROL::AppendBoard(), TRACKS_CLEANER::deleteDanglingTracks(), LoadBoard(), PCB_EDIT_FRAME::OpenProjectFiles(), PCB_CONTROL::Paste(), Refresh(), SaveBoard(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and PCB_EDIT_FRAME::UpdateUserInterface().

◆ BuildListOfNets()

◆ CacheTriangulation()

void BOARD::CacheTriangulation ( PROGRESS_REPORTER aReporter = nullptr,
const std::vector< ZONE * > &  aZones = {} 
)

Definition at line 620 of file board.cpp.

621{
622 std::vector<ZONE*> zones = aZones;
623
624 if( zones.empty() )
625 zones = m_zones;
626
627 if( zones.empty() )
628 return;
629
630 if( aReporter )
631 aReporter->Report( _( "Tessellating copper zones..." ) );
632
634 std::vector<std::future<size_t>> returns;
635
636 returns.reserve( zones.size() );
637
638 auto cache_zones = [aReporter]( ZONE* aZone ) -> size_t
639 {
640 if( aReporter && aReporter->IsCancelled() )
641 return 0;
642
643 aZone->CacheTriangulation();
644
645 if( aReporter )
646 aReporter->AdvanceProgress();
647
648 return 1;
649 };
650
651 for( ZONE* zone : zones )
652 returns.emplace_back( tp.submit( cache_zones, zone ) );
653
654 // Finalize the triangulation threads
655 for( const std::future<size_t>& ret : returns )
656 {
657 std::future_status status = ret.wait_for( std::chrono::milliseconds( 250 ) );
658
659 while( status != std::future_status::ready )
660 {
661 if( aReporter )
662 aReporter->KeepRefreshing();
663
664 status = ret.wait_for( std::chrono::milliseconds( 250 ) );
665 }
666 }
667}
virtual bool IsCancelled() const =0
virtual bool KeepRefreshing(bool aWait=false)=0
Update the UI (if any).
virtual void Report(const wxString &aMessage)=0
Display aMessage in the progress bar dialog.
virtual void AdvanceProgress()=0
Increment the progress bar length (inside the current virtual zone).
thread_pool & GetKiCadThreadPool()
Get a reference to the current thread pool.
Definition: thread_pool.cpp:32
static thread_pool * tp
Definition: thread_pool.cpp:30
BS::thread_pool thread_pool
Definition: thread_pool.h:30

References _, PROGRESS_REPORTER::AdvanceProgress(), GetKiCadThreadPool(), PROGRESS_REPORTER::IsCancelled(), PROGRESS_REPORTER::KeepRefreshing(), m_zones, PROGRESS_REPORTER::Report(), and tp.

Referenced by CONNECTIVITY_DATA::Build(), and PCB_DRAW_PANEL_GAL::DisplayBoard().

◆ ClassOf()

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

Definition at line 267 of file board.h.

268 {
269 return aItem && PCB_T == aItem->Type();
270 }

References PCB_T, and EDA_ITEM::Type().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 136 of file eda_item.h.

void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:157
#define BRIGHTENED
item is drawn with a bright contour

References BRIGHTENED, and EDA_ITEM::ClearFlags().

Referenced by SCH_EDIT_FRAME::FocusOnItem(), PCB_BASE_FRAME::FocusOnItems(), EE_SELECTION_TOOL::unhighlight(), PL_SELECTION_TOOL::unhighlight(), PCB_SELECTION_TOOL::unhighlightInternal(), and SCH_EDITOR_CONTROL::UpdateNetHighlighting().

◆ ClearEditFlags()

◆ ClearFlags()

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

Definition at line 157 of file eda_item.h.

157{ m_flags &= ~aMask; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:512

References EDA_ITEM::m_flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_MOVE_TOOL::AlignElements(), FOOTPRINT::BuildCourtyardCaches(), 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(), SCH_ITEM::Duplicate(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_SELECTION_TOOL::ExitGroup(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE_ON_MOVE::Init(), EE_COLLECTOR::Inspect(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), DIALOG_SYMBOL_PROPERTIES::OnUnitChoice(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceFootprint(), SYMBOL_EDITOR_PIN_TOOL::PlacePin(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), PAD_TOOL::RecombinePad(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::RollbackSymbolFromUndo(), DRC_TEST_PROVIDER_DISALLOW::Run(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetIsShownAsBitmap(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), SCH_DRAWING_TOOLS::TwoClickPlace(), and EE_SELECTION_TOOL::unhighlight().

◆ ClearProject()

void BOARD::ClearProject ( )

Definition at line 195 of file board.cpp.

196{
197 if( !m_project )
198 return;
199
201
202 // Owned by the BOARD
203 if( project.m_BoardSettings )
204 {
205 project.ReleaseNestedSettings( project.m_BoardSettings );
206 project.m_BoardSettings = nullptr;
207 }
208
210 GetDesignSettings().SetParent( nullptr );
211 m_project = nullptr;
212}
void SetParent(JSON_SETTINGS *aParent, bool aLoadFromFile=true)
The backing store for a PROJECT, in JSON format.
Definition: project_file.h:65
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:148

References GetDesignSettings(), PROJECT::GetProjectFile(), BOARD_DESIGN_SETTINGS::m_NetSettings, m_project, project, and NESTED_SETTINGS::SetParent().

Referenced by PCB_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::Files_io_from_id(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), PCB_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::SetBoard(), and SetProject().

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 169 of file eda_item.h.

170 {
172 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
#define SELECTED_BY_DRAG
Item was algorithmically selected as a dragged item.
#define DO_NOT_DRAW
Used to disable draw function.
#define SKIP_STRUCT
flag indicating that the structure should be ignored
#define CANDIDATE
flag indicating that the structure is connected

References CANDIDATE, EDA_ITEM::ClearFlags(), DO_NOT_DRAW, IS_LINKED, SELECTED_BY_DRAG, and SKIP_STRUCT.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles(), and SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 143 of file view_item.h.

144 {
145 m_viewPrivData = nullptr;
146 }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:151

References KIGFX::VIEW_ITEM::m_viewPrivData.

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

◆ Clone()

EDA_ITEM * EDA_ITEM::Clone ( ) const
virtualinherited

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 in LIB_FIELD, LIB_PIN, LIB_SHAPE, LIB_TEXT, LIB_TEXTBOX, SCH_BITMAP, SCH_BUS_WIRE_ENTRY, SCH_BUS_BUS_ENTRY, SCH_FIELD, SCH_JUNCTION, SCH_LABEL, SCH_DIRECTIVE_LABEL, SCH_GLOBALLABEL, SCH_HIERLABEL, SCH_LINE, SCH_MARKER, SCH_NO_CONNECT, SCH_PIN, SCH_SHAPE, SCH_SHEET, SCH_SHEET_PIN, SCH_SYMBOL, SCH_TEXT, SCH_TEXTBOX, KIGFX::ORIGIN_VIEWITEM, PCB_GROUP, FOOTPRINT, FP_SHAPE, FP_TEXT, FP_TEXTBOX, NETINFO_ITEM, PAD, PCB_BITMAP, PCB_DIM_ALIGNED, PCB_DIM_ORTHOGONAL, PCB_DIM_RADIAL, PCB_DIM_LEADER, PCB_DIM_CENTER, PCB_MARKER, PCB_SHAPE, PCB_TARGET, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_ARC, PCB_VIA, ZONE, and FP_ZONE.

Definition at line 82 of file eda_item.cpp.

83{
84 wxCHECK_MSG( false, nullptr, wxT( "Clone not implemented in derived class " ) + GetClass() +
85 wxT( ". Bad programmer!" ) );
86}
virtual wxString GetClass() const =0
Return the class name.

References EDA_ITEM::GetClass().

Referenced by SCH_EDIT_FRAME::AddCopyForRepeatItem(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), PCB_DIMENSION_BASE::GetEffectiveShape(), LIB_SYMBOL::LIB_SYMBOL(), new_clone(), LIB_SYMBOL::operator=(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), SCH_LIB_PLUGIN_CACHE::removeSymbol(), PCB_BASE_EDIT_FRAME::saveCopyInUndoList(), CLIPBOARD_IO::SaveSelection(), LIB_SYMBOL::SetConversion(), LIB_SYMBOL::SetUnitCount(), SCH_DRAWING_TOOLS::SingleClickPlace(), COMMIT::Stage(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace().

◆ ComputeBoundingBox()

BOX2I BOARD::ComputeBoundingBox ( bool  aBoardEdgesOnly = false) const

Calculate the bounding box containing all board items (or board edge segments).

Parameters
aBoardEdgesOnlyis true if we are interested in board edge segments only.
Returns
the board's bounding box.

Definition at line 1157 of file board.cpp.

1158{
1159 BOX2I bbox;
1160 LSET visible = GetVisibleLayers();
1161 bool showInvisibleText = IsElementVisible( LAYER_MOD_TEXT_INVISIBLE )
1162 && PgmOrNull() && !PgmOrNull()->m_Printing;
1163
1164 if( aBoardEdgesOnly )
1165 visible.set( Edge_Cuts );
1166
1167 // Check shapes, dimensions, texts, and fiducials
1168 for( BOARD_ITEM* item : m_drawings )
1169 {
1170 if( aBoardEdgesOnly && ( item->GetLayer() != Edge_Cuts || item->Type() != PCB_SHAPE_T ) )
1171 continue;
1172
1173 if( ( item->GetLayerSet() & visible ).any() )
1174 bbox.Merge( item->GetBoundingBox() );
1175 }
1176
1177 // Check footprints
1178 for( FOOTPRINT* footprint : m_footprints )
1179 {
1180 if( !( footprint->GetLayerSet() & visible ).any() )
1181 continue;
1182
1183 if( aBoardEdgesOnly )
1184 {
1185 for( const BOARD_ITEM* edge : footprint->GraphicalItems() )
1186 {
1187 if( edge->GetLayer() == Edge_Cuts && edge->Type() == PCB_FP_SHAPE_T )
1188 bbox.Merge( edge->GetBoundingBox() );
1189 }
1190 }
1191 else
1192 {
1193 bbox.Merge( footprint->GetBoundingBox( true, showInvisibleText ) );
1194 }
1195 }
1196
1197 if( !aBoardEdgesOnly )
1198 {
1199 // Check tracks
1200 for( PCB_TRACK* track : m_tracks )
1201 {
1202 if( ( track->GetLayerSet() & visible ).any() )
1203 bbox.Merge( track->GetBoundingBox() );
1204 }
1205
1206 // Check zones
1207 for( ZONE* aZone : m_zones )
1208 {
1209 if( ( aZone->GetLayerSet() & visible ).any() )
1210 bbox.Merge( aZone->GetBoundingBox() );
1211 }
1212 }
1213
1214 return bbox;
1215}
LSET GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:499
bool IsElementVisible(GAL_LAYER_ID aLayer) const
Test whether a given element category is visible.
Definition: board.cpp:551
BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
Definition: box2.h:588
bool m_Printing
wxWidgets on MSW tends to crash if you spool up more than one print job at a time.
Definition: pgm_base.h:298
PGM_BASE * PgmOrNull()
similar to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from...
Definition: cvpcb.cpp:125
@ LAYER_MOD_TEXT_INVISIBLE
text marked as invisible
Definition: layer_ids.h:200
@ Edge_Cuts
Definition: layer_ids.h:113
@ PCB_FP_SHAPE_T
class FP_SHAPE, a footprint edge
Definition: typeinfo.h:94

References Edge_Cuts, GetVisibleLayers(), IsElementVisible(), LAYER_MOD_TEXT_INVISIBLE, m_drawings, m_footprints, PGM_BASE::m_Printing, m_tracks, m_zones, BOX2< Vec >::Merge(), PCB_FP_SHAPE_T, PCB_SHAPE_T, and PgmOrNull().

Referenced by buildBoardBoundingBoxPoly(), BuildBoardPolygonOutlines(), DIALOG_EXPORT_SVG::CreateSVGFile(), PCB_EDIT_FRAME::ExportToGenCAD(), PLACE_FILE_EXPORTER::GenReportData(), GetBoardEdgesBoundingBox(), GetBoundingBox(), PCBNEW_PRINTOUT::getBoundingBox(), initializePlotter(), BOARD_ADAPTER::InitSettings(), DIALOG_EXPORT_STEP::onExportButton(), and StartPlotBoard().

◆ ConvertBrdLayerToPolygonalContours()

void BOARD::ConvertBrdLayerToPolygonalContours ( PCB_LAYER_ID  aLayer,
SHAPE_POLY_SET aOutlines 
) const

Build a set of polygons which are the outlines of copper items (pads, tracks, vias, texts, zones).

Holes in vias or pads are ignored. The polygons are not merged. This is useful to export the shape of copper layers to dxf polygons or 3D viewer/

Parameters
aLayeris a copper layer, like B_Cu, etc.
aOutlinesis the SHAPE_POLY_SET to fill in with items outline.

Definition at line 2183 of file board.cpp.

2185{
2186 int maxError = GetDesignSettings().m_MaxError;
2187
2188 // convert tracks and vias:
2189 for( const PCB_TRACK* track : m_tracks )
2190 {
2191 if( !track->IsOnLayer( aLayer ) )
2192 continue;
2193
2194 track->TransformShapeWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2195 ERROR_INSIDE );
2196 }
2197
2198 // convert pads and other copper items in footprints
2199 for( const FOOTPRINT* footprint : m_footprints )
2200 {
2201 footprint->TransformPadsWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2202 ERROR_INSIDE );
2203
2204 // Microwave footprints may have items on copper layers
2205 footprint->TransformFPShapesWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2207 true, /* include text */
2208 true, /* include shapes */
2209 false /* include private items */ );
2210
2211 for( const ZONE* zone : footprint->Zones() )
2212 {
2213 if( zone->GetLayerSet().test( aLayer ) )
2214 zone->TransformSolidAreasShapesToPolygon( aLayer, aOutlines );
2215 }
2216 }
2217
2218 // convert copper zones
2219 for( const ZONE* zone : Zones() )
2220 {
2221 if( zone->GetLayerSet().test( aLayer ) )
2222 zone->TransformSolidAreasShapesToPolygon( aLayer, aOutlines );
2223 }
2224
2225 // convert graphic items on copper layers (texts)
2226 for( const BOARD_ITEM* item : m_drawings )
2227 {
2228 if( !item->IsOnLayer( aLayer ) )
2229 continue;
2230
2231 switch( item->Type() )
2232 {
2233 case PCB_SHAPE_T:
2234 {
2235 const PCB_SHAPE* shape = static_cast<const PCB_SHAPE*>( item );
2236 shape->TransformShapeWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2237 ERROR_INSIDE );
2238 break;
2239 }
2240
2241 case PCB_TEXT_T:
2242 {
2243 const PCB_TEXT* text = static_cast<const PCB_TEXT*>( item );
2244 text->TransformTextShapeWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2245 ERROR_INSIDE );
2246 break;
2247 }
2248
2249 case PCB_TEXTBOX_T:
2250 {
2251 const PCB_TEXTBOX* textbox = static_cast<const PCB_TEXTBOX*>( item );
2252
2253 // plot border
2254 textbox->PCB_SHAPE::TransformShapeWithClearanceToPolygon( aOutlines, aLayer, 0,
2255 maxError, ERROR_INSIDE );
2256 // plot text
2257 textbox->TransformTextShapeWithClearanceToPolygon( aOutlines, aLayer, 0, maxError,
2258 ERROR_INSIDE );
2259 break;
2260 }
2261
2262 default:
2263 break;
2264 }
2265 }
2266}
void TransformShapeWithClearanceToPolygon(SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, int aError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const override
Convert the shape to a closed polygon.
Definition: pcb_shape.cpp:383
void TransformTextShapeWithClearanceToPolygon(SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, int aError, ERROR_LOC aErrorLoc) const
Function TransformTextShapeWithClearanceToPolygon Convert the text to a polygonSet describing the act...
@ ERROR_INSIDE

References ERROR_INSIDE, GetDesignSettings(), m_drawings, m_footprints, BOARD_DESIGN_SETTINGS::m_MaxError, m_tracks, PCB_SHAPE_T, PCB_TEXT_T, PCB_TEXTBOX_T, text, PCB_SHAPE::TransformShapeWithClearanceToPolygon(), PCB_TEXTBOX::TransformTextShapeWithClearanceToPolygon(), and Zones().

Referenced by EXPORTER_PCB_VRML::ExportStandardLayers(), EXPORTER_PCB_VRML::ExportVrmlSolderMask(), and PlotLayerOutlines().

◆ ConvertCrossReferencesToKIIDs()

wxString BOARD::ConvertCrossReferencesToKIIDs ( const wxString &  aSource) const

Convert cross-references back and forth between ${refDes:field} and ${kiid:field}.

Definition at line 1032 of file board.cpp.

1033{
1034 wxString newbuf;
1035 size_t sourceLen = aSource.length();
1036
1037 for( size_t i = 0; i < sourceLen; ++i )
1038 {
1039 if( aSource[i] == '$' && i + 1 < sourceLen && aSource[i+1] == '{' )
1040 {
1041 wxString token;
1042 bool isCrossRef = false;
1043
1044 for( i = i + 2; i < sourceLen; ++i )
1045 {
1046 if( aSource[i] == '}' )
1047 break;
1048
1049 if( aSource[i] == ':' )
1050 isCrossRef = true;
1051
1052 token.append( aSource[i] );
1053 }
1054
1055 if( isCrossRef )
1056 {
1057 wxString remainder;
1058 wxString ref = token.BeforeFirst( ':', &remainder );
1059
1060 for( const FOOTPRINT* footprint : Footprints() )
1061 {
1062 if( footprint->GetReference().CmpNoCase( ref ) == 0 )
1063 {
1064 wxString test( remainder );
1065
1066 if( footprint->ResolveTextVar( &test ) )
1067 token = footprint->m_Uuid.AsString() + wxT( ":" ) + remainder;
1068
1069 break;
1070 }
1071 }
1072 }
1073
1074 newbuf.append( wxT( "${" ) + token + wxT( "}" ) );
1075 }
1076 else
1077 {
1078 newbuf.append( aSource[i] );
1079 }
1080 }
1081
1082 return newbuf;
1083}

References Footprints().

Referenced by DIALOG_TEXTBOX_PROPERTIES::TransferDataFromWindow(), and DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog().

◆ ConvertKIIDsToCrossReferences()

wxString BOARD::ConvertKIIDsToCrossReferences ( const wxString &  aSource) const

Definition at line 1086 of file board.cpp.

1087{
1088 wxString newbuf;
1089 size_t sourceLen = aSource.length();
1090
1091 for( size_t i = 0; i < sourceLen; ++i )
1092 {
1093 if( aSource[i] == '$' && i + 1 < sourceLen && aSource[i+1] == '{' )
1094 {
1095 wxString token;
1096 bool isCrossRef = false;
1097
1098 for( i = i + 2; i < sourceLen; ++i )
1099 {
1100 if( aSource[i] == '}' )
1101 break;
1102
1103 if( aSource[i] == ':' )
1104 isCrossRef = true;
1105
1106 token.append( aSource[i] );
1107 }
1108
1109 if( isCrossRef )
1110 {
1111 wxString remainder;
1112 wxString ref = token.BeforeFirst( ':', &remainder );
1113 BOARD_ITEM* refItem = GetItem( KIID( ref ) );
1114
1115 if( refItem && refItem->Type() == PCB_FOOTPRINT_T )
1116 {
1117 token = static_cast<FOOTPRINT*>( refItem )->GetReference() + wxT( ":" )
1118 + remainder;
1119 }
1120 }
1121
1122 newbuf.append( wxT( "${" ) + token + wxT( "}" ) );
1123 }
1124 else
1125 {
1126 newbuf.append( aSource[i] );
1127 }
1128 }
1129
1130 return newbuf;
1131}
BOARD_ITEM * GetItem(const KIID &aID) const
Definition: board.cpp:917
Definition: kiid.h:47

References GetItem(), PCB_FOOTPRINT_T, and EDA_ITEM::Type().

Referenced by DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), and DIALOG_TEXTBOX_PROPERTIES::TransferDataToWindow().

◆ Delete()

virtual void BOARD_ITEM_CONTAINER::Delete ( BOARD_ITEM aItem)
inlinevirtualinherited

Removes an item from the container and deletes it.

Definition at line 77 of file board_item_container.h.

78 {
79 Remove( aItem );
80 delete aItem;
81 }
virtual void Remove(BOARD_ITEM *aItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL)=0
Removes an item from the container.

References BOARD_ITEM_CONTAINER::Remove().

Referenced by DRC_ITEMS_PROVIDER::DeleteItem(), PCB_PARSER::parseBOARD_unchecked(), and BOARD_COMMIT::Push().

◆ DeleteAllFootprints()

void BOARD::DeleteAllFootprints ( )

Remove all footprints from the deque and free the memory associated with them.

Definition at line 908 of file board.cpp.

909{
910 for( FOOTPRINT* footprint : m_footprints )
911 delete footprint;
912
913 m_footprints.clear();
914}

References m_footprints.

Referenced by FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), FOOTPRINT_WIZARD_FRAME::ReloadFootprint(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), and DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME().

◆ DeleteMARKERs() [1/2]

void BOARD::DeleteMARKERs ( )

Delete all MARKERS from the board.

Definition at line 876 of file board.cpp.

877{
878 // the vector does not know how to delete the PCB_MARKER, it holds pointers
879 for( PCB_MARKER* marker : m_markers )
880 delete marker;
881
882 m_markers.clear();
883}

References m_markers.

Referenced by DIALOG_FOOTPRINT_CHECKER::deleteAllMarkers(), DIALOG_DRC::deleteAllMarkers(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), DSN::SPECCTRA_DB::FromSESSION(), and ~BOARD().

◆ DeleteMARKERs() [2/2]

void BOARD::DeleteMARKERs ( bool  aWarningsAndErrors,
bool  aExclusions 
)

Definition at line 886 of file board.cpp.

887{
888 // Deleting lots of items from a vector can be very slow. Copy remaining items instead.
889 MARKERS remaining;
890
891 for( PCB_MARKER* marker : m_markers )
892 {
893 if( ( marker->GetSeverity() == RPT_SEVERITY_EXCLUSION && aExclusions )
894 || ( marker->GetSeverity() != RPT_SEVERITY_EXCLUSION && aWarningsAndErrors ) )
895 {
896 delete marker;
897 }
898 else
899 {
900 remaining.push_back( marker );
901 }
902 }
903
904 m_markers = remaining;
905}
@ RPT_SEVERITY_EXCLUSION

References m_markers, and RPT_SEVERITY_EXCLUSION.

◆ DeleteStructure()

void BOARD_ITEM::DeleteStructure ( )
inherited

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

Definition at line 144 of file board_item.cpp.

145{
147
148 if( parent )
149 parent->Remove( this );
150
151 delete this;
152}
Abstract interface for BOARD_ITEMs capable of storing other items inside.
BOARD_ITEM_CONTAINER * GetParent() const
Definition: board_item.h:152

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

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

◆ Drawings() [1/2]

◆ Drawings() [2/2]

const DRAWINGS & BOARD::Drawings ( ) const
inline

Definition at line 311 of file board.h.

311{ return m_drawings; }

References m_drawings.

◆ Duplicate()

BOARD_ITEM * BOARD_ITEM::Duplicate ( ) const
virtualinherited

Create a copy of this BOARD_ITEM.

Reimplemented in FOOTPRINT.

Definition at line 160 of file board_item.cpp.

161{
162 BOARD_ITEM* dupe = static_cast<BOARD_ITEM*>( Clone() );
163 const_cast<KIID&>( dupe->m_Uuid ) = KIID();
164
165 if( dupe->GetParentGroup() )
166 dupe->GetParentGroup()->AddItem( dupe );
167
168 return static_cast<BOARD_ITEM*>( dupe );
169}
PCB_GROUP * GetParentGroup() const
Definition: board_item.h:64
const KIID m_Uuid
Definition: eda_item.h:506
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
Definition: eda_item.cpp:82
bool AddItem(BOARD_ITEM *aItem)
Add item to group.
Definition: pcb_group.cpp:39

References PCB_GROUP::AddItem(), EDA_ITEM::Clone(), BOARD_ITEM::GetParentGroup(), and EDA_ITEM::m_Uuid.

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

◆ EndNets()

NETINFO_LIST::iterator BOARD::EndNets ( ) const
inline
Returns
iterator to the last element of the NETINFO_ITEMs list.

Definition at line 785 of file board.h.

786 {
787 return m_NetInfo.end();
788 }
iterator end() const
Definition: netinfo.h:449

References NETINFO_LIST::end(), and m_NetInfo.

◆ FillItemMap()

void BOARD::FillItemMap ( std::map< KIID, EDA_ITEM * > &  aMap)

Definition at line 996 of file board.cpp.

997{
998 // the board itself
999 aMap[ m_Uuid ] = this;
1000
1001 for( PCB_TRACK* track : Tracks() )
1002 aMap[ track->m_Uuid ] = track;
1003
1004 for( FOOTPRINT* footprint : Footprints() )
1005 {
1006 aMap[ footprint->m_Uuid ] = footprint;
1007
1008 for( PAD* pad : footprint->Pads() )
1009 aMap[ pad->m_Uuid ] = pad;
1010
1011 aMap[ footprint->Reference().m_Uuid ] = &footprint->Reference();
1012 aMap[ footprint->Value().m_Uuid ] = &footprint->Value();
1013
1014 for( BOARD_ITEM* drawing : footprint->GraphicalItems() )
1015 aMap[ drawing->m_Uuid ] = drawing;
1016 }
1017
1018 for( ZONE* zone : Zones() )
1019 aMap[ zone->m_Uuid ] = zone;
1020
1021 for( BOARD_ITEM* drawing : Drawings() )
1022 aMap[ drawing->m_Uuid ] = drawing;
1023
1024 for( PCB_MARKER* marker : m_markers )
1025 aMap[ marker->m_Uuid ] = marker;
1026
1027 for( PCB_GROUP* group : m_groups )
1028 aMap[ group->m_Uuid ] = group;
1029}
DRAWINGS & Drawings()
Definition: board.h:310

References Drawings(), Footprints(), group, m_groups, m_markers, EDA_ITEM::m_Uuid, pad, Tracks(), and Zones().

Referenced by WriteDRCReport(), and DIALOG_DRC::writeReport().

◆ FinalizeBulkAdd()

void BOARD::FinalizeBulkAdd ( std::vector< BOARD_ITEM * > &  aNewItems)

Must be used if Add() is used using a BULK_x ADD_MODE to generate a change event for listeners.

Definition at line 767 of file board.cpp.

768{
770}
virtual void OnBoardItemsAdded(BOARD &aBoard, std::vector< BOARD_ITEM * > &aBoardItem)
Definition: board.h:241

References InvokeListeners(), and BOARD_LISTENER::OnBoardItemsAdded().

Referenced by PCB_PARSER::parseBOARD_unchecked(), BOARD_COMMIT::Push(), and BOARD_COMMIT::Revert().

◆ FinalizeBulkRemove()

void BOARD::FinalizeBulkRemove ( std::vector< BOARD_ITEM * > &  aRemovedItems)

Must be used if Remove() is used using a BULK_x REMOVE_MODE to generate a change event for listeners.

Definition at line 773 of file board.cpp.

774{
776}
virtual void OnBoardItemsRemoved(BOARD &aBoard, std::vector< BOARD_ITEM * > &aBoardItem)
Definition: board.h:243

References InvokeListeners(), and BOARD_LISTENER::OnBoardItemsRemoved().

Referenced by BOARD_COMMIT::Push(), and BOARD_COMMIT::Revert().

◆ FindFootprintByPath()

FOOTPRINT * BOARD::FindFootprintByPath ( const KIID_PATH aPath) const

Search for a FOOTPRINT within this board with the given path.

Parameters
aPathThe path ([sheetUUID, .., symbolUUID]) to search for.
Returns
If found, the FOOTPRINT having the given uuid, else NULL.

Definition at line 1415 of file board.cpp.

1416{
1417 for( FOOTPRINT* footprint : m_footprints )
1418 {
1419 if( footprint->GetPath() == aPath )
1420 return footprint;
1421 }
1422
1423 return nullptr;
1424}

References m_footprints.

Referenced by PCB_EDIT_FRAME::LoadFootprints().

◆ FindFootprintByReference()

FOOTPRINT * BOARD::FindFootprintByReference ( const wxString &  aReference) const

Search for a FOOTPRINT within this board with the given reference designator.

Finds only the first one, if there is more than one such FOOTPRINT.

Parameters
aReferenceThe reference designator of the FOOTPRINT to find.
Returns
If found the FOOTPRINT having the given reference designator, else nullptr.

Definition at line 1403 of file board.cpp.

1404{
1405 for( FOOTPRINT* footprint : m_footprints )
1406 {
1407 if( aReference == footprint->GetReference() )
1408 return footprint;
1409 }
1410
1411 return nullptr;
1412}

References m_footprints.

Referenced by DSN::SPECCTRA_DB::FromSESSION(), PCB_EDIT_FRAME::LoadFootprints(), and DRC_TEST_PROVIDER_SCHEMATIC_PARITY::testNetlist().

◆ FindNet() [1/2]

NETINFO_ITEM * BOARD::FindNet ( const wxString &  aNetname) const

Search for a net with the given name.

Parameters
aNetnameA Netname to search for.
Returns
the net if found or NULL if not found.

Definition at line 1397 of file board.cpp.

1398{
1399 return m_NetInfo.GetNetItem( aNetname );
1400}
NETINFO_ITEM * GetNetItem(int aNetCode) const

References NETINFO_LIST::GetNetItem(), and m_NetInfo.

◆ FindNet() [2/2]

NETINFO_ITEM * BOARD::FindNet ( int  aNetcode) const

Search for a net with the given netcode.

Parameters
aNetcodeA netcode to search for.
Returns
the net if found or NULL if not found.

Definition at line 1382 of file board.cpp.

1383{
1384 // the first valid netcode is 1 and the last is m_NetInfo.GetCount()-1.
1385 // zero is reserved for "no connection" and is not actually a net.
1386 // nullptr is returned for non valid netcodes
1387
1388 wxASSERT( m_NetInfo.GetNetCount() > 0 );
1389
1390 if( aNetcode == NETINFO_LIST::UNCONNECTED && m_NetInfo.GetNetCount() == 0 )
1392 else
1393 return m_NetInfo.GetNetItem( aNetcode );
1394}
static const int UNCONNECTED
Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED (typically -1) whe...
Definition: netinfo.h:373
static NETINFO_ITEM * OrphanedItem()
Wrapper class, so you can iterate through NETINFO_ITEM*s, not std::pair<int/wxString,...
Definition: netinfo.h:381
unsigned GetNetCount() const
Definition: netinfo.h:347

References NETINFO_LIST::GetNetCount(), NETINFO_LIST::GetNetItem(), m_NetInfo, NETINFO_LIST::OrphanedItem(), and NETINFO_LIST::UNCONNECTED.

Referenced by PCAD2KICAD::PCB_PAD::AddToFootprint(), CreateSignalsSection(), PNS_PCBNEW_RULE_RESOLVER::DpCoupledNet(), PNS_PCBNEW_RULE_RESOLVER::DpNetPair(), PNS_PCBNEW_RULE_RESOLVER::DpNetPolarity(), PCB_EDIT_FRAME::Edit_Zone_Params(), DIALOG_COPPER_ZONE::ensureSelectedNetIsVisible(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), DSN::SPECCTRA_DB::FromBOARD(), DSN::SPECCTRA_DB::FromSESSION(), inDiffPairFunc(), DRC_ENGINE::IsNetADiffPair(), LEGACY_PLUGIN::loadNETINFO_ITEM(), LEGACY_PLUGIN::loadPAD(), MapNets(), PNS_PCBNEW_RULE_RESOLVER::NetName(), DIALOG_NET_INSPECTOR::onAddNet(), DIALOG_NET_INSPECTOR::onRenameNet(), NETINFO_MAPPING::iterator::operator*(), PCB_PARSER::parseNETINFO_ITEM(), PCB_PARSER::parsePAD(), PCB_PARSER::parseZONE(), BOARD_EDITOR_CONTROL::RepairBoard(), SanitizeNetcodes(), BOARD_CONNECTED_ITEM::SetNetCode(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), BOARD_NETLIST_UPDATER::updateComponentPadConnections(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), and ROUTER_TOOL::UpdateMessagePanel().

◆ Flip()

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

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 in PCB_GROUP, FOOTPRINT, FP_SHAPE, FP_TEXT, FP_TEXTBOX, PCB_BITMAP, PCB_DIMENSION_BASE, PCB_MARKER, PCB_SHAPE, PCB_TARGET, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_ARC, PCB_VIA, ZONE, and PAD.

Definition at line 234 of file board_item.cpp.

235{
236 wxMessageBox( wxT( "virtual BOARD_ITEM::Flip used, should not occur" ), GetClass() );
237}

References EDA_ITEM::GetClass().

◆ Footprints() [1/2]

FOOTPRINTS & BOARD::Footprints ( )
inline

Definition at line 307 of file board.h.

307{ return m_footprints; }

References m_footprints.

Referenced by ZONE_FILLER::addHatchFillTypeOnZone(), GERBER_JOBFILE_WRITER::addJSONDesignRules(), RENDER_3D_RAYTRACE::addPadsAndVias(), AllConnectedItems(), PCB_CONTROL::AppendBoard(), AR_AUTOPLACER::AR_AUTOPLACER(), AR_AUTOPLACER::AutoplaceFootprints(), CN_CONNECTIVITY_ALGO::Build(), build_pad_testpoints(), ZONE_FILLER::buildCopperItemClearances(), FROM_TO_CACHE::buildEndpointList(), DIALOG_BOARD_REANNOTATE::BuildFootprintList(), GENDRILL_WRITER_BASE::buildHolesList(), DIALOG_NET_INSPECTOR::buildNetsList(), HYPERLYNX_EXPORTER::collectNetObjects(), TEARDROP_MANAGER::collectPadsCandidate(), ConvertCrossReferencesToKIIDs(), CreateComponentsSection(), BOARD_ADAPTER::createLayers(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), CreateShapesSection(), CreateSignalsSection(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), PCB_DRAW_PANEL_GAL::DisplayBoard(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), doPushPadProperties(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_EDIT_FRAME::Export_IDF3(), EXPORTER_PCB_VRML::ExportFp3DModelsAsLinkedFile(), PCB_EDIT_FRAME::ExportToGenCAD(), EXPORTER_PCB_VRML::ExportVRML_File(), ZONE_FILLER::Fill(), FillItemMap(), ZONE_FILLER::fillNonCopperZone(), DSN::SPECCTRA_DB::FlipFOOTPRINTs(), DRC_TEST_PROVIDER::forEachGeometryItem(), PCB_PLUGIN::format(), DSN::SPECCTRA_DB::FromBOARD(), RENDER_3D_OPENGL::generateViasAndPads(), PLACE_FILE_EXPORTER::GenPositionData(), PLACE_FILE_EXPORTER::GenReportData(), DIALOG_BOARD_STATISTICS::getDataFromPCB(), GetItem(), GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), PCB_DRAW_PANEL_GAL::GetMsgPanelInfo(), GetNodesCount(), GetPadFast(), GetPads(), GetSortedPadListByXthenYCoord(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE_ON_MOVE::Init(), DIALOG_GENDRILL::InitDisplayParams(), ZONE_FILLER::knockoutThermalReliefs(), RENDER_3D_RAYTRACE::load3DModels(), RENDER_3D_OPENGL::load3dModels(), DRC_ENGINE::loadImplicitRules(), BOARD_INSPECTION_TOOL::LocalRatsnestTool(), BOARD_INSPECTION_TOOL::makeDRCEngine(), AR_AUTOPLACER::nearestPad(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), PCB_PARSER::parseBOARD_unchecked(), PCB_CONTROL::Paste(), AR_AUTOPLACER::pickFootprint(), PCB_CONTROL::placeBoardItems(), BRDITEMS_PLOTTER::PlotDrillMarks(), PlotInteractiveLayer(), PlotLayerOutlines(), PlotSolderMaskLayer(), PlotStandardLayer(), POSITION_RELATIVE_TOOL::PositionRelative(), DIALOG_EXCHANGE_FOOTPRINTS::processMatchingFootprints(), BOARD_COMMIT::Push(), BOARD_REANNOTATE_TOOL::ReannotateDuplicates(), RecreateCmpFile(), RENDER_3D_OPENGL::render3dModelsSelected(), FOOTPRINT_EDITOR_CONTROL::RepairFootprint(), DSN::SPECCTRA_DB::RevertFOOTPRINTs(), DRC_CACHE_GENERATOR::Run(), DRC_TEST_PROVIDER_ANNULAR_WIDTH::Run(), DRC_TEST_PROVIDER_CONNECTION_WIDTH::Run(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run(), DRC_TEST_PROVIDER_FOOTPRINT_CHECKS::Run(), DRC_TEST_PROVIDER_HOLE_SIZE::Run(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), DRC_TEST_PROVIDER_SOLDER_MASK::Run(), PCB_EDIT_FRAME::RunActionPlugin(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), CLIPBOARD_IO::SaveSelection(), DIALOG_FIND::search(), FOOTPRINT_SEARCH_HANDLER::Search(), searchAreas(), searchFootprints(), FOOTPRINT_EDIT_FRAME::SelectFootprintFromBoard(), SetElementVisibility(), ZONE_FILLER::subtractHigherPriorityZones(), PNS_KICAD_IFACE_BASE::SyncWorld(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE::testCourtyardClearances(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE_ON_MOVE::testCourtyardClearances(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE::testFootprintCourtyardDefinitions(), TestForExistingItem(), DRC_TEST_PROVIDER_SCHEMATIC_PARITY::testNetlist(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadClearances(), DRC_TEST_PROVIDER_ZONE_CONNECTIONS::testZoneLayer(), DIALOG_UNUSED_PAD_LAYERS::TransferDataFromWindow(), NETINFO_MAPPING::Update(), BOARD_NETLIST_UPDATER::UpdateNetlist(), HYPERLYNX_EXPORTER::writeDevices(), and HYPERLYNX_EXPORTER::writePadStacks().

◆ Footprints() [2/2]

const FOOTPRINTS & BOARD::Footprints ( ) const
inline

Definition at line 308 of file board.h.

308{ return m_footprints; }

References m_footprints.

◆ Get() [1/3]

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

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

◆ Get() [2/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty) const
inlineinherited

Definition at line 84 of file inspectable.h.

85 {
87 const void* object = propMgr.TypeCast( this, TYPE_HASH( *this ), aProperty->OwnerHash() );
88 return object ? aProperty->getter( object ) : wxAny();
89 }
virtual wxAny getter(const void *aObject) const =0

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

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

◆ Get() [3/3]

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

Definition at line 92 of file inspectable.h.

93 {
95 const void* object = propMgr.TypeCast( this, TYPE_HASH( *this ), aProperty->OwnerHash() );
96
97 if( !object )
98 throw std::runtime_error( "Could not cast INSPECTABLE to the requested type" );
99
100 return aProperty->get<T>( object );
101 }

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

◆ GetArea()

ZONE * BOARD::GetArea ( int  index) const
inline

Return the Zone at a given index.

Parameters
indexThe array type index into a collection of ZONE *.
Returns
a pointer to the Area or NULL if index out of range.

Definition at line 910 of file board.h.

911 {
912 if( (unsigned) index < m_zones.size() )
913 return m_zones[index];
914
915 return nullptr;
916 }

References m_zones.

Referenced by SaveCopyOfZones(), and UpdateCopyOfZonesList().

◆ GetAreaCount()

int BOARD::GetAreaCount ( ) const
inline
Returns
The number of copper pour areas or ZONEs.

Definition at line 926 of file board.h.

927 {
928 return static_cast<int>( m_zones.size() );
929 }

References m_zones.

◆ GetBoard() [1/2]

BOARD * BOARD_ITEM::GetBoard ( )
virtualinherited

Definition at line 51 of file board_item.cpp.

52{
53 if( Type() == PCB_T )
54 return static_cast<BOARD*>( this );
55
56 BOARD_ITEM* parent = GetParent();
57
58 if( parent )
59 return parent->GetBoard();
60
61 return nullptr;
62}
virtual const BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:37
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:265

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

◆ GetBoard() [2/2]

const BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

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

Definition at line 37 of file board_item.cpp.

38{
39 if( Type() == PCB_T )
40 return static_cast<const BOARD*>( this );
41
42 BOARD_ITEM* parent = GetParent();
43
44 if( parent )
45 return parent->GetBoard();
46
47 return nullptr;
48}

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

Referenced by ZONE_FILLER::addHoleKnockout(), BOARD_ADAPTER::addShape(), FOOTPRINT::BuildCourtyardCaches(), PAD::BuildEffectivePolygon(), PAD::BuildEffectiveShapes(), ZONE::BuildSmoothedPoly(), collidesWithArea(), KIGFX::PCB_PAINTER::draw(), KIGFX::PCB_PAINTER::Draw(), enclosedByAreaFunc(), existsOnLayerFunc(), PAD::FlashLayer(), PCB_VIA::FlashLayer(), FP_SHAPE::Flip(), FP_TEXT::Flip(), FP_TEXTBOX::Flip(), PCB_DIMENSION_BASE::Flip(), PCB_SHAPE::Flip(), PCB_TARGET::Flip(), PCB_TEXT::Flip(), PCB_TEXTBOX::Flip(), PCB_TRACK::Flip(), PCB_ARC::Flip(), PCB_VIA::Flip(), ZONE::Flip(), fromToFunc(), BOARD_ITEM::GetBoard(), PCB_EXPR_CONTEXT::GetBoard(), NETINFO_ITEM::GetBoundingBox(), FOOTPRINT::GetBoundingBox(), FOOTPRINT::GetBoundingHull(), FOOTPRINT::GetCourtyard(), BOARD_CONNECTED_ITEM::GetEffectiveNetClass(), PCB_VIA::GetEffectiveShape(), getFieldFunc(), ZONE::GetInteractingZones(), BOARD_ITEM::GetLayerName(), PCB_VIA::GetMinAnnulus(), NETINFO_ITEM::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), BOARD_CONNECTED_ITEM::GetOwnClearance(), PAD::GetOwnClearance(), ZONE::GetSelectMenuText(), PCB_MARKER::GetSeverity(), FP_TEXT::GetShownText(), FP_TEXTBOX::GetShownText(), PAD::GetSolderMaskExpansion(), PCB_VIA::GetSolderMaskExpansion(), PAD::GetSolderPasteMargin(), GetTrackLength(), PCB_TRACK::GetWidthConstraint(), inDiffPairFunc(), intersectsAreaFunc(), intersectsBackCourtyardFunc(), intersectsCourtyardFunc(), intersectsFrontCourtyardFunc(), BOARD_ITEM::IsLocked(), PCB_VIA::IsTented(), BOARD_ITEM::layerMaskDescribe(), PCB_VIA::layerMaskDescribe(), PAD::MergePrimitivesAsPolygon(), DIALOG_TEXTBOX_PROPERTIES::onBorderChecked(), EAGLE_PLUGIN::packageWire(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), ResolveDRCExclusions(), BOARD_CONNECTED_ITEM::SetNetCode(), TEARDROP_DIALOG::TEARDROP_DIALOG(), DRC_TEST_PROVIDER_SOLDER_MASK::testItemAgainstItems(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), ZONE::TransformSmoothedOutlineToPolygon(), FOOTPRINT::ViewBBox(), PCB_TRACK::ViewBBox(), PAD::ViewGetLOD(), PCB_BITMAP::ViewGetLOD(), and PCB_VIA::ViewGetLOD().

◆ GetBoardEdgesBoundingBox()

const BOX2I BOARD::GetBoardEdgesBoundingBox ( ) const
inline

Return the board bounding box calculated using exclusively the board edges (graphics on Edge.Cuts layer).

If there are items outside of the area limited by Edge.Cuts graphics, the items will not be taken into account.

Returns
bounding box calculated using exclusively the board edges.

Definition at line 821 of file board.h.

822 {
823 return ComputeBoundingBox( true );
824 }
BOX2I ComputeBoundingBox(bool aBoardEdgesOnly=false) const
Calculate the bounding box containing all board items (or board edge segments).
Definition: board.cpp:1157

References ComputeBoundingBox().

Referenced by GERBER_JOBFILE_WRITER::addJSONGeneralSpecs(), AUTOPLACE_TOOL::autoplace(), BuildBoardPolygonOutlines(), EAGLE_PLUGIN::centerBoard(), BOARD_NETLIST_UPDATER::estimateFootprintInsertionPosition(), GENDRILL_WRITER_BASE::genDrillMapFile(), AR_AUTOPLACER::genPlacementRoutingMatrix(), PCB_BASE_FRAME::GetBoardBoundingBox(), idf_export_outline(), CADSTAR_PCB_ARCHIVE_PLUGIN::Load(), PCB_EDIT_FRAME::OnExportIDF3(), and ALTIUM_PCB::Parse().

◆ GetBoardPolygonOutlines()

bool BOARD::GetBoardPolygonOutlines ( SHAPE_POLY_SET aOutlines,
OUTLINE_ERROR_HANDLER aErrorHandler = nullptr 
)

Extract the board outlines and build a closed polygon from lines, arcs and circle items on edge cut layer.

Any closed outline inside the main outline is a hole. All contours should be closed, i.e. have valid vertices to build a closed polygon.

Parameters
aOutlinesis the SHAPE_POLY_SET to fill in with outlines/holes.
aErrorHandleris an optional DRC_ITEM error handler.
Returns
true if success, false if a contour is not valid

Definition at line 1883 of file board.cpp.

1885{
1886 int chainingEpsilon = pcbIUScale.mmToIU( 0.02 ); // max dist from one endPt to next startPt
1887
1888 bool success = BuildBoardPolygonOutlines( this, aOutlines, GetDesignSettings().m_MaxError,
1889 chainingEpsilon, aErrorHandler );
1890
1891 // Make polygon strictly simple to avoid issues (especially in 3D viewer)
1893
1894 return success;
1895}
void Simplify(POLYGON_MODE aFastMode)
bool BuildBoardPolygonOutlines(BOARD *aBoard, SHAPE_POLY_SET &aOutlines, int aErrorMax, int aChainingEpsilon, OUTLINE_ERROR_HANDLER *aErrorHandler)
Extracts the board outlines and build a closed polygon from lines, arcs and circle items on edge cut ...

References BuildBoardPolygonOutlines(), GetDesignSettings(), EDA_IU_SCALE::mmToIU(), pcbIUScale, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE, and SHAPE_POLY_SET::Simplify().

Referenced by DSN::SPECCTRA_DB::BuiltBoardOutlines(), BOARD_ADAPTER::createBoardPolygon(), DRAWING_TOOL::DrawBoardCharacteristics(), EXPORTER_PCB_VRML::ExportVrmlBoard(), ZONE_FILLER::Fill(), AR_AUTOPLACER::genPlacementRoutingMatrix(), DIALOG_BOARD_STATISTICS::getDataFromPCB(), PlotSolderMaskLayer(), PNS_KICAD_IFACE_BASE::SyncWorld(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZonesToZones(), and HYPERLYNX_EXPORTER::writeBoardInfo().

◆ GetBoardUse()

BOARD_USE BOARD::GetBoardUse ( ) const
inline

Get what the board use is.

Returns
what the board is being used for

Definition at line 284 of file board.h.

284{ return m_boardUse; }

References m_boardUse.

Referenced by BOARD_ITEM::IsLocked().

◆ GetBoundingBox()

const BOX2I BOARD::GetBoundingBox ( ) const
inlineoverridevirtual

Return the orthogonal bounding box of this object for display purposes.

This box should be an enclosing perimeter for visible components of this object, and the units should be in the pcb or schematic coordinate system. It is OK to overestimate the size by a few counts.

Reimplemented from EDA_ITEM.

Definition at line 807 of file board.h.

808 {
809 return ComputeBoundingBox( false );
810 }

References ComputeBoundingBox().

Referenced by buildBoardBoundingBoxPoly(), PCB_BASE_FRAME::GetBoardBoundingBox(), GetFocusPosition(), PCB_EDIT_FRAME::OnExportVRML(), DRC_TEST_PROVIDER_MISC::testOutline(), and PANEL_PCBNEW_COLOR_SETTINGS::zoomFitPreview().

◆ GetCenter()

virtual VECTOR2I BOARD_ITEM::GetCenter ( ) const
inlinevirtualinherited

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

Returns
center point of the item

Reimplemented in PAD, PCB_MARKER, PCB_SHAPE, and PCB_ARC.

Definition at line 85 of file board_item.h.

86 {
87 return GetBoundingBox().GetCenter();
88 }
const Vec GetCenter() const
Definition: box2.h:195
virtual const BOX2I GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
Definition: eda_item.cpp:74

References EDA_ITEM::GetBoundingBox(), and BOX2< Vec >::GetCenter().

Referenced by PCB_GRID_HELPER::computeAnchors(), PCB_SELECTION_TOOL::FindItem(), and ALTIUM_PCB::HelperParseDimensions6Radial().

◆ GetClass()

wxString BOARD::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Implements EDA_ITEM.

Definition at line 879 of file board.h.

880 {
881 return wxT( "BOARD" );
882 }

Referenced by Visit().

◆ GetConnectivity()

std::shared_ptr< CONNECTIVITY_DATA > BOARD::GetConnectivity ( ) const
inline

Return a list of missing connections between components/tracks.

Returns
an object that contains information about missing connections.

Definition at line 424 of file board.h.

424{ return m_connectivity; }

References m_connectivity.

Referenced by BuildConnectivity(), BOARD_NETLIST_UPDATER::cacheCopperZoneConnections(), FROM_TO_CACHE::cacheFromToPaths(), BOARD_INSPECTION_TOOL::calculateSelectionRatsnest(), DIALOG_NET_INSPECTOR::calculateViaLength(), ZONE_FILLER_TOOL::CheckAllZones(), TRACKS_CLEANER::cleanup(), PCB_BASE_FRAME::Compile_Ratsnest(), TRACKS_CLEANER::deleteDanglingTracks(), TRACKS_CLEANER::deleteTracksInPads(), PCB_DRAW_PANEL_GAL::DisplayBoard(), EDIT_TOOL::DragArcTrack(), PCB_EDIT_FRAME::Edit_Zone_Params(), ZONE_FILLER::Fill(), ZONE_FILLER_TOOL::FillAllZones(), EDIT_TOOL::FilletTracks(), PCB_VIA::FlashLayer(), fromToFunc(), NETINFO_ITEM::GetBoundingBox(), TRACKS_CLEANER::getConnectedItems(), GetMsgPanelInfo(), PCB_DRAW_PANEL_GAL::GetMsgPanelInfo(), GetTrackLength(), PCB_SELECTION_TOOL::grabUnconnected(), PCB_EDIT_FRAME::ImportSpecctraSession(), ROUTER_TOOL::InlineDrag(), TRACKS_CLEANER::mergeCollinearSegments(), DIALOG_DRC::OnDRCItemRClick(), DIALOG_DRC::OnDRCItemSelected(), PadDelete(), PCB_BASE_FRAME::PlaceFootprint(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), DIALOG_NET_INSPECTOR::relevantConnectivityItems(), TRACKS_CLEANER::removeShortingTrackSegments(), ResolveDRCExclusions(), BOARD_COMMIT::Revert(), ROUTER_TOOL::RouteSelected(), DRC_TEST_PROVIDER_CONNECTIVITY::Run(), test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run(), DRC_TEST_PROVIDER_ZONE_CONNECTIONS::Run(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), PCB_SELECTION_TOOL::selectAllConnectedTracks(), PCB_SELECTION_TOOL::SelectAllItemsOnNet(), PCB_SELECTION_TOOL::selectConnections(), PCB_SELECTION_TOOL::selectUnconnected(), PCB_EDIT_FRAME::SetBoard(), TRACKS_CLEANER::testTrackEndpointIsNode(), DRC_TEST_PROVIDER_ZONE_CONNECTIONS::testZoneLayer(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), BOARD_NETLIST_UPDATER::UpdateNetlist(), ZONE_FILLER_TOOL::ZoneFill(), and ZONE_FILLER_TOOL::ZoneFillDirty().

◆ GetCopperLayerCount()

int BOARD::GetCopperLayerCount ( ) const
Returns
The number of copper layers in the BOARD.

Definition at line 473 of file board.cpp.

474{
476}

References BOARD_DESIGN_SETTINGS::GetCopperLayerCount(), and GetDesignSettings().

Referenced by GERBER_JOBFILE_WRITER::addJSONDesignRules(), GERBER_JOBFILE_WRITER::addJSONFilesAttributes(), GERBER_JOBFILE_WRITER::addJSONGeneralSpecs(), GERBER_JOBFILE_WRITER::addJSONMaterialStackup(), PCB_CONTROL::AppendBoard(), GENDRILL_WRITER_BASE::BuildFileFunctionAttributeString(), DSN::SPECCTRA_DB::buildLayerMaps(), PANEL_SETUP_LAYERS::CheckCopperLayerCount(), compute_pad_access_code(), EXPORTER_PCB_VRML::ComputeLayer3D_Zpos(), CreateComponentsSection(), CreatePadsShapesSection(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), CreateRoutesSection(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DRAWING_TOOL::DrawVia(), PCB_TRACK::Flip(), PCB_ARC::Flip(), PCB_VIA::Flip(), DSN::SPECCTRA_DB::FromBOARD(), GetGerberFileFunctionAttribute(), BOARD_ADAPTER::InitSettings(), EAGLE_PLUGIN::Load(), DSN::SPECCTRA_DB::makeIMAGE(), DSN::SPECCTRA_DB::makePADSTACK(), DSN::SPECCTRA_DB::makeVIA(), APPEARANCE_CONTROLS::rebuildLayerContextMenu(), PCB_BASE_FRAME::SwitchLayer(), PANEL_SETUP_BOARD_STACKUP::synchronizeWithBoard(), DIALOG_SWAP_LAYERS::TransferDataFromWindow(), DIALOG_SWAP_LAYERS::TransferDataToWindow(), PANEL_SETUP_LAYERS::TransferDataToWindow(), and via_access_code().

◆ GetDesignSettings()

BOARD_DESIGN_SETTINGS & BOARD::GetDesignSettings ( ) const
Returns
the BOARD_DESIGN_SETTINGS for this BOARD

Definition at line 602 of file board.cpp.

603{
604 return *m_designSettings;
605}

References m_designSettings.

Referenced by AddGerberX2Header(), ZONE_FILLER::addHoleKnockout(), GERBER_JOBFILE_WRITER::addJSONDesignRules(), GERBER_JOBFILE_WRITER::addJSONGeneralSpecs(), GERBER_JOBFILE_WRITER::addJSONMaterialStackup(), BOARD(), CONNECTIVITY_DATA::Build(), build_pad_testpoints(), build_via_testpoints(), ZONE_FILLER::buildCopperItemClearances(), PAD::BuildEffectivePolygon(), PAD::BuildEffectiveShapes(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildNetclassesGrid(), ZONE::BuildSmoothedPoly(), ZONE_FILLER::buildThermalSpokes(), DIALOG_NET_INSPECTOR::calculateViaLength(), CADSTAR_PCB_ARCHIVE_LOADER::calculateZonePriorities(), EDIT_TOOL::ChangeTrackWidth(), GRAPHICS_CLEANER::CleanupBoard(), NETINFO_ITEM::Clear(), FOOTPRINT_EDIT_FRAME::Clear_Pcb(), ClearProject(), collidesWithArea(), ZONE_CREATE_HELPER::commitZone(), EXPORTER_PCB_VRML::ComputeLayer3D_Zpos(), ConvertBrdLayerToPolygonalContours(), BOARD_ADAPTER::createBoardPolygon(), MICROWAVE_TOOL::createInductorBetween(), CreatePadsShapesSection(), BOARD_ADAPTER::createPadWithMargin(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), CreateRoutesSection(), DIALOG_EXPORT_SVG::CreateSVGFile(), ROUTER_TOOL::CustomTrackWidthDialog(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME(), ROUTER_TOOL::DpDimensionsDialog(), DRAWING_TOOL::DrawBoardCharacteristics(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawVia(), enclosedByAreaFunc(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), VIA_SIZE_MENU::eventHandler(), EVT_GRID_CMD_CELL_CHANGED(), PCB_EDIT_FRAME::Export_IDF3(), EXPORTER_PCB_VRML::EXPORTER_PCB_VRML(), PCB_EDIT_FRAME::ExportToGenCAD(), ZONE_FILLER::Fill(), ZONE_FILLER::fillCopperZone(), ZONE_FILLER::fillNonCopperZone(), FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME(), PCB_PLUGIN::formatGeneral(), PCB_PLUGIN::formatSetup(), DSN::SPECCTRA_DB::FromBOARD(), DSN::SPECCTRA_DB::FromSESSION(), PCB_BASE_FRAME::GetAuxOrigin(), GetBoardPolygonOutlines(), GetCopperLayerCount(), PCB_BASE_FRAME::GetDesignSettings(), FOOTPRINT_EDIT_FRAME::GetDesignSettings(), BOARD_CONNECTED_ITEM::GetEffectiveNetClass(), PCB_VIA::GetEffectiveShape(), GetEnabledLayers(), PCB_BASE_FRAME::GetGridOrigin(), CADSTAR_PCB_ARCHIVE_LOADER::getHatchCodeAngle(), BOARD_ADAPTER::GetHolePlatingThickness(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadHatchCodeGap(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadHatchCodeThickness(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadNet(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad(), CADSTAR_PCB_ARCHIVE_LOADER::getLineThickness(), PCB_VIA::GetMinAnnulus(), BOARD_CONNECTED_ITEM::GetOwnClearance(), PAD::GetOwnClearance(), DRAWING_TOOL::getSegmentWidth(), PCB_MARKER::GetSeverity(), PCB_BASE_FRAME::GetSeverity(), PAD::GetSolderMaskExpansion(), PCB_VIA::GetSolderMaskExpansion(), GetTrackLength(), PCB_TRACK::GetWidthConstraint(), PCB_BASE_FRAME::GetZoneSettings(), GetZoneSettings(), ROUTER_TOOL::handleLayerSwitch(), ALTIUM_PCB::HelperCreateBoardOutline(), PANEL_SETUP_BOARD_FINISH::ImportSettingsFrom(), PANEL_SETUP_BOARD_STACKUP::ImportSettingsFrom(), PANEL_SETUP_CONSTRAINTS::ImportSettingsFrom(), PANEL_SETUP_MASK_AND_PASTE::ImportSettingsFrom(), PANEL_SETUP_TEXT_AND_GRAPHICS::ImportSettingsFrom(), PANEL_SETUP_TRACKS_AND_VIAS::ImportSettingsFrom(), PNS_KICAD_IFACE_BASE::ImportSizes(), DIALOG_PLOT::init_Dialog(), initializePlotter(), BOARD_ADAPTER::InitSettings(), IsLayerEnabled(), IsLayerVisible(), PNS_PCBNEW_RULE_RESOLVER::IsNetTieExclusion(), ZONE_FILLER::knockoutThermalReliefs(), EAGLE_PLUGIN::Load(), LoadBoard(), CADSTAR_PCB_ARCHIVE_LOADER::loadBoardStackup(), EAGLE_PLUGIN::loadClasses(), CADSTAR_PCB_ARCHIVE_LOADER::loadDesignRules(), FABMASTER::loadFootprints(), LEGACY_PLUGIN::loadGENERAL(), DRC_ENGINE::loadImplicitRules(), LEGACY_PLUGIN::loadNETCLASS(), FABMASTER::loadOutline(), EAGLE_PLUGIN::loadPlain(), FABMASTER::loadPolygon(), LEGACY_PLUGIN::loadSETUP(), EAGLE_PLUGIN::loadSignals(), CADSTAR_PCB_ARCHIVE_LOADER::loadTemplates(), FABMASTER::loadVias(), BOARD_INSPECTION_TOOL::makeDRCEngine(), DSN::SPECCTRA_DB::makePADSTACK(), CONVERT_TOOL::makePolysFromGraphics(), PAD::MergePrimitivesAsPolygon(), EDIT_TOOL::MoveExact(), NETINFO_ITEM::NETINFO_ITEM(), NewBoard(), DIALOG_PAD_PROPERTIES::onAddPrimitive(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), DIALOG_TEXTBOX_PROPERTIES::onBorderChecked(), APPEARANCE_CONTROLS::onNetclassContextMenu(), PANEL_SETUP_RULES::onScintillaCharAdded(), DIALOG_POSITION_RELATIVE::OnUseGridOriginClick(), PCB_EDIT_FRAME::OpenProjectFiles(), EAGLE_PLUGIN::packageWire(), DIALOG_PAD_PROPERTIES::padValuesOK(), PANEL_SETUP_BOARD_FINISH::PANEL_SETUP_BOARD_FINISH(), PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP(), PANEL_SETUP_CONSTRAINTS::PANEL_SETUP_CONSTRAINTS(), PANEL_SETUP_MASK_AND_PASTE::PANEL_SETUP_MASK_AND_PASTE(), PANEL_SETUP_TEXT_AND_GRAPHICS::PANEL_SETUP_TEXT_AND_GRAPHICS(), PANEL_SETUP_TRACKS_AND_VIAS::PANEL_SETUP_TRACKS_AND_VIAS(), ALTIUM_PCB::Parse(), ALTIUM_PCB::ParseBoard6Data(), PCB_PARSER::parseBoardStackup(), ALTIUM_PCB::ParseClasses6Data(), PCB_PARSER::parseGeneralSection(), PCB_PARSER::parseNETCLASS(), PCB_PARSER::parseSetup(), PLACE_FILE_EXPORTER::PLACE_FILE_EXPORTER(), DIALOG_PLOT::Plot(), PlotOneBoardLayer(), PlotSolderMaskLayer(), PlotStandardLayer(), ROUTER_TOOL::prepareInteractive(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), PNS_PCBNEW_RULE_RESOLVER::QueryConstraint(), APPEARANCE_CONTROLS::rebuildNets(), PAD_TOOL::RecombinePad(), PCB_EDIT_FRAME::RecordDRCExclusions(), Refresh(), DIALOG_PLOT::reInitDialog(), DRC_TOOL::Reset(), DRC_TEST_PROVIDER_ANNULAR_WIDTH::Run(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::Run(), DRC_TEST_PROVIDER_DISALLOW::Run(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::Run(), DRC_TEST_PROVIDER_SOLDER_MASK::Run(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), PCB_BASE_EDIT_FRAME::SetBoard(), SetCopperLayerCount(), SetEnabledLayers(), PCB_BASE_FRAME::SetGridOrigin(), NETINFO_ITEM::SetNetClass(), DIALOG_PLOT::SetPlotFormat(), SetProject(), PCB_BASE_FRAME::SetZoneSettings(), SetZoneSettings(), PNS_KICAD_IFACE_BASE::StackupHeight(), SynchronizeNetsAndNetClasses(), PNS_KICAD_IFACE_BASE::syncPad(), PNS_KICAD_IFACE_BASE::syncVia(), PNS_KICAD_IFACE_BASE::SyncWorld(), TEARDROP_DIALOG::TEARDROP_DIALOG(), TEARDROP_MANAGER::TEARDROP_MANAGER(), DRC_TEST_PROVIDER_HOLE_TO_HOLE::testHoleAgainstHole(), DRC_TEST_PROVIDER_SOLDER_MASK::testItemAgainstItems(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstZones(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskItemAgainstZones(), DRC_TEST_PROVIDER_MISC::testOutline(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testShapeLineChain(), DRC_TEST_PROVIDER_ZONE_CONNECTIONS::testZoneLayer(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testZoneLayer(), PANEL_SETUP_RULES::TransferDataFromWindow(), ZONE::TransformSmoothedOutlineToPolygon(), TRACK_WIDTH_MENU::update(), DIFF_PAIR_MENU::update(), VIA_SIZE_MENU::update(), DIALOG_GENDRILL::UpdateDrillParams(), PCB_CONTROL::UpdateMessagePanel(), FOOTPRINT::ViewBBox(), PCB_TRACK::ViewBBox(), WriteDRCReport(), DIALOG_DRC::writeReport(), and HYPERLYNX_EXPORTER::writeStackupInfo().

◆ GetEditFlags()

EDA_ITEM_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 161 of file eda_item.h.

162 {
163 constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVING | IS_RESIZING | IS_DRAGGING
165
166 return m_flags & mask;
167 }
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
#define IS_CHANGED
Item was edited, and modified.
#define IS_NEW
New item, just created.
#define IS_DRAGGING
Item being dragged.
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
#define STRUCT_DELETED
flag indication structures to be erased
#define IS_MOVING
Item being moved.
#define IS_RESIZING
Item being resized.

References IS_CHANGED, IS_DRAGGING, IS_MOVING, IS_NEW, IS_PASTED, IS_RESIZING, IS_WIRE_IMAGE, EDA_ITEM::m_flags, and STRUCT_DELETED.

Referenced by SCH_EDIT_TOOL::ChangeTextType(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), SCH_SYMBOL::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), SYMBOL_EDITOR_MOVE_TOOL::Main(), PCB_POINT_EDITOR::OnSelectionChange(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_IMAGE_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), and DIALOG_TEXTBOX_PROPERTIES::TransferDataFromWindow().

◆ GetEffectiveHoleShape()

std::shared_ptr< SHAPE_SEGMENT > BOARD_ITEM::GetEffectiveHoleShape ( ) const
virtualinherited

◆ GetEffectiveShape()

std::shared_ptr< SHAPE > BOARD_ITEM::GetEffectiveShape ( PCB_LAYER_ID  aLayer = UNDEFINED_LAYER,
FLASHING  aFlash = FLASHING::DEFAULT 
) const
virtualinherited

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 in PCB_DIMENSION_BASE, PCB_MARKER, PCB_TARGET, FOOTPRINT, FP_TEXT, FP_TEXTBOX, PCB_BITMAP, PCB_SHAPE, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_ARC, PCB_VIA, ZONE, and PAD.

Definition at line 197 of file board_item.cpp.

198{
199 static std::shared_ptr<SHAPE> shape;
200
202
203 return shape;
204}

References EDA_ITEM::GetClass(), and UNIMPLEMENTED_FOR.

Referenced by CN_VISITOR::checkZoneItemConnection(), collidesWithArea(), collidesWithCourtyard(), DRAWING_TOOL::DrawVia(), PCB_SELECTION_TOOL::hitTestDistance(), DRC_RTREE::Insert(), CN_VISITOR::operator()(), DRC_RTREE::QueryColliding(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstItem(), DRC_TEST_PROVIDER_SOLDER_MASK::testItemAgainstItems(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZone(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstZones(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskItemAgainstZones(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), and PCB_CONTROL::UpdateMessagePanel().

◆ GetEnabledLayers()

LSET BOARD::GetEnabledLayers ( ) const

A proxy function that calls the corresponding function in m_BoardSettings.

Returns
the enabled layers in bit-mapped form.

Definition at line 485 of file board.cpp.

486{
488}
LSET GetEnabledLayers() const
Return a bit-mask of all the layers that are enabled.

References GetDesignSettings(), and BOARD_DESIGN_SETTINGS::GetEnabledLayers().

Referenced by PCB_CONTROL::AppendBoard(), PCB_ONE_LAYER_SELECTOR::buildList(), SELECT_COPPER_LAYERS_PAIR_DIALOG::buildList(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_PLOT::DIALOG_PLOT(), DRC_ENGINE::EvalRules(), PCB_PLUGIN::formatBoardLayers(), GENDRILL_WRITER_BASE::GenDrillReportFile(), PCB_LAYER_BOX_SELECTOR::getEnabledLayers(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), DIALOG_PLOT::init_Dialog(), DIALOG_EXPORT_SVG::initDialog(), HYPERLYNX_PAD_STACK::IsEmpty(), BOARD_ITEM::layerMaskDescribe(), PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP(), DIALOG_PLOT::Plot(), PCB_CONTROL::pruneItemLayers(), APPEARANCE_CONTROLS::rebuildLayers(), CADSTAR_PCB_ARCHIVE_LOADER::remapUnsureLayers(), DRC_TEST_PROVIDER_CONNECTION_WIDTH::Run(), DRC_TEST_PROVIDER_SLIVER_CHECKER::Run(), DRC_TEST_PROVIDER_MISC::testDisabledLayers(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), PANEL_SETUP_LAYERS::TransferDataToWindow(), PCB_PROPERTIES_PANEL::updateLists(), PCB_EDIT_FRAME::UpdateUserInterface(), PAD::ViewGetLOD(), PCB_VIA::ViewGetLOD(), and HYPERLYNX_EXPORTER::writeSinglePadStack().

◆ GetFileFormatVersionAtLoad()

int BOARD::GetFileFormatVersionAtLoad ( ) const
inline

Definition at line 363 of file board.h.

References m_fileFormatVersionAtLoad.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ GetFileName()

const wxString & BOARD::GetFileName ( void  ) const
inline

Definition at line 302 of file board.h.

302{ return m_fileName; }
wxString m_fileName
Definition: board.h:1182

References m_fileName.

Referenced by AddGerberX2Header(), GERBER_JOBFILE_WRITER::addJSONGeneralSpecs(), PCB_EDIT_FRAME::canCloseWindow(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), CreateHeaderInfoData(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PCB_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::Export_IDF3(), BOARD_EDITOR_CONTROL::ExportSpecctraDSN(), DIALOG_EXPORT_SVG::ExportSVGFile(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), GENDRILL_WRITER_BASE::GenDrillReportFile(), PCB_EDIT_FRAME::GenFootprintsReport(), PCB_EDIT_FRAME::GetCurrentFileName(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), GENDRILL_WRITER_BASE::getDrillFileName(), PCB_EDIT_FRAME::GetLastPath(), BOARD_EDITOR_CONTROL::ImportSpecctraSession(), FABMASTER::loadFootprints(), PCB_EDIT_FRAME::onBoardLoaded(), DIALOG_IMPORT_SETTINGS::OnBrowseClicked(), PCB_EDIT_FRAME::OnExportHyperlynx(), PCB_EDIT_FRAME::OnExportIDF3(), PCB_EDIT_FRAME::OnExportSTEP(), PCB_EDIT_FRAME::OnExportVRML(), DIALOG_GENDRILL::OnGenReportFile(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), PLOT_CONTROLLER::OpenPlotfile(), EAGLE_PLUGIN::packagePad(), ALTIUM_PCB::ParseModelsData(), DIALOG_PLOT::Plot(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), DIALOG_BOARD_STATISTICS::saveReportClicked(), PCB_EDIT_FRAME::SetLastPath(), StartPlotBoard(), PCB_EDIT_FRAME::UpdateTitle(), HYPERLYNX_EXPORTER::writeBoardInfo(), WriteDRCReport(), and DIALOG_DRC::writeReport().

◆ GetFirstFootprint()

FOOTPRINT * BOARD::GetFirstFootprint ( ) const
inline

Get the first footprint on the board or nullptr.

This is used primarily by the footprint editor which knows there is only one.

Returns
first footprint or null pointer

Definition at line 397 of file board.h.

398 {
399 return m_footprints.empty() ? nullptr : m_footprints.front();
400 }

References m_footprints.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BuildFootprintPolygonOutlines(), FOOTPRINT_EDIT_FRAME::CanCloseFPFromBoard(), FOOTPRINT_EDIT_FRAME::canCloseWindow(), FOOTPRINT_EDIT_FRAME::ClearModify(), BOARD_ADAPTER::createBoardPolygon(), FOOTPRINT_EDITOR_CONTROL::CutCopyFootprint(), PCB_CONTROL::DeleteItemCursor(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), EDIT_TOOL::Duplicate(), FOOTPRINT_EDITOR_CONTROL::DuplicateFootprint(), PAD_TOOL::EnumeratePads(), FOOTPRINT_EDITOR_CONTROL::ExportFootprint(), PCB_TOOL_BASE::footprint(), PCB_VIEWER_TOOLS::footprint(), FOOTPRINT_EDIT_FRAME::GetDocumentExtents(), FOOTPRINT_EDIT_FRAME::GetLoadedFPID(), DISPLAY_FOOTPRINTS_FRAME::GetModel(), FOOTPRINT_EDIT_FRAME::GetModel(), FOOTPRINT_VIEWER_FRAME::GetModel(), FOOTPRINT_WIZARD_FRAME::GetModel(), FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), GROUP_TOOL::Group(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), ARRAY_CREATOR::Invoke(), FOOTPRINT_EDIT_FRAME::IsContentModified(), FOOTPRINT_EDIT_FRAME::IsCurrentFPFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_CONTROL::Paste(), pasteFootprintItemsToFootprintEditor(), DRAWING_TOOL::PlaceImportedGraphics(), FOOTPRINT_EDITOR_CONTROL::Properties(), BOARD_COMMIT::Push(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), DIALOG_FOOTPRINT_CHECKER::runChecks(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), GROUP_TOOL::Ungroup(), DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel(), FOOTPRINT_WIZARD_FRAME::UpdateMsgPanel(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), and DIALOG_FOOTPRINT_CHECKER::~DIALOG_FOOTPRINT_CHECKER().

◆ GetFlags()

◆ GetFocusPosition()

const VECTOR2I BOARD::GetFocusPosition ( ) const
inlineoverridevirtual

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

Reimplemented from EDA_ITEM.

Definition at line 353 of file board.h.

353{ return GetBoundingBox().GetCenter(); }
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
Definition: board.h:807

References GetBoundingBox(), and BOX2< Vec >::GetCenter().

◆ GetFootprint()

FOOTPRINT * BOARD::GetFootprint ( const VECTOR2I aPosition,
PCB_LAYER_ID  aActiveLayer,
bool  aVisibleOnly,
bool  aIgnoreLocked = false 
) const

Get a footprint by its bounding rectangle at aPosition on aLayer.

If more than one footprint is at aPosition, then the closest footprint on the active layer is returned. The distance is calculated via manhattan distance from the center of the bounding rectangle to aPosition.

Parameters
aPositionA VECTOR2I object containing the position to test.
aActiveLayerLayer to test.
aVisibleOnlySearch only the visible layers if true.
aIgnoreLockedIgnore locked footprints when true.

Definition at line 1774 of file board.cpp.

1776{
1777 FOOTPRINT* footprint = nullptr;
1778 FOOTPRINT* alt_footprint = nullptr;
1779 int min_dim = 0x7FFFFFFF;
1780 int alt_min_dim = 0x7FFFFFFF;
1781 bool current_layer_back = IsBackLayer( aActiveLayer );
1782
1783 for( FOOTPRINT* candidate : m_footprints )
1784 {
1785 // is the ref point within the footprint's bounds?
1786 if( !candidate->HitTest( aPosition ) )
1787 continue;
1788
1789 // if caller wants to ignore locked footprints, and this one is locked, skip it.
1790 if( aIgnoreLocked && candidate->IsLocked() )
1791 continue;
1792
1793 PCB_LAYER_ID layer = candidate->GetLayer();
1794
1795 // Filter non visible footprints if requested
1796 if( !aVisibleOnly || IsFootprintLayerVisible( layer ) )
1797 {
1798 BOX2I bb = candidate->GetBoundingBox( false, false );
1799
1800 int offx = bb.GetX() + bb.GetWidth() / 2;
1801 int offy = bb.GetY() + bb.GetHeight() / 2;
1802
1803 // off x & offy point to the middle of the box.
1804 int dist = ( aPosition.x - offx ) * ( aPosition.x - offx ) +
1805 ( aPosition.y - offy ) * ( aPosition.y - offy );
1806
1807 if( current_layer_back == IsBackLayer( layer ) )
1808 {
1809 if( dist <= min_dim )
1810 {
1811 // better footprint shown on the active side
1812 footprint = candidate;
1813 min_dim = dist;
1814 }
1815 }
1816 else if( aVisibleOnly && IsFootprintLayerVisible( layer ) )
1817 {
1818 if( dist <= alt_min_dim )
1819 {
1820 // better footprint shown on the other side
1821 alt_footprint = candidate;
1822 alt_min_dim = dist;
1823 }
1824 }
1825 }
1826 }
1827
1828 if( footprint )
1829 return footprint;
1830
1831 if( alt_footprint)
1832 return alt_footprint;
1833
1834 return nullptr;
1835}
bool IsFootprintLayerVisible(PCB_LAYER_ID aLayer) const
Expect either of the two layers on which a footprint can reside, and returns whether that layer is vi...
Definition: board.cpp:590
coord_type GetHeight() const
Definition: box2.h:188
coord_type GetY() const
Definition: box2.h:181
coord_type GetWidth() const
Definition: box2.h:187
coord_type GetX() const
Definition: box2.h:180
bool IsBackLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a back layer.
Definition: layer_ids.h:920
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:59

References BOX2< Vec >::GetHeight(), BOX2< Vec >::GetWidth(), BOX2< Vec >::GetX(), BOX2< Vec >::GetY(), IsBackLayer(), IsFootprintLayerVisible(), m_footprints, VECTOR2< T >::x, and VECTOR2< T >::y.

◆ GetGenerator()

const wxString & BOARD::GetGenerator ( ) const
inline

Adds an item to the container.

Parameters
aModedecides whether the item is added in the beginning or at the end of the list.
aSkipConnectivityskip connectivity update (useful for file loading, when the connectivity is updated after end of loading).

Definition at line 366 of file board.h.

References m_generator.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ GetHighLightNetCodes()

const std::set< int > & BOARD::GetHighLightNetCodes ( ) const
inline
Returns
the set of net codes that should be highlighted

Definition at line 467 of file board.h.

468 {
469 return m_highLight.m_netCodes;
470 }
HIGH_LIGHT_INFO m_highLight
Definition: board.h:1192
std::set< int > m_netCodes
Definition: board.h:211

References m_highLight, and HIGH_LIGHT_INFO::m_netCodes.

Referenced by DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), and DIALOG_NET_INSPECTOR::OnBoardHighlightNetChanged().

◆ GetItem()

BOARD_ITEM * BOARD::GetItem ( const KIID aID) const
Returns
null if aID is null. Returns an object of Type() == NOT_USED if the aID is not found.

Definition at line 917 of file board.cpp.

918{
919 if( aID == niluuid )
920 return nullptr;
921
922 for( PCB_TRACK* track : Tracks() )
923 {
924 if( track->m_Uuid == aID )
925 return track;
926 }
927
928 for( FOOTPRINT* footprint : Footprints() )
929 {
930 if( footprint->m_Uuid == aID )
931 return footprint;
932
933 for( PAD* pad : footprint->Pads() )
934 {
935 if( pad->m_Uuid == aID )
936 return pad;
937 }
938
939 if( footprint->Reference().m_Uuid == aID )
940 return &footprint->Reference();
941
942 if( footprint->Value().m_Uuid == aID )
943 return &footprint->Value();
944
945 for( BOARD_ITEM* drawing : footprint->GraphicalItems() )
946 {
947 if( drawing->m_Uuid == aID )
948 return drawing;
949 }
950
951 for( BOARD_ITEM* zone : footprint->Zones() )
952 {
953 if( zone->m_Uuid == aID )
954 return zone;
955 }
956
957 for( PCB_GROUP* group : footprint->Groups() )
958 {
959 if( group->m_Uuid == aID )
960 return group;
961 }
962 }
963
964 for( ZONE* zone : Zones() )
965 {
966 if( zone->m_Uuid == aID )
967 return zone;
968 }
969
970 for( BOARD_ITEM* drawing : Drawings() )
971 {
972 if( drawing->m_Uuid == aID )
973 return drawing;
974 }
975
976 for( PCB_MARKER* marker : m_markers )
977 {
978 if( marker->m_Uuid == aID )
979 return marker;
980 }
981
982 for( PCB_GROUP* group : m_groups )
983 {
984 if( group->m_Uuid == aID )
985 return group;
986 }
987
988 if( m_Uuid == aID )
989 return const_cast<BOARD*>( this );
990
991 // Not found; weak reference has been deleted.
993}
static DELETED_BOARD_ITEM * GetInstance()
Definition: board_item.h:358
KIID niluuid(0)

References Drawings(), Footprints(), DELETED_BOARD_ITEM::GetInstance(), group, m_groups, m_markers, EDA_ITEM::m_Uuid, niluuid, pad, Tracks(), and Zones().

Referenced by CollisionMatchesExpected(), ConvertKIIDsToCrossReferences(), PCB_BASE_FRAME::FocusOnItems(), PCB_BASE_FRAME::GetItem(), PCB_TEXT::GetShownText(), PCB_TEXTBOX::GetShownText(), BOARD_INSPECTION_TOOL::InspectDRCError(), InvalidMatchesExpected(), DIALOG_DRC::OnDRCItemSelected(), DIALOG_CLEANUP_GRAPHICS::OnSelectItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnSelectItem(), and DIALOG_FOOTPRINT_CHECKER::OnSelectItem().

◆ GetLayer()

virtual PCB_LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlinevirtualinherited

Return the primary layer this item is on.

Reimplemented in PAD, and ZONE.

Definition at line 169 of file board_item.h.

169{ return m_layer; }
PCB_LAYER_ID m_layer
Definition: board_item.h:319

References BOARD_ITEM::m_layer.

Referenced by Add(), CN_LIST::Add(), BOARD_ADAPTER::addFootprintShapes(), TEARDROP_MANAGER::addTeardropsOnTracks(), GRAPHICS_CLEANER::areEquivalent(), BOARD_ITEM_DESC::BOARD_ITEM_DESC(), AR_AUTOPLACER::buildFpAreas(), PNS::ITEM::collideSimple(), TEARDROP_MANAGER::ComputePointsOnPadVia(), CreateBoardSection(), MICROWAVE_TOOL::createMicrowaveInductor(), PCB_BASE_FRAME::CreateNewFootprint(), TEARDROP_MANAGER::createTeardrop(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_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(), TEARDROP_MANAGER::findAnchorPointsOnTrack(), TEARDROP_MANAGER::findTouchingTrack(), FOOTPRINT::Flip(), FP_SHAPE::Flip(), FP_TEXT::Flip(), FP_TEXTBOX::Flip(), PCB_DIMENSION_BASE::Flip(), PCB_SHAPE::Flip(), PCB_TARGET::Flip(), PCB_TEXT::Flip(), PCB_TEXTBOX::Flip(), PCB_TRACK::Flip(), PCB_ARC::Flip(), FOOTPRINT_DESC::FOOTPRINT_DESC(), PCB_PLUGIN::FootprintSave(), FootprintWriteShape(), PCB_PLUGIN::format(), FP_TEXT::FP_TEXT(), DSN::SPECCTRA_DB::FromSESSION(), AR_AUTOPLACER::genModuleOnRoutingMatrix(), FOOTPRINT::GetBoundingBox(), PAD::GetLayer(), ZONE::GetLayer(), getMatchingTextItem(), PCB_TRACK::GetMsgPanelInfo(), PCB_VIA::GetMsgPanelInfo(), AR_AUTOPLACER::getOptimalFPPlacement(), GetPad(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), idf_export_footprint(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), BOARD_INSPECTION_TOOL::InspectDRCError(), FOOTPRINT::IsFlipped(), PAD::IsFlipped(), BOARD_ITEM::IsOnCopperLayer(), FP_SHAPE::IsParentFlipped(), FP_TEXT::IsParentFlipped(), TEARDROP_MANAGER::isViaAndTrackInSameZone(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FABMASTER::loadFootprints(), FABMASTER::loadOutline(), CADSTAR_PCB_ARCHIVE_LOADER::makeTracksFromShapes(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddField(), DIALOG_TEXTBOX_PROPERTIES::onBorderChecked(), BOARD::cmp_items::operator()(), BOARD::cmp_drawings::operator()(), PCB_SHAPE::cmp_drawings::operator()(), FOOTPRINT::cmp_drawings::operator()(), PCB_TRACK::cmp_tracks::operator()(), EAGLE_PLUGIN::packagePad(), PCB_SHAPE_DESC::PCB_SHAPE_DESC(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotFootprintGraphicItems(), BRDITEMS_PLOTTER::PlotFootprintShape(), BRDITEMS_PLOTTER::PlotFootprintTextItem(), BRDITEMS_PLOTTER::PlotFootprintTextItems(), BRDITEMS_PLOTTER::PlotPcbGraphicItem(), BRDITEMS_PLOTTER::PlotPcbShape(), BRDITEMS_PLOTTER::PlotPcbTarget(), DRC_ENGINE::ProcessAssertions(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), PCB_CONTROL::pruneItemLayers(), PAD_TOOL::RecombinePad(), test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run(), DRC_TEST_PROVIDER_TEXT_DIMS::Run(), CLIPBOARD_IO::SaveSelection(), PCB_SELECTION_TOOL::Selectable(), shapesNeedUpdate(), EDIT_TOOL::Swap(), GLOBAL_EDIT_TOOL::swapBoardItem(), PNS_KICAD_IFACE_BASE::syncArc(), PNS_KICAD_IFACE_BASE::syncGraphicalItem(), PNS_KICAD_IFACE_BASE::syncTrack(), PNS_KICAD_IFACE_BASE::SyncWorld(), AR_AUTOPLACER::testFootprintOnBoard(), DRC_TEST_PROVIDER_MISC::testTextVars(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), textsNeedUpdate(), TRACK_VIA_DESC::TRACK_VIA_DESC(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataToWindow(), BOARD_ADAPTER::transformFPShapesToPolygon(), FOOTPRINT::TransformFPShapesWithClearanceToPolygon(), PCB_CONTROL::UpdateMessagePanel(), FP_TEXT::ViewGetLayers(), FP_TEXTBOX::ViewGetLayers(), PCB_TRACK::ViewGetLayers(), FP_TEXT::ViewGetLOD(), FP_TEXTBOX::ViewGetLOD(), FP_ZONE::ViewGetLOD(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), and DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem().

◆ GetLayerID()

const PCB_LAYER_ID BOARD::GetLayerID ( const wxString &  aLayerName) const

Return the ID of a layer.

Definition at line 364 of file board.cpp.

365{
366 // Check the BOARD physical layer names.
367 for( int layer = 0; layer < PCB_LAYER_ID_COUNT; ++layer )
368 {
369 if ( m_layers[ layer ].m_name == aLayerName || m_layers[ layer ].m_userName == aLayerName )
370 return ToLAYER_ID( layer );
371 }
372
373 // Otherwise fall back to the system standard layer names for virtual layers.
374 for( int layer = 0; layer < PCB_LAYER_ID_COUNT; ++layer )
375 {
376 if( GetStandardLayerName( ToLAYER_ID( layer ) ) == aLayerName )
377 return ToLAYER_ID( layer );
378 }
379
380 return UNDEFINED_LAYER;
381}
@ UNDEFINED_LAYER
Definition: layer_ids.h:60

References GetStandardLayerName(), m_layers, PCB_LAYER_ID_COUNT, ToLAYER_ID(), and UNDEFINED_LAYER.

Referenced by PCB_EXPR_VAR_REF::GetValue(), and PCB_PARSER::parseBoardStackup().

◆ GetLayerName() [1/2]

wxString BOARD_ITEM::GetLayerName ( ) const
inherited

◆ GetLayerName() [2/2]

wxString BOARD::GetLayerName ( PCB_LAYER_ID  aLayer) const

Return the name of a aLayer.

Parameters
aLayeris the PCB_LAYER_ID of the layer.
Returns
a string containing the name of the layer.

Definition at line 384 of file board.cpp.

385{
386 // All layer names are stored in the BOARD.
387 if( IsLayerEnabled( aLayer ) )
388 {
389 // Standard names were set in BOARD::BOARD() but they may be over-ridden by
390 // BOARD::SetLayerName(). For copper layers, return the user defined layer name,
391 // if it was set. Otherwise return the Standard English layer name.
392 if( !m_layers[aLayer].m_userName.IsEmpty() )
393 return m_layers[aLayer].m_userName;
394 }
395
396 return GetStandardLayerName( aLayer );
397}
bool IsLayerEnabled(PCB_LAYER_ID aLayer) const
A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer...
Definition: board.cpp:511
wxString m_userName
The user defined name of the layer.
Definition: board.h:183

References GetStandardLayerName(), IsLayerEnabled(), m_layers, and LAYER::m_userName.

Referenced by GERBER_JOBFILE_WRITER::addJSONMaterialStackup(), DSN::SPECCTRA_DB::buildLayerMaps(), PANEL_SETUP_BOARD_STACKUP::createRowData(), PANEL_PCBNEW_COLOR_SETTINGS::createSwatches(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_PLOT::DIALOG_PLOT(), GRID_CELL_LAYER_RENDERER::Draw(), DRAWING_TOOL::DrawSpecificationStackup(), PCB_PLUGIN::formatBoardLayers(), GENDRILL_WRITER_BASE::GenDrillReportFile(), BOARD_ITEM::GetLayerName(), PCB_LAYER_BOX_SELECTOR::getLayerName(), PCB_LAYER_SELECTOR::getLayerName(), ZONE::GetMsgPanelInfo(), ZONE_SEARCH_HANDLER::GetResultCell(), ZONE::GetSelectMenuText(), GRID_CELL_LAYER_SELECTOR::GetValue(), PRIVATE_LAYERS_GRID_TABLE::GetValue(), DIALOG_PLOT::init_Dialog(), DIALOG_EXPORT_SVG::initDialog(), DIALOG_PAD_PROPERTIES::initValues(), BOARD_INSPECTION_TOOL::InspectClearance(), DRC_TEST_PROVIDER_CONNECTION_WIDTH::layerDesc(), DRC_TEST_PROVIDER_SLIVER_CHECKER::layerDesc(), BOARD_ITEM::layerMaskDescribe(), PCB_VIA::layerMaskDescribe(), CADSTAR_PCB_ARCHIVE_LOADER::Load(), PCBNEW_PRINTOUT::OnPrintPage(), DIALOG_PLOT::Plot(), APPEARANCE_CONTROLS::rebuildLayers(), BOARD_INSPECTION_TOOL::reportHeader(), DIALOG_GLOBAL_DELETION::SetCurrentLayer(), ZONE_SETTINGS::SetupLayersList(), PANEL_SETUP_LAYERS::showBoardLayerNames(), StartPlotBoard(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), DIALOG_BOARD_STATISTICS::updateDrillGrid(), DIALOG_PAD_PROPERTIES::UpdateLayersDropdown(), HYPERLYNX_EXPORTER::writeDevices(), HYPERLYNX_EXPORTER::writeNetObjects(), HYPERLYNX_EXPORTER::writeSinglePadStack(), and HYPERLYNX_EXPORTER::writeStackupInfo().

◆ GetLayerSet()

virtual LSET BOARD_ITEM::GetLayerSet ( ) const
inlinevirtualinherited

Return a std::bitset of all layers on which the item physically resides.

Reimplemented in PCB_GROUP, PAD, PCB_VIA, and ZONE.

Definition at line 174 of file board_item.h.

175 {
176 if( m_layer == UNDEFINED_LAYER )
177 return LSET();
178 else
179 return LSET( m_layer );
180 }

References BOARD_ITEM::m_layer, and UNDEFINED_LAYER.

Referenced by PCB_GRID_HELPER::BestSnapAnchor(), KI_TEST::CheckFpShape(), KI_TEST::CheckFpText(), collidesWithArea(), BOARD_COMMIT::dirtyIntersectingZones(), APPEARANCE_CONTROLS::doApplyLayerPreset(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), KIGFX::PCB_PAINTER::draw(), KIGFX::PCB_PAINTER::Draw(), DRAWING_TOOL::DrawVia(), DRC_ENGINE::EvalRules(), existsOnLayerFunc(), extractDiffPairCoupledItems(), hash_board_item(), BOARD_INSPECTION_TOOL::InspectClearance(), PNS_KICAD_IFACE::IsItemVisible(), isMaskAperture(), BOARD_ITEM::layerMaskDescribe(), FABMASTER::loadZone(), PCB_GRID_HELPER::nearestAnchor(), PCB_POINT_EDITOR::OnSelectionChange(), DIALOG_CLEANUP_GRAPHICS::OnSelectItem(), DIALOG_FOOTPRINT_CHECKER::OnSelectItem(), CN_VISITOR::operator()(), BOARD_ITEM::ptr_cmp::operator()(), KI_TEST::kitest_cmp_drawings::operator()(), DRC_ENGINE::ProcessAssertions(), EDIT_TOOL::Properties(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::Run(), PCB_SELECTION_CONDITIONS::sameLayerFunc(), PCB_SELECTION_TOOL::selectAllConnectedTracks(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZone(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstZones(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and PCB_CONTROL::UpdateMessagePanel().

◆ GetLayerType()

LAYER_T BOARD::GetLayerType ( PCB_LAYER_ID  aLayer) const

Return the type of the copper layer given by aLayer.

Parameters
aLayerA layer index, like B_Cu, etc.
Returns
the layer type, or LAYER_T(-1) if the index was out of range.

Definition at line 418 of file board.cpp.

419{
420 if( !IsCopperLayer( aLayer ) )
421 return LT_SIGNAL;
422
423 if( IsLayerEnabled( aLayer ) )
424 return m_layers[aLayer].m_type;
425
426 return LT_SIGNAL;
427}

References IsCopperLayer(), IsLayerEnabled(), LT_SIGNAL, m_layers, and LAYER::m_type.

Referenced by PCB_PLUGIN::formatBoardLayers(), DSN::SPECCTRA_DB::FromBOARD(), GetGerberFileFunctionAttribute(), PANEL_SETUP_LAYERS::showLayerTypes(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().

◆ GetMenuImage()

BITMAPS EDA_ITEM::GetMenuImage ( ) const
virtualinherited

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 in LIB_FIELD, LIB_PIN, LIB_SHAPE, LIB_TEXT, LIB_TEXTBOX, SCH_BITMAP, SCH_BUS_WIRE_ENTRY, SCH_BUS_BUS_ENTRY, SCH_FIELD, SCH_JUNCTION, SCH_LABEL, SCH_GLOBALLABEL, SCH_HIERLABEL, SCH_LINE, SCH_MARKER, SCH_NO_CONNECT, SCH_SHAPE, SCH_SHEET, SCH_SHEET_PIN, SCH_SYMBOL, SCH_TEXT, SCH_TEXTBOX, GERBER_DRAW_ITEM, PCB_GROUP, FOOTPRINT, FP_SHAPE, FP_TEXT, FP_TEXTBOX, PAD, PCB_BITMAP, PCB_DIM_ALIGNED, PCB_DIM_ORTHOGONAL, PCB_DIM_RADIAL, PCB_DIM_LEADER, PCB_DIM_CENTER, PCB_MARKER, PCB_SHAPE, PCB_TARGET, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_VIA, and ZONE.

Definition at line 269 of file eda_item.cpp.

270{
271 return BITMAPS::dummy_item;
272}

References dummy_item.

Referenced by SELECTION_TOOL::doSelectionMenu().

◆ GetMsgPanelInfo()

void BOARD::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 1218 of file board.cpp.

1219{
1220 int padCount = 0;
1221 int viaCount = 0;
1222 int trackSegmentCount = 0;
1223 std::set<int> netCodes;
1224 int unconnected = GetConnectivity()->GetUnconnectedCount();
1225
1226 for( PCB_TRACK* item : m_tracks )
1227 {
1228 if( item->Type() == PCB_VIA_T )
1229 viaCount++;
1230 else
1231 trackSegmentCount++;
1232
1233 if( item->GetNetCode() > 0 )
1234 netCodes.insert( item->GetNetCode() );
1235 }
1236
1237 for( FOOTPRINT* footprint : Footprints() )
1238 {
1239 for( PAD* pad : footprint->Pads() )
1240 {
1241 padCount++;
1242
1243 if( pad->GetNetCode() > 0 )
1244 netCodes.insert( pad->GetNetCode() );
1245 }
1246 }
1247
1248 aList.emplace_back( _( "Pads" ), wxString::Format( wxT( "%d" ), padCount ) );
1249 aList.emplace_back( _( "Vias" ), wxString::Format( wxT( "%d" ), viaCount ) );
1250 aList.emplace_back( _( "Track Segments" ), wxString::Format( wxT( "%d" ), trackSegmentCount ) );
1251 aList.emplace_back( _( "Nets" ), wxString::Format( wxT( "%d" ), (int) netCodes.size() ) );
1252 aList.emplace_back( _( "Unrouted" ), wxString::Format( wxT( "%d" ), unconnected ) );
1253}
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

References _, Footprints(), Format(), GetConnectivity(), m_tracks, pad, and PCB_VIA_T.

Referenced by PCB_CONTROL::UpdateMessagePanel().

◆ GetNetClassAssignmentCandidates()

std::set< wxString > BOARD::GetNetClassAssignmentCandidates ( ) const

Return the set of netname candidates for netclass assignment.

Definition at line 1427 of file board.cpp.

1428{
1429 std::set<wxString> names;
1430
1431 for( const NETINFO_ITEM* net : m_NetInfo )
1432 {
1433 if( !net->GetNetname().IsEmpty() )
1434 names.insert( net->GetNetname() );
1435 }
1436
1437 return names;
1438}

References m_NetInfo.

Referenced by DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), and PANEL_SETUP_RULES::onScintillaCharAdded().

◆ GetNetCount()

unsigned BOARD::GetNetCount ( ) const
inline
Returns
the number of nets (NETINFO_ITEM).

Definition at line 794 of file board.h.

795 {
796 return m_NetInfo.GetNetCount();
797 }

References NETINFO_LIST::GetNetCount(), and m_NetInfo.

Referenced by CreateSignalsSection(), and PCB_PARSER::parseZONE().

◆ GetNetInfo() [1/2]

NETINFO_LIST & BOARD::GetNetInfo ( )
inline

Definition at line 768 of file board.h.

769 {
770 return m_NetInfo;
771 }

References m_NetInfo.

◆ GetNetInfo() [2/2]

◆ GetNodesCount()

unsigned BOARD::GetNodesCount ( int  aNet = -1) const
Parameters
aNetOnly count nodes belonging to this net.
Returns
the number of pads members of nets (i.e. with netcode > 0).

Definition at line 1134 of file board.cpp.

1135{
1136 unsigned retval = 0;
1137
1138 for( FOOTPRINT* footprint : Footprints() )
1139 {
1140 for( PAD* pad : footprint->Pads() )
1141 {
1142 if( ( aNet == -1 && pad->GetNetCode() > 0 ) || aNet == pad->GetNetCode() )
1143 retval++;
1144 }
1145 }
1146
1147 return retval;
1148}

References Footprints(), and pad.

Referenced by DIALOG_NET_INSPECTOR::OnBoardItemAdded(), and DIALOG_NET_INSPECTOR::updateNet().

◆ GetPad() [1/4]

PAD * BOARD::GetPad ( const PCB_TRACK aTrace,
ENDPOINT_T  aEndPoint 
) const

Find a pad connected to aEndPoint of aTrace.

Parameters
aTraceA pointer to a PCB_TRACK object to hit test against.
aEndPointThe end point of aTrace the hit test against.
Returns
A pointer to a PAD object if found or NULL if not found.

Definition at line 1529 of file board.cpp.

1530{
1531 const VECTOR2I& aPosition = aTrace->GetEndPoint( aEndPoint );
1532
1533 LSET lset( aTrace->GetLayer() );
1534
1535 return GetPad( aPosition, lset );
1536}
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:169
PAD * GetPad(const VECTOR2I &aPosition, LSET aLayerMask) const
Find a pad aPosition on aLayer.
Definition: board.cpp:1509
const VECTOR2I & GetEndPoint(ENDPOINT_T aEndPoint) const
Return the selected endpoint (start or end)
Definition: pcb_track.h:120

References PCB_TRACK::GetEndPoint(), BOARD_ITEM::GetLayer(), and GetPad().

◆ GetPad() [2/4]

PAD * BOARD::GetPad ( const VECTOR2I aPosition) const
inline

Definition at line 965 of file board.h.

966 {
967 return GetPad( aPosition, LSET().set() );
968 }

References GetPad().

◆ GetPad() [3/4]

PAD * BOARD::GetPad ( const VECTOR2I aPosition,
LSET  aLayerMask 
) const

Find a pad aPosition on aLayer.

Parameters
aPositionA VECTOR2I object containing the position to hit test.
aLayerMaskA layer or layers to mask the hit test.
Returns
A pointer to a PAD object if found or NULL if not found.

Definition at line 1509 of file board.cpp.

1510{
1511 if( !aLayerSet.any() )
1512 aLayerSet = LSET::AllCuMask();
1513
1514 for( FOOTPRINT* footprint : m_footprints )
1515 {
1516 PAD* pad = nullptr;
1517
1518 if( footprint->HitTest( aPosition ) )
1519 pad = footprint->GetPad( aPosition, aLayerSet );
1520
1521 if( pad )
1522 return pad;
1523 }
1524
1525 return nullptr;
1526}
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:773

References LSET::AllCuMask(), m_footprints, and pad.

Referenced by GetPad().

◆ GetPad() [4/4]

PAD * BOARD::GetPad ( std::vector< PAD * > &  aPadList,
const VECTOR2I aPosition,
LSET  aLayerMask 
) const

Locate the pad connected at aPosition on aLayer starting at list position aPad.

This function uses a fast search in this sorted pad list and it is faster than GetPadFast(). This list is a sorted pad list must be built before calling this function.

Note
The normal pad list is sorted by increasing netcodes.
Parameters
aPadListis the list of pads candidates (a std::vector<PAD*>).
aPositionA VECTOR2I object containing the position to test.
aLayerMaskA layer or layers to mask the hit test.
Returns
a PAD object pointer to the connected pad.

Definition at line 1558 of file board.cpp.

1559{
1560 // Search aPadList for aPosition
1561 // aPadList is sorted by X then Y values, and a fast binary search is used
1562 int idxmax = aPadList.size() - 1;
1563
1564 int delta = aPadList.size();
1565
1566 int idx = 0; // Starting index is the beginning of list
1567
1568 while( delta )
1569 {
1570 // Calculate half size of remaining interval to test.
1571 // Ensure the computed value is not truncated (too small)
1572 if( (delta & 1) && ( delta > 1 ) )
1573 delta++;
1574
1575 delta /= 2;
1576
1577 PAD* pad = aPadList[idx];
1578
1579 if( pad->GetPosition() == aPosition ) // candidate found
1580 {
1581 // The pad must match the layer mask:
1582 if( ( aLayerSet & pad->GetLayerSet() ).any() )
1583 return pad;
1584
1585 // More than one pad can be at aPosition
1586 // search for a pad at aPosition that matched this mask
1587
1588 // search next
1589 for( int ii = idx+1; ii <= idxmax; ii++ )
1590 {
1591 pad = aPadList[ii];
1592
1593 if( pad->GetPosition() != aPosition )
1594 break;
1595
1596 if( ( aLayerSet & pad->GetLayerSet() ).any() )
1597 return pad;
1598 }
1599 // search previous
1600 for( int ii = idx - 1 ;ii >=0; ii-- )
1601 {
1602 pad = aPadList[ii];
1603
1604 if( pad->GetPosition() != aPosition )
1605 break;
1606
1607 if( ( aLayerSet & pad->GetLayerSet() ).any() )
1608 return pad;
1609 }
1610
1611 // Not found:
1612 return nullptr;
1613 }
1614
1615 if( pad->GetPosition().x == aPosition.x ) // Must search considering Y coordinate
1616 {
1617 if( pad->GetPosition().y < aPosition.y ) // Must search after this item
1618 {
1619 idx += delta;
1620
1621 if( idx > idxmax )
1622 idx = idxmax;
1623 }
1624 else // Must search before this item
1625 {
1626 idx -= delta;
1627
1628 if( idx < 0 )
1629 idx = 0;
1630 }
1631 }
1632 else if( pad->GetPosition().x < aPosition.x ) // Must search after this item
1633 {
1634 idx += delta;
1635
1636 if( idx > idxmax )
1637 idx = idxmax;
1638 }
1639 else // Must search before this item
1640 {
1641 idx -= delta;
1642
1643 if( idx < 0 )
1644 idx = 0;
1645 }
1646 }
1647
1648 return nullptr;
1649}
constexpr int delta

References delta, pad, VECTOR2< T >::x, and VECTOR2< T >::y.

◆ GetPadFast()

PAD * BOARD::GetPadFast ( const VECTOR2I aPosition,
LSET  aLayerMask 
) const

Return pad found at aPosition on aLayerMask using the fast search method.

The fast search method only works if the pad list has already been built.

Parameters
aPositionA VECTOR2I object containing the position to hit test.
aLayerMaskA layer or layers to mask the hit test.
Returns
A pointer to a PAD object if found or NULL if not found.

Definition at line 1539 of file board.cpp.

1540{
1541 for( FOOTPRINT* footprint : Footprints() )
1542 {
1543 for( PAD* pad : footprint->Pads() )
1544 {
1545 if( pad->GetPosition() != aPosition )
1546 continue;
1547
1548 // Pad found, it must be on the correct layer
1549 if( ( pad->GetLayerSet() & aLayerSet ).any() )
1550 return pad;
1551 }
1552 }
1553
1554 return nullptr;
1555}

References Footprints(), and pad.

◆ GetPads()

const std::vector< PAD * > BOARD::GetPads ( ) const

Return a reference to a list of all the pads.

The returned list is not sorted and contains pointers to PADS, but those pointers do not convey ownership of the respective PADs.

Returns
a full list of pads.

Definition at line 1898 of file board.cpp.

1899{
1900 std::vector<PAD*> allPads;
1901
1902 for( FOOTPRINT* footprint : Footprints() )
1903 {
1904 for( PAD* pad : footprint->Pads() )
1905 allPads.push_back( pad );
1906 }
1907
1908 return allPads;
1909}

References Footprints(), and pad.

Referenced by CreatePadsShapesSection(), and DIALOG_COPPER_ZONE::sortNetsByPadCount().

◆ GetPageSettings()

◆ GetParent()

BOARD_ITEM_CONTAINER * BOARD_ITEM::GetParent ( void  ) const
inlineinherited

Definition at line 152 of file board_item.h.

152{ return (BOARD_ITEM_CONTAINER*) m_parent; }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:510

References EDA_ITEM::m_parent.

Referenced by PCB_POINT_EDITOR::addCorner(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), PNS_KICAD_IFACE::Commit(), FOOTPRINT::CoverageRatio(), BOARD_ITEM::DeleteStructure(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), EDIT_TOOL::DragArcTrack(), KIGFX::PCB_PAINTER::draw(), EDIT_TOOL::Duplicate(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_PLUGIN::format(), FormatProbeItem(), BOARD_ITEM::GetBoard(), BOARD_ITEM::GetParentFootprint(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), FP_TEXT::GetSelectMenuText(), FP_TEXTBOX::GetSelectMenuText(), FP_TEXT::GetShownText(), FP_TEXTBOX::GetShownText(), PCB_TEXT::GetShownText(), PCB_TEXTBOX::GetShownText(), getTopLevelGroup(), ALTIUM_PCB::HelperShapeSetLocalCoord(), GENERAL_COLLECTOR::Inspect(), FP_SHAPE::IsParentFlipped(), FP_TEXT::IsParentFlipped(), PCB_SELECTION_TOOL::itemPassesFilter(), memberOfFunc(), EDIT_TOOL::MoveExact(), BRDITEMS_PLOTTER::PlotFootprintShape(), BRDITEMS_PLOTTER::PlotFootprintTextItem(), BOARD_COMMIT::Push(), PCB_PARSER::resolveGroups(), PCB_BASE_EDIT_FRAME::saveCopyInUndoList(), CLIPBOARD_IO::SaveSelection(), PCB_SELECTION_TOOL::Selectable(), SwapItemData(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), FP_ZONE::ViewGetLOD(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetParentFootprint()

◆ GetParentGroup()

◆ GetPlotOptions()

◆ GetPosition()

VECTOR2I BOARD::GetPosition ( ) const
overridevirtual

Reimplemented from EDA_ITEM.

Definition at line 299 of file board.cpp.

300{
301 return ZeroOffset;
302}
static VECTOR2I ZeroOffset
A value of wxPoint(0,0) which can be passed to the Draw() functions.
Definition: board_item.h:133

References BOARD_ITEM::ZeroOffset.

◆ GetProject()

◆ GetProperties()

const std::map< wxString, wxString > & BOARD::GetProperties ( ) const
inline

Definition at line 332 of file board.h.

332{ return m_properties; }
std::map< wxString, wxString > m_properties
Definition: board.h:1198

References m_properties.

Referenced by PCB_CONTROL::AppendBoard(), PCB_PLUGIN::formatProperties(), PCB_EDIT_FRAME::SetPageSettings(), and StartPlotBoard().

◆ GetSelectMenuText()

wxString BOARD::GetSelectMenuText ( UNITS_PROVIDER aUnitsProvider) 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 870 of file board.cpp.

871{
872 return wxString::Format( _( "PCB" ) );
873}

References _, and Format().

◆ GetSortedPadListByXthenYCoord()

void BOARD::GetSortedPadListByXthenYCoord ( std::vector< PAD * > &  aVector,
int  aNetCode = -1 
) const

First empties then fills the vector with all pads and sorts them by increasing x coordinate, and for increasing y coordinate for same values of x coordinates.

The vector only holds pointers to the pads and those pointers are only references to pads which are owned by the BOARD through other links.

Parameters
aVectorWhere to put the pad pointers.
aNetCode= the netcode filter: = -1 to build the full pad list. = a given netcode to build the pad list relative to the given net

Definition at line 1666 of file board.cpp.

1667{
1668 for( FOOTPRINT* footprint : Footprints() )
1669 {
1670 for( PAD* pad : footprint->Pads( ) )
1671 {
1672 if( aNetCode < 0 || pad->GetNetCode() == aNetCode )
1673 aVector.push_back( pad );
1674 }
1675 }
1676
1677 std::sort( aVector.begin(), aVector.end(), sortPadsByXthenYCoord );
1678}
bool sortPadsByXthenYCoord(PAD *const &aLH, PAD *const &aRH)
Used by #GetSortedPadListByXCoord to sort a pad list by X coordinate value.
Definition: board.cpp:1657

References Footprints(), pad, and sortPadsByXthenYCoord().

◆ GetSortPosition()

virtual VECTOR2I EDA_ITEM::GetSortPosition ( ) const
inlinevirtualinherited

Return the coordinates that should be used for sorting this element visually compared to other elements.

For instance, for lines the midpoint might be a better sorting point than either end.

Returns
X,Y coordinate of the sort point

Reimplemented in SCH_LINE.

Definition at line 279 of file eda_item.h.

279{ return GetPosition(); }
virtual VECTOR2I GetPosition() const
Definition: eda_item.h:263

References EDA_ITEM::GetPosition().

◆ GetStandardLayerName()

static wxString BOARD::GetStandardLayerName ( PCB_LAYER_ID  aLayerId)
inlinestatic

Return an "English Standard" name of a PCB layer when given aLayerNumber.

This function is static so it can be called without a BOARD instance. Use GetLayerName() if want the layer names of a specific BOARD, which could be different than the default if the user has renamed any copper layers.

Parameters
aLayerIdis the layer identifier (index) to fetch.
Returns
a string containing the layer name or "BAD INDEX" if aLayerId is not legal.

Definition at line 689 of file board.h.

690 {
691 // a BOARD's standard layer name is the PCB_LAYER_ID fixed name
692 return LayerName( aLayerId );
693 }
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:30

References LayerName().

Referenced by BOARD(), GRID_CELL_LAYER_RENDERER::Draw(), DIALOG_EXPORT_SVG::ExportSVGFile(), GetLayerID(), BOARD_ITEM::GetLayerName(), PCB_LAYER_BOX_SELECTOR::getLayerName(), GetLayerName(), and GRID_CELL_LAYER_SELECTOR::GetValue().

◆ GetState()

int EDA_ITEM::GetState ( EDA_ITEM_FLAGS  type) const
inlineinherited

Definition at line 140 of file eda_item.h.

141 {
142 return m_status & type;
143 }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:509

References EDA_ITEM::m_status.

◆ GetStatus()

EDA_ITEM_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 153 of file eda_item.h.

153{ return m_status; }

References EDA_ITEM::m_status.

◆ GetStroke()

STROKE_PARAMS BOARD_ITEM::GetStroke ( ) const
virtualinherited

Reimplemented in PCB_SHAPE.

Definition at line 76 of file board_item.cpp.

77{
78 wxCHECK( false, STROKE_PARAMS( pcbIUScale.mmToIU( DEFAULT_LINE_WIDTH ) ) );
79}
#define DEFAULT_LINE_WIDTH
Simple container to manage line stroke parameters.
Definition: stroke_params.h:88

References DEFAULT_LINE_WIDTH, EDA_IU_SCALE::mmToIU(), and pcbIUScale.

Referenced by PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog().

◆ GetTentVias()

bool BOARD::GetTentVias ( ) const
inline

◆ GetTimeStamp()

int BOARD::GetTimeStamp ( ) const
inline

◆ GetTitleBlock() [1/2]

◆ GetTitleBlock() [2/2]

const TITLE_BLOCK & BOARD::GetTitleBlock ( ) const
inline

Definition at line 626 of file board.h.

626{ return m_titles; }

References m_titles.

◆ GetTrackLength()

std::tuple< int, double, double > BOARD::GetTrackLength ( const PCB_TRACK aTrack) const

Return data on the length and number of track segments connected to a given track.

This uses the connectivity data for the board to calculate connections

Parameters
aTrackStarting track (can also be a via) to check against for connection.
Returns
a tuple containing <number, length, package length>

Definition at line 1691 of file board.cpp.

1692{
1693 int count = 0;
1694 double length = 0.0;
1695 double package_length = 0.0;
1696
1697 auto connectivity = GetBoard()->GetConnectivity();
1700
1701 for( BOARD_CONNECTED_ITEM* item : connectivity->GetConnectedItems(
1702 static_cast<const BOARD_CONNECTED_ITEM*>( &aTrack ),
1703 { PCB_TRACE_T, PCB_ARC_T, PCB_VIA_T, PCB_PAD_T } ) )
1704 {
1705 count++;
1706
1707 if( PCB_TRACK* track = dynamic_cast<PCB_TRACK*>( item ) )
1708 {
1709 if( track->Type() == PCB_VIA_T && useHeight )
1710 {
1711 PCB_VIA* via = static_cast<PCB_VIA*>( track );
1712 length += stackup.GetLayerDistance( via->TopLayer(), via->BottomLayer() );
1713 continue;
1714 }
1715 else if( track->Type() == PCB_ARC_T )
1716 {
1717 // Note: we don't apply the clip-to-pad optimization if an arc ends in a pad
1718 // Room for future improvement.
1719 length += track->GetLength();
1720 continue;
1721 }
1722
1723 bool inPad = false;
1724 SEG trackSeg( track->GetStart(), track->GetEnd() );
1725 double segLen = trackSeg.Length();
1726 double segInPadLen = 0;
1727
1728 for( auto pad_it : connectivity->GetConnectedPads( item ) )
1729 {
1730 PAD* pad = static_cast<PAD*>( pad_it );
1731
1732 bool hitStart = pad->HitTest( track->GetStart(), track->GetWidth() / 2 );
1733 bool hitEnd = pad->HitTest( track->GetEnd(), track->GetWidth() / 2 );
1734
1735 if( hitStart && hitEnd )
1736 {
1737 inPad = true;
1738 break;
1739 }
1740 else if( hitStart || hitEnd )
1741 {
1742 VECTOR2I loc;
1743
1744 // We may not collide even if we passed the bounding-box hit test
1745 if( pad->GetEffectivePolygon()->Collide( trackSeg, 0, nullptr, &loc ) )
1746 {
1747 // Part 1: length of the seg to the intersection with the pad poly
1748 if( hitStart )
1749 trackSeg.A = loc;
1750 else
1751 trackSeg.B = loc;
1752
1753 segLen = trackSeg.Length();
1754
1755 // Part 2: length from the intersection to the pad anchor
1756 segInPadLen += ( loc - pad->GetPosition() ).EuclideanNorm();
1757 }
1758 }
1759 }
1760
1761 if( !inPad )
1762 length += segLen + segInPadLen;
1763 }
1764 else if( PAD* pad = dyn_cast<PAD*>( item ) )
1765 {
1766 package_length += pad->GetPadToDieLength();
1767 }
1768 }
1769
1770 return std::make_tuple( count, length, package_length );
1771}
A base class derived from BOARD_ITEM for items that can be connected and have a net,...
BOARD_STACKUP & GetStackupDescriptor()
bool m_UseHeightForLengthCalcs
Enable inclusion of stackup height in track length measurements and length tuning.
Manage layers needed to make a physical board.
int GetLayerDistance(PCB_LAYER_ID aFirstLayer, PCB_LAYER_ID aSecondLayer) const
Calculate the distance (height) between the two given copper layers.
Definition: seg.h:42
double EuclideanNorm(const VECTOR2I &vector)
Definition: trigo.h:129

References SEG::A, SEG::B, EuclideanNorm(), BOARD_ITEM::GetBoard(), GetConnectivity(), GetDesignSettings(), BOARD_STACKUP::GetLayerDistance(), BOARD_DESIGN_SETTINGS::GetStackupDescriptor(), SEG::Length(), BOARD_DESIGN_SETTINGS::m_UseHeightForLengthCalcs, pad, PCB_ARC_T, PCB_VIA_T, and via.

Referenced by NETINFO_ITEM::GetMsgPanelInfo(), and PCB_TRACK::GetMsgPanelInfo().

◆ GetTypeDesc()

wxString EDA_ITEM::GetTypeDesc ( )
inherited

Return a translated description of the type for this EDA_ITEM for display in user facing messages.

Definition at line 301 of file eda_item.cpp.

302{
303 //@see EDA_ITEM_DESC for definition of ENUM_MAP<KICAD_T>
304 wxString typeDescr = ENUM_MAP<KICAD_T>::Instance().ToString( Type() );
305
306 return wxGetTranslation( typeDescr );
307}
static ENUM_MAP< T > & Instance()
Definition: property.h:512

References ENUM_MAP< T >::Instance(), and EDA_ITEM::Type().

Referenced by PROPERTIES_PANEL::update().

◆ GetUnconnectedNetCount()

unsigned BOARD::GetUnconnectedNetCount ( ) const
Returns
the number of unconnected nets in the current ratsnest.

Definition at line 1151 of file board.cpp.

1152{
1153 return m_connectivity->GetUnconnectedCount();
1154}

References m_connectivity.

◆ GetVisibleElements()

GAL_SET BOARD::GetVisibleElements ( ) const

Return a set of all the element categories that are visible.

Returns
the set of visible GAL layers.
See also
enum GAL_LAYER_ID

Definition at line 545 of file board.cpp.

546{
548}
Helper for storing and iterating over GAL_LAYER_IDs.
Definition: layer_ids.h:296
GAL_SET m_VisibleItems
The GAL layers (aka items) that are turned on for viewing (.
virtual PROJECT_LOCAL_SETTINGS & GetLocalSettings() const
Definition: project.h:154

References PROJECT::GetLocalSettings(), m_project, PROJECT_LOCAL_SETTINGS::m_VisibleItems, and GAL_SET::set().

Referenced by APPEARANCE_CONTROLS::getVisibleObjects(), and PCB_EDIT_FRAME::setupUIConditions().

◆ GetVisibleLayers()

◆ GetX()

◆ GetY()

◆ GetZoneList()

std::list< ZONE * > BOARD::GetZoneList ( bool  aIncludeZonesInFootprints = false) const
Returns
a std::list of pointers to all board zones (possibly including zones in footprints)

Definition at line 1838 of file board.cpp.

1839{
1840 std::list<ZONE*> zones;
1841
1842 for( ZONE* zone : Zones() )
1843 zones.push_back( zone );
1844
1845 if( aIncludeZonesInFootprints )
1846 {
1847 for( FOOTPRINT* footprint : m_footprints )
1848 {
1849 for( FP_ZONE* zone : footprint->Zones() )
1850 zones.push_back( zone );
1851 }
1852 }
1853
1854 return zones;
1855}
A specialization of ZONE for use in footprints.
Definition: zone.h:897

References m_footprints, and Zones().

◆ GetZoneSettings()

const ZONE_SETTINGS & BOARD::GetZoneSettings ( ) const
overridevirtual

Fetch the zone settings for this container.

Reimplemented from BOARD_ITEM_CONTAINER.

Definition at line 608 of file board.cpp.

609{
611}
ZONE_SETTINGS & GetDefaultZoneSettings()

References BOARD_DESIGN_SETTINGS::GetDefaultZoneSettings(), and GetDesignSettings().

Referenced by LEGACY_PLUGIN::loadSETUP().

◆ GroupLegalOps()

BOARD::GroupLegalOpsField BOARD::GroupLegalOps ( const PCB_SELECTION selection) const

Check which selection tool group operations are legal given the selection.

Returns
bit field of legal ops.

Definition at line 2104 of file board.cpp.

2105{
2106 bool hasGroup = false;
2107 bool hasMember = false;
2108
2109 for( EDA_ITEM* item : selection )
2110 {
2111 if( item->Type() == PCB_GROUP_T )
2112 hasGroup = true;
2113
2114 if( static_cast<BOARD_ITEM*>( item )->GetParentGroup() )
2115 hasMember = true;
2116 }
2117
2118 GroupLegalOpsField legalOps;
2119
2120 legalOps.create = true;
2121 legalOps.removeItems = hasMember;
2122 legalOps.ungroup = hasGroup;
2123 legalOps.enter = hasGroup && selection.Size() == 1;
2124
2125 return legalOps;
2126}
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:99

References BOARD::GroupLegalOpsField::create, BOARD::GroupLegalOpsField::enter, BOARD_ITEM::GetParentGroup(), PCB_GROUP_T, BOARD::GroupLegalOpsField::removeItems, SELECTION::Size(), and BOARD::GroupLegalOpsField::ungroup.

◆ Groups() [1/2]

GROUPS & BOARD::Groups ( )
inline

The groups must maintain the following invariants.

These are checked by GroupsSanityCheck():

  • An item may appear in at most one group
  • Each group must contain at least one item
  • If a group specifies a name, it must be unique
  • The graph of groups containing subgroups must be cyclic.

Definition at line 327 of file board.h.

327{ return m_groups; }

References m_groups.

Referenced by PCB_CONTROL::AppendBoard(), PCB_PLUGIN::format(), GroupsSanityCheckInternal(), PCB_CONTROL::placeBoardItems(), and TestForExistingItem().

◆ Groups() [2/2]

const GROUPS & BOARD::Groups ( ) const
inline

Definition at line 328 of file board.h.

328{ return m_groups; }

References m_groups.

◆ GroupsSanityCheck()

wxString BOARD::GroupsSanityCheck ( bool  repair = false)

Consistency check of internal m_groups structure.

Parameters
repairif true, modify groups structure until it passes the sanity check.
Returns
empty string on success. Or error description if there's a problem.

Definition at line 2025 of file board.cpp.

2026{
2027 if( repair )
2028 {
2029 while( GroupsSanityCheckInternal( repair ) != wxEmptyString )
2030 {};
2031
2032 return wxEmptyString;
2033 }
2034 return GroupsSanityCheckInternal( repair );
2035}
wxString GroupsSanityCheckInternal(bool repair)
Definition: board.cpp:2038

References GroupsSanityCheckInternal().

Referenced by PCB_PARSER::resolveGroups(), and PCB_PLUGIN::Save().

◆ GroupsSanityCheckInternal()

wxString BOARD::GroupsSanityCheckInternal ( bool  repair)
Parameters
repairif true, make one modification to groups structure that brings it closer to passing the sanity check.
Returns
empty string on success. Or error description if there's a problem.

Definition at line 2038 of file board.cpp.

2039{
2040 // Cycle detection
2041 //
2042 // Each group has at most one parent group.
2043 // So we start at group 0 and traverse the parent chain, marking groups seen along the way.
2044 // If we ever see a group that we've already marked, that's a cycle.
2045 // If we reach the end of the chain, we know all groups in that chain are not part of any cycle.
2046 //
2047 // Algorithm below is linear in the # of groups because each group is visited only once.
2048 // There may be extra time taken due to the container access calls and iterators.
2049 //
2050 // Groups we know are cycle free
2051 std::unordered_set<PCB_GROUP*> knownCycleFreeGroups;
2052 // Groups in the current chain we're exploring.
2053 std::unordered_set<PCB_GROUP*> currentChainGroups;
2054 // Groups we haven't checked yet.
2055 std::unordered_set<PCB_GROUP*> toCheckGroups;
2056
2057 // Initialize set of groups to check that could participate in a cycle.
2058 for( PCB_GROUP* group : Groups() )
2059 toCheckGroups.insert( group);
2060
2061 while( !toCheckGroups.empty() )
2062 {
2063 currentChainGroups.clear();
2064 PCB_GROUP* group = *toCheckGroups.begin();
2065
2066 while( true )
2067 {
2068 if( currentChainGroups.find( group ) != currentChainGroups.end() )
2069 {
2070 if( repair )
2071 Remove( group );
2072
2073 return "Cycle detected in group membership";
2074 }
2075 else if( knownCycleFreeGroups.find( group ) != knownCycleFreeGroups.end() )
2076 {
2077 // Parent is a group we know does not lead to a cycle
2078 break;
2079 }
2080
2081 currentChainGroups.insert( group );
2082 // We haven't visited currIdx yet, so it must be in toCheckGroups
2083 toCheckGroups.erase( group );
2084
2085 group = group->GetParentGroup();
2086
2087 if( !group )
2088 {
2089 // end of chain and no cycles found in this chain
2090 break;
2091 }
2092 }
2093
2094 // No cycles found in chain, so add it to set of groups we know don't participate
2095 // in a cycle.
2096 knownCycleFreeGroups.insert( currentChainGroups.begin(), currentChainGroups.end() );
2097 }
2098
2099 // Success
2100 return "";
2101}
GROUPS & Groups()
The groups must maintain the following invariants.
Definition: board.h:327
void Remove(BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
Removes an item from the container.
Definition: board.cpp:779

References group, Groups(), and Remove().

Referenced by GroupsSanityCheck().

◆ HasFlag()

◆ HasHole()

◆ HasLineStroke()

virtual bool BOARD_ITEM::HasLineStroke ( ) const
inlinevirtualinherited

Check if this item has line stoke properties.

See also
STROKE_PARAMS

Reimplemented in PCB_SHAPE.

Definition at line 161 of file board_item.h.

161{ return false; }

◆ HighLightOFF()

void BOARD::HighLightOFF ( )
inline

Disable net highlight.

Definition at line 497 of file board.h.

498 {
499 HighLightON( false );
500 }
void HighLightON(bool aValue=true)
Enable or disable net highlighting.
Definition: board.cpp:2015

References HighLightON().

◆ HighLightON()

void BOARD::HighLightON ( bool  aValue = true)

Enable or disable net highlighting.

If a netcode >= 0 has been set with SetHighLightNet and aValue is true, the net will be highlighted. If aValue is false, net highlighting will be disabled regardless of the highlight netcode being set.

Definition at line 2015 of file board.cpp.

2016{
2017 if( m_highLight.m_highLightOn != aValue )
2018 {
2019 m_highLight.m_highLightOn = aValue;
2021 }
2022}
virtual void OnBoardHighlightNetChanged(BOARD &aBoard)
Definition: board.h:247
bool m_highLightOn
Definition: board.h:212

References InvokeListeners(), m_highLight, HIGH_LIGHT_INFO::m_highLightOn, and BOARD_LISTENER::OnBoardHighlightNetChanged().

Referenced by PCB_EDIT_FRAME::ExecuteRemoteCommand(), BOARD_INSPECTION_TOOL::highlightNet(), HighLightOFF(), and APPEARANCE_CONTROLS::onNetclassContextMenu().

◆ HitTest() [1/2]

virtual bool EDA_ITEM::HitTest ( const BOX2I aRect,
bool  aContained,
int  aAccuracy = 0 
) const
inlinevirtualinherited

Test if aRect intersects this item.

Parameters
aRectA reference to a BOX2I 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 in LIB_ITEM, LIB_PIN, LIB_SHAPE, LIB_TEXT, LIB_TEXTBOX, SCH_BITMAP, SCH_BUS_ENTRY_BASE, SCH_FIELD, SCH_JUNCTION, SCH_LABEL_BASE, SCH_LINE, SCH_NO_CONNECT, SCH_PIN, SCH_SHAPE, SCH_SHEET, SCH_SYMBOL, SCH_TEXT, SCH_TEXTBOX, DS_DRAW_ITEM_BASE, DS_DRAW_ITEM_POLYPOLYGONS, DS_DRAW_ITEM_RECT, DS_DRAW_ITEM_TEXT, DS_DRAW_ITEM_BITMAP, PCB_GROUP, FOOTPRINT, FP_TEXT, FP_TEXTBOX, PAD, PCB_BITMAP, PCB_DIMENSION_BASE, PCB_SHAPE, PCB_TARGET, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_VIA, PCB_ARC, ZONE, and GERBER_DRAW_ITEM.

Definition at line 249 of file eda_item.h.

250 {
251 return false; // derived classes should override this function
252 }

◆ HitTest() [2/2]

virtual bool EDA_ITEM::HitTest ( const VECTOR2I aPosition,
int  aAccuracy = 0 
) const
inlinevirtualinherited

◆ IncrementTimeStamp()

void BOARD::IncrementTimeStamp ( )

Definition at line 215 of file board.cpp.

216{
217 m_timeStamp++;
218
219 {
220 std::unique_lock<std::mutex> cacheLock( m_CachesMutex );
221 m_IntersectsAreaCache.clear();
222 m_EnclosedByAreaCache.clear();
227
230 m_DRCZones.clear();
231 m_DRCCopperZones.clear();
233 m_CopperItemRTreeCache = std::make_unique<DRC_RTREE>();
234 }
235}
std::unordered_map< PTR_PTR_LAYER_CACHE_KEY, bool > m_EnclosedByAreaCache
Definition: board.h:1150
std::vector< ZONE * > m_DRCCopperZones
Definition: board.h:1157
std::unique_ptr< DRC_RTREE > m_CopperItemRTreeCache
Definition: board.h:1153
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsCourtyardCache
Definition: board.h:1146
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsFCourtyardCache
Definition: board.h:1147
int m_DRCMaxPhysicalClearance
Definition: board.h:1159
std::unordered_map< wxString, LSET > m_LayerExpressionCache
Definition: board.h:1151
std::unordered_map< PTR_PTR_CACHE_KEY, bool > m_IntersectsBCourtyardCache
Definition: board.h:1148
int m_DRCMaxClearance
Definition: board.h:1158
std::unordered_map< ZONE *, std::unique_ptr< DRC_RTREE > > m_CopperZoneRTreeCache
Definition: board.h:1152
std::vector< ZONE * > m_DRCZones
Definition: board.h:1156
std::unordered_map< PTR_PTR_LAYER_CACHE_KEY, bool > m_IntersectsAreaCache
Definition: board.h:1149
std::mutex m_CachesMutex
Definition: board.h:1145

References m_CachesMutex, m_CopperItemRTreeCache, m_CopperZoneRTreeCache, m_DRCCopperZones, m_DRCMaxClearance, m_DRCMaxPhysicalClearance, m_DRCZones, m_EnclosedByAreaCache, m_IntersectsAreaCache, m_IntersectsBCourtyardCache, m_IntersectsCourtyardCache, m_IntersectsFCourtyardCache, m_LayerExpressionCache, and m_timeStamp.

Referenced by ZONE_FILLER_TOOL::FillAllZones(), DRC_ENGINE::InitEngine(), PCB_BASE_FRAME::OnModify(), DRC_ENGINE::RunTests(), and ZONE_FILLER_TOOL::ZoneFillDirty().

◆ InvokeListeners()

template<typename Func , typename... Args>
void BOARD::InvokeListeners ( Func &&  aFunc,
Args &&...  args 
)
inlineprivate

Definition at line 1170 of file board.h.

1171 {
1172 for( auto&& l : m_listeners )
1173 ( l->*aFunc )( std::forward<Args>( args )... );
1174 }

References m_listeners.

Referenced by Add(), FinalizeBulkAdd(), FinalizeBulkRemove(), HighLightON(), OnItemChanged(), OnItemsChanged(), PadDelete(), Remove(), ResetNetHighLight(), SetHighLightNet(), and SynchronizeNetsAndNetClasses().

◆ IsBrightened()

◆ IsConnected()

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 119 of file eda_item.h.

119{ return m_flags & IS_DRAGGING; }

References IS_DRAGGING, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

◆ IsElementVisible()

bool BOARD::IsElementVisible ( GAL_LAYER_ID  aLayer) const

◆ IsEmpty()

bool BOARD::IsEmpty ( ) const
inline

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 122 of file eda_item.h.

122{ return m_flags & ENTERED; }
#define ENTERED
indicates a group has been entered

References ENTERED, and EDA_ITEM::m_flags.

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

◆ IsFootprintHolder()

bool BOARD::IsFootprintHolder ( ) const
inline

Find out if the board is being used to hold a single footprint for editing/viewing.

Returns
if the board is just holding a footprint

Definition at line 295 of file board.h.

296 {
298 }

References FPHOLDER, and m_boardUse.

Referenced by BOARD_ADAPTER::createBoardPolygon(), FOOTPRINT::GetBoundingBox(), FOOTPRINT::GetBoundingHull(), and BOARD_ADAPTER::InitSettings().

◆ IsFootprintLayerVisible()

bool BOARD::IsFootprintLayerVisible ( PCB_LAYER_ID  aLayer) const

Expect either of the two layers on which a footprint can reside, and returns whether that layer is visible.

Parameters
aLayeris one of the two allowed layers for footprints: F_Cu or B_Cu
Returns
true if the layer is visible, otherwise false.

Definition at line 590 of file board.cpp.

591{
592 switch( aLayer )
593 {
594 case F_Cu: return IsElementVisible( LAYER_MOD_FR );
595 case B_Cu: return IsElementVisible( LAYER_MOD_BK );
596 default: wxFAIL_MSG( wxT( "BOARD::IsModuleLayerVisible(): bad layer" ) ); return true;
597 }
598}
@ LAYER_MOD_FR
show footprints on front
Definition: layer_ids.h:208
@ LAYER_MOD_BK
show footprints on back
Definition: layer_ids.h:209
@ B_Cu
Definition: layer_ids.h:95
@ F_Cu
Definition: layer_ids.h:64

References B_Cu, F_Cu, IsElementVisible(), LAYER_MOD_BK, and LAYER_MOD_FR.

Referenced by GetFootprint().

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 217 of file eda_item.h.

217{ return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:511

References EDA_ITEM::m_forceVisible.

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

◆ IsHighLightNetON()

bool BOARD::IsHighLightNetON ( ) const
inline
Returns
true if a net is currently highlighted

Definition at line 483 of file board.h.

483{ return m_highLight.m_highLightOn; }

References m_highLight, and HIGH_LIGHT_INFO::m_highLightOn.

Referenced by PCB_EDIT_FRAME::ExecuteRemoteCommand(), and DIALOG_NET_INSPECTOR::OnBoardHighlightNetChanged().

◆ IsKnockout()

◆ IsLayerEnabled()

bool BOARD::IsLayerEnabled ( PCB_LAYER_ID  aLayer) const

A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer is enabled.

Parameters
aLayer= The layer to be tested
Returns
true if the layer is visible.

Definition at line 511 of file board.cpp.

512{
513 return GetDesignSettings().IsLayerEnabled( aLayer );
514}
bool IsLayerEnabled(PCB_LAYER_ID aLayerId) const
Test whether a given layer aLayerId is enabled.

References GetDesignSettings(), and BOARD_DESIGN_SETTINGS::IsLayerEnabled().

Referenced by GRID_CELL_LAYER_SELECTOR::BeginEdit(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), GetLayerName(), GetLayerType(), BOARD_ADAPTER::Is3dLayerEnabled(), PCB_LAYER_SELECTOR::isLayerEnabled(), SetLayerName(), SetLayerType(), PANEL_SETUP_LAYERS::setUserDefinedLayerCheckBoxes(), and DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZonesToZones().

◆ IsLayerVisible()

bool BOARD::IsLayerVisible ( PCB_LAYER_ID  aLayer) const

A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer is visible.

Parameters
aLayeris the layer to be tested.
Returns
true if the layer is visible otherwise false.

Definition at line 491 of file board.cpp.

492{
493 // If there is no project, assume layer is visible always
494 return GetDesignSettings().IsLayerEnabled( aLayer )
496}

References GetDesignSettings(), PROJECT::GetLocalSettings(), BOARD_DESIGN_SETTINGS::IsLayerEnabled(), m_project, and PROJECT_LOCAL_SETTINGS::m_VisibleLayers.

Referenced by FOOTPRINT::GetBoundingBox(), PCB_BASE_FRAME::GetDocumentExtents(), BOARD_ADAPTER::Is3dLayerEnabled(), PCB_CONTROL::LayerNext(), PCB_CONTROL::LayerPrev(), PCB_SELECTION_TOOL::Selectable(), and PCB_DRAW_PANEL_GAL::SyncLayersVisibility().

◆ IsLocked()

bool BOARD_ITEM::IsLocked ( ) const
virtualinherited

Reimplemented in FOOTPRINT, and PAD.

Definition at line 65 of file board_item.cpp.

66{
67 if( GetParentGroup() )
68 return GetParentGroup()->IsLocked();
69
70 const BOARD* board = GetBoard();
71
72 return board && board->GetBoardUse() != BOARD_USE::FPHOLDER && m_isLocked;
73}
bool m_isLocked
Definition: board_item.h:322
virtual bool IsLocked() const
Definition: board_item.cpp:65
BOARD_USE GetBoardUse() const
Get what the board use is.
Definition: board.h:284

References FPHOLDER, BOARD_ITEM::GetBoard(), GetBoardUse(), BOARD_ITEM::GetParentGroup(), BOARD_ITEM::IsLocked(), and BOARD_ITEM::m_isLocked.

Referenced by BOARD_ITEM_DESC::BOARD_ITEM_DESC(), KI_TEST::CheckFpShape(), KI_TEST::CheckFpText(), KI_TEST::CheckFpZone(), PCB_CONTROL::DeleteItemCursor(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), EDIT_TOOL::DragArcTrack(), EDIT_TOOL::FilletTracks(), PCB_PLUGIN::format(), DSN::SPECCTRA_DB::FromSESSION(), PCB_GROUP::GetMsgPanelInfo(), FP_TEXT::GetMsgPanelInfo(), FP_TEXTBOX::GetMsgPanelInfo(), PCB_DIMENSION_BASE::GetMsgPanelInfo(), PCB_SHAPE::GetMsgPanelInfo(), PCB_TEXT::GetMsgPanelInfo(), PCB_TEXTBOX::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfoBase_Common(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), GROUP_TOOL::Group(), ROUTER_TOOL::InlineDrag(), GENERAL_COLLECTOR::Inspect(), BOARD_ITEM::IsLocked(), PAD::IsLocked(), PCB_SELECTION_TOOL::itemPassesFilter(), CADSTAR_PCB_ARCHIVE_LOADER::makeTracksFromShapes(), TRACKS_CLEANER::mergeCollinearSegments(), BOARD_EDITOR_CONTROL::modifyLockSelected(), PCB_POINT_EDITOR::OnSelectionChange(), ZONE_SETTINGS::operator<<(), processTextItem(), PCB_SELECTION_TOOL::RequestSelection(), PNS_KICAD_IFACE_BASE::syncArc(), PNS_KICAD_IFACE_BASE::syncTrack(), PNS_KICAD_IFACE_BASE::syncVia(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataToWindow(), BOARD_ITEM::ViewGetLayers(), PCB_TRACK::ViewGetLayers(), and PCB_VIA::ViewGetLayers().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 116 of file eda_item.h.

116{ return m_flags & IS_CHANGED; }

References IS_CHANGED, and EDA_ITEM::m_flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsOnCopperLayer()

virtual bool BOARD_ITEM::IsOnCopperLayer ( ) const
inlinevirtualinherited
Returns
true if the object is on any copper layer, false otherwise.

Reimplemented in PAD, PCB_TRACK, and ZONE.

Definition at line 115 of file board_item.h.

116 {
117 return IsCopperLayer( GetLayer() );
118 }

References BOARD_ITEM::GetLayer(), and IsCopperLayer().

Referenced by CN_CONNECTIVITY_ALGO::Add(), FOOTPRINT::CheckNetTies(), DRC_ENGINE::EvalRules(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_CONNECTED_ITEM::SetNetCode(), and PCB_CONTROL::UpdateMessagePanel().

◆ IsOnLayer()

virtual bool BOARD_ITEM::IsOnLayer ( PCB_LAYER_ID  aLayer) const
inlinevirtualinherited

◆ 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 LIB_TEXTBOX, SCH_FIELD, SCH_LABEL, SCH_SHEET, SCH_SHEET_PIN, SCH_SYMBOL, SCH_TEXT, and SCH_TEXTBOX.

Definition at line 434 of file eda_item.h.

434{ return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 123 of file eda_item.h.

123{ return m_flags & IS_RESIZING; }

References IS_RESIZING, and EDA_ITEM::m_flags.

◆ IsRollover()

bool EDA_ITEM::IsRollover ( ) const
inlineinherited

Definition at line 126 of file eda_item.h.

127 {
128 return ( m_flags & ( IS_ROLLOVER | IS_MOVING ) ) == IS_ROLLOVER;
129 }
#define IS_ROLLOVER
Rollover active. Used for hyperlink highlighting.

References IS_MOVING, IS_ROLLOVER, and EDA_ITEM::m_flags.

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

◆ IsSelected()

bool EDA_ITEM::IsSelected ( ) const
inlineinherited

Definition at line 121 of file eda_item.h.

121{ return m_flags & SELECTED; }

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_TOOL::ChangeTextType(), 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::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::DS_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_PAINTER::getLineWidth(), DIALOG_EXCHANGE_FOOTPRINTS::isMatch(), DIALOG_CHANGE_SYMBOLS::isMatch(), SCH_MOVE_TOOL::Main(), SCH_SCREEN::MarkConnections(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), KIGFX::SCH_PAINTER::nonCached(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), BOARD_COMMIT::Push(), EE_SELECTION_TOOL::RebuildSelection(), PCB_SELECTION_TOOL::RebuildSelection(), RENDER_3D_OPENGL::renderFootprint(), SCH_EDIT_TOOL::Rotate(), EE_TOOL_BASE< T >::saveCopyInUndoList(), GERBVIEW_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::selectionContains(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), KIGFX::SCH_PAINTER::setDeviceColors(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), GERBVIEW_SELECTION_TOOL::unselect(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), and DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem().

◆ IsShownAsBitmap()

bool EDA_ITEM::IsShownAsBitmap ( ) const
inlineinherited

Definition at line 189 of file eda_item.h.

189{ return m_flags & IS_SHOWN_AS_BITMAP; }
#define IS_SHOWN_AS_BITMAP

References IS_SHOWN_AS_BITMAP, and EDA_ITEM::m_flags.

◆ IsTented()

virtual bool BOARD_ITEM::IsTented ( ) const
inlinevirtualinherited

Reimplemented in PCB_VIA.

Definition at line 125 of file board_item.h.

126 {
127 return false;
128 }

Referenced by BOARD_INSPECTION_TOOL::InspectClearance(), and DRC_TEST_PROVIDER_SILK_CLEARANCE::Run().

◆ IsType()

virtual bool EDA_ITEM::IsType ( const std::vector< KICAD_T > &  aScanTypes) const
inlinevirtualinherited

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 in SCH_FIELD, SCH_ITEM, SCH_LABEL_BASE, SCH_LINE, FP_SHAPE, FP_TEXT, FP_TEXTBOX, PAD, PCB_DIMENSION_BASE, PCB_SHAPE, PCB_TEXT, PCB_TEXTBOX, and PCB_VIA.

Definition at line 197 of file eda_item.h.

198 {
199 for( KICAD_T scanType : aScanTypes )
200 {
201 if( scanType == SCH_LOCATE_ANY_T || scanType == m_structType )
202 return true;
203 }
204
205 return false;
206 }
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:519
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:78
@ SCH_LOCATE_ANY_T
Definition: typeinfo.h:182

References EDA_ITEM::m_structType, and SCH_LOCATE_ANY_T.

Referenced by SCH_EDIT_TOOL::AutoplaceFields(), ROUTER_TOOL::CanInlineDrag(), DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES(), SCH_FIELD::GetCanonicalName(), KIGFX::SCH_PAINTER::getLineWidth(), SCH_FIELD::GetName(), KIGFX::SCH_PAINTER::getRenderColor(), SCH_FIELD::GetShownText(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingBus(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLine(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingWire(), SCH_ITEM::IsType(), FP_TEXT::IsType(), FP_TEXTBOX::IsType(), PAD::IsType(), PCB_DIMENSION_BASE::IsType(), PCB_SHAPE::IsType(), PCB_TEXT::IsType(), PCB_TEXTBOX::IsType(), PCB_VIA::IsType(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), SCH_FIELD::SetId(), SCH_BASE_FRAME::UpdateItem(), and EDA_ITEM::Visit().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 120 of file eda_item.h.

120{ return m_flags & IS_WIRE_IMAGE; }

References IS_WIRE_IMAGE, and EDA_ITEM::m_flags.

◆ IterateForward() [1/2]

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

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

Definition at line 316 of file eda_item.h.

318 {
319 for( const auto& it : aList )
320 {
321 if( static_cast<EDA_ITEM*>( it )->Visit( inspector,
322 testData,
323 scanTypes ) == INSPECT_RESULT::QUIT )
324 {
326 }
327 }
328
330 }
virtual INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes)
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 INSPECT_RESULT EDA_ITEM::IterateForward ( std::vector< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const std::vector< KICAD_T > &  scanTypes 
)
inlinestaticinherited

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

Definition at line 336 of file eda_item.h.

338 {
339 for( const auto& it : aList )
340 {
341 if( static_cast<EDA_ITEM*>( it )->Visit( inspector,
342 testData,
343 scanTypes ) == INSPECT_RESULT::QUIT )
344 {
346 }
347 }
348
350 }

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.

Reimplemented in PCB_VIA.

Definition at line 100 of file board_item.cpp.

101{
102 const BOARD* board = GetBoard();
103 LSET layers = GetLayerSet();
104
105 // Try to be smart and useful. Check all copper first.
106 if( layers[F_Cu] && layers[B_Cu] )
107 return _( "all copper layers" );
108
109 LSET copperLayers = layers & board->GetEnabledLayers().AllCuMask();
110 LSET techLayers = layers & board->GetEnabledLayers().AllTechMask();
111
112 for( LSET testLayers : { copperLayers, techLayers, layers } )
113 {
114 for( int bit = PCBNEW_LAYER_ID_START; bit < PCB_LAYER_ID_COUNT; ++bit )
115 {
116 if( testLayers[ bit ] )
117 {
118 wxString layerInfo = board->GetLayerName( static_cast<PCB_LAYER_ID>( bit ) );
119
120 if( testLayers.count() > 1 )
121 layerInfo << wxS( " " ) + _( "and others" );
122
123 return layerInfo;
124 }
125 }
126 }
127
128 // No copper, no technicals: no layer
129 return _( "no layers" );
130}
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition: board_item.h:174
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:485
static LSET AllTechMask()
Return a mask holding all technical layers (no CU layer) on both side.
Definition: lset.cpp:841
@ PCBNEW_LAYER_ID_START
Definition: layer_ids.h:63

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

Referenced by PAD::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfo(), and PAD::GetSelectMenuText().

◆ MapNets()

void BOARD::MapNets ( const BOARD aDestBoard)

Map all nets in the given board to nets with the same name (if any) in the destination board.

This allows us to share layouts which came from the same hierarchical sheet in the schematic.

Definition at line 1932 of file board.cpp.

1933{
1935 {
1936 NETINFO_ITEM* netInfo = aDestBoard->FindNet( item->GetNetname() );
1937
1938 if( netInfo )
1939 item->SetNet( netInfo );
1940 else
1941 item->SetNetCode( 0 );
1942 }
1943}
const std::vector< BOARD_CONNECTED_ITEM * > AllConnectedItems()
Definition: board.cpp:1912
NETINFO_ITEM * FindNet(int aNetcode) const
Search for a net with the given netcode.
Definition: board.cpp:1382
void SetNetCode(int aNetCode)
Definition: netinfo.h:114

References AllConnectedItems(), FindNet(), and NETINFO_ITEM::SetNetCode().

◆ Markers() [1/2]

◆ Markers() [2/2]

const MARKERS & BOARD::Markers ( ) const
inline

Definition at line 317 of file board.h.

317{ return m_markers; }

References m_markers.

◆ Matches() [1/2]

virtual bool EDA_ITEM::Matches ( const EDA_SEARCH_DATA 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_MARKER, LIB_TEXTBOX, SCH_FIELD, SCH_PIN, SCH_SHEET, SCH_SHEET_PIN, SCH_SYMBOL, SCH_TEXT, SCH_TEXTBOX, FP_TEXT, FP_TEXTBOX, NETINFO_ITEM, PCB_MARKER, PCB_TEXT, PCB_TEXTBOX, and ZONE.

Definition at line 396 of file eda_item.h.

397 {
398 return false;
399 }

Referenced by SCH_DRAWING_TOOLS::DrawShape(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_EDITOR_CONTROL::HasMatch(), SCH_MARKER::Matches(), LIB_TEXTBOX::Matches(), SCH_FIELD::Matches(), SCH_PIN::Matches(), SCH_SHEET_PIN::Matches(), SCH_TEXT::Matches(), SCH_TEXTBOX::Matches(), FP_TEXT::Matches(), FP_TEXTBOX::Matches(), NETINFO_ITEM::Matches(), PCB_MARKER::Matches(), PCB_TEXT::Matches(), PCB_TEXTBOX::Matches(), ZONE::Matches(), SCH_EDITOR_CONTROL::ReplaceAndFindNext(), SCH_DRAWING_TOOLS::TwoClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ Matches() [2/2]

bool EDA_ITEM::Matches ( const wxString &  aText,
const EDA_SEARCH_DATA 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 117 of file eda_item.cpp.

118{
119 wxString text = aText;
120 wxString searchText = aSearchData.findString;
121
122 // Don't match if searching for replaceable item and the item doesn't support text replace.
123 if( aSearchData.searchAndReplace && !IsReplaceable() )
124 return false;
125
126 if( !aSearchData.matchCase )
127 {
128 text.MakeUpper();
129 searchText.MakeUpper();
130 }
131
133 {
134 int ii = 0;
135
136 while( ii < (int) text.length() )
137 {
138 int next = text.find( searchText, ii );
139
140 if( next == wxNOT_FOUND )
141 return false;
142
143 ii = next;
144 next += searchText.length();
145
146 bool startOK = ( ii == 0 || !wxIsalnum( text.GetChar( ii - 1 ) ) );
147 bool endOK = ( next == (int) text.length() || !wxIsalnum( text.GetChar( next ) ) );
148
149 if( startOK && endOK )
150 return true;
151 else
152 ii++;
153 }
154
155 return false;
156 }
157 else if( aSearchData.matchMode == EDA_SEARCH_MATCH_MODE::WILDCARD )
158 {
159 return text.Matches( searchText );
160 }
161 else
162 {
163 return text.Find( searchText ) != wxNOT_FOUND;
164 }
165}
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition: eda_item.h:434
CITER next(CITER it)
Definition: ptree.cpp:126
EDA_SEARCH_MATCH_MODE matchMode

References EDA_SEARCH_DATA::findString, EDA_ITEM::IsReplaceable(), EDA_SEARCH_DATA::matchCase, EDA_SEARCH_DATA::matchMode, next(), EDA_SEARCH_DATA::searchAndReplace, text, WHOLEWORD, and WILDCARD.

◆ Move()

void BOARD::Move ( const VECTOR2I aMoveVector)
overridevirtual

Move this object.

Parameters
aMoveVectorthe move vector for this object.

Reimplemented from BOARD_ITEM.

Definition at line 311 of file board.cpp.

312{
313 INSPECTOR_FUNC inspector =
314 [&] ( EDA_ITEM* item, void* testData )
315 {
316 BOARD_ITEM* brdItem = static_cast<BOARD_ITEM*>( item );
317
318 // aMoveVector was snapshotted, don't need "data".
319 // Only move the top level group
320 if( brdItem->GetParentGroup() == nullptr )
321 brdItem->Move( aMoveVector );
322
324 };
325
326 Visit( inspector, nullptr, GENERAL_COLLECTOR::BoardLevelItems );
327}
virtual void Move(const VECTOR2I &aMoveVector)
Move this object.
Definition: board_item.h:255
INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes) override
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: board.cpp:1256
static const std::vector< KICAD_T > BoardLevelItems
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT,...
Definition: collectors.h:235
std::function< INSPECT_RESULT(EDA_ITEM *aItem, void *aTestData) > INSPECTOR_FUNC
Used to inspect and possibly collect the (search) results of iterating over a list or tree of KICAD_T...
Definition: eda_item.h:89

References GENERAL_COLLECTOR::BoardLevelItems, CONTINUE, BOARD_ITEM::GetParentGroup(), BOARD_ITEM::Move(), and Visit().

Referenced by EAGLE_PLUGIN::centerBoard(), CADSTAR_PCB_ARCHIVE_PLUGIN::Load(), and ALTIUM_PCB::Parse().

◆ OnItemChanged()

void BOARD::OnItemChanged ( BOARD_ITEM aItem)

Notify the board and its listeners that an item on the board has been modified in some way.

Definition at line 1981 of file board.cpp.

1982{
1984}
virtual void OnBoardItemChanged(BOARD &aBoard, BOARD_ITEM *aBoardItem)
Definition: board.h:245

References InvokeListeners(), and BOARD_LISTENER::OnBoardItemChanged().

Referenced by PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), and BOARD_COMMIT::Revert().

◆ OnItemsChanged()

void BOARD::OnItemsChanged ( std::vector< BOARD_ITEM * > &  aItems)

Notify the board and its listeners that an item on the board has been modified in some way.

Definition at line 1987 of file board.cpp.

1988{
1990}
virtual void OnBoardItemsChanged(BOARD &aBoard, std::vector< BOARD_ITEM * > &aBoardItem)
Definition: board.h:246

References InvokeListeners(), and BOARD_LISTENER::OnBoardItemsChanged().

Referenced by BOARD_COMMIT::Push(), BOARD_COMMIT::Revert(), and DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataFromWindow().

◆ 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 231 of file eda_item.cpp.

232{
233 wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
234 GetClass() ) );
235
236 return false;
237}

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

◆ operator=()

BOARD & BOARD::operator= ( const BOARD aOther)
privatedelete

◆ PadDelete()

void BOARD::PadDelete ( PAD aPad)

Delete a given pad from the BOARD by removing it from its footprint and from the m_NetInfo.

Makes no UI calls.

Parameters
aPadis the pad to delete.

Definition at line 1681 of file board.cpp.

1682{
1683 GetConnectivity()->Remove( aPad );
1684
1686
1687 aPad->DeleteStructure();
1688}
void DeleteStructure()
Delete this object after removing from its parent if it has one.
Definition: board_item.cpp:144
virtual void OnBoardItemRemoved(BOARD &aBoard, BOARD_ITEM *aBoardItem)
Definition: board.h:242

References BOARD_ITEM::DeleteStructure(), GetConnectivity(), InvokeListeners(), and BOARD_LISTENER::OnBoardItemRemoved().

◆ Remove()

void BOARD::Remove ( BOARD_ITEM aItem,
REMOVE_MODE  aMode = REMOVE_MODE::NORMAL 
)
overridevirtual

Removes an item from the container.

Implements BOARD_ITEM_CONTAINER.

Definition at line 779 of file board.cpp.

780{
781 // find these calls and fix them! Don't send me no stinking' nullptr.
782 wxASSERT( aBoardItem );
783
784 switch( aBoardItem->Type() )
785 {
786 case PCB_NETINFO_T:
787 {
788 NETINFO_ITEM* item = static_cast<NETINFO_ITEM*>( aBoardItem );
790
791 for( FOOTPRINT* fp : m_footprints )
792 {
793 for( PAD* pad : fp->Pads() )
794 {
795 if( pad->GetNet() == item )
796 pad->SetNet( unconnected );
797 }
798 }
799
800 for( ZONE* zone : m_zones )
801 {
802 if( zone->GetNet() == item )
803 zone->SetNet( unconnected );
804 }
805
806 for( PCB_TRACK* track : m_tracks )
807 {
808 if( track->GetNet() == item )
809 track->SetNet( unconnected );
810 }
811
812 m_NetInfo.RemoveNet( item );
813 break;
814 }
815
816 case PCB_MARKER_T:
817 alg::delete_matching( m_markers, aBoardItem );
818 break;
819
820 case PCB_GROUP_T:
821 alg::delete_matching( m_groups, aBoardItem );
822 break;
823
824 case PCB_ZONE_T:
825 alg::delete_matching( m_zones, aBoardItem );
826 break;
827
828 case PCB_FOOTPRINT_T:
829 alg::delete_matching( m_footprints, aBoardItem );
830 break;
831
832 case PCB_TRACE_T:
833 case PCB_ARC_T:
834 case PCB_VIA_T:
835 alg::delete_matching( m_tracks, aBoardItem );
836 break;
837
839 case PCB_DIM_CENTER_T:
840 case PCB_DIM_RADIAL_T:
842 case PCB_DIM_LEADER_T:
843 case PCB_SHAPE_T:
844 case PCB_BITMAP_T:
845 case PCB_TEXT_T:
846 case PCB_TEXTBOX_T:
847 case PCB_TARGET_T:
848 alg::delete_matching( m_drawings, aBoardItem );
849 break;
850
851 // other types may use linked list
852 default:
853 wxFAIL_MSG( wxT( "BOARD::Remove() needs more ::Type() support" ) );
854 }
855
856 aBoardItem->SetFlags( STRUCT_DELETED );
857
858 PCB_GROUP* parentGroup = aBoardItem->GetParentGroup();
859
860 if( parentGroup && !( parentGroup->GetFlags() & STRUCT_DELETED ) )
861 parentGroup->RemoveItem( aBoardItem );
862
863 m_connectivity->Remove( aBoardItem );
864
865 if( aRemoveMode != REMOVE_MODE::BULK )
867}
EDA_ITEM_FLAGS GetFlags() const
Definition: eda_item.h:158
void RemoveNet(NETINFO_ITEM *aNet)
Remove a net from the net list.
bool RemoveItem(BOARD_ITEM *aItem)
Remove item from group.
Definition: pcb_group.cpp:51
void delete_matching(_Container &__c, _Value __value)
Covers for the horrifically named std::remove and std::remove_if (neither of which remove anything).
Definition: kicad_algo.h:164

References BULK, alg::delete_matching(), EDA_ITEM::GetFlags(), NETINFO_LIST::GetNetItem(), BOARD_ITEM::GetParentGroup(), InvokeListeners(), m_connectivity, m_drawings, m_footprints, m_groups, m_markers, m_NetInfo, m_tracks, m_zones, BOARD_LISTENER::OnBoardItemRemoved(), pad, PCB_ARC_T, PCB_BITMAP_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FOOTPRINT_T, PCB_GROUP_T, PCB_MARKER_T, PCB_NETINFO_T, PCB_SHAPE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, PCB_GROUP::RemoveItem(), NETINFO_LIST::RemoveNet(), EDA_ITEM::SetFlags(), STRUCT_DELETED, EDA_ITEM::Type(), and NETINFO_LIST::UNCONNECTED.

Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), TRACKS_CLEANER::deleteDanglingTracks(), CADSTAR_PCB_ARCHIVE_LOADER::drawCadstarText(), GroupsSanityCheckInternal(), FABMASTER::loadZones(), TRACKS_CLEANER::mergeCollinearSegments(), DIALOG_NET_INSPECTOR::onDeleteNet(), BOARD_COMMIT::Push(), TRACKS_CLEANER::removeItems(), TEARDROP_MANAGER::RemoveTeardrops(), BOARD_COMMIT::Revert(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and GROUP_TOOL::Ungroup().

◆ RemoveAllListeners()

void BOARD::RemoveAllListeners ( )

Remove all listeners.

Definition at line 1975 of file board.cpp.

1976{
1977 m_listeners.clear();
1978}

References m_listeners.

Referenced by PCB_EDIT_FRAME::~PCB_EDIT_FRAME().

◆ RemoveLi