54#include <wx/choicdlg.h> 
  103#define PTH_DLG_TYPE 0 
  104#define SMD_DLG_TYPE 1 
  105#define CONN_DLG_TYPE 2 
  106#define NPTH_DLG_TYPE 3 
  107#define APERTURE_DLG_TYPE 4 
  176        SetTitle( 
_( 
"Pad Properties" ) );
 
  184        SetTitle( 
_( 
"Default Pad Properties for Add Pad Tool" ) );
 
  280    wxUpdateUIEvent dummyUI;
 
 
  337                                              m_parent->GetCanvas()->GetBackend() );
 
  363    settings->SetHighContrast( 
false );
 
  370    double gridsize = 0.001 * 
pcbIUScale.IU_PER_MM;
 
 
  431    wxCommandEvent cmd_event;
 
 
  482    double baseline = 1.0;
 
  484    auto considerCheckboxes = [&]( 
const std::vector<wxCheckBox*>& checkBoxes )
 
  486        for( 
size_t ii : { 0, 1, 2, 3 } )
 
  488            if( !checkBoxes[ii]->IsChecked() )
 
  491            if( checkBoxes[( ii + 1 ) % 4]->IsChecked() || checkBoxes[( ii - 1 ) % 4]->IsChecked() )
 
  494                baseline = std::max( baseline, 0.5 );
 
 
  518    auto updateCheckBoxes = []( 
const std::vector<wxCheckBox*>& aCheckBoxes )
 
  520        for( 
size_t ii : { 0, 1, 2, 3 } )
 
  522            bool disable = aCheckBoxes[( ii + 1 ) % 4]->IsChecked()
 
  523                        || aCheckBoxes[( ii + 3 ) % 4]->IsChecked();
 
  525            aCheckBoxes[ii]->Enable( !disable );
 
  528                aCheckBoxes[ii]->SetValue( 
false );
 
 
  552    wxObject* ctrl = 
event.GetEventObject();
 
  553    wxString  value = 
event.GetString();
 
  554    bool      changed = 
false;
 
  560        if( value.ToDouble( &ratioPercent ) )
 
  565            if( ratioPercent < 0.0 )
 
  570            else if( ratioPercent > maxRatio * 100.0 )
 
  588        if( value.ToDouble( &ratioPercent ) )
 
  592            if( ratioPercent < 0.0 )
 
  597            else if( ratioPercent > maxRatio * 100.0 )
 
 
  654            if( footprint->IsFlipped() )
 
  658                relPos.
y = - relPos.
y;
 
  665            msg.Printf( 
_(
"Footprint %s (%s), %s, rotated %g deg"),
 
  666                         footprint->Reference().GetShownText( 
false ),
 
  667                         footprint->Value().GetShownText( 
false ),
 
  668                         footprint->IsFlipped() ? 
_( 
"back side (mirrored)" ) : 
_( 
"front side" ),
 
  669                         footprint->GetOrientation().AsDegrees() );
 
  684            switch( 
m_board->GetFirstFootprint()->GetAttributes() )
 
  690                    m_board->GetDesignSettings().SetDefaultMasterPad();
 
  707    m_posX.ChangeValue( absPos.
x );
 
  708    m_posY.ChangeValue( absPos.
y );
 
  731    if( 
m_previewPad->GetLocalSolderMaskMargin().has_value() )
 
  736    if( 
m_previewPad->GetLocalSolderPasteMargin().has_value() )
 
  741    if( 
m_previewPad->GetLocalSolderPasteMarginRatio().has_value() )
 
  746    if( 
m_previewPad->GetLocalThermalSpokeWidthOverride().has_value() )
 
  751    if( 
m_previewPad->GetLocalThermalGapOverride().has_value() )
 
  824    wxCommandEvent cmd_event;
 
  830    m_previewPad->SetThermalSpokeAngle( spokeInitialAngle );
 
 
  900    wxCHECK_MSG( 
m_board, , 
"Expected valid board in afterPadstackModeChanged" );
 
  918        std::vector choices = {
 
 
  982    settings->SetHighContrast( 
false );
 
 
 1010            const double ipcRadiusRatio =
 
 1047            const double ipcRadiusRatio =
 
 1097    for( 
size_t i = 0; i < 
m_notebook->GetPageCount(); ++i )
 
 
 1172    bool hasHole = 
true;
 
 1173    bool hasConnection = 
true;
 
 1177    case PTH_DLG_TYPE:      hasHole = 
true;  hasConnection = 
true;  
break;
 
 1178    case SMD_DLG_TYPE:      hasHole = 
false; hasConnection = 
true;  
break;
 
 1179    case CONN_DLG_TYPE:     hasHole = 
false; hasConnection = 
true;  
break;
 
 1180    case NPTH_DLG_TYPE:     hasHole = 
true;  hasConnection = 
false; 
break;
 
 1196    else if( 
m_holeX.GetValue() == 0 )
 
 1209    if( !hasConnection )
 
 1228    if( !enablePadstack )
 
 
 1245    bool hasHole = 
true;
 
 1246    bool hasConnection = 
true;
 
 1250    case PTH_DLG_TYPE:            hasHole = 
true;  hasConnection = 
true;  
break;
 
 1251    case SMD_DLG_TYPE:            hasHole = 
false; hasConnection = 
true;  
break;
 
 1252    case CONN_DLG_TYPE:          hasHole = 
false; hasConnection = 
true;  
break;
 
 1253    case NPTH_DLG_TYPE:          hasHole = 
true;  hasConnection = 
false; 
break;
 
 1309        if( cu_set.test( 
F_Cu ) && cu_set.test( 
B_Cu ) )
 
 1311        else if( cu_set.test( 
F_Cu ) )
 
 1313        else if( cu_set.test( 
B_Cu ) )
 
 
 1333    event.Enable( !
m_board->LegacyTeardrops() );
 
 
 1345                                                 bool keep_top_bottom )
 
 1352        if( !layer_mask.any() )
 
 1357        else if( !remove_unconnected )
 
 1359        else if( keep_top_bottom )
 
 1367        if( !layer_mask.any() )
 
 1370        if( layer_mask.test( 
F_Cu ) )
 
 1378        if( !layer_mask.any() )
 
 1381        if( layer_mask.test( 
F_Cu ) )
 
 1389        if( !layer_mask.any() )
 
 1392        if( layer_mask.test( 
F_Cu ) && layer_mask.test( 
B_Cu ) )
 
 1394        else if( layer_mask.test( 
F_Cu ) )
 
 1396        else if( layer_mask.test( 
B_Cu ) )
 
 1404        if( !layer_mask.any() )
 
 
 1478    wxArrayString error_msgs;
 
 1479    wxArrayString warning_msgs;
 
 1482            [&]( 
int errorCode, 
const wxString& msg )
 
 1485                    error_msgs.Add( 
_( 
"Error: " ) + msg );
 
 1487                    warning_msgs.Add( 
_( 
"Warning: " ) + msg );
 
 1489                    error_msgs.Add( 
_( 
"Error: Through hole pad has no hole." ) );
 
 1492    if( error_msgs.GetCount() || warning_msgs.GetCount() )
 
 1494        wxString title = error_msgs.GetCount() ? 
_( 
"Pad Properties Errors" )
 
 1495                                               : 
_( 
"Pad Properties Warnings" );
 
 1498        wxArrayString msgs = error_msgs;
 
 1500        for( 
const wxString& msg : warning_msgs )
 
 1508    return error_msgs.GetCount() == 0;
 
 
 1525    #define SELECTED_ITEMS_LAYER Dwgs_User 
 1532    static const std::vector<int> topLayers = {
 
 1539    for( 
int layer : topLayers )
 
 1560        int maxXExtent = std::max( abs( bbox.
GetLeft() ), abs( bbox.
GetRight() ) );
 
 1561        int maxYExtent = std::max( abs( bbox.
GetTop() ), abs( bbox.
GetBottom() ) );
 
 1564        if( maxXExtent > INT_MAX / 4 )
 
 1565            maxXExtent = INT_MAX / 4;
 
 1567        if( maxYExtent > INT_MAX / 4 )
 
 1568            maxYExtent = INT_MAX / 4;
 
 1572        viewBox.
Inflate( maxXExtent * 1.4, maxYExtent * 1.4 );  
 
 1573        canvasBox.
Inflate( maxXExtent * 2.0, maxYExtent * 2.0 );
 
 
 1588    if( !wxDialog::TransferDataToWindow() )
 
 
 1605    if( !wxDialog::TransferDataFromWindow() )
 
 1675    commit.
Push( 
_( 
"Edit Pad Properties" ) );
 
 
 1840        pos -= fp->GetPosition();
 
 1995        wxFAIL_MSG( wxT( 
"DIALOG_PAD_PROPERTIES::transferDataToPad: unknown pad type" ) );
 
 2027        switch( copperLayersChoice )
 
 2054        switch( copperLayersChoice )
 
 2057        case 1: padLayerMask.
set( 
F_Cu );             
break;
 
 2058        case 2: padLayerMask.
set( 
B_Cu );             
break;
 
 2066        switch( copperLayersChoice )
 
 2068        case 0: padLayerMask.
set( 
F_Cu ); 
break;
 
 2069        case 1: padLayerMask.
set( 
B_Cu ); 
break;
 
 
 2130    for( 
size_t i = 0; i < 
m_notebook->GetPageCount(); ++i )
 
 
constexpr EDA_IU_SCALE pcbIUScale
 
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
 
@ pads_remove_unused_keep_bottom
 
#define DEFAULT_PAD_DRILL_DIAMETER_MM
 
@ NORMAL
Inactive layers are shown normally (no high-contrast mode)
 
BASE_SET & set(size_t pos)
 
virtual void Push(const wxString &aMessage=wxEmptyString, int aCommitFlags=0) override
Execute the changes.
 
bool SetNetCode(int aNetCode, bool aNoAssert)
Set net using a net code.
 
TEARDROP_PARAMETERS & GetTeardropParams()
 
FOOTPRINT * GetParentFootprint() const
 
constexpr BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
 
constexpr coord_type GetLeft() const
 
constexpr void Move(const Vec &aMoveVector)
Move the rectangle by the aMoveVector.
 
constexpr coord_type GetRight() const
 
constexpr const SizeVec & GetSize() const
 
constexpr coord_type GetTop() const
 
constexpr coord_type GetBottom() const
 
Color settings are a bit different than most of the settings objects in that there can be more than o...
 
COLOR4D GetColor(int aLayer) const
 
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
 
wxStaticText * m_techLayersLabel
 
wxBoxSizer * m_padstackControls
 
wxStaticText * m_staticTextInfoPaste
 
wxCheckBox * m_cbBottomLeft
 
wxStaticText * m_stTdMaxSize
 
wxCheckBox * m_cbBottomRight1
 
wxStaticBitmap * m_legacyTeardropsIcon
 
wxStaticText * m_padToDieUnits
 
wxStaticText * m_stLenPercentHint
 
wxSpinCtrlDouble * m_spTeardropHDPercent
 
wxStaticText * m_sizeYUnits
 
wxStaticText * m_offsetXUnits
 
wxCheckBox * m_cbTeardrops
 
wxStaticText * m_posYLabel
 
wxCheckBox * m_cbTopRight1
 
wxCheckBox * m_cbPreferZoneConnection
 
wxPanel * m_boardViewPanel
 
wxStaticBitmap * m_stackupImage1
 
wxStaticText * m_stMaxHeightUnits
 
wxStaticText * m_offsetShapeOptLabel
 
wxChoice * m_ZoneConnectionChoice
 
wxStaticText * m_spokeAngleUnits
 
wxStaticText * m_stMaxLen
 
wxStaticText * m_teardropShapeLabel
 
wxStaticBitmap * m_stackupImage2
 
wxStaticText * m_trapDeltaLabel
 
wxFlexGridSizer * m_offsetCtrls
 
wxCheckBox * m_cbBottomLeft1
 
wxStaticText * m_stWidthPercentHint
 
wxTextCtrl * m_offsetYCtrl
 
wxSpinCtrlDouble * m_spTeardropSizePercent
 
wxStaticText * m_thermalGapLabel
 
wxStaticText * m_cornerRadiusUnits
 
wxCheckBox * m_layerBackSilk
 
wxStaticText * m_mixedCornerRatioUnits
 
wxSimplebook * m_shapePropsBook
 
wxStaticText * m_chamferRatioUnits
 
wxStaticText * m_trapDeltaUnits
 
wxBoxSizer * m_LeftBoxSizer
 
wxStaticText * m_parentInfo
 
wxCheckBox * m_layerFrontMask
 
wxStaticBitmap * m_stackupImage4
 
wxTextCtrl * m_clearanceCtrl
 
wxStaticText * m_padToDieDelayUnits
 
wxStaticText * m_sizeXUnits
 
wxStaticText * m_holeXUnits
 
wxStaticText * m_pasteMarginUnits
 
wxCheckBox * m_padToDieDelayOpt
 
wxStaticText * m_spokeWidthLabel
 
wxGridBagSizer * m_gbSizerHole
 
wxTextCtrl * m_padToDieDelayCtrl
 
wxStaticText * m_offsetYLabel
 
wxChoice * m_PadShapeSelector
 
wxStaticText * m_holeYUnits
 
wxStaticText * m_maskMarginLabel
 
wxChoice * m_holeShapeCtrl
 
wxStaticText * m_padNumLabel
 
wxTextCtrl * m_offsetXCtrl
 
wxStaticText * m_holeYLabel
 
TEXT_CTRL_EVAL * m_mixedCornerRatioCtrl
 
wxCheckBox * m_layerFrontAdhesive
 
wxCheckBox * m_layerBackMask
 
wxCheckBox * m_layerFrontPaste
 
wxCheckBox * m_layerBackAdhesive
 
wxChoice * m_ZoneCustomPadShape
 
wxSimplebook * m_stackupImagesBook
 
wxCheckBox * m_cbTeardropsUseNextTrack
 
wxStaticText * m_spokeWidthUnits
 
wxStaticText * m_offsetXLabel
 
wxCheckBox * m_cbTopRight
 
wxStaticText * m_clearanceLabel
 
wxTextCtrl * m_pasteMarginRatioCtrl
 
wxCheckBox * m_layerFrontSilk
 
wxTextCtrl * m_thermalGapCtrl
 
wxStaticText * m_holeShapeLabel
 
wxCheckBox * m_padToDieOpt
 
wxStaticBitmap * m_stackupImage0
 
wxStaticText * m_nonCopperNote
 
NET_SELECTOR * m_padNetSelector
 
wxTextCtrl * m_spokeAngleCtrl
 
wxBoxSizer * m_FlippedWarningSizer
 
wxStaticText * m_spokeAngleLabel
 
wxTextCtrl * m_padNumCtrl
 
wxStaticBitmap * m_stackupImage7
 
wxTextCtrl * m_spokeWidthCtrl
 
wxTextCtrl * m_cornerRadiusCtrl
 
wxCheckBox * m_curvedEdges
 
wxCheckBox * m_cbBottomRight
 
wxChoice * m_trapAxisCtrl
 
wxStaticText * m_offsetYUnits
 
wxStaticText * m_minTrackWidthHint
 
wxStaticText * m_chamferRatioLabel
 
wxStaticBitmap * m_stackupImage6
 
wxStaticText * m_padToDieLabel
 
wxCheckBox * m_cbTopLeft1
 
wxStaticText * m_mixedCornerRatioLabel
 
TEXT_CTRL_EVAL * m_chamferRatioCtrl
 
wxStaticText * m_posXUnits
 
wxTextCtrl * m_pasteMarginCtrl
 
wxStaticText * m_mixedChamferRatioUnits
 
wxStaticText * m_pasteMarginRatioLabel
 
wxStaticBitmap * m_FlippedWarningIcon
 
wxTextCtrl * m_trapDeltaCtrl
 
wxCheckBox * m_layerUserDwgs
 
TEXT_CTRL_EVAL * m_mixedChamferRatioCtrl
 
wxStaticText * m_sizeYLabel
 
wxSpinCtrlDouble * m_spTeardropLenPercent
 
DIALOG_PAD_PROPERTIES_BASE(wxWindow *parent, wxWindowID id=wxID_DIALOG_EDIT_PAD, const wxString &title=_("Pad Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
 
wxStaticText * m_stMaxLenUnits
 
wxChoice * m_cbPadstackMode
 
wxStaticText * m_mixedChamferRatioLabel
 
wxStaticText * m_orientationUnits
 
wxStaticText * m_holeXLabel
 
wxStaticBitmap * m_stackupImage5
 
wxStaticText * m_posYUnits
 
wxComboBox * m_cb_padrotation
 
wxStaticText * m_cornerRatioLabel
 
wxTextCtrl * m_tcMaxHeight
 
wxStaticText * m_sizeXLabel
 
wxStaticText * m_cornerRadiusLabel
 
wxBoxSizer * m_legacyTeardropsWarning
 
wxStaticText * m_padToDieDelayLabel
 
TEXT_CTRL_EVAL * m_cornerRatioCtrl
 
wxChoice * m_choiceFabProperty
 
wxCheckBox * m_offsetShapeOpt
 
wxStaticText * m_maskMarginUnits
 
wxStaticText * m_PadOrientText
 
wxStaticBitmap * m_nonCopperWarningIcon
 
wxBoxSizer * m_padPreviewSizer
 
wxStaticText * m_pasteMarginRatioUnits
 
wxStaticText * m_cornerRatioUnits
 
wxStaticText * m_clearanceUnits
 
wxStaticText * m_posXLabel
 
wxStaticLine * m_staticline71
 
wxCheckBox * m_cbShowPadOutline
 
wxStaticText * m_padNetLabel
 
wxStaticBitmap * m_bitmapTeardrop
 
wxCheckBox * m_layerBackPaste
 
wxTextCtrl * m_padToDieCtrl
 
wxSimplebook * m_nonCopperWarningBook
 
wxChoice * m_rbCopperLayersSel
 
wxPanel * m_localSettingsPanel
 
wxStaticText * m_pasteMarginLabel
 
wxTextCtrl * m_maskMarginCtrl
 
wxStaticText * m_thermalGapUnits
 
wxTextCtrl * m_tcTdMaxLen
 
void OnUpdateUINonCopperWarning(wxUpdateUIEvent &event) override
 
void OnInitDialog(wxInitDialogEvent &event) override
 
void PadTypeSelected(wxCommandEvent &event) override
 
void OnPadToDieDelayCheckbox(wxCommandEvent &event) override
 
void OnPadShapeSelection(wxCommandEvent &event) override
 
UNIT_BINDER m_teardropMaxHeightSetting
 
bool transferDataToPad(PAD *aPad)
Copy values from dialog field to aPad's members.
 
bool TransferDataFromWindow() override
Updates the different parameters for the component being edited.
 
std::map< int, PCB_LAYER_ID > m_editLayerCtrlMap
 
bool Show(bool aShow) override
 
void updateHoleControls()
 
void OnEditLayerChanged(wxCommandEvent &event) override
 
std::vector< std::shared_ptr< PCB_SHAPE > > m_primitives
 
UNIT_BINDER m_padToDieDelay
 
UNIT_BINDER m_teardropMaxLenSetting
 
double getMaxChamferRatio() const
 
bool padValuesOK()
test if all values are acceptable for the pad
 
void PadOrientEvent(wxCommandEvent &event) override
 
bool TransferDataToWindow() override
 
void OnResize(wxSizeEvent &event)
 
PCB_BASE_FRAME * m_parent
 
UNIT_BINDER m_mixedCornerRatio
 
void OnOffsetCheckbox(wxCommandEvent &event) override
 
PCB_DRAW_PANEL_GAL * m_padPreviewGAL
 
void OnValuesChanged(wxCommandEvent &event) override
Called when a dimension has changed.
 
void updateRoundRectCornerValues()
 
DIALOG_PAD_PROPERTIES(PCB_BASE_FRAME *aParent, PAD *aPad)
 
void initPadstackLayerValues()
 
void onTeardropsUpdateUi(wxUpdateUIEvent &event) override
 
void UpdateLayersDropdown()
 
void onChangePadMode(wxCommandEvent &event) override
 
UNIT_BINDER m_pasteMargin
 
std::vector< PCB_SHAPE * > m_highlight
 
void updateAllowedPadChamferCorners()
 
void OnPadstackModeChanged(wxCommandEvent &event) override
 
UNIT_BINDER m_pasteMarginRatio
 
void afterPadstackModeChanged()
 
KIGFX::ORIGIN_VIEWITEM * m_axisOrigin
 
UNIT_BINDER m_mixedChamferRatio
 
UNIT_BINDER m_cornerRadius
 
void OnSetCopperLayers(wxCommandEvent &event) override
 
double getMaxCornerRadius() const
 
void OnCancel(wxCommandEvent &event) override
 
void onCornerRadiusChange(wxCommandEvent &event) override
 
void updatePadLayersList(LSET layer_mask, bool remove_unconnected, bool keep_top_bottom)
Updates the CheckBox states in pad layers list, based on the layer_mask (if non-empty) or the default...
 
PAD_PROP getSelectedProperty()
Return the pad property currently selected.
 
void OnSetLayers(wxCommandEvent &event) override
 
void updatePadSizeControls()
 
void onCornerSizePercentChange(wxCommandEvent &event) override
 
UNIT_BINDER m_pad_orientation
 
void OnPadToDieCheckbox(wxCommandEvent &event) override
 
static bool m_sketchPreview
 
void OnDrillShapeSelected(wxCommandEvent &event) override
 
void OnUpdateUI(wxUpdateUIEvent &event) override
 
UNIT_BINDER m_cornerRatio
 
void onModify(wxCommandEvent &aEvent) override
 
UNIT_BINDER m_chamferRatio
 
bool Show(bool show) override
 
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
 
void SetupStandardButtons(std::map< int, wxString > aLabels={})
 
void resetSize()
Clear the existing dialog size and position.
 
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
 
EDA_BASE_FRAME * m_parentFrame
 
FRAME_T GetFrameType() const
 
void ListSet(const wxString &aList)
Add a list of items.
 
A color representation with 4 components: red, green, blue, alpha.
 
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
 
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
 
void SetGridSize(const VECTOR2D &aGridSize)
Set the grid size.
 
void SetGridVisibility(bool aVisibility)
Set the visibility setting of the grid.
 
Contains methods for drawing PCB-specific items.
 
virtual PCB_RENDER_SETTINGS * GetSettings() override
Return a pointer to current settings that are going to be used when drawing items.
 
PCB specific render settings.
 
bool m_ForcePadSketchModeOn
 
void SetLayerColor(int aLayer, const COLOR4D &aColor)
Change the color used to draw a layer.
 
An interface for classes handling user events controlling the view behavior such as zooming,...
 
const VC_SETTINGS & GetSettings() const
Return the current VIEW_CONTROLS settings.
 
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
 
void SetViewport(const BOX2D &aViewport)
Set the visible area of the VIEW.
 
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
 
void SetBoundary(const BOX2D &aBoundary)
Set limits for view area.
 
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
 
void SetLayerVisible(int aLayer, bool aVisible=true)
Control the visibility of a particular layer.
 
GAL * GetGAL() const
Return the GAL this view is using to draw graphical primitives.
 
void ClearTopLayers()
Remove all layers from the on-the-top set (they are no longer displayed over the rest of layers).
 
virtual void SetTopLayer(int aLayer, bool aEnabled=true)
Set given layer to be displayed on the top or sets back the default order of layers.
 
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
 
LSET is a set of PCB_LAYER_IDs.
 
LSEQ UIOrder() const
Return the copper, technical and user layers in the order shown in layer widget.
 
static LSET AllCuMask(int aCuLayerCount)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
 
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
 
static const int UNCONNECTED
Constant that holds the "unconnected net" number (typically 0) all items "connected" to this net are ...
 
void SetUnconnectedLayerMode(UNCONNECTED_LAYER_MODE aMode)
 
@ NORMAL
Shape is the same on all layers.
 
@ CUSTOM
Shapes can be defined on arbitrary layers.
 
@ FRONT_INNER_BACK
Up to three shapes can be defined (F_Cu, inner copper layers, B_Cu)
 
@ REMOVE_EXCEPT_START_AND_END
 
static constexpr PCB_LAYER_ID INNER_LAYERS
! The layer identifier to use for "inner layers" on top/inner/bottom padstacks
 
void SetAnchorPadShape(PCB_LAYER_ID aLayer, PAD_SHAPE aShape)
Set the shape of the anchor pad for custom shaped pads.
 
void SetAttribute(PAD_ATTRIB aAttribute)
 
void SetLocalThermalGapOverride(const std::optional< int > &aOverride)
 
PAD_ATTRIB GetAttribute() const
 
static LSET PTHMask()
layer set for a through hole pad
 
void SetThermalSpokeAngle(const EDA_ANGLE &aAngle)
The orientation of the thermal spokes.
 
void SetLocalSolderPasteMarginRatio(std::optional< double > aRatio)
 
void SetLocalThermalSpokeWidthOverride(std::optional< int > aWidth)
Set the width of the thermal spokes connecting the pad to a zone.
 
void SetShape(PCB_LAYER_ID aLayer, PAD_SHAPE aShape)
Set the new shape of this pad.
 
void SetProperty(PAD_PROP aProperty)
 
static LSET UnplatedHoleMask()
layer set for a mechanical unplated through hole pad
 
void SetDelta(PCB_LAYER_ID aLayer, const VECTOR2I &aSize)
 
void SetPadToDieDelay(int aDelay)
 
PAD_SHAPE GetShape(PCB_LAYER_ID aLayer) const
 
void SetNumber(const wxString &aNumber)
Set the pad number (note that it can be alphanumeric, such as the array reference "AA12").
 
void SetDrillShape(PAD_DRILL_SHAPE aShape)
 
void SetLocalSolderMaskMargin(std::optional< int > aMargin)
 
void SetOffset(PCB_LAYER_ID aLayer, const VECTOR2I &aOffset)
 
void SetLocalZoneConnection(ZONE_CONNECTION aType)
 
void SetChamferRectRatio(PCB_LAYER_ID aLayer, double aChamferScale)
Has meaning only for chamfered rectangular pads.
 
void SetPosition(const VECTOR2I &aPos) override
 
const PADSTACK & Padstack() const
 
static LSET ConnSMDMask()
layer set for a SMD pad on Front layer used for edge board connectors
 
void SetDrillSize(const VECTOR2I &aSize)
 
void SetSize(PCB_LAYER_ID aLayer, const VECTOR2I &aSize)
 
void ReplacePrimitives(PCB_LAYER_ID aLayer, const std::vector< std::shared_ptr< PCB_SHAPE > > &aPrimitivesList)
Clear the current custom shape primitives list and import a new list.
 
static LSET ApertureMask()
layer set for an aperture pad
 
static LSET SMDMask()
layer set for a SMD pad on Front layer
 
void SetChamferPositions(PCB_LAYER_ID aLayer, int aPositions)
Has meaning only for chamfered rectangular pads.
 
void SetLocalSolderPasteMargin(std::optional< int > aMargin)
 
void SetCustomShapeInZoneOpt(PADSTACK::CUSTOM_SHAPE_ZONE_MODE aOption)
Set the option for the custom pad shape to use as clearance area in copper zones.
 
void SetOrientation(const EDA_ANGLE &aAngle)
Set the rotation angle of the pad.
 
void SetLocalClearance(std::optional< int > aClearance)
 
void SetLayerSet(const LSET &aLayers) override
 
PAD_SHAPE GetAnchorPadShape(PCB_LAYER_ID aLayer) const
 
void SetRoundRectRadiusRatio(PCB_LAYER_ID aLayer, double aRadiusScale)
Has meaning only for rounded rectangle pads.
 
void SetPadToDieLength(int aLength)
 
const VECTOR2I & GetSize(PCB_LAYER_ID aLayer) const
 
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
 
void ShowPadPropertiesDialog(PAD *aPad)
 
double m_BestWidthRatio
The height of a teardrop as ratio between height and size of pad/via.
 
int m_TdMaxLen
max allowed length for teardrops in IU. <= 0 to disable
 
bool m_AllowUseTwoTracks
True to create teardrops using 2 track segments if the first in too small.
 
int m_TdMaxWidth
max allowed height for teardrops in IU. <= 0 to disable
 
double m_BestLengthRatio
The length of a teardrop as ratio between length and size of pad/via.
 
double m_WidthtoSizeFilterRatio
The ratio (H/D) between the via/pad size and the track width max value to create a teardrop 1....
 
bool m_TdOnPadsInZones
A filter to exclude pads inside zone fills.
 
bool m_Enabled
Flag to enable teardrops.
 
bool m_CurvedEdges
True if the teardrop should be curved.
 
A type-safe container of any type.
 
This file is part of the common library.
 
@ RECT_CHAMFER_BOTTOM_RIGHT
 
@ RECT_CHAMFER_BOTTOM_LEFT
 
#define APERTURE_DLG_TYPE
 
static PAD_ATTRIB code_type[]
 
#define SELECTED_ITEMS_LAYER
 
static PAD_SHAPE code_shape[]
 
@ CHOICE_SHAPE_CUSTOM_RECT_ANCHOR
 
@ CHOICE_SHAPE_CHAMFERED_RECT
 
@ CHOICE_SHAPE_CUSTOM_CIRC_ANCHOR
 
@ CHOICE_SHAPE_CHAMFERED_ROUNDED_RECT
 
#define PAD_PROPERTIES_DLG_NAME
DIALOG_PAD_PROPERTIES, derived from DIALOG_PAD_PROPERTIES_BASE, created by wxFormBuilder.
 
@ DRCE_PAD_TH_WITH_NO_HOLE
 
static constexpr EDA_ANGLE ANGLE_90
 
static constexpr EDA_ANGLE ANGLE_45
 
#define BRIGHTENED
item is drawn with a bright contour
 
#define SELECTED
Item was manually selected by the user.
 
@ LAYER_LOCKED_ITEM_SHADOW
Shadow layer for locked items.
 
@ LAYER_NON_PLATEDHOLES
Draw usual through hole vias.
 
@ LAYER_PAD_PLATEDHOLES
to draw pad holes (plated)
 
PCB_LAYER_ID
A quick note on layer IDs:
 
This file contains miscellaneous commonly used macros and functions.
 
@ TOP_BOTTOM
Flip top to bottom (around the X axis)
 
KICOMMON_API wxFont GetStatusFont(wxWindow *aWindow)
 
KICOMMON_API wxFont GetSmallInfoFont(wxWindow *aWindow)
 
bool PadHasMeaningfulRoundingRadius(const PAD &aPad, PCB_LAYER_ID aLayer)
Returns true if the pad's rounding ratio is valid (i.e.
 
double GetDefaultIpcRoundingRatio(const PAD &aPad, PCB_LAYER_ID aLayer)
Get a sensible default for a rounded rectangle pad's rounding ratio.
 
PAD_ATTRIB
The set of pad shapes, used with PAD::{Set,Get}Attribute().
 
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
 
@ SMD
Smd pad, appears on the solder paste layer (default)
 
@ PTH
Plated through hole pad.
 
@ CONN
Like smd, does not appear on the solder paste layer (default) Note: also has a special attribute in G...
 
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
 
PAD_PROP
The set of pad properties used in Gerber files (Draw files, and P&P files) to define some properties ...
 
@ FIDUCIAL_LOCAL
a fiducial (usually a smd) local to the parent footprint
 
@ FIDUCIAL_GLBL
a fiducial (usually a smd) for the full board
 
@ MECHANICAL
a pad used for mechanical support
 
@ PRESSFIT
a PTH with a hole diameter with tight tolerances for press fit pin
 
@ HEATSINK
a pad used as heat sink, usually in SMD footprints
 
@ NONE
no special fabrication property
 
@ TESTPOINT
a test point pad
 
@ CASTELLATED
a pad with a castellated through hole
 
@ BGA
Smd pad, used in BGA footprints.
 
void RotatePoint(int *pX, int *pY, const EDA_ANGLE &aAngle)
Calculate the new point of coord coord pX, pY, for a rotation center 0, 0.
 
VECTOR2< int32_t > VECTOR2I
 
VECTOR2< double > VECTOR2D
 
@ THERMAL
Use thermal relief for pads.
 
@ NONE
Pads are not covered.
 
@ FULL
pads are covered by copper