KiCad PCB EDA Suite
MODULE Class Reference

#include <class_module.h>

Inheritance diagram for MODULE:
BOARD_ITEM_CONTAINER BOARD_ITEM EDA_ITEM KIGFX::VIEW_ITEM

Public Member Functions

 MODULE (BOARD *parent)
 
 MODULE (const MODULE &aModule)
 
 ~MODULE ()
 
MODULEoperator= (const MODULE &aOther)
 
MODULENext () const
 
MODULEBack () const
 
void Add (BOARD_ITEM *aBoardItem, ADD_MODE aMode=ADD_INSERT) override
 > More...
 
void Remove (BOARD_ITEM *aBoardItem) override
 > More...
 
void ClearAllNets ()
 Function ClearAllNets Clear (i.e. More...
 
void CalculateBoundingBox ()
 Function CalculateBoundingBox calculates the bounding box in board coordinates. More...
 
EDA_RECT GetFootprintRect () const
 Function GetFootprintRect() Returns the area of the module footprint excluding any text. More...
 
const EDA_RECT GetBoundingBox () const override
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
DLIST< D_PAD > & Pads ()
 
const DLIST< D_PAD > & Pads () const
 
DLIST< BOARD_ITEM > & GraphicalItems ()
 
const DLIST< BOARD_ITEM > & GraphicalItems () const
 
std::list< S3D_INFO > & Models ()
 
const std::list< S3D_INFO > & Models () const
 
void SetPosition (const wxPoint &aPos) override
 
const wxPointGetPosition () const override
 
void SetOrientation (double newangle)
 
void SetOrientationDegrees (double aOrientation)
 
double GetOrientation () const
 
double GetOrientationDegrees () const
 
double GetOrientationRadians () const
 
const LIB_IDGetFPID () const
 
void SetFPID (const LIB_ID &aFPID)
 
const wxString & GetDescription () const
 
void SetDescription (const wxString &aDoc)
 
const wxString & GetKeywords () const
 
void SetKeywords (const wxString &aKeywords)
 
const wxString & GetPath () const
 
void SetPath (const wxString &aPath)
 
int GetLocalSolderMaskMargin () const
 
void SetLocalSolderMaskMargin (int aMargin)
 
int GetLocalClearance () const
 
void SetLocalClearance (int aClearance)
 
int GetLocalSolderPasteMargin () const
 
void SetLocalSolderPasteMargin (int aMargin)
 
double GetLocalSolderPasteMarginRatio () const
 
void SetLocalSolderPasteMarginRatio (double aRatio)
 
void SetZoneConnection (ZoneConnection aType)
 
ZoneConnection GetZoneConnection () const
 
void SetThermalWidth (int aWidth)
 
int GetThermalWidth () const
 
void SetThermalGap (int aGap)
 
int GetThermalGap () const
 
int GetAttributes () const
 
void SetAttributes (int aAttributes)
 
void SetFlag (int aFlag)
 
void IncrementFlag ()
 
int GetFlag () const
 
void Move (const wxPoint &aMoveVector) override
 Function Move move this object. More...
 
void Rotate (const wxPoint &aRotCentre, double aAngle) override
 Function Rotate Rotate this object. More...
 
void Flip (const wxPoint &aCentre) override
 Function Flip Flip this object, i.e. More...
 
void MoveAnchorPosition (const wxPoint &aMoveVector)
 Function MoveAnchorPosition Move the reference point of the footprint It looks like a move footprint: the footprints elements (pads, outlines, edges . More...
 
bool IsFlipped () const
 function IsFlipped More...
 
bool IsLocked () const override
 Function IsLocked. More...
 
void SetLocked (bool isLocked) override
 Function SetLocked sets the MODULE_is_LOCKED bit in the m_ModuleStatus. More...
 
bool IsPlaced () const
 
void SetIsPlaced (bool isPlaced)
 
bool NeedsPlaced () const
 
void SetNeedsPlaced (bool needsPlaced)
 
bool PadsLocked () const
 
void SetPadsLocked (bool aPadsLocked)
 
void SetLastEditTime (time_t aTime)
 
void SetLastEditTime ()
 
time_t GetLastEditTime () const
 
void Draw (EDA_DRAW_PANEL *aPanel, wxDC *aDC, GR_DRAWMODE aDrawMode, const wxPoint &aOffset=ZeroOffset) override
 Function Draw draws the footprint to the aDC. More...
 
void DrawOutlinesWhenMoving (EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aMoveVector)
 Function DrawOutlinesWhenMoving draws in XOR mode the footprint when moving it to the aDC. More...
 
void TransformPadsShapesWithClearanceToPolygon (LAYER_ID aLayer, SHAPE_POLY_SET &aCornerBuffer, int aInflateValue, int aCircleToSegmentsCount, double aCorrectionFactor, bool aSkipNPTHPadsWihNoCopper=false) const
 function TransformPadsShapesWithClearanceToPolygon generate pads shapes on layer aLayer as polygons, and adds these polygons to aCornerBuffer Useful to generate a polygonal representation of a footprint in 3D view and plot functions, when a full polygonal approach is needed More...
 
void TransformGraphicShapesWithClearanceToPolygonSet (LAYER_ID aLayer, SHAPE_POLY_SET &aCornerBuffer, int aInflateValue, int aCircleToSegmentsCount, double aCorrectionFactor, int aCircleToSegmentsCountForTexts=0) const
 function TransformGraphicShapesWithClearanceToPolygonSet generate shapes of graphic items (outlines) on layer aLayer as polygons, and adds these polygons to aCornerBuffer Useful to generate a polygonal representation of a footprint in 3D view and plot functions, when a full polygonal approach is needed More...
 
void TransformGraphicTextWithClearanceToPolygonSet (LAYER_ID aLayer, SHAPE_POLY_SET &aCornerBuffer, int aInflateValue, int aCircleToSegmentsCount, double aCorrectionFactor, int aCircleToSegmentsCountForTexts=0) const
 TransformGraphicTextWithClearanceToPolygonSet This function is the same as TransformGraphicShapesWithClearanceToPolygonSet but only generate text. More...
 
void DrawEdgesOnly (EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode)
 Function DrawEdgesOnly Draws the footprint edges only to the current Device Context. More...
 
void DrawAncre (EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, int dim_ancre, GR_DRAWMODE draw_mode)
 Function DrawAncre Draw the anchor cross (vertical) Must be done after the pads, because drawing the hole will erase overwrite every thing already drawn. More...
 
void GetMsgPanelInfo (std::vector< MSG_PANEL_ITEM > &aList) override
 > More...
 
bool HitTest (const wxPoint &aPosition) const override
 Function HitTest tests if aPosition is contained within or on the bounding area of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained=true, int aAccuracy=0) const override
 
const wxString & GetReference () const
 Function GetReference. More...
 
void SetReference (const wxString &aReference)
 Function SetReference. More...
 
wxString GetReferencePrefix () const
 Function GetReference prefix Gets the alphabetic prefix of the module reference - e.g. More...
 
const wxString & GetValue () const
 Function GetValue. More...
 
void SetValue (const wxString &aValue)
 Function SetValue. More...
 
TEXTE_MODULEValue ()
 read/write accessors: More...
 
TEXTE_MODULEReference ()
 
TEXTE_MODULEValue () const
 The const versions to keep the compiler happy. More...
 
TEXTE_MODULEReference () const
 
D_PADFindPadByName (const wxString &aPadName) const
 Function FindPadByName returns a D_PAD* with a matching name. More...
 
D_PADGetPad (const wxPoint &aPosition, LSET aLayerMask=LSET::AllLayersMask())
 Function GetPad get a pad at aPosition on aLayerMask in the footprint. More...
 
unsigned GetPadCount (INCLUDE_NPTH_T aIncludeNPTH=INCLUDE_NPTH_T(INCLUDE_NPTH)) const
 GetPadCount returns the number of pads. More...
 
unsigned GetUniquePadCount (INCLUDE_NPTH_T aIncludeNPTH=INCLUDE_NPTH_T(INCLUDE_NPTH)) const
 GetUniquePadCount returns the number of unique pads. More...
 
wxString GetNextPadName (bool aFillSequenceGaps) const
 Function GetNextPadName returns the next available pad name in the module. More...
 
double GetArea () const
 
time_t GetLink () const
 
void SetLink (time_t aLink)
 
int GetPlacementCost180 () const
 
void SetPlacementCost180 (int aCost)
 
int GetPlacementCost90 () const
 
void SetPlacementCost90 (int aCost)
 
BOARD_ITEMDuplicate (const BOARD_ITEM *aItem, bool aIncrementPadNumbers, bool aAddToModule=false)
 Function Duplicate Duplicate a given item within the module, without adding to the board. More...
 
void Add3DModel (S3D_INFO *a3DModel)
 Function Add3DModel adds a3DModel definition to the end of the 3D model list. More...
 
SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[]) override
 Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
wxString GetSelectMenuText () const override
 Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAP_DEF GetMenuImage () const override
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
EDA_ITEMClone () const override
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
void RunOnChildren (std::function< void(BOARD_ITEM *)> aFunction)
 Function RunOnChildren. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 
virtual unsigned int ViewGetLOD (int aLayer, KIGFX::VIEW *aView) const override
 
virtual const BOX2I ViewBBox () const override
 
void CopyNetlistSettings (MODULE *aModule, bool aCopyLocalSettings)
 Function CopyNetlistSettings copies the netlist settings to aModule. More...
 
void SetInitialComments (wxArrayString *aInitialComments)
 Function SetInitialComments takes ownership of caller's heap allocated aInitialComments block. More...
 
double PadCoverageRatio () const
 Function PadCoverageRatio Calculates the ratio of total area of the footprint pads to the area of the footprint. More...
 
const wxArrayString * GetInitialComments () const
 Return the initial comments block or NULL if none, without transfer of ownership. More...
 
SHAPE_POLY_SETGetPolyCourtyardFront ()
 Used in DRC to test the courtyard area (a complex polygon) More...
 
SHAPE_POLY_SETGetPolyCourtyardBack ()
 
bool BuildPolyCourtyard ()
 Used in DRC to build the courtyard area (a complex polygon) from graphic items put on the courtyard. More...
 
virtual void Delete (BOARD_ITEM *aItem)
 Removes an item from the containter and deletes it. More...
 
virtual const wxPoint GetCenter () const
 Function GetCenter() More...
 
virtual bool IsConnected () const
 Function IsConnected() Returns information if the object is derived from BOARD_CONNECTED_ITEM. More...
 
BOARD_ITEM_CONTAINERGetParent () const
 
LAYER_ID GetLayer () const
 Function GetLayer returns the primary layer this item is on. More...
 
virtual LSET GetLayerSet () const
 Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides. More...
 
virtual void SetLayer (LAYER_ID aLayer)
 Function SetLayer sets the layer this item is on. More...
 
void SwapData (BOARD_ITEM *aImage)
 Swap data between aItem and aImage. More...
 
virtual bool IsOnLayer (LAYER_ID aLayer) const
 Function IsOnLayer tests to see if this object is on the given layer. More...
 
bool IsTrack () const
 Function IsTrack tests to see if this object is a track or via (or microvia). More...
 
virtual void UnLink ()
 Function UnLink detaches this object from its owner. More...
 
void DeleteStructure ()
 Function DeleteStructure deletes this object after UnLink()ing it from its owner if it has one. More...
 
virtual BOARDGetBoard () const
 Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none. More...
 
wxString GetLayerName () const
 Function GetLayerName returns the name of the PCB layer on which the item resides. More...
 
KICAD_T Type () const
 Function Type() More...
 
void SetTimeStamp (time_t aNewTimeStamp)
 
time_t GetTimeStamp () const
 
DHEADGetList () const
 
void SetParent (EDA_ITEM *aParent)
 
void SetList (DHEAD *aList)
 
bool IsNew () const
 
bool IsModified () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsHighlighted () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetHighlighted ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearHighlighted ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, int state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
void SetForceVisible (bool aEnable)
 Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
virtual bool Matches (wxFindReplaceData &aSearchData, void *aAuxData, wxPoint *aFindLocation)
 Function Matches compares the item against the search criteria in aSearchData. More...
 
bool Replace (wxFindReplaceData &aSearchData, wxString &aText)
 Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool Replace (wxFindReplaceData &aSearchData, void *aAuxData=NULL)
 Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Function IsReplaceable. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 

Static Public Member Functions

static bool ClassOf (const EDA_ITEM *aItem)
 
static bool IsLibNameValid (const wxString &aName)
 static function IsLibNameValid Test for validity of a name of a footprint to be used in a footprint library ( no spaces, dir separators ... More...
 
static const wxChar * StringLibNameInvalidChars (bool aUserReadable)
 static function StringLibNameInvalidChars Test for validity of the name in a library of the footprint ( no spaces, dir separators ... More...
 
static wxString ShowShape (STROKE_T aShape)
 Function ShowShape converts the enum STROKE_T integer value to a wxString. More...
 
static std::string FormatInternalUnits (int aValue)
 Function FormatInternalUnits converts aValue from board internal units to a string appropriate for writing to file. More...
 
static std::string FormatInternalUnits (const wxPoint &aPoint)
 
static std::string FormatInternalUnits (const wxSize &aSize)
 
static std::string FormatAngle (double aAngle)
 Function FormatAngle converts aAngle from board units to a string appropriate for writing to file. More...
 
static SEARCH_RESULT IterateForward (EDA_ITEM *listStart, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Static Public Attributes

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

Protected Member Functions

bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Static Protected Member Functions

static int getTrailingInt (wxString aStr)
 
static int getNextNumberInSequence (const std::set< int > &aSeq, bool aFillSequenceGaps)
 

Protected Attributes

LAYER_ID m_Layer
 
EDA_ITEMPnext
 next in linked list More...
 
EDA_ITEMPback
 previous in linked list More...
 
DHEADm_List
 which DLIST I am on. More...
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) More...
 
time_t m_TimeStamp
 Time stamp used for logical links. More...
 
bool m_forceVisible
 Set to true to override the visibility setting of the item. More...
 
STATUS_FLAGS m_Flags
 Flag bits for editing and other uses. More...
 

Private Attributes

DLIST< D_PADm_Pads
 Linked list of pads. More...
 
DLIST< BOARD_ITEMm_Drawings
 Linked list of graphical items. More...
 
std::list< S3D_INFOm_3D_Drawings
 Linked list of 3D models. More...
 
double m_Orient
 Orientation in tenths of a degree, 900=90.0 degrees. More...
 
wxPoint m_Pos
 Position of module on the board in internal units. More...
 
TEXTE_MODULEm_Reference
 Component reference designator value (U34, R18..) More...
 
TEXTE_MODULEm_Value
 Component value (74LS00, 22K..) More...
 
LIB_ID m_fpid
 The LIB_ID of the MODULE. More...
 
int m_Attributs
 Flag bits ( see Mod_Attribut ) More...
 
int m_ModuleStatus
 For autoplace: flags (LOCKED, AUTOPLACED) More...
 
EDA_RECT m_BoundaryBox
 Bounding box : coordinates on board, real orientation. More...
 
int m_ThermalWidth
 
int m_ThermalGap
 
wxString m_Doc
 File name and path for documentation file. More...
 
wxString m_KeyWord
 Search keywords to find module in library. More...
 
wxString m_Path
 
ZoneConnection m_ZoneConnection
 
time_t m_LastEditTime
 
int m_arflag
 Use to trace ratsnest and auto routing. More...
 
double m_Surface
 Bounding box area. More...
 
time_t m_Link
 Temporary logical link used in edition. More...
 
int m_CntRot90
 Horizontal automatic placement cost ( 0..10 ). More...
 
int m_CntRot180
 Vertical automatic placement cost ( 0..10 ). More...
 
int m_LocalClearance
 
int m_LocalSolderMaskMargin
 Solder mask margin. More...
 
int m_LocalSolderPasteMargin
 Solder paste margin absolute value. More...
 
double m_LocalSolderPasteMarginRatio
 Solder mask margin ratio value of pad size. More...
 
wxArrayString * m_initial_comments
 leading s-expression comments in the module, lazily allocated only if needed for speed More...
 
SHAPE_POLY_SET m_poly_courtyard_front
 Used in DRC to test the courtyard area (a polygon which can be not basic Note also a footprint can have courtyards on bot board sides. More...
 
SHAPE_POLY_SET m_poly_courtyard_back
 

Detailed Description

Definition at line 83 of file class_module.h.

Constructor & Destructor Documentation

MODULE::MODULE ( BOARD parent)

Definition at line 55 of file class_module.cpp.

References F_Cu, m_3D_Drawings, m_arflag, m_Attributs, m_CntRot180, m_CntRot90, m_LastEditTime, BOARD_ITEM::m_Layer, m_Link, m_LocalClearance, m_LocalSolderMaskMargin, m_LocalSolderPasteMargin, m_LocalSolderPasteMarginRatio, m_ModuleStatus, m_Orient, m_Reference, m_Surface, m_ThermalGap, m_ThermalWidth, m_Value, m_ZoneConnection, MOD_DEFAULT, MODULE_PADS_LOCKED, PAD_ZONE_CONN_INHERITED, TEXTE_MODULE::TEXT_is_REFERENCE, and TEXTE_MODULE::TEXT_is_VALUE.

Referenced by Clone().

55  :
58 {
60  m_Layer = F_Cu;
61  m_Orient = 0;
63  m_arflag = 0;
64  m_CntRot90 = m_CntRot180 = 0;
65  m_Surface = 0.0;
66  m_Link = 0;
67  m_LastEditTime = 0;
68  m_LocalClearance = 0;
72  m_ZoneConnection = PAD_ZONE_CONN_INHERITED; // Use zone setting by default
73  m_ThermalWidth = 0; // Use zone setting by default
74  m_ThermalGap = 0; // Use zone setting by default
75 
76  // These are special and mandatory text fields
79 
80  m_3D_Drawings.clear();
81 }
int m_CntRot90
Horizontal automatic placement cost ( 0..10 ).
Definition: class_module.h:686
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
int m_ThermalWidth
Definition: class_module.h:676
double m_LocalSolderPasteMarginRatio
Solder mask margin ratio value of pad size.
Definition: class_module.h:695
int m_LocalSolderPasteMargin
Solder paste margin absolute value.
Definition: class_module.h:694
int m_ThermalGap
Definition: class_module.h:677
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
double m_Surface
Bounding box area.
Definition: class_module.h:684
time_t m_Link
Temporary logical link used in edition.
Definition: class_module.h:685
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed ...
Definition: class_module.h:698
#define MODULE_PADS_LOCKED
In autoplace: module waiting for autoplace.
Definition: class_module.h:220
int m_LocalClearance
Definition: class_module.h:692
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
class MODULE, a footprint
Definition: typeinfo.h:101
LAYER_ID m_Layer
int m_LocalSolderMaskMargin
Solder mask margin.
Definition: class_module.h:693
int m_arflag
Use to trace ratsnest and auto routing.
Definition: class_module.h:683
default
Definition: class_module.h:75
time_t m_LastEditTime
Definition: class_module.h:682
int m_CntRot180
Vertical automatic placement cost ( 0..10 ).
Definition: class_module.h:687
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
ZoneConnection m_ZoneConnection
Definition: class_module.h:681
BOARD_ITEM_CONTAINER(BOARD_ITEM *aParent, KICAD_T aType)
int m_Attributs
Flag bits ( see Mod_Attribut )
Definition: class_module.h:671
MODULE::MODULE ( const MODULE aModule)

Definition at line 84 of file class_module.cpp.

References Add(), CalculateBoundingBox(), m_3D_Drawings, m_arflag, m_Attributs, m_BoundaryBox, m_CntRot180, m_CntRot90, m_Doc, m_Drawings, m_fpid, m_initial_comments, m_KeyWord, m_LastEditTime, m_Link, m_LocalClearance, m_LocalSolderMaskMargin, m_LocalSolderPasteMargin, m_LocalSolderPasteMarginRatio, m_ModuleStatus, m_Orient, m_Pads, m_Path, m_Pos, m_Reference, m_ThermalGap, m_ThermalWidth, m_Value, m_ZoneConnection, D_PAD::Next(), BOARD_ITEM::Next(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, and EDA_ITEM::SetParent().

84  :
85  BOARD_ITEM_CONTAINER( aModule )
86 {
87  m_Pos = aModule.m_Pos;
88  m_fpid = aModule.m_fpid;
89  m_Attributs = aModule.m_Attributs;
91  m_Orient = aModule.m_Orient;
92  m_BoundaryBox = aModule.m_BoundaryBox;
93  m_CntRot90 = aModule.m_CntRot90;
94  m_CntRot180 = aModule.m_CntRot180;
96  m_Link = aModule.m_Link;
97  m_Path = aModule.m_Path; //is this correct behavior?
98 
104  m_ThermalWidth = aModule.m_ThermalWidth;
105  m_ThermalGap = aModule.m_ThermalGap;
106 
107  // Copy reference and value.
108  m_Reference = new TEXTE_MODULE( *aModule.m_Reference );
109  m_Reference->SetParent( this );
110  m_Value = new TEXTE_MODULE( *aModule.m_Value );
111  m_Value->SetParent( this );
112 
113  // Copy auxiliary data: Pads
114  for( D_PAD* pad = aModule.m_Pads; pad; pad = pad->Next() )
115  {
116  Add( new D_PAD( *pad ) );
117  }
118 
119  // Copy auxiliary data: Drawings
120  for( BOARD_ITEM* item = aModule.m_Drawings; item; item = item->Next() )
121  {
122  switch( item->Type() )
123  {
124  case PCB_MODULE_TEXT_T:
125  case PCB_MODULE_EDGE_T:
126  Add( static_cast<BOARD_ITEM*>( item->Clone() ) );
127  break;
128 
129  default:
130  wxLogMessage( wxT( "Class MODULE copy constructor internal error: unknown type" ) );
131  break;
132  }
133  }
134 
135  // Copy auxiliary data: 3D_Drawings info
136  m_3D_Drawings = aModule.m_3D_Drawings;
137 
138  m_Doc = aModule.m_Doc;
139  m_KeyWord = aModule.m_KeyWord;
140 
141  m_arflag = 0;
142 
143  // Ensure auxiliary data is up to date
145 
147  new wxArrayString( *aModule.m_initial_comments ) : 0;
148 }
LIB_ID m_fpid
The LIB_ID of the MODULE.
Definition: class_module.h:670
void Add(BOARD_ITEM *aBoardItem, ADD_MODE aMode=ADD_INSERT) override
>
int m_CntRot90
Horizontal automatic placement cost ( 0..10 ).
Definition: class_module.h:686
wxString m_KeyWord
Search keywords to find module in library.
Definition: class_module.h:679
wxString m_Path
Definition: class_module.h:680
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
int m_ThermalWidth
Definition: class_module.h:676
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
double m_LocalSolderPasteMarginRatio
Solder mask margin ratio value of pad size.
Definition: class_module.h:695
int m_LocalSolderPasteMargin
Solder paste margin absolute value.
Definition: class_module.h:694
int m_ThermalGap
Definition: class_module.h:677
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
time_t m_Link
Temporary logical link used in edition.
Definition: class_module.h:685
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed ...
Definition: class_module.h:698
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
wxString m_Doc
File name and path for documentation file.
Definition: class_module.h:678
BOARD_ITEM * Next() const
int m_LocalClearance
Definition: class_module.h:692
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
D_PAD * Next() const
Definition: class_pad.h:106
int m_LocalSolderMaskMargin
Solder mask margin.
Definition: class_module.h:693
int m_arflag
Use to trace ratsnest and auto routing.
Definition: class_module.h:683
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
time_t m_LastEditTime
Definition: class_module.h:682
int m_CntRot180
Vertical automatic placement cost ( 0..10 ).
Definition: class_module.h:687
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
ZoneConnection m_ZoneConnection
Definition: class_module.h:681
BOARD_ITEM_CONTAINER(BOARD_ITEM *aParent, KICAD_T aType)
int m_Attributs
Flag bits ( see Mod_Attribut )
Definition: class_module.h:671
MODULE::~MODULE ( )

Definition at line 151 of file class_module.cpp.

References m_initial_comments, m_Reference, and m_Value.

152 {
153  delete m_Reference;
154  delete m_Value;
155  delete m_initial_comments;
156 }
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed ...
Definition: class_module.h:698
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668

Member Function Documentation

void MODULE::Add ( BOARD_ITEM aBoardItem,
ADD_MODE  aMode = ADD_INSERT 
)
overridevirtual

>

Adds an item to the container.

Parameters
aItemis an item to be added.
aModedecides whether the item is added in the beginning or at the end of the list.

Implements BOARD_ITEM_CONTAINER.

Definition at line 251 of file class_module.cpp.

References ADD_APPEND, m_Drawings, m_Pads, PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, PCB_PAD_T, DLIST< T >::PushBack(), DLIST< T >::PushFront(), EDA_ITEM::SetParent(), TEXTE_MODULE::TEXT_is_DIVERS, and EDA_ITEM::Type().

Referenced by MODULE_EDITOR_TOOLS::CopyItems(), PCB_BASE_FRAME::GetFootprintFromBoardByReference(), InvokeDXFDialogModuleImport(), PCB_EDIT_FRAME::ListAndSelectModuleName(), MODULE(), operator=(), BOARD_COMMIT::Push(), and DIALOG_NETLIST::verifyFootprints().

252 {
253  switch( aBoardItem->Type() )
254  {
255  case PCB_MODULE_TEXT_T:
256  // Only user texts can be added this way. Reference and value are not hold in the DLIST.
257  assert( static_cast<TEXTE_MODULE*>( aBoardItem )->GetType() == TEXTE_MODULE::TEXT_is_DIVERS );
258 
259  // no break
260 
261  case PCB_MODULE_EDGE_T:
262  if( aMode == ADD_APPEND )
263  m_Drawings.PushBack( aBoardItem );
264  else
265  m_Drawings.PushFront( aBoardItem );
266  break;
267 
268  case PCB_PAD_T:
269  if( aMode == ADD_APPEND )
270  m_Pads.PushBack( static_cast<D_PAD*>( aBoardItem ) );
271  else
272  m_Pads.PushFront( static_cast<D_PAD*>( aBoardItem ) );
273  break;
274 
275  default:
276  {
277  wxString msg;
278  msg.Printf( wxT( "MODULE::Add() needs work: BOARD_ITEM type (%d) not handled" ),
279  aBoardItem->Type() );
280  wxFAIL_MSG( msg );
281 
282  return;
283  }
284  }
285 
286  aBoardItem->SetParent( this );
287 
288  // Update relative coordinates, it can be done only after there is a parent object assigned
289  switch( aBoardItem->Type() )
290  {
291  case PCB_MODULE_TEXT_T:
292  static_cast<TEXTE_MODULE*>( aBoardItem )->SetLocalCoord();
293  break;
294 
295  case PCB_MODULE_EDGE_T:
296  static_cast<EDGE_MODULE*>( aBoardItem )->SetLocalCoord();
297  break;
298 
299  case PCB_PAD_T:
300  static_cast<D_PAD*>( aBoardItem )->SetLocalCoord();
301  break;
302 
303  default:
304  // Huh? It should have been filtered out by the previous switch
305  assert(false);
306  break;
307  }
308 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
void PushFront(T *aNewElement)
Function PushFront puts aNewElement at front of list sequence.
Definition: dlist.h:240
class D_PAD, a pad in a footprint
Definition: typeinfo.h:102
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
void PushBack(T *aNewElement)
Function PushBack puts aNewElement at the end of the list sequence.
Definition: dlist.h:250
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
void MODULE::Add3DModel ( S3D_INFO a3DModel)

Function Add3DModel adds a3DModel definition to the end of the 3D model list.

Parameters
a3DModelA pointer to a S3D_INFO to add to the list.

Definition at line 708 of file class_module.cpp.

References m_3D_Drawings, and S3D_INFO::m_Filename.

709 {
710  if( NULL == a3DModel )
711  return;
712 
713  if( !a3DModel->m_Filename.empty() )
714  m_3D_Drawings.push_back( *a3DModel );
715 
716  delete a3DModel;
717 }
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
wxString m_Filename
The 3D shape filename in 3D library.
Definition: 3d_info.h:45
MODULE* MODULE::Back ( ) const
inline

Definition at line 100 of file class_module.h.

References EDA_ITEM::Pback.

Referenced by DIALOG_EXCHANGE_MODULE::changeAllFootprints(), and DIALOG_EXCHANGE_MODULE::changeSameFootprints().

100 { return static_cast<MODULE*>( Pback ); }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:165
bool MODULE::BuildPolyCourtyard ( )

Used in DRC to build the courtyard area (a complex polygon) from graphic items put on the courtyard.

Returns
true if OK, or no courtyard defined, false only if the polygon cannot be built due to amalformed courtyard shape The polygon cannot be built if segments/arcs on courtyard layers cannot be grouped in a polygon.

Definition at line 1229 of file class_module.cpp.

References B_CrtYd, ConvertOutlineToPolygon(), F_CrtYd, GetReference(), GraphicalItems(), m_poly_courtyard_back, m_poly_courtyard_front, BOARD_ITEM::Next(), PCB_MODULE_EDGE_T, and SHAPE_POLY_SET::RemoveAllContours().

1230 {
1233  // Build the courtyard area from graphic items on the courtyard.
1234  // Only PCB_MODULE_EDGE_T have meaning, graphic texts are ignored.
1235  // Collect items:
1236  std::vector< DRAWSEGMENT* > list_front;
1237  std::vector< DRAWSEGMENT* > list_back;
1238 
1239  for( BOARD_ITEM* item = GraphicalItems(); item; item = item->Next() )
1240  {
1241  if( item->GetLayer() == B_CrtYd && item->Type() == PCB_MODULE_EDGE_T )
1242  list_back.push_back( static_cast< DRAWSEGMENT* > ( item ) );
1243 
1244  if( item->GetLayer() == F_CrtYd && item->Type() == PCB_MODULE_EDGE_T )
1245  list_front.push_back( static_cast< DRAWSEGMENT* > ( item ) );
1246  }
1247 
1248  // Note: if no item found on courtyard layers, return true.
1249  // false is returned only when the shape defined on courtyard layers
1250  // is not convertible to a polygon
1251  if( !list_front.size() && !list_back.size() )
1252  return true;
1253 
1254  wxString error_msg;
1255 
1256  const int STEPS = 36; // for a segmentation of an arc of 360 degrees
1257  bool success = ConvertOutlineToPolygon( list_front, m_poly_courtyard_front,
1258  STEPS, &error_msg );
1259 
1260  if( success )
1261  success = ConvertOutlineToPolygon( list_back, m_poly_courtyard_back,
1262  STEPS, &error_msg );
1263 
1264  if( !error_msg.IsEmpty() )
1265  {
1266  error_msg.Prepend( GetReference() + ": " );
1267  wxLogMessage( error_msg );
1268  }
1269 
1270  return success;
1271 }
SHAPE_POLY_SET m_poly_courtyard_back
Definition: class_module.h:704
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
bool ConvertOutlineToPolygon(std::vector< DRAWSEGMENT * > &aSegList, SHAPE_POLY_SET &aPolygons, int aSegmentsByCircle, wxString *aErrorText)
Function ConvertOutlineToPolygon build a polygon (with holes) from a DRAWSEGMENT list, which is expected to be a outline, therefore a closed main outline with perhaps closed inner outlines.
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
DLIST< BOARD_ITEM > & GraphicalItems()
Definition: class_module.h:136
BOARD_ITEM * Next() const
SHAPE_POLY_SET m_poly_courtyard_front
Used in DRC to test the courtyard area (a polygon which can be not basic Note also a footprint can ha...
Definition: class_module.h:703
const wxString & GetReference() const
Function GetReference.
Definition: class_module.h:411
void RemoveAllContours()
Removes all outlines & holes (clears) the polygon set.
void MODULE::CalculateBoundingBox ( )

Function CalculateBoundingBox calculates the bounding box in board coordinates.

Definition at line 462 of file class_module.cpp.

References abs, GetFootprintRect(), EDA_RECT::GetHeight(), EDA_RECT::GetWidth(), m_BoundaryBox, and m_Surface.

Referenced by Abort_Move_ModuleOutline(), PCB_BASE_FRAME::AddPad(), PCAD2KICAD::PCB_MODULE::AddToBoard(), PCB_EDIT_FRAME::AutoPlaceModule(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), CopyNetlistSettings(), PCB_EDIT_FRAME::Create_MuWaveComponent(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), PCB_BASE_FRAME::DeletePad(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Width(), FOOTPRINT_EDIT_FRAME::End_Edge_Module(), FOOTPRINT_EDIT_FRAME::Enter_Edge_Width(), Flip(), getOptimalModulePlacement(), PCB_BASE_FRAME::GlobalChange_PadSettings(), LEGACY_PLUGIN::loadMODULE(), MODULE(), MoveAnchorPosition(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), operator=(), PickModule(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_BASE_FRAME::PlacePad(), PCB_BASE_FRAME::RotatePad(), SetOrientation(), SetPosition(), ShowCurrentOutlineWhileMoving(), ShowNewEdgeModule(), DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and FOOTPRINT_EDIT_FRAME::Transform().

463 {
466 }
int GetHeight() const
double m_Surface
Bounding box area.
Definition: class_module.h:684
#define abs(a)
Definition: auxiliary.h:84
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
EDA_RECT GetFootprintRect() const
Function GetFootprintRect() Returns the area of the module footprint excluding any text...
int GetWidth() const
static bool MODULE::ClassOf ( const EDA_ITEM aItem)
inlinestatic

Definition at line 94 of file class_module.h.

References PCB_MODULE_T, and EDA_ITEM::Type().

95  {
96  return PCB_MODULE_T == aItem->Type();
97  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
class MODULE, a footprint
Definition: typeinfo.h:101
void MODULE::ClearAllNets ( )

Function ClearAllNets Clear (i.e.

force the ORPHANED dummy net info) the net info which depends on a given board for all pads of the footprint. This is needed when a footprint is copied between the fp editor and the board editor for instance, because net info become fully broken

Definition at line 228 of file class_module.cpp.

References D_PAD::Next(), NETINFO_LIST::ORPHANED, and Pads().

Referenced by FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), and PCB_BASE_FRAME::loadFootprint().

229 {
230  // Force the ORPHANED dummy net info for all pads.
231  // ORPHANED dummy net does not depend on a board
232  for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
233  pad->SetNetCode( NETINFO_LIST::ORPHANED );
234 }
D_PAD * Next() const
Definition: class_pad.h:106
static const int ORPHANED
Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED (typically -1) whe...
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 233 of file base_struct.h.

References BRIGHTENED, and EDA_ITEM::ClearFlags().

Referenced by SELECTION_TOOL::disambiguationMenu().

233 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 254 of file base_struct.h.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_Move_Pad(), Abort_MoveOrCopyModule(), Abort_MoveTrack(), Abort_Zone_Create_Outline(), Abort_Zone_Move_Corner_Or_Outlines(), AbortMoveAndEditTarget(), abortMoveBitmap(), AbortMoveDimensionText(), abortMoveItem(), AbortMoveTextModule(), AbortPinMove(), SCH_SCREEN::addConnectedItemsToBlock(), SCH_EDIT_FRAME::addCurrentItemToList(), PNS_KICAD_IFACE::AddItem(), PCB_EDIT_FRAME::AppendBoardFile(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Zone(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearHighlighted(), ClearMarkItems(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_PART::CopySelectedItems(), MWAVE::CreateMicrowaveInductor(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::Delete_LastCreatedCorner(), PCB_EDIT_FRAME::Delete_Segment_Edge(), LIB_PART::DeleteSelectedItems(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::End_Edge(), FOOTPRINT_EDIT_FRAME::End_Edge_Module(), PCB_EDIT_FRAME::End_Move_Zone_Corner_Or_Outlines(), PCB_EDIT_FRAME::End_Zone(), SCH_EDIT_FRAME::EndSegment(), PCB_EDIT_FRAME::Exchange_Module(), ExitSheet(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_COMPONENT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), MarkItemsInBloc(), MirrorX(), MirrorY(), moveBitmap(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnRotateItem(), SCH_EDIT_FRAME::OnSelectUnit(), SCH_FIELD::Place(), PCB_EDIT_FRAME::Place_DrawItem(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_EDIT_FRAME::PlaceDimensionText(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::PlacePad(), PCB_EDIT_FRAME::PlaceTarget(), DRAWING_TOOL::PlaceText(), PCB_BASE_FRAME::PlaceTexteModule(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), BOARD_COMMIT::Revert(), PCB_BASE_FRAME::Rotate_Module(), RotateListOfItems(), LIB_PIN::Save(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), SCH_EDIT_FRAME::SetRepeatItem(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

254 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 232 of file base_struct.h.

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

232 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
void EDA_ITEM::ClearSelected ( )
inlineinherited

Definition at line 231 of file base_struct.h.

References EDA_ITEM::ClearFlags(), and SELECTED.

Referenced by POINT_EDITOR::addCorner(), SELECTION_TOOL::unselectVisually(), and PCB_EDITOR_CONTROL::ZoneDuplicate().

231 { ClearFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:120
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
EDA_ITEM * MODULE::Clone ( ) const
overridevirtual

Function Clone creates a duplicate of this item with linked list members set to NULL.

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

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Definition at line 812 of file class_module.cpp.

References MODULE().

Referenced by PCB_EDIT_FRAME::StartMoveModule(), BOARD_NETLIST_UPDATER::updateComponentPadConnections(), and BOARD_NETLIST_UPDATER::updateComponentParameters().

813 {
814  return new MODULE( *this );
815 }
MODULE(BOARD *parent)
void MODULE::CopyNetlistSettings ( MODULE aModule,
bool  aCopyLocalSettings 
)

Function CopyNetlistSettings copies the netlist settings to aModule.

Used to copy some footprint parameters when replacing a footprint by an other footprint when reading a netlist, or in exchange footprint dialog

The netlist settings are all of the MODULE settings not define by a MODULE in a netlist. These setting include placement prms (position, orientation, side) and optionally local prms( clearances, zone connection type, etc). The reference designator, value, path, and physical geometry settings are not copied.

Parameters
aModuleis the MODULE to copy the settings to.
aCopyLocalSettings= false to copy only module placement true to also copy local prms

Definition at line 340 of file class_module.cpp.

References CalculateBoundingBox(), D_PAD::CopyNetlistSettings(), FindPadByName(), Flip(), BOARD_ITEM::GetLayer(), GetLocalClearance(), GetLocalSolderMaskMargin(), GetLocalSolderPasteMargin(), GetLocalSolderPasteMarginRatio(), GetOrientation(), GetPosition(), GetThermalGap(), GetThermalWidth(), GetZoneConnection(), IsLocked(), D_PAD::Next(), Pads(), Rotate(), SetLocalClearance(), SetLocalSolderMaskMargin(), SetLocalSolderPasteMargin(), SetLocalSolderPasteMarginRatio(), SetLocked(), SetPosition(), SetThermalGap(), SetThermalWidth(), and SetZoneConnection().

Referenced by PCB_EDIT_FRAME::Exchange_Module(), BOARD_NETLIST_UPDATER::replaceComponent(), and BOARD::ReplaceNetlist().

341 {
342  // Don't do anything foolish like trying to copy to yourself.
343  wxCHECK_RET( aModule != NULL && aModule != this, wxT( "Cannot copy to NULL or yourself." ) );
344 
345  // Not sure what to do with the value field. Use netlist for now.
346  aModule->SetPosition( GetPosition() );
347 
348  if( aModule->GetLayer() != GetLayer() )
349  aModule->Flip( aModule->GetPosition() );
350 
351  if( aModule->GetOrientation() != GetOrientation() )
352  aModule->Rotate( aModule->GetPosition(), GetOrientation() );
353 
354  aModule->SetLocked( IsLocked() );
355 
356  if( aCopyLocalSettings )
357  {
359  aModule->SetLocalClearance( GetLocalClearance() );
362  aModule->SetZoneConnection( GetZoneConnection() );
363  aModule->SetThermalWidth( GetThermalWidth() );
364  aModule->SetThermalGap( GetThermalGap() );
365  }
366 
367  for( D_PAD* pad = aModule->Pads(); pad; pad = pad->Next() )
368  {
369  // Fix me: if aCopyLocalSettings == true, for "multiple" pads
370  // (set of pads having the same name/number) this is broken
371  // because we copy settings from the first pad found.
372  // When old and new footprints have very few differences, a better
373  // algo can be used.
374  D_PAD* oldPad = FindPadByName( pad->GetPadName() );
375 
376  if( oldPad )
377  oldPad->CopyNetlistSettings( pad, aCopyLocalSettings );
378  }
379 
380  // Not sure about copying description, keywords, 3D models or any other
381  // local user changes to footprint. Stick with the new footprint settings
382  // called out in the footprint loaded in the netlist.
383  aModule->CalculateBoundingBox();
384 }
void SetThermalGap(int aGap)
Definition: class_module.h:181
int GetThermalGap() const
Definition: class_module.h:182
void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
void SetLocalClearance(int aClearance)
Definition: class_module.h:167
int GetLocalClearance() const
Definition: class_module.h:166
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
void Flip(const wxPoint &aCentre) override
Function Flip Flip this object, i.e.
const wxPoint & GetPosition() const override
Definition: class_module.h:143
D_PAD * FindPadByName(const wxString &aPadName) const
Function FindPadByName returns a D_PAD* with a matching name.
void SetZoneConnection(ZoneConnection aType)
Definition: class_module.h:175
ZoneConnection GetZoneConnection() const
Definition: class_module.h:176
LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
void SetLocalSolderPasteMarginRatio(double aRatio)
Definition: class_module.h:173
double GetLocalSolderPasteMarginRatio() const
Definition: class_module.h:172
double GetOrientation() const
Definition: class_module.h:147
D_PAD * Next() const
Definition: class_pad.h:106
void SetThermalWidth(int aWidth)
Definition: class_module.h:178
void SetPosition(const wxPoint &aPos) override
int GetLocalSolderMaskMargin() const
Definition: class_module.h:163
bool IsLocked() const override
Function IsLocked.
Definition: class_module.h:223
void SetLocalSolderMaskMargin(int aMargin)
Definition: class_module.h:164
int GetLocalSolderPasteMargin() const
Definition: class_module.h:169
void SetLocalSolderPasteMargin(int aMargin)
Definition: class_module.h:170
void SetLocked(bool isLocked) override
Function SetLocked sets the MODULE_is_LOCKED bit in the m_ModuleStatus.
Definition: class_module.h:233
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
void CopyNetlistSettings(D_PAD *aPad, bool aCopyLocalSettings)
Function CopyNetlistSettings copies the netlist settings to aPad, and the net name.
Definition: class_pad.cpp:435
int GetThermalWidth() const
Definition: class_module.h:179
virtual void BOARD_ITEM_CONTAINER::Delete ( BOARD_ITEM aItem)
inlinevirtualinherited

Removes an item from the containter and deletes it.

Parameters
aItemis an item to be deleted.

Definition at line 66 of file board_item_container.h.

References BOARD_ITEM_CONTAINER::Remove().

Referenced by DRC_LIST_MARKERS::DeleteItem(), BOARD_COMMIT::Push(), PCB_EDIT_FRAME::Remove_Zone_Corner(), BOARD::RemoveArea(), PCB_EDIT_FRAME::RemoveStruct(), and BOARD::~BOARD().

67  {
68  Remove( aItem );
69  delete aItem;
70  }
virtual void Remove(BOARD_ITEM *aItem)=0
Removes an item from the container.
void BOARD_ITEM::DeleteStructure ( )
inherited
void MODULE::Draw ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC,
GR_DRAWMODE  aDrawMode,
const wxPoint aOffset = ZeroOffset 
)
overridevirtual

Function Draw draws the footprint to the aDC.

Parameters
aPanel= draw panel, Used to know the clip box
aDC= Current Device Context
aDrawMode= GR_OR, GR_XOR..
aOffset= draw offset (usually wxPoint(0,0)

Implements BOARD_ITEM.

Definition at line 387 of file class_module.cpp.

References BROWN, DIM_ANCRE_MODULE, DO_NOT_DRAW, TEXTE_MODULE::Draw(), DrawAncre(), BOARD_ITEM::GetBoard(), EDA_DRAW_PANEL::GetClipBox(), GRRect(), BOARD::IsElementVisible(), EDA_ITEM::IsMoving(), m_BoundaryBox, m_Drawings, EDA_ITEM::m_Flags, m_Pads, m_Reference, m_Value, MOD_REFERENCES_VISIBLE, MOD_VALUES_VISIBLE, D_PAD::Next(), BOARD_ITEM::Next(), PCB_MODULE_EDGE_T, and PCB_MODULE_TEXT_T.

Referenced by Abort_MoveOrCopyModule(), PCB_EDIT_FRAME::AutoPlaceModule(), PCB_EDIT_FRAME::Begin_Self(), PCB_EDIT_FRAME::Change_Side_Module(), PCB_EDIT_FRAME::Edit_Gap(), PCB_BASE_FRAME::LoadModuleFromLibrary(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::Rotate_Module(), PCB_BASE_FRAME::RotatePad(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

389 {
390  if( (m_Flags & DO_NOT_DRAW) || (IsMoving()) )
391  return;
392 
393  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
394  {
395  if( pad->IsMoving() )
396  continue;
397 
398  pad->Draw( aPanel, aDC, aDrawMode, aOffset );
399  }
400 
401  BOARD* brd = GetBoard();
402 
403  // Draws footprint anchor
404  DrawAncre( aPanel, aDC, aOffset, DIM_ANCRE_MODULE, aDrawMode );
405 
406  // Draw graphic items
408  {
409  if( !(m_Reference->IsMoving()) )
410  m_Reference->Draw( aPanel, aDC, aDrawMode, aOffset );
411  }
412 
414  {
415  if( !(m_Value->IsMoving()) )
416  m_Value->Draw( aPanel, aDC, aDrawMode, aOffset );
417  }
418 
419  for( BOARD_ITEM* item = m_Drawings; item; item = item->Next() )
420  {
421  if( item->IsMoving() )
422  continue;
423 
424  switch( item->Type() )
425  {
426  case PCB_MODULE_TEXT_T:
427  case PCB_MODULE_EDGE_T:
428  item->Draw( aPanel, aDC, aDrawMode, aOffset );
429  break;
430 
431  default:
432  break;
433  }
434  }
435 
436  // Enable these line to draw m_BoundaryBox (debug tests purposes only)
437 #if 0
438  GRRect( aPanel->GetClipBox(), aDC, m_BoundaryBox, 0, BROWN );
439 #endif
440 
441 }
bool IsMoving() const
Definition: base_struct.h:218
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
void DrawAncre(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, int dim_ancre, GR_DRAWMODE draw_mode)
Function DrawAncre Draw the anchor cross (vertical) Must be done after the pads, because drawing the ...
#define DIM_ANCRE_MODULE
Definition: pcbnew.h:59
BOARD_ITEM * Next() const
void GRRect(EDA_RECT *aClipBox, wxDC *aDC, int x1, int y1, int x2, int y2, COLOR4D aColor)
Definition: gr_basic.cpp:1077
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
show modules references (when texts are visibles)
D_PAD * Next() const
Definition: class_pad.h:106
EDA_RECT * GetClipBox()
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, GR_DRAWMODE aDrawMode, const wxPoint &aOffset=ZeroOffset) override
Function Draw Draw the text according to the footprint pos and orient.
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
bool IsElementVisible(int aPCB_VISIBLE) const
Function IsElementVisible tests whether a given element category is visible.
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
#define DO_NOT_DRAW
Used to disable draw function.
Definition: base_struct.h:125
show modules values (when texts are visibles)
Definition: colors.h:62
void MODULE::DrawAncre ( EDA_DRAW_PANEL panel,
wxDC *  DC,
const wxPoint offset,
int  dim_ancre,
GR_DRAWMODE  draw_mode 
)

Function DrawAncre Draw the anchor cross (vertical) Must be done after the pads, because drawing the hole will erase overwrite every thing already drawn.

Definition at line 237 of file class_module.cpp.

References ANCHOR_VISIBLE, g_ColorsSettings, BOARD_ITEM::GetBoard(), EDA_DRAW_PANEL::GetClipBox(), COLORS_DESIGN_SETTINGS::GetItemColor(), GRDrawAnchor(), GRSetDrawMode(), m_Pos, wxPoint::x, and wxPoint::y.

Referenced by Draw().

239 {
240  GRSetDrawMode( DC, draw_mode );
241 
242  if( GetBoard()->IsElementVisible( ANCHOR_VISIBLE ) )
243  {
244  GRDrawAnchor( panel->GetClipBox(), DC, m_Pos.x, m_Pos.y,
245  dim_ancre,
247  }
248 }
void GRSetDrawMode(wxDC *DC, GR_DRAWMODE draw_mode)
Definition: gr_basic.cpp:290
void GRDrawAnchor(EDA_RECT *aClipBox, wxDC *aDC, int x, int y, int aSize, COLOR4D aColor)
Definition: gr_basic.cpp:1259
COLOR4D GetItemColor(int aItemIdx) const
Function GetItemColor.
EDA_RECT * GetClipBox()
COLORS_DESIGN_SETTINGS g_ColorsSettings
Definition: pcbnew.cpp:68
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
void MODULE::DrawEdgesOnly ( EDA_DRAW_PANEL panel,
wxDC *  DC,
const wxPoint offset,
GR_DRAWMODE  draw_mode 
)

Function DrawEdgesOnly Draws the footprint edges only to the current Device Context.

Parameters
panel= The active Draw Panel (used to know the clip box)
DC= current Device Context
offset= draw offset (usually wxPoint(0,0)
draw_mode= GR_OR, GR_XOR, GR_AND

Definition at line 444 of file class_module.cpp.

References m_Drawings, BOARD_ITEM::Next(), and PCB_MODULE_EDGE_T.

Referenced by DrawOutlinesWhenMoving().

446 {
447  for( BOARD_ITEM* item = m_Drawings; item; item = item->Next() )
448  {
449  switch( item->Type() )
450  {
451  case PCB_MODULE_EDGE_T:
452  item->Draw( panel, DC, draw_mode, offset );
453  break;
454 
455  default:
456  break;
457  }
458  }
459 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
BOARD_ITEM * Next() const
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
void MODULE::DrawOutlinesWhenMoving ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC,
const wxPoint aMoveVector 
)

Function DrawOutlinesWhenMoving draws in XOR mode the footprint when moving it to the aDC.

To speed up the drawing, only a simplified shape is drawn

Parameters
aPanel= draw panel, Used to know the clip box
aDC= Current Device Context
aMoveVector= the offset between the curr position and the draw position.

Definition at line 492 of file modules.cpp.

References PCB_BASE_FRAME::build_ratsnest_module(), D_PAD::Draw(), DrawEdgesOnly(), EDA_DRAW_PANEL::GetDisplayOptions(), EDA_DRAW_PANEL::GetParent(), GR_XOR, DISPLAY_OPTIONS::m_DisplayPadFill, DISPLAY_OPTIONS::m_Show_Module_Ratsnest, D_PAD::Next(), Pads(), and PCB_BASE_FRAME::TraceModuleRatsNest().

Referenced by Abort_MoveOrCopyModule(), PCB_EDIT_FRAME::Change_Side_Module(), getOptimalModulePlacement(), MoveFootprint(), and PCB_BASE_FRAME::Rotate_Module().

494 {
495  int pad_fill_tmp;
496  D_PAD* pt_pad;
497 
498  DrawEdgesOnly( panel, DC, aMoveVector, GR_XOR );
499  DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)panel->GetDisplayOptions();
500 
501  // Show pads in sketch mode to speedu up drawings
502  pad_fill_tmp = displ_opts->m_DisplayPadFill;
503  displ_opts->m_DisplayPadFill = true;
504 
505  pt_pad = Pads();
506 
507  for( ; pt_pad != NULL; pt_pad = pt_pad->Next() )
508  pt_pad->Draw( panel, DC, GR_XOR, aMoveVector );
509 
510  displ_opts->m_DisplayPadFill = pad_fill_tmp;
511 
512  if( displ_opts->m_Show_Module_Ratsnest )
513  {
514  PCB_BASE_FRAME* frame = (PCB_BASE_FRAME*) panel->GetParent();
515  frame->build_ratsnest_module( this );
516  frame->TraceModuleRatsNest( DC );
517  }
518 }
void TraceModuleRatsNest(wxDC *aDC)
Function TraceModuleRatsNest display the rats nest of a moving footprint, computed by build_ratsnest_...
Definition: ratsnest.cpp:751
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, GR_DRAWMODE aDrawMode, const wxPoint &aOffset=ZeroOffset) override
Function Draw BOARD_ITEMs have their own color information.
void build_ratsnest_module(MODULE *aModule)
Function build_ratsnest_module Build a ratsnest relative to one footprint.
Definition: ratsnest.cpp:533
D_PAD * Next() const
Definition: class_pad.h:106
void DrawEdgesOnly(EDA_DRAW_PANEL *panel, wxDC *DC, const wxPoint &offset, GR_DRAWMODE draw_mode)
Function DrawEdgesOnly Draws the footprint edges only to the current Device Context.
Class DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
Definition: pcbstruct.h:62
bool m_DisplayPadFill
Definition: pcbstruct.h:65
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
bool m_Show_Module_Ratsnest
Definition: pcbstruct.h:87
class PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer...
BOARD_ITEM * MODULE::Duplicate ( const BOARD_ITEM aItem,
bool  aIncrementPadNumbers,
bool  aAddToModule = false 
)

Function Duplicate Duplicate a given item within the module, without adding to the board.

Returns
the new item, or NULL if the item could not be duplicated

Definition at line 1099 of file class_module.cpp.

References EDA_ITEM::GetClass(), TEXTE_MODULE::GetType(), GraphicalItems(), D_PAD::IncrementPadName(), Pads(), PCB_MODULE_EDGE_T, PCB_MODULE_T, PCB_MODULE_TEXT_T, PCB_PAD_T, DLIST< T >::PushBack(), TEXTE_MODULE::TEXT_is_DIVERS, and EDA_ITEM::Type().

Referenced by EDIT_TOOL::Duplicate(), and ARRAY_CREATOR::Invoke().

1102 {
1103  BOARD_ITEM* new_item = NULL;
1104  D_PAD* new_pad = NULL;
1105 
1106  switch( aItem->Type() )
1107  {
1108  case PCB_PAD_T:
1109  {
1110  new_pad = new D_PAD( *static_cast<const D_PAD*>( aItem ) );
1111 
1112  if( aAddToModule )
1113  Pads().PushBack( new_pad );
1114 
1115  new_item = new_pad;
1116  break;
1117  }
1118 
1119  case PCB_MODULE_TEXT_T:
1120  {
1121  const TEXTE_MODULE* old_text = static_cast<const TEXTE_MODULE*>( aItem );
1122 
1123  // do not duplicate value or reference fields
1124  // (there can only be one of each)
1125  if( old_text->GetType() == TEXTE_MODULE::TEXT_is_DIVERS )
1126  {
1127  TEXTE_MODULE* new_text = new TEXTE_MODULE( *old_text );
1128 
1129  if( aAddToModule )
1130  GraphicalItems().PushBack( new_text );
1131 
1132  new_item = new_text;
1133  }
1134  break;
1135  }
1136 
1137  case PCB_MODULE_EDGE_T:
1138  {
1139  EDGE_MODULE* new_edge = new EDGE_MODULE(
1140  *static_cast<const EDGE_MODULE*>(aItem) );
1141 
1142  if( aAddToModule )
1143  GraphicalItems().PushBack( new_edge );
1144 
1145  new_item = new_edge;
1146  break;
1147  }
1148 
1149  case PCB_MODULE_T:
1150  // Ignore the module itself
1151  break;
1152 
1153  default:
1154  // Un-handled item for duplication
1155  wxASSERT_MSG( false, "Duplication not supported for items of class "
1156  + aItem->GetClass() );
1157  break;
1158  }
1159 
1160  if( aIncrementPadNumbers && new_pad )
1161  {
1162  new_pad->IncrementPadName( true, true );
1163  }
1164 
1165  return new_item;
1166 }
bool IncrementPadName(bool aSkipUnconnectable, bool aFillSequenceGaps)
Function IncrementPadName.
Definition: class_pad.cpp:424
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
TEXT_TYPE GetType() const
class D_PAD, a pad in a footprint
Definition: typeinfo.h:102
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
DLIST< BOARD_ITEM > & GraphicalItems()
Definition: class_module.h:136
void PushBack(T *aNewElement)
Function PushBack puts aNewElement at the end of the list sequence.
Definition: dlist.h:250
class MODULE, a footprint
Definition: typeinfo.h:101
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
virtual wxString GetClass() const =0
Function GetClass returns the class name.
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
D_PAD * MODULE::FindPadByName ( const wxString &  aPadName) const

Function FindPadByName returns a D_PAD* with a matching name.

Note that names may not be unique, depending on how the foot print was created.

Parameters
aPadNamethe pad name to find
Returns
D_PAD* - The first matching name is returned, or NULL if not found.

Definition at line 621 of file class_module.cpp.

References m_Pads, D_PAD::Next(), and D_PAD::StringPadName().

Referenced by CopyNetlistSettings(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), BOARD::ReplaceNetlist(), and BOARD_NETLIST_UPDATER::testConnectivity().

622 {
623  wxString buf;
624 
625  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
626  {
627  pad->StringPadName( buf );
628 #if 1
629  if( buf.CmpNoCase( aPadName ) == 0 ) // why case insensitive?
630 #else
631  if( buf == aPadName )
632 #endif
633  return pad;
634  }
635 
636  return NULL;
637 }
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
void MODULE::Flip ( const wxPoint aCentre)
overridevirtual

Function Flip Flip this object, i.e.

change the board side for this object

Parameters
aCentre- the rotation point.

Mirror the Y position

Reimplemented from BOARD_ITEM.

Definition at line 919 of file class_module.cpp.

References CalculateBoundingBox(), TEXTE_MODULE::Flip(), FlipLayer(), BOARD_ITEM::GetLayer(), m_Drawings, m_Orient, m_Pads, m_Pos, m_Reference, m_Value, MIRROR(), D_PAD::Next(), BOARD_ITEM::Next(), NORMALIZE_ANGLE_POS(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, BOARD_ITEM::SetLayer(), SetPosition(), and wxPoint::y.

Referenced by PCB_EDIT_FRAME::Change_Side_Module(), CopyNetlistSettings(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_IO::FootprintSave(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), PCB_BASE_FRAME::LoadModuleFromLibrary(), EAGLE_PLUGIN::orientModuleAndText(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_EDITOR_CONTROL::PlaceModule(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

920 {
921  // Move module to its final position:
922  wxPoint finalPos = m_Pos;
923  MIRROR( finalPos.y, aCentre.y );
924  SetPosition( finalPos );
925 
926  // Flip layer
927  SetLayer( FlipLayer( GetLayer() ) );
928 
929  // Reverse mirror orientation.
930  m_Orient = -m_Orient;
932 
933  // Mirror pads to other side of board about the x axis, i.e. vertically.
934  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
935  pad->Flip( m_Pos );
936 
937  // Mirror reference and value.
938  m_Reference->Flip( m_Pos );
939  m_Value->Flip( m_Pos );
940 
941  // Reverse mirror module graphics and texts.
942  for( EDA_ITEM* item = m_Drawings; item; item = item->Next() )
943  {
944  switch( item->Type() )
945  {
946  case PCB_MODULE_EDGE_T:
947  ( (EDGE_MODULE*) item )->Flip( m_Pos );
948  break;
949 
950  case PCB_MODULE_TEXT_T:
951  static_cast<TEXTE_MODULE*>( item )->Flip( m_Pos );
952  break;
953 
954  default:
955  wxMessageBox( wxT( "MODULE::Flip() error: Unknown Draw Type" ) );
956  break;
957  }
958  }
959 
961 }
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
void Flip(const wxPoint &aCentre) override
Function Flip Flip this object, i.e.
virtual void SetLayer(LAYER_ID aLayer)
Function SetLayer sets the layer this item is on.
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:222
LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
BOARD_ITEM * Next() const
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:111
D_PAD * Next() const
Definition: class_pad.h:106
void Flip(const wxPoint &aCentre) override
Flip entity during module flip.
void SetPosition(const wxPoint &aPos) override
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
LAYER_ID FlipLayer(LAYER_ID aLayerId, int aCopperLayersCount)
Function FlippedLayerNumber.
Definition: lset.cpp:444
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
std::string BOARD_ITEM::FormatAngle ( double  aAngle)
staticinherited

Function FormatAngle converts aAngle from board units to a string appropriate for writing to file.

Note
Internal angles for board items can be either degrees or tenths of degree on how KiCad is built.
Parameters
aAngleA angle value to convert.
Returns
A std::string object containing the converted angle.

Definition at line 170 of file class_board_item.cpp.

171 {
172  char temp[50];
173 
174  int len = snprintf( temp, sizeof(temp), "%.10g", aAngle / 10.0 );
175 
176  return std::string( temp, len );
177 }
std::string BOARD_ITEM::FormatInternalUnits ( int  aValue)
staticinherited

Function FormatInternalUnits converts aValue from board internal units to a string appropriate for writing to file.

Note
Internal units for board items can be either deci-mils or nanometers depending on how KiCad is build.
Parameters
aValueA coordinate value to convert.
Returns
A std::string object containing the converted value.

Definition at line 89 of file class_board_item.cpp.

Referenced by checkConnectedTo(), ConvertOutlineToPolygon(), BOARD_ITEM::FormatInternalUnits(), and BOARD::TracksInNetBetweenPoints().

90 {
91 #if 1
92 
93  char buf[50];
94  int len;
95  double mm = aValue / IU_PER_MM;
96 
97  if( mm != 0.0 && fabs( mm ) <= 0.0001 )
98  {
99  len = sprintf( buf, "%.10f", mm );
100 
101  while( --len > 0 && buf[len] == '0' )
102  buf[len] = '\0';
103 
104  if( buf[len] == '.' )
105  buf[len] = '\0';
106  else
107  ++len;
108  }
109  else
110  {
111  len = sprintf( buf, "%.10g", mm );
112  }
113 
114  return std::string( buf, len );
115 
116 #else
117 
118  // Assume aValue is in nanometers, and that we want the result in millimeters,
119  // and that int is 32 bits wide. Then perform an alternative algorithm.
120  // Can be used to verify that the above algorithm is correctly generating text.
121  // Convert aValue into an integer string, then insert a decimal point manually.
122  // Results are the same as above general purpose algorithm.
123 
124  wxASSERT( sizeof(int) == 4 );
125 
126  if( aValue == 0 )
127  return std::string( 1, '0' );
128  else
129  {
130  char buf[50];
131  int len = sprintf( buf, aValue > 0 ? "%06d" : "%07d", aValue ); // optionally pad w/leading zeros
132 
133  std::string ret( buf, len );
134 
135  std::string::iterator it = ret.end() - 1; // last byte
136 
137  // insert '.' at 6 positions from end, dividing by 10e6 (a million), nm => mm
138  std::string::iterator decpoint = ret.end() - 6;
139 
140  // truncate trailing zeros, up to decimal point position
141  for( ; *it=='0' && it >= decpoint; --it )
142  ret.erase( it ); // does not invalidate iterators it or decpoint
143 
144  if( it >= decpoint )
145  {
146  ret.insert( decpoint, '.' );
147 
148  // decpoint is invalidated here, after insert()
149 
150 #if 1 // want a leading zero when decimal point is in first position?
151  if( ret[0] == '.' )
152  {
153  // insert leading zero ahead of decimal point.
154  ret.insert( ret.begin(), '0' );
155  }
156  else if( ret[0]=='-' && ret[1]=='.' )
157  {
158  ret.insert( ret.begin() + 1, '0' );
159  }
160 #endif
161  }
162 
163  return ret;
164  }
165 
166 #endif
167 }
std::string BOARD_ITEM::FormatInternalUnits ( const wxPoint aPoint)
staticinherited

Definition at line 180 of file class_board_item.cpp.

References BOARD_ITEM::FormatInternalUnits(), wxPoint::x, and wxPoint::y.

181 {
182  return FormatInternalUnits( aPoint.x ) + " " + FormatInternalUnits( aPoint.y );
183 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from board internal units to a string appropriate for wr...
std::string BOARD_ITEM::FormatInternalUnits ( const wxSize &  aSize)
staticinherited

Definition at line 186 of file class_board_item.cpp.

References BOARD_ITEM::FormatInternalUnits().

187 {
188  return FormatInternalUnits( aSize.GetWidth() ) + " " + FormatInternalUnits( aSize.GetHeight() );
189 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from board internal units to a string appropriate for wr...
double MODULE::GetArea ( ) const
inline

Definition at line 515 of file class_module.h.

References m_Surface.

Referenced by sortFootprintsByRatsnestSize(), PCB_EDIT_FRAME::SpreadFootprints(), and Tri_PlaceModules().

515 { return m_Surface; }
double m_Surface
Bounding box area.
Definition: class_module.h:684
int MODULE::GetAttributes ( ) const
inline
BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.

Definition at line 63 of file class_board_item.cpp.

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

Referenced by ZONE_CONTAINER::buildFeatureHoleList(), DeleteMarkedItems(), TEXTE_PCB::Draw(), PCB_TARGET::Draw(), EDGE_MODULE::Draw(), ZONE_CONTAINER::Draw(), TEXTE_MODULE::Draw(), TRACK::Draw(), DRAWSEGMENT::Draw(), DIMENSION::Draw(), KIGFX::PCB_PAINTER::draw(), Draw(), D_PAD::Draw(), SEGZONE::Draw(), VIA::Draw(), DrawAncre(), ZONE_CONTAINER::DrawFilledArea(), BOARD_PRINTOUT_CONTROLLER::DrawPage(), ZONE_CONTAINER::DrawWhileCreateOutline(), EVT_COMMAND_RANGE(), POINT_EDITOR::finishItem(), TEXTE_PCB::Flip(), TRACK::Flip(), VIA::Flip(), ZONE_CONTAINER::Flip(), BOARD_ITEM::GetBoard(), GetBoundingBox(), BOARD_ITEM::GetLayerName(), TRACK::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), TRACK::GetMsgPanelInfoBase(), SEGZONE::GetMsgPanelInfoBase(), VIA::GetMsgPanelInfoBase(), TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), TRACK::GetSelectMenuText(), SEGZONE::GetSelectMenuText(), VIA::GetSelectMenuText(), D_PAD::GetSelectMenuText(), ZONE_CONTAINER::GetSelectMenuText(), D_PAD::GetSolderMaskMargin(), D_PAD::GetSolderPasteMargin(), BRDITEMS_PLOTTER::PlotDimension(), PushTrack(), BOARD_CONNECTED_ITEM::SetNet(), and BOARD_CONNECTED_ITEM::SetNetCode().

64 {
65  if( Type() == PCB_T )
66  return (BOARD*) this;
67 
68  BOARD_ITEM* parent = GetParent();
69 
70  if( parent )
71  return parent->GetBoard();
72 
73  return NULL;
74 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
BOARD_ITEM_CONTAINER * GetParent() const
Definition: typeinfo.h:97
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
const EDA_RECT MODULE::GetBoundingBox ( ) const
overridevirtual

Function GetBoundingBox returns 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 492 of file class_module.cpp.

References BOARD_DESIGN_SETTINGS::GetBiggestClearanceValue(), BOARD_ITEM::GetBoard(), TEXTE_MODULE::GetBoundingBox(), BOARD::GetDesignSettings(), GetFootprintRect(), EDA_RECT::Inflate(), m_Reference, m_Value, and EDA_RECT::Merge().

Referenced by PCB_BASE_FRAME::AddPad(), AllAreModulesAndReturnSmallestIfSo(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Change_Side_Module(), PCB_BASE_FRAME::DeletePad(), genModuleOnRoutingMatrix(), PCB_BASE_FRAME::GlobalChange_PadSettings(), moveFootprintsInArea(), SELECTION_TOOL::pickSmallestComponent(), PCB_BASE_FRAME::Rotate_Module(), and PCB_EDIT_FRAME::StartMoveModule().

493 {
494  EDA_RECT area = GetFootprintRect();
495 
496  // Calculate extended area including text fields
497  area.Merge( m_Reference->GetBoundingBox() );
498  area.Merge( m_Value->GetBoundingBox() );
499 
500  // Add the Clearance shape size: (shape around the pads when the
501  // clearance is shown. Not optimized, but the draw cost is small
502  // (perhaps smaller than optimization).
503  BOARD* board = GetBoard();
504  if( board )
505  {
506  int biggest_clearance = board->GetDesignSettings().GetBiggestClearanceValue();
507  area.Inflate( biggest_clearance );
508  }
509 
510  return area;
511 }
void Merge(const EDA_RECT &aRect)
Function Merge modifies the position and size of the rectangle in order to contain aRect...
int GetBiggestClearanceValue()
Function GetBiggestClearanceValue.
EDA_RECT GetFootprintRect() const
Function GetFootprintRect() Returns the area of the module footprint excluding any text...
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Function GetDesignSettings.
Definition: class_board.h:530
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
Class EDA_RECT handles the component boundary box.
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
virtual const wxPoint BOARD_ITEM::GetCenter ( ) const
inlinevirtualinherited

Function GetCenter()

This defaults to the same point as returned by GetPosition(), unless overridden

Returns
centre point of the item

Reimplemented in DRAWSEGMENT.

Definition at line 105 of file class_board_item.h.

References BOARD_ITEM::GetPosition().

Referenced by LEGACY_ARRAY_CREATOR::getRotationCentre(), and DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::TransformItem().

105 { return GetPosition(); }
virtual const wxPoint & GetPosition() const =0
wxString MODULE::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Implements EDA_ITEM.

Definition at line 545 of file class_module.h.

Referenced by Visit().

546  {
547  return wxT( "MODULE" );
548  }
const wxString& MODULE::GetDescription ( ) const
inline

Definition at line 154 of file class_module.h.

References m_Doc.

Referenced by DIALOG_MODULE_MODULE_EDITOR::initModeditProperties().

154 { return m_Doc; }
wxString m_Doc
File name and path for documentation file.
Definition: class_module.h:678
int MODULE::GetFlag ( ) const
inline

Definition at line 189 of file class_module.h.

References m_arflag.

Referenced by CreateShapesSection(), PCB_EDIT_FRAME::ExportToGenCAD(), FootprintWriteShape(), DSN::SPECCTRA_DB::FromBOARD(), PickModule(), and sortFootprintsByRatsnestSize().

189 { return m_arflag; }
int m_arflag
Use to trace ratsnest and auto routing.
Definition: class_module.h:683
STATUS_FLAGS EDA_ITEM::GetFlags ( ) const
inlineinherited

Definition at line 255 of file base_struct.h.

References EDA_ITEM::m_Flags.

Referenced by AbortMoveAndEditTarget(), SCH_SCREEN::addConnectedItemsToBlock(), AddMenusForBitmap(), AddMenusForBusEntry(), AddMenusForComponent(), AddMenusForComponentField(), AddMenusForEditComponent(), AddMenusForGLabel(), AddMenusForHierchicalSheet(), AddMenusForHLabel(), AddMenusForLabel(), AddMenusForSheetPin(), AddMenusForText(), SCH_EDIT_FRAME::BeginSegment(), SCH_EDIT_FRAME::ChangeTextOrient(), Collect_TrackSegmentsToDrag(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_EDIT_FRAME::CreatePin(), PCB_EDIT_FRAME::createPopUpMenuForFootprints(), PCB_EDIT_FRAME::createPopUpMenuForFpPads(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), PCB_EDIT_FRAME::createPopUpMenuForTexts(), PCB_EDIT_FRAME::createPopupMenuForTracks(), PCB_EDIT_FRAME::createPopUpMenuForZones(), PCB_EDIT_FRAME::Delete_Segment_Edge(), BOARD::Draw(), PCB_EDIT_FRAME::Edit_TrackSegm_Width(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditImage(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_VIEW_FRAME::GeneralControl(), SCH_EDIT_FRAME::GeneralControl(), SCH_SCREEN::GetConnection(), InitialiseDragParameters(), LIB_EDIT_FRAME::LoadOneSymbol(), Magnetize(), SCH_EDIT_FRAME::MirrorImage(), SCH_EDIT_FRAME::MirrorSheet(), moveBitmap(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnDragItem(), SCH_EDIT_FRAME::OnEditItem(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnHotKey(), SCH_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyBeginRoute(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnMoveItem(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_EDIT_FRAME::OnOrient(), FOOTPRINT_EDIT_FRAME::OnRightClick(), GERBVIEW_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::OnSelectUnit(), PCB_EDIT_FRAME::PlaceTarget(), FOOTPRINT_EDIT_FRAME::PrepareItemForHotkey(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), SCH_EDIT_FRAME::RotateField(), SCH_EDIT_FRAME::RotateHierarchicalSheet(), SCH_EDIT_FRAME::RotateImage(), PCB_BASE_FRAME::RotateTextModule(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_SCREEN::SelectBlockItems(), SCH_EDIT_FRAME::SetBusEntryShape(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), Show_Drag_Track_Segment_With_Cte_Slope(), Show_MoveNode(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), DIALOG_LABEL_EDITOR::TextPropertiesAccept(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

255 { return m_Flags; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
EDA_RECT MODULE::GetFootprintRect ( ) const

Function GetFootprintRect() Returns the area of the module footprint excluding any text.

Returns
EDA_RECT - The rectangle containing the footprint.

Definition at line 469 of file class_module.cpp.

References dyn_cast(), DRAWSEGMENT::GetBoundingBox(), DLIST< T >::GetFirst(), EDA_RECT::Inflate(), m_Drawings, m_Pads, m_Pos, EDA_RECT::Merge(), D_PAD::Next(), BOARD_ITEM::Next(), EDA_RECT::SetEnd(), and EDA_RECT::SetOrigin().

Referenced by CalculateBoundingBox(), GetBoundingBox(), BOARD::GetFootprint(), getOptimalModulePlacement(), PadCoverageRatio(), TstModuleOnBoard(), and ViewBBox().

470 {
471  EDA_RECT area;
472 
473  area.SetOrigin( m_Pos );
474  area.SetEnd( m_Pos );
475  area.Inflate( Millimeter2iu( 0.25 ) ); // Give a min size to the area
476 
477  for( const BOARD_ITEM* item = m_Drawings.GetFirst(); item; item = item->Next() )
478  {
479  const EDGE_MODULE* edge = dyn_cast<const EDGE_MODULE*>( item );
480 
481  if( edge )
482  area.Merge( edge->GetBoundingBox() );
483  }
484 
485  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
486  area.Merge( pad->GetBoundingBox() );
487 
488  return area;
489 }
void Merge(const EDA_RECT &aRect)
Function Merge modifies the position and size of the rectangle in order to contain aRect...
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
void SetOrigin(const wxPoint &pos)
Casted dyn_cast(From aObject)
Function dyn_cast()
Definition: typeinfo.h:73
BOARD_ITEM * Next() const
void SetEnd(int x, int y)
T * GetFirst() const
Function GetFirst returns the first T* in the list without removing it, or NULL if the list is empty...
Definition: dlist.h:163
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
Class EDA_RECT handles the component boundary box.
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
virtual const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
const wxArrayString* MODULE::GetInitialComments ( ) const
inline

Return the initial comments block or NULL if none, without transfer of ownership.

Definition at line 641 of file class_module.h.

References m_initial_comments.

641 { return m_initial_comments; }
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed ...
Definition: class_module.h:698
const wxString& MODULE::GetKeywords ( ) const
inline

Definition at line 157 of file class_module.h.

References m_KeyWord.

Referenced by DIALOG_MODULE_MODULE_EDITOR::initModeditProperties().

157 { return m_KeyWord; }
wxString m_KeyWord
Search keywords to find module in library.
Definition: class_module.h:679
time_t MODULE::GetLastEditTime ( ) const
inline

Definition at line 271 of file class_module.h.

References m_LastEditTime.

271 { return m_LastEditTime; }
time_t m_LastEditTime
Definition: class_module.h:682
LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlineinherited

Function GetLayer returns the primary layer this item is on.

Definition at line 132 of file class_board_item.h.

References BOARD_ITEM::m_Layer.

Referenced by Abort_MoveOrCopyModule(), DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer(), DIMENSION::AdjustDimensionDetails(), PCB_EDIT_FRAME::Begin_DrawSegment(), PCB_EDIT_FRAME::Begin_Zone(), GRID_HELPER::BestSnapAnchor(), PCB_EDIT_FRAME::Block_SelectItems(), ZONE_CONTAINER::buildFeatureHoleList(), BuildUnconnectedThermalStubsPolygonList(), PCB_EDIT_FRAME::Change_Side_Module(), checkConnectedTo(), BOARD::CombineAllAreasInNet(), BOARD::ConvertBrdLayerToPolygonalContours(), CopyNetlistSettings(), CreateBoardSection(), CINFO3D_VISU::createLayers(), MWAVE::CreateMicrowaveInductor(), CreateRoutesSection(), DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DRC::doEdgeZoneDrc(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), DRC::doTrackKeepoutDrc(), TEXTE_MODULE::Draw(), DRAWSEGMENT::Draw(), KIGFX::PCB_PAINTER::draw(), PCB_EDIT_FRAME::duplicateZone(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), PCB_EDIT_FRAME::Edit_Zone_Params(), PCB_EDIT_FRAME::End_Zone(), export_vrml_drawsegment(), export_vrml_edge_module(), export_vrml_module(), export_vrml_pcbtext(), export_vrml_text_module(), export_vrml_zones(), PCB_EDIT_FRAME::ExportToGenCAD(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), EDGE_MODULE::Flip(), TEXTE_MODULE::Flip(), TRACK::Flip(), Flip(), DIMENSION::Flip(), DRAWSEGMENT::Flip(), ZONE_CONTAINER::Flip(), PCB_IO::FootprintSave(), FootprintWriteShape(), PCB_IO::formatLayer(), DSN::SPECCTRA_DB::FromBOARD(), genModuleOnRoutingMatrix(), genPlacementRoutingMatrix(), BOARD::GetFootprint(), getOptimalModulePlacement(), BOARD::GetPad(), BOARD::GetVisibleTrack(), SELECTION_TOOL::guessSelectionCandidates(), ZONE_CONTAINER::Hatch(), BOARD::HitTestForAnyFilledArea(), idf_export_module(), DIALOG_NON_COPPER_ZONES_EDITOR::Init(), DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties(), GENERAL_COLLECTOR::Inspect(), D_PAD::IsFlipped(), IsFlipped(), ZONE_CONTAINER::IsOnCopperLayer(), ZONE_CONTAINER::IsSame(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), BOARD::MarkTrace(), BOARD::NormalizeAreaPolygon(), BOARD::OnAreaPolygonModified(), PCB_EDIT_FRAME::OnRightClick(), ZONE_SETTINGS::operator<<(), PlaceCells(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotAllTextsModule(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotDrawSegment(), BRDITEMS_PLOTTER::PlotFilledAreas(), BRDITEMS_PLOTTER::PlotPcbTarget(), PlotSilkScreen(), PlotSolderMaskLayer(), PlotStandardLayer(), BRDITEMS_PLOTTER::PlotTextePcb(), Print_Module(), PCB_EDIT_FRAME::PrintPage(), BOARD::RedrawAreasOutlines(), BOARD::RedrawFilledAreas(), TRACKS_CLEANER::remove_duplicates_of_track(), PCB_EDIT_FRAME::Remove_Zone_Corner(), SaveCopyOfZones(), SELECTION_TOOL::selectable(), ShowClearance(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::Swap_Layers(), PNS_KICAD_IFACE::syncTrack(), BOARD::Test_Connections_To_Copper_Areas(), BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines(), BOARD::TestAreaIntersection(), BOARD::TestAreaIntersections(), ZONE_CONTAINER::TestForCopperIslandAndRemoveInsulatedIslands(), DRC::testKeepoutAreas(), TEXTE_MODULE::TEXTE_MODULE(), TraceSegmentPcb(), TrackListSortByNetcode(), DialogEditModuleText::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow(), DialogEditModuleText::TransferDataToWindow(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), TransformGraphicShapesWithClearanceToPolygonSet(), TransformGraphicTextWithClearanceToPolygonSet(), TstModuleOnBoard(), TEXTE_MODULE::ViewGetLayers(), TRACK::ViewGetLayers(), TRACKS_CLEANER::zoneForTrackEndpoint(), and PCB_EDITOR_CONTROL::ZoneMerge().

132 { return m_Layer; }
LAYER_ID m_Layer
wxString BOARD_ITEM::GetLayerName ( ) const
inherited

Function GetLayerName returns the name of the PCB layer on which the item resides.

Returns
wxString containing the layer name associated with this item.

Definition at line 77 of file class_board_item.cpp.

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

Referenced by PCB_IO::formatLayer(), TEXTE_PCB::GetMsgPanelInfo(), EDGE_MODULE::GetMsgPanelInfo(), ZONE_CONTAINER::GetMsgPanelInfo(), DRAWSEGMENT::GetMsgPanelInfo(), TEXTE_MODULE::GetMsgPanelInfo(), EDGE_MODULE::GetSelectMenuText(), TEXTE_PCB::GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), DIMENSION::GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), TRACK::GetSelectMenuText(), SEGZONE::GetSelectMenuText(), GetSelectMenuText(), and ZONE_CONTAINER::GetSelectMenuText().

78 {
79  BOARD* board = GetBoard();
80 
81  if( board )
82  return board->GetLayerName( m_Layer );
83 
84  // If no parent, return standard name
86 }
const wxString GetLayerName(LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
LAYER_ID m_Layer
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
static wxString GetStandardLayerName(LAYER_ID aLayerId)
Function GetStandardLayerName returns an "English Standard" name of a PCB layer when given aLayerNumb...
Definition: class_board.h:646
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
virtual LSET BOARD_ITEM::GetLayerSet ( ) const
inlinevirtualinherited

Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides.

Returns
int - a layer mask, see layers_id_colors_visibility.h.

Reimplemented in VIA, and D_PAD.

Definition at line 140 of file class_board_item.h.

Referenced by build_pad_testpoints(), BOARD::chainMarkedSegments(), Collect_TrackSegmentsToDrag(), DRC::doTrackDrc(), PCB_EDIT_FRAME::EraseRedundantTrack(), find_vias_and_tracks_at(), TRACK::GetEndSegments(), TRACK::GetTrack(), BOARD::MarkTrace(), PCB_EDIT_FRAME::PrintPage(), RN_NET::processZones(), CONNECTIONS::SearchConnectedTracks(), CONNECTIONS::SearchTracksConnectedToPads(), and PCB_EDIT_FRAME::StartMoveOneNodeOrSegment().

140 { return LSET( m_Layer ); }
LAYER_ID m_Layer
Class LSET is a set of LAYER_IDs.
time_t MODULE::GetLink ( ) const
inline

Definition at line 517 of file class_module.h.

References m_Link.

Referenced by FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateReplaceModuleInBoard(), and FOOTPRINT_EDIT_FRAME::Process_Special_Functions().

517 { return m_Link; }
time_t m_Link
Temporary logical link used in edition.
Definition: class_module.h:685
DHEAD* EDA_ITEM::GetList ( ) const
inlineinherited
int MODULE::GetLocalClearance ( ) const
inline
int MODULE::GetLocalSolderMaskMargin ( ) const
inline
int MODULE::GetLocalSolderPasteMargin ( ) const
inline
double MODULE::GetLocalSolderPasteMarginRatio ( ) const
inline
BITMAP_DEF MODULE::GetMenuImage ( ) const
overridevirtual

Function GetMenuImage returns a pointer to an image to be used in menus.

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

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Definition at line 806 of file class_module.cpp.

807 {
808  return module_xpm;
809 }
void MODULE::GetMsgPanelInfo ( std::vector< MSG_PANEL_ITEM > &  aList)
overridevirtual

>

Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Note
This method replaces DisplayInfo() so that KiCad objects no longer have any knowledge of wxWidgets UI objects.
Parameters
aListis the list to populate.

Reimplemented from EDA_ITEM.

Definition at line 514 of file class_module.cpp.

References BLACK, BLUE, BROWN, DARKCYAN, LIB_ID::Format(), FROM_UTF8(), GetChars(), GetOrientationDegrees(), TEXTE_MODULE::GetShownText(), IsFlipped(), IsLocked(), m_3D_Drawings, m_Attributs, m_Doc, m_fpid, m_KeyWord, m_LastEditTime, m_ModuleStatus, m_Pads, m_Path, m_Reference, m_Value, MAGENTA, MOD_CMS, MOD_VIRTUAL, MODULE_is_PLACED, EDA_ITEM::Next(), and RED.

Referenced by DISPLAY_FOOTPRINTS_FRAME::RedrawActiveWindow().

515 {
516  int nbpad;
517  wxString msg;
518 
519  aList.push_back( MSG_PANEL_ITEM( m_Reference->GetShownText(), m_Value->GetShownText(), DARKCYAN ) );
520 
521  // Display last date the component was edited (useful in Module Editor).
522  wxDateTime date( m_LastEditTime );
523 
524  if( m_LastEditTime && date.IsValid() )
525  // Date format: see http://www.cplusplus.com/reference/ctime/strftime
526  msg = date.Format( wxT( "%b %d, %Y" ) ); // Abbreviated_month_name Day, Year
527  else
528  msg = _( "Unknown" );
529 
530  aList.push_back( MSG_PANEL_ITEM( _( "Last Change" ), msg, BROWN ) );
531 
532  // display schematic path
533  aList.push_back( MSG_PANEL_ITEM( _( "Netlist Path" ), m_Path, BROWN ) );
534 
535  // display the board side placement
536  aList.push_back( MSG_PANEL_ITEM( _( "Board Side" ),
537  IsFlipped()? _( "Back (Flipped)" ) : _( "Front" ), RED ) );
538 
539  EDA_ITEM* PtStruct = m_Pads;
540  nbpad = 0;
541 
542  while( PtStruct )
543  {
544  nbpad++;
545  PtStruct = PtStruct->Next();
546  }
547 
548  msg.Printf( wxT( "%d" ), nbpad );
549  aList.push_back( MSG_PANEL_ITEM( _( "Pads" ), msg, BLUE ) );
550 
551  msg = wxT( ".." );
552 
553  if( IsLocked() )
554  msg[0] = 'L';
555 
557  msg[1] = 'P';
558 
559  aList.push_back( MSG_PANEL_ITEM( _( "Status" ), msg, MAGENTA ) );
560 
561  msg.Printf( wxT( "%.1f" ), GetOrientationDegrees() );
562  aList.push_back( MSG_PANEL_ITEM( _( "Rotation" ), msg, BROWN ) );
563 
564  // Controls on right side of the dialog
565  switch( m_Attributs & 255 )
566  {
567  case 0:
568  msg = _( "Normal" );
569  break;
570 
571  case MOD_CMS:
572  msg = _( "Insert" );
573  break;
574 
575  case MOD_VIRTUAL:
576  msg = _( "Virtual" );
577  break;
578 
579  default:
580  msg = wxT( "???" );
581  break;
582  }
583 
584  aList.push_back( MSG_PANEL_ITEM( _( "Attributes" ), msg, BROWN ) );
585  aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), FROM_UTF8( m_fpid.Format().c_str() ), BLUE ) );
586 
587  if( m_3D_Drawings.empty() )
588  msg = _( "No 3D shape" );
589  else
590  msg = m_3D_Drawings.front().m_Filename;
591 
592  // Search the first active 3D shape in list
593 
594  aList.push_back( MSG_PANEL_ITEM( _( "3D-Shape" ), msg, RED ) );
595 
596  wxString doc, keyword;
597  doc.Printf( _( "Doc: %s" ), GetChars( m_Doc ) );
598  keyword.Printf( _( "Key Words: %s" ), GetChars( m_KeyWord ) );
599  aList.push_back( MSG_PANEL_ITEM( doc, keyword, BLACK ) );
600 }
LIB_ID m_fpid
The LIB_ID of the MODULE.
Definition: class_module.h:670
Definition: colors.h:57
static wxString FROM_UTF8(const char *cstring)
function FROM_UTF8 converts a UTF8 encoded C string to a wxString for all wxWidgets build modes...
Definition: macros.h:53
wxString m_KeyWord
Search keywords to find module in library.
Definition: class_module.h:679
wxString m_Path
Definition: class_module.h:680
Definition: colors.h:61
Set for modules listed in the automatic insertion list (usually SMD footprints)
Definition: class_module.h:76
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
EDA_ITEM * Next() const
Definition: base_struct.h:206
virtual wxString GetShownText() const override
Returns the string actually shown after processing of the base text.
wxString m_Doc
File name and path for documentation file.
Definition: class_module.h:678
#define MODULE_is_PLACED
In autoplace: module automatically placed.
Definition: class_module.h:218
double GetOrientationDegrees() const
Definition: class_module.h:148
bool IsFlipped() const
function IsFlipped
Definition: class_module.h:214
Definition: colors.h:60
bool IsLocked() const override
Function IsLocked.
Definition: class_module.h:223
time_t m_LastEditTime
Definition: class_module.h:682
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
Virtual component: when created by copper shapes on board (Like edge card connectors, mounting hole...)
Definition: class_module.h:78
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
UTF8 Format() const
Function Format.
Definition: lib_id.cpp:263
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
Definition: colors.h:45
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
int m_Attributs
Flag bits ( see Mod_Attribut )
Definition: class_module.h:671
Definition: colors.h:62
int BOARD_ITEM::getNextNumberInSequence ( const std::set< int > &  aSeq,
bool  aFillSequenceGaps 
)
staticprotectedinherited

Definition at line 223 of file class_board_item.cpp.

Referenced by GetNextPadName().

224 {
225  if( aSeq.empty() )
226  return 1;
227 
228  // By default go to the end of the sequence
229  int candidate = *aSeq.rbegin();
230 
231  // Filling in gaps in pad numbering
232  if( aFillSequenceGaps )
233  {
234  // start at the beginning
235  candidate = *aSeq.begin();
236 
237  for( auto it : aSeq )
238  {
239  if( it - candidate > 1 )
240  break;
241 
242  candidate = it;
243  }
244  }
245 
246  ++candidate;
247 
248  return candidate;
249 }
wxString MODULE::GetNextPadName ( bool  aFillSequenceGaps) const

Function GetNextPadName returns the next available pad name in the module.

Parameters
aFillSequenceGapstrue if the numbering should "fill in" gaps in the sequence, else return the highest value + 1
Returns
the next available pad name

Definition at line 1169 of file class_module.cpp.

References Format(), BOARD_ITEM::getNextNumberInSequence(), BOARD_ITEM::getTrailingInt(), D_PAD::Next(), and Pads().

1170 {
1171  std::set<int> usedNumbers;
1172 
1173  // Create a set of used pad numbers
1174  for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
1175  {
1176  int padNumber = getTrailingInt( pad->GetPadName() );
1177  usedNumbers.insert( padNumber );
1178  }
1179 
1180  const int nextNum = getNextNumberInSequence( usedNumbers, aFillSequenceGaps );
1181 
1182  return wxString::Format( wxT( "%i" ), nextNum );
1183 }
static int getNextNumberInSequence(const std::set< int > &aSeq, bool aFillSequenceGaps)
static int getTrailingInt(wxString aStr)
D_PAD * Next() const
Definition: class_pad.h:106
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
double MODULE::GetOrientation ( ) const
inline

Definition at line 147 of file class_module.h.

References m_Orient.

Referenced by Abort_MoveOrCopyModule(), PCB_BASE_FRAME::AddPad(), CINFO3D_VISU::AddShapeWithClearanceToContainer(), PCAD2KICAD::PCB_PAD::AddToModule(), PCB_EDIT_FRAME::AutoPlaceModule(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), CopyNetlistSettings(), CreateShapesSection(), EDGE_MODULE::Draw(), PCB_EDIT_FRAME::Edit_Gap(), export_vrml_module(), PCB_IO::format(), DRAWSEGMENT::GetBoundingBox(), TEXTE_MODULE::GetDrawRotation(), PCB_BASE_FRAME::GlobalChange_PadSettings(), globalChangePadSettings(), idf_export_module(), D_PAD::ImportSettingsFromMaster(), DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties(), DIALOG_PAD_PROPERTIES::initValues(), LEGACY_PLUGIN::loadPAD(), MoveAnchorPosition(), EAGLE_PLUGIN::orientModuleText(), EAGLE_PLUGIN::packagePad(), EAGLE_PLUGIN::packageSMD(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_BASE_FRAME::PlacePad(), PCB_BASE_FRAME::PlaceTexteModule(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), C3D_RENDER_OGL_LEGACY::render_3D_module(), Rotate(), PCB_BASE_FRAME::Rotate_Module(), DRAG_SEGM_PICKER::SetAuxParameters(), EDGE_MODULE::SetDrawCoord(), TEXTE_MODULE::SetDrawCoord(), D_PAD::SetDrawCoord(), EDGE_MODULE::SetLocalCoord(), TEXTE_MODULE::SetLocalCoord(), D_PAD::SetLocalCoord(), DRAG_SEGM_PICKER::SetTrackEndsCoordinates(), ShowNewEdgeModule(), DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), DialogEditModuleText::TransferDataToWindow(), and DRAWSEGMENT::TransformShapeWithClearanceToPolygon().

147 { return m_Orient; }
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
double MODULE::GetOrientationDegrees ( ) const
inline

Definition at line 148 of file class_module.h.

References m_Orient.

Referenced by DSN::SPECCTRA_DB::FromBOARD(), GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), DIALOG_PAD_PROPERTIES::initValues(), and DSN::SPECCTRA_DB::makeIMAGE().

148 { return m_Orient/10.0; }
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
double MODULE::GetOrientationRadians ( ) const
inline

Definition at line 149 of file class_module.h.

References m_Orient.

149 { return m_Orient*M_PI/1800; }
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
D_PAD * MODULE::GetPad ( const wxPoint aPosition,
LSET  aLayerMask = LSET::AllLayersMask() 
)

Function GetPad get a pad at aPosition on aLayerMask in the footprint.

Parameters
aPositionA wxPoint object containing the position to hit test.
aLayerMaskA layer or layers to mask the hit test.
Returns
A pointer to a D_PAD object if found otherwise NULL.

Definition at line 640 of file class_module.cpp.

References m_Pads, and D_PAD::Next().

641 {
642  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
643  {
644  // ... and on the correct layer.
645  if( !( pad->GetLayerSet() & aLayerMask ).any() )
646  continue;
647 
648  if( pad->HitTest( aPosition ) )
649  return pad;
650  }
651 
652  return NULL;
653 }
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
unsigned MODULE::GetPadCount ( INCLUDE_NPTH_T  aIncludeNPTH = INCLUDE_NPTH_TINCLUDE_NPTH )) const

GetPadCount returns the number of pads.

Parameters
aIncludeNPTHincludes non-plated through holes when true. Does not include non-plated through holes when false.
Returns
the number of pads according to aIncludeNPTH.

Definition at line 656 of file class_module.cpp.

References DHEAD::GetCount(), m_Pads, D_PAD::Next(), and PAD_ATTRIB_HOLE_NOT_PLATED.

Referenced by genModuleOnRoutingMatrix(), Tri_PlaceModules(), and TstModuleOnBoard().

657 {
658  if( aIncludeNPTH )
659  return m_Pads.GetCount();
660 
661  unsigned cnt = 0;
662 
663  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
664  {
665  if( pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
666  continue;
667 
668  cnt++;
669  }
670 
671  return cnt;
672 }
like PAD_STANDARD, but not plated mechanical use only, no connection allowed
Definition: pad_shapes.h:63
D_PAD * Next() const
Definition: class_pad.h:106
unsigned GetCount() const
Function GetCount returns the number of elements in the list.
Definition: dlist.h:126
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
BOARD_ITEM_CONTAINER* BOARD_ITEM::GetParent ( void  ) const
inlineinherited

Definition at line 126 of file class_board_item.h.

References EDA_ITEM::m_Parent.

Referenced by Abort_Move_ModuleOutline(), AbortMoveTextModule(), POINT_EDITOR::addCorner(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), BOARD_ITEM::DeleteStructure(), PCB_BASE_FRAME::DeleteTextModule(), DialogEditModuleText::DialogEditModuleText(), KIGFX::PCB_PAINTER::draw(), TEXTE_MODULE::DrawUmbilical(), PCB_EDIT_FRAME::duplicateItems(), PCB_IO::format(), FormatProbeItem(), BOARD_ITEM::GetBoard(), LEGACY_ARRAY_CREATOR::getModule(), EDGE_MODULE::GetMsgPanelInfo(), EDGE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetShownText(), GENERAL_COLLECTOR::Inspect(), LEGACY_PLUGIN::loadMODULE_TEXT(), PCB_EDIT_FRAME::moveExact(), FOOTPRINT_EDIT_FRAME::OnRightClick(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_BASE_FRAME::PlaceTexteModule(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::PlotTextModule(), PCB_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), PAD_TOOL::pushPadSettings(), PCB_BASE_FRAME::ResetTextSize(), PCB_BASE_FRAME::RotateTextModule(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SELECTION_TOOL::select(), ShowCurrentOutlineWhileMoving(), ShowNewEdgeModule(), and PCB_BASE_FRAME::StartMoveTexteModule().

126 { return (BOARD_ITEM_CONTAINER*) m_Parent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
Abstract interface for BOARD_ITEMs capable of storing other items inside.
int MODULE::GetPlacementCost180 ( ) const
inline

Definition at line 520 of file class_module.h.

References m_CntRot180.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), and DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties().

520 { return m_CntRot180; }
int m_CntRot180
Vertical automatic placement cost ( 0..10 ).
Definition: class_module.h:687
int MODULE::GetPlacementCost90 ( ) const
inline

Definition at line 523 of file class_module.h.

References m_CntRot90.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), and DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties().

523 { return m_CntRot90; }
int m_CntRot90
Horizontal automatic placement cost ( 0..10 ).
Definition: class_module.h:686
SHAPE_POLY_SET& MODULE::GetPolyCourtyardBack ( )
inline

Definition at line 647 of file class_module.h.

References m_poly_courtyard_back.

647 { return m_poly_courtyard_back; }
SHAPE_POLY_SET m_poly_courtyard_back
Definition: class_module.h:704
SHAPE_POLY_SET& MODULE::GetPolyCourtyardFront ( )
inline

Used in DRC to test the courtyard area (a complex polygon)

Returns
the courtyard polygon

Definition at line 646 of file class_module.h.

References m_poly_courtyard_front.

646 { return m_poly_courtyard_front; }
SHAPE_POLY_SET m_poly_courtyard_front
Used in DRC to test the courtyard area (a polygon which can be not basic Note also a footprint can ha...
Definition: class_module.h:703
const wxPoint& MODULE::GetPosition ( ) const
inlineoverridevirtual

Implements BOARD_ITEM.

Definition at line 143 of file class_module.h.

References m_Pos.

Referenced by PCB_BASE_FRAME::AddPad(), PCAD2KICAD::PCB_PAD::AddToModule(), PCB_EDIT_FRAME::AutoPlaceModule(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Change_Side_Module(), compute_Ratsnest_PlaceModule(), GRID_HELPER::computeAnchors(), MODULE_EDITOR_TOOLS::CopyItems(), CopyNetlistSettings(), MWAVE::CreateMicrowaveInductor(), PCB_EDIT_FRAME::CreateMuWaveBaseFootprint(), D_PAD::D_PAD(), EDGE_MODULE::Draw(), KIGFX::PCB_PAINTER::draw(), TEXTE_MODULE::DrawUmbilical(), PCB_EDIT_FRAME::Edit_Gap(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), export_vrml_module(), PCB_EDIT_FRAME::ExportToGenCAD(), SELECTION_TOOL::findMove(), PCB_IO::FootprintSave(), DSN::SPECCTRA_DB::FromBOARD(), DRAWSEGMENT::GetBoundingBox(), getOptimalModulePlacement(), idf_export_module(), DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), PCB_BASE_FRAME::LoadModuleFromLibrary(), LEGACY_PLUGIN::loadPAD(), MoveFootprint(), moveFootprintsInArea(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), DIALOG_NETLIST::OnTestFootprintsClick(), EAGLE_PLUGIN::orientModuleAndText(), EAGLE_PLUGIN::packageHole(), EAGLE_PLUGIN::packagePad(), EAGLE_PLUGIN::packageSMD(), EAGLE_PLUGIN::packageText(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_BASE_FRAME::PlaceTexteModule(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), PCB_EDIT_FRAME::Process_Special_Functions(), C3D_RENDER_OGL_LEGACY::render_3D_module(), DRAWING_TOOL::SetAnchor(), EDGE_MODULE::SetDrawCoord(), TEXTE_MODULE::SetDrawCoord(), D_PAD::SetDrawCoord(), EDGE_MODULE::SetLocalCoord(), TEXTE_MODULE::SetLocalCoord(), D_PAD::SetLocalCoord(), ShowNewEdgeModule(), TEXTE_MODULE::TEXTE_MODULE(), DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

143 { return m_Pos; }
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
const wxString& MODULE::GetReference ( ) const
inline

Function GetReference.

Returns
const wxString& - the reference designator text.

Definition at line 411 of file class_module.h.

References EDA_TEXT::GetText(), and m_Reference.

Referenced by BuildPolyCourtyard(), DIALOG_EXCHANGE_MODULE::change_1_Module(), CreateDevicesSection(), CreateSignalsSection(), PCB_BASE_FRAME::DeletePad(), BOARD_NETLIST_UPDATER::deleteSinglePadNets(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), PCB_EDIT_FRAME::Edit_Gap(), PCB_EDIT_FRAME::Exchange_Module(), BOARD::FindModuleByReference(), FootprintWriteShape(), FormatProbeItem(), DSN::SPECCTRA_DB::FromBOARD(), PCB_BASE_FRAME::GetFootprintFromBoardByReference(), EDGE_MODULE::GetMsgPanelInfo(), TEXTE_MODULE::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), GetReferencePrefix(), GetSelectMenuText(), TEXTE_MODULE::GetShownText(), idf_export_module(), DIALOG_EXCHANGE_MODULE::init(), GENERAL_COLLECTOR::Inspect(), PCB_EDIT_FRAME::ListAndSelectModuleName(), EAGLE_PLUGIN::loadElements(), PCB_EDIT_FRAME::LockModule(), DIALOG_NETLIST::OnTestFootprintsClick(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::PlotPad(), BRDITEMS_PLOTTER::PlotTextModule(), PCB_EDIT_FRAME::Process_Special_Functions(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), RecreateCmpFile(), BOARD_NETLIST_UPDATER::replaceComponent(), BOARD::ReplaceNetlist(), FOOTPRINT_EDIT_FRAME::SelectFootprint(), DialogEditModuleText::TransferDataToWindow(), BOARD_NETLIST_UPDATER::updateComponentPadConnections(), BOARD_NETLIST_UPDATER::updateComponentParameters(), and DIALOG_NETLIST::verifyFootprints().

412  {
413  return m_Reference->GetText();
414  }
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:130
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
wxString MODULE::GetReferencePrefix ( ) const

Function GetReference prefix Gets the alphabetic prefix of the module reference - e.g.

R1 -> R IC34 -> IC

Returns
the reference prefix (may be empty)

Definition at line 1186 of file class_module.cpp.

References GetReference().

1187 {
1188  wxString prefix = GetReference();
1189 
1190  int strIndex = prefix.length() - 1;
1191  while( strIndex >= 0 )
1192  {
1193  const wxUniChar chr = prefix.GetChar( strIndex );
1194 
1195  // numeric suffix
1196  if( chr >= '0' && chr <= '9' )
1197  break;
1198 
1199  strIndex--;
1200  }
1201 
1202  prefix = prefix.Mid( 0, strIndex );
1203 
1204  return prefix;
1205 }
const wxString & GetReference() const
Function GetReference.
Definition: class_module.h:411
wxString MODULE::GetSelectMenuText ( ) const
overridevirtual

Function GetSelectMenuText returns 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 795 of file class_module.cpp.

References GetChars(), BOARD_ITEM::GetLayerName(), and GetReference().

Referenced by PCB_EDIT_FRAME::createPopUpMenuForFootprints().

796 {
797  wxString text;
798  text.Printf( _( "Footprint %s on %s" ),
799  GetChars ( GetReference() ),
800  GetChars ( GetLayerName() ) );
801 
802  return text;
803 }
wxString GetLayerName() const
Function GetLayerName returns the name of the PCB layer on which the item resides.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
const wxString & GetReference() const
Function GetReference.
Definition: class_module.h:411
STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 250 of file base_struct.h.

References EDA_ITEM::m_Status.

250 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:161
int MODULE::GetThermalGap ( ) const
inline

Definition at line 182 of file class_module.h.

References m_ThermalGap.

Referenced by CopyNetlistSettings(), and D_PAD::GetThermalGap().

182 { return m_ThermalGap; }
int m_ThermalGap
Definition: class_module.h:677
int MODULE::GetThermalWidth ( ) const
inline

Definition at line 179 of file class_module.h.

References m_ThermalWidth.

Referenced by CopyNetlistSettings(), and D_PAD::GetThermalWidth().

179 { return m_ThermalWidth; }
int m_ThermalWidth
Definition: class_module.h:676
int BOARD_ITEM::getTrailingInt ( wxString  aStr)
staticprotectedinherited

Definition at line 200 of file class_board_item.cpp.

Referenced by GetNextPadName().

201 {
202  int number = 0;
203  int base = 1;
204 
205  // Trim and extract the trailing numeric part
206  int index = aStr.Len() - 1;
207  while( index >= 0 )
208  {
209  const char chr = aStr.GetChar( index );
210 
211  if( chr < '0' || chr > '9' )
212  break;
213 
214  number += ( chr - '0' ) * base;
215  base *= 10;
216  index--;
217  }
218 
219  return number;
220 }
unsigned MODULE::GetUniquePadCount ( INCLUDE_NPTH_T  aIncludeNPTH = INCLUDE_NPTH_TINCLUDE_NPTH )) const

GetUniquePadCount returns the number of unique pads.

A complex pad can be built with many pads having the same pad name to create a complex shape or fragmented solder paste areas.

GetUniquePadCount calculate the count of not blank pad names

Parameters
aIncludeNPTHincludes non-plated through holes when true. Does not include non-plated through holes when false.
Returns
the number of unique pads according to aIncludeNPTH.

Definition at line 675 of file class_module.cpp.

References LSET::AllCuMask(), D_PAD::Next(), PAD_ATTRIB_HOLE_NOT_PLATED, and Pads().

676 {
677  std::set<wxUint32> usedNames;
678 
679  // Create a set of used pad numbers
680  for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
681  {
682  // Skip pads not on copper layers (used to build complex
683  // solder paste shapes for instance)
684  if( ( pad->GetLayerSet() & LSET::AllCuMask() ).none() )
685  continue;
686 
687  // Skip pads with no name, because they are usually "mechanical"
688  // pads, not "electrical" pads
689  if( pad->GetPadName().IsEmpty() )
690  continue;
691 
692  if( !aIncludeNPTH )
693  {
694  // skip NPTH
695  if( pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
696  {
697  continue;
698  }
699  }
700 
701  usedNames.insert( pad->GetPackedPadName() );
702  }
703 
704  return usedNames.size();
705 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Function AllCuMask returns a mask holding the requested number of Cu LAYER_IDs.
Definition: lset.cpp:638
like PAD_STANDARD, but not plated mechanical use only, no connection allowed
Definition: pad_shapes.h:63
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
ZoneConnection MODULE::GetZoneConnection ( ) const
inline

Definition at line 176 of file class_module.h.

References m_ZoneConnection.

Referenced by CopyNetlistSettings(), D_PAD::GetZoneConnection(), and DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties().

176 { return m_ZoneConnection; }
ZoneConnection m_ZoneConnection
Definition: class_module.h:681
DLIST<BOARD_ITEM>& MODULE::GraphicalItems ( )
inline
const DLIST<BOARD_ITEM>& MODULE::GraphicalItems ( ) const
inline

Definition at line 137 of file class_module.h.

References m_Drawings.

137 { return m_Drawings; }
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
bool MODULE::HitTest ( const wxPoint aPosition) const
overridevirtual

Function HitTest tests if aPosition is contained within or on the bounding area of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
Returns
True if aPosition is within or on the item bounding area.

Reimplemented from BOARD_ITEM.

Definition at line 603 of file class_module.cpp.

References EDA_RECT::Contains(), and m_BoundaryBox.

Referenced by BOARD::GetFootprint().

604 {
605  return m_BoundaryBox.Contains( aPosition );
606 }
bool Contains(const wxPoint &aPoint) const
Function Contains.
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
bool MODULE::HitTest ( const EDA_RECT aRect,
bool  aContained = true,
int  aAccuracy = 0 
) const
overridevirtual

Parameters
aRectA reference to an EDA_RECT object containg the area to test.
aContainedTest if aRect contains this object completly.
aAccuracyIncrease the item bounding box by this amount.
Returns
bool - True if aRect contains this object completly or if aRect intersects the object and aContained is False, otherwise false.

Reimplemented from BOARD_ITEM.

Definition at line 609 of file class_module.cpp.

References EDA_RECT::Contains(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), and m_BoundaryBox.

610 {
611  EDA_RECT arect = aRect;
612  arect.Inflate( aAccuracy );
613 
614  if( aContained )
615  return arect.Contains( m_BoundaryBox );
616  else
617  return m_BoundaryBox.Intersects( arect );
618 }
bool Contains(const wxPoint &aPoint) const
Function Contains.
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
Class EDA_RECT handles the component boundary box.
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
void MODULE::IncrementFlag ( )
inline

Definition at line 188 of file class_module.h.

References m_arflag.

Referenced by PickModule().

188 { m_arflag += 1; }
int m_arflag
Use to trace ratsnest and auto routing.
Definition: class_module.h:683
bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

Definition at line 224 of file base_struct.h.

References BRIGHTENED.

Referenced by SELECTION_TOOL::disambiguationMenu().

224 { return m_Flags & BRIGHTENED; }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
virtual bool BOARD_ITEM::IsConnected ( ) const
inlinevirtualinherited

Function IsConnected() Returns information if the object is derived from BOARD_CONNECTED_ITEM.

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

Reimplemented in BOARD_CONNECTED_ITEM.

Definition at line 114 of file class_board_item.h.

Referenced by RN_DATA::Add(), RN_DATA::AddBlocked(), RN_DATA::AddSimple(), and RN_DATA::Remove().

115  {
116  return false;
117  }
bool EDA_ITEM::IsDragging ( ) const
inlineinherited
bool MODULE::IsFlipped ( ) const
inline

function IsFlipped

Returns
true if the module is flipped, i.e. on the back side of the board

Definition at line 214 of file class_module.h.

References B_Cu, and BOARD_ITEM::GetLayer().

Referenced by GetMsgPanelInfo(), PCB_BASE_FRAME::LoadModuleFromLibrary(), C3D_RENDER_OGL_LEGACY::render_3D_module(), DRAG_SEGM_PICKER::SetAuxParameters(), and DRAG_SEGM_PICKER::SetTrackEndsCoordinates().

214 {return GetLayer() == B_Cu; }
LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 223 of file base_struct.h.

References HIGHLIGHTED.

223 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
bool MODULE::IsLibNameValid ( const wxString &  aName)
static

static function IsLibNameValid Test for validity of a name of a footprint to be used in a footprint library ( no spaces, dir separators ...

)

Parameters
aName= the name in library to validate
Returns
true if the given name is valid

Definition at line 880 of file class_module.cpp.

References StringLibNameInvalidChars().

Referenced by DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary().

881 {
882  const wxChar * invalids = StringLibNameInvalidChars( false );
883 
884  if( aName.find_first_of( invalids ) != std::string::npos )
885  return false;
886 
887  return true;
888 }
static const wxChar * StringLibNameInvalidChars(bool aUserReadable)
static function StringLibNameInvalidChars Test for validity of the name in a library of the footprint...
bool MODULE::IsLocked ( ) const
inlineoverridevirtual

Function IsLocked.

Returns
bool - true if the object is locked, else false

Reimplemented from BOARD_ITEM.

Definition at line 223 of file class_module.h.

References m_ModuleStatus, and MODULE_is_LOCKED.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule(), CopyNetlistSettings(), BOARD::GetFootprint(), GetMsgPanelInfo(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), PCB_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::Process_Special_Functions(), SELECTION_TOOL::SanitizeSelection(), and SELECTION_TOOL::selectable().

224  {
225  return ( m_ModuleStatus & MODULE_is_LOCKED ) != 0;
226  }
#define MODULE_is_LOCKED
module LOCKED: no autoplace allowed
Definition: class_module.h:217
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 217 of file base_struct.h.

References IS_CHANGED.

Referenced by LIB_EDIT_FRAME::OnEditPin().

217 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:109
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
bool EDA_ITEM::IsNew ( ) const
inlineinherited

Definition at line 216 of file base_struct.h.

References IS_NEW.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_MoveOrCopyModule(), Abort_Zone_Create_Outline(), AbortBuildDimension(), AbortMoveAndEditTarget(), abortMoveBitmap(), abortMoveItem(), AbortPinMove(), AbortSymbolTraceOn(), SCH_EDIT_FRAME::addCurrentItemToList(), SCH_EDIT_FRAME::addJunctionMenuEntries(), AddMenusForBus(), AddMenusForWire(), PCB_EDIT_FRAME::Delete_Segment(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_EDIT_FRAME::DeleteCurrentSegment(), LIB_ARC::drawEditGraphics(), LIB_ARC::drawGraphic(), DrawMovePin(), SCH_EDIT_FRAME::EditSheetPin(), LIB_PIN::EnableEditMode(), LIB_EDIT_FRAME::EndDrawGraphicItem(), SCH_EDIT_FRAME::EndSegment(), ExitSheet(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), LIB_EDIT_FRAME::OnEditPin(), SCH_EDIT_FRAME::OnHotKey(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_BASE_FRAME::PlaceModule(), LIB_EDIT_FRAME::PlacePin(), PCB_EDIT_FRAME::PlaceTarget(), SCH_EDIT_FRAME::PrepareMoveItem(), SCH_EDIT_FRAME::ReSizeSheet(), ShowClearance(), PCB_EDIT_FRAME::StartMoveTextePcb(), PCB_EDIT_FRAME::SwitchLayer(), and DIALOG_LABEL_EDITOR::TextPropertiesAccept().

216 { return m_Flags & IS_NEW; }
#define IS_NEW
New item, just created.
Definition: base_struct.h:113
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
virtual bool BOARD_ITEM::IsOnLayer ( LAYER_ID  aLayer) const
inlinevirtualinherited

Function IsOnLayer tests to see if this object is on the given layer.

Is virtual so objects like D_PAD, which reside on multiple layers can do their own form of testing.

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

Reimplemented in D_PAD, VIA, and MARKER_PCB.

Definition at line 182 of file class_board_item.h.

Referenced by CINFO3D_VISU::createLayers(), TEXTE_PCB::Draw(), EDGE_MODULE::Draw(), ZONE_CONTAINER::Draw(), TEXTE_MODULE::Draw(), TRACK::Draw(), DRAWSEGMENT::Draw(), SEGZONE::Draw(), ZONE_CONTAINER::DrawFilledArea(), TRACK::DrawShortNetname(), ZONE_CONTAINER::DrawWhileCreateOutline(), GENERAL_COLLECTOR::Inspect(), SELECTION_TOOL::selectable(), BOARD::Test_Connections_To_Copper_Areas(), and TraceSegmentPcb().

183  {
184  return m_Layer == aLayer;
185  }
LAYER_ID m_Layer
bool MODULE::IsPlaced ( ) const
inline

Definition at line 241 of file class_module.h.

References m_ModuleStatus, and MODULE_is_PLACED.

241 { return (m_ModuleStatus & MODULE_is_PLACED); }
#define MODULE_is_PLACED
In autoplace: module automatically placed.
Definition: class_module.h:218
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Function IsReplaceable.

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

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

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

Definition at line 444 of file base_struct.h.

Referenced by EDA_ITEM::Matches(), and EDA_ITEM::Replace().

444 { return false; }
bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 222 of file base_struct.h.

References IS_RESIZED.

Referenced by ExitSheet().

222 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:114
bool BOARD_ITEM::IsTrack ( ) const
inlineinherited

Function IsTrack tests to see if this object is a track or via (or microvia).

form of testing.

Returns
bool - true if a track or via, else false.

Definition at line 193 of file class_board_item.h.

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

Referenced by PCB_EDIT_FRAME::OnHotKey(), and PCB_EDIT_FRAME::OnHotkeyDeleteItem().

194  {
195  return ( Type() == PCB_TRACE_T ) || ( Type() == PCB_VIA_T );
196  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:107
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:108
bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 220 of file base_struct.h.

References IS_WIRE_IMAGE.

Referenced by abortMoveItem(), and SCH_FIELD::Draw().

220 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:117
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
SEARCH_RESULT EDA_ITEM::IterateForward ( EDA_ITEM listStart,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
staticinherited

Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes.

Parameters
listStartThe first in a list of EDA_ITEMs to iterate over.
inspectorIs an INSPECTOR to call on each object that is one of the requested scanTypes.
testDataIs an aid to testFunc, and should be sufficient to allow it to fully determine if an item meets the match criteria, but it may also be used to collect output.
scanTypesA KICAD_T array that is EOT terminated, and provides both the order and interest level of of the types of objects to be iterated over.
Returns
SEARCH_RESULT SEARCH_QUIT if the called INSPECTOR returned SEARCH_QUIT, else SCAN_CONTINUE;

Definition at line 132 of file base_struct.cpp.

References EDA_ITEM::Pnext, SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Visit().

Referenced by SCH_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::Collect(), SCH_TYPE_COLLECTOR::Collect(), Visit(), and BOARD::Visit().

136 {
137  EDA_ITEM* p = listStart;
138 
139  for( ; p; p = p->Pnext )
140  {
141  if( SEARCH_QUIT == p->Visit( inspector, testData, scanTypes ) )
142  return SEARCH_QUIT;
143  }
144 
145  return SEARCH_CONTINUE;
146 }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:164
virtual bool EDA_ITEM::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData,
wxPoint aFindLocation 
)
inlinevirtualinherited

Function Matches compares 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.
aFindLocationA pointer to a wxPoint object to store the location of matched item. The pointer can be NULL if it is not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_SHEET, SCH_COMPONENT, SCH_SHEET_PIN, SCH_FIELD, SCH_TEXT, LIB_PIN, and SCH_MARKER.

Definition at line 400 of file base_struct.h.

Referenced by SCH_FIND_COLLECTOR::Inspect(), SCH_MARKER::Matches(), LIB_PIN::Matches(), SCH_TEXT::Matches(), SCH_FIELD::Matches(), SCH_SHEET_PIN::Matches(), and SCH_SHEET::Matches().

401  {
402  return false;
403  }
bool EDA_ITEM::Matches ( const wxString &  aText,
wxFindReplaceData &  aSearchData 
)
protectedinherited

Function Matches compares 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 184 of file base_struct.cpp.

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

185 {
186  wxString text = aText;
187  wxString searchText = aSearchData.GetFindString();
188 
189  // Don't match if searching for replaceable item and the item doesn't support text replace.
190  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
191  return false;
192 
193  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
194  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
195 
196  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
197  {
198  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
199  return text.Matches( searchText );
200 
201  return text.MakeUpper().Matches( searchText.MakeUpper() );
202  }
203 
204  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
205  return aText.Find( searchText ) != wxNOT_FOUND;
206 
207  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
208 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:444
Perform search using simple wild card matching (* & ?).
Perform a search for a item that has replaceable text.
const std::list<S3D_INFO>& MODULE::Models ( ) const
inline

Definition at line 140 of file class_module.h.

References m_3D_Drawings.

140 { return m_3D_Drawings; }
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
void MODULE::Move ( const wxPoint aMoveVector)
overridevirtual

Function Move move this object.

Parameters
aMoveVector- the move vector for this object.

Reimplemented from BOARD_ITEM.

Definition at line 903 of file class_module.cpp.

References m_Pos, and SetPosition().

Referenced by moveFootprintsInArea().

904 {
905  wxPoint newpos = m_Pos + aMoveVector;
906  SetPosition( newpos );
907 }
void SetPosition(const wxPoint &aPos) override
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
void MODULE::MoveAnchorPosition ( const wxPoint aMoveVector)

Function MoveAnchorPosition Move the reference point of the footprint It looks like a move footprint: the footprints elements (pads, outlines, edges .

. ) are moved However:

  • the footprint position is not modified.
  • the relative (local) coordinates of these items are modified (a move footprint does not change these local coordinates, but changes the footprint position)

Definition at line 1006 of file class_module.cpp.

References CalculateBoundingBox(), GetOrientation(), TEXTE_MODULE::GetPos0(), GraphicalItems(), EDGE_MODULE::m_End0, m_Reference, EDGE_MODULE::m_Start0, m_Value, D_PAD::Next(), BOARD_ITEM::Next(), Pads(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, RotatePoint(), EDGE_MODULE::SetDrawCoord(), TEXTE_MODULE::SetDrawCoord(), and TEXTE_MODULE::SetPos0().

Referenced by MODULE_EDITOR_TOOLS::CopyItems(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), and DRAWING_TOOL::SetAnchor().

1007 {
1008  /* Move the reference point of the footprint
1009  * the footprints elements (pads, outlines, edges .. ) are moved
1010  * but:
1011  * - the footprint position is not modified.
1012  * - the relative (local) coordinates of these items are modified
1013  * - Draw coordinates are updated
1014  */
1015 
1016 
1017  // Update (move) the relative coordinates relative to the new anchor point.
1018  wxPoint moveVector = aMoveVector;
1019  RotatePoint( &moveVector, -GetOrientation() );
1020 
1021  // Update of the reference and value.
1022  m_Reference->SetPos0( m_Reference->GetPos0() + moveVector );
1024  m_Value->SetPos0( m_Value->GetPos0() + moveVector );
1025  m_Value->SetDrawCoord();
1026 
1027  // Update the pad local coordinates.
1028  for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
1029  {
1030  pad->SetPos0( pad->GetPos0() + moveVector );
1031  pad->SetDrawCoord();
1032  }
1033 
1034  // Update the draw element coordinates.
1035  for( EDA_ITEM* item = GraphicalItems(); item; item = item->Next() )
1036  {
1037  switch( item->Type() )
1038  {
1039  case PCB_MODULE_EDGE_T:
1040  {
1041  EDGE_MODULE* edge = static_cast<EDGE_MODULE*>( item );
1042  edge->m_Start0 += moveVector;
1043  edge->m_End0 += moveVector;
1044  edge->SetDrawCoord();
1045  break;
1046  }
1047 
1048  case PCB_MODULE_TEXT_T:
1049  {
1050  TEXTE_MODULE* text = static_cast<TEXTE_MODULE*>( item );
1051  text->SetPos0( text->GetPos0() + moveVector );
1052  text->SetDrawCoord();
1053  break;
1054  }
1055 
1056  default:
1057  break;
1058  }
1059  }
1060 
1062 }
const wxPoint & GetPos0() const
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
DLIST< BOARD_ITEM > & GraphicalItems()
Definition: class_module.h:136
wxPoint m_End0
BOARD_ITEM * Next() const
double GetOrientation() const
Definition: class_module.h:147
D_PAD * Next() const
Definition: class_pad.h:106
void SetPos0(const wxPoint &aPos)
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
void SetDrawCoord()
Set absolute coordinates.
void SetDrawCoord()
Set draw coordinates (absolute values ) from relative coordinates.
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > & Pads()
Definition: class_module.h:133
wxPoint m_Start0
bool MODULE::NeedsPlaced ( ) const
inline

Definition at line 250 of file class_module.h.

References m_ModuleStatus, and MODULE_to_PLACE.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule(), and PickModule().

250 { return (m_ModuleStatus & MODULE_to_PLACE); }
#define MODULE_to_PLACE
In autoplace: module waiting for autoplace.
Definition: class_module.h:219
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
MODULE* MODULE::Next ( ) const
inline

Definition at line 99 of file class_module.h.

References EDA_ITEM::Pnext.

Referenced by C3D_RENDER_RAYTRACING::add_3D_vias_and_pads_to_container(), PCBNEW_CONTROL::AppendBoard(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::AutoPlaceModule(), PCB_EDIT_FRAME::Block_SelectItems(), build_pad_testpoints(), ZONE_CONTAINER::buildFeatureHoleList(), EXCELLON_WRITER::buildHolesList(), NETINFO_LIST::buildPadsFullList(), BuildUnconnectedThermalStubsPolygonList(), BOARD::ComputeBoundingBox(), BOARD::ConvertBrdLayerToPolygonalContours(), CreateComponentsSection(), CreateDevicesSection(), CINFO3D_VISU::createLayers(), CreateShapesSection(), CreateSignalsSection(), BOARD_NETLIST_UPDATER::deleteUnusedComponents(), PCB_DRAW_PANEL_GAL::DisplayBoard(), DRC::doFootprintOverlappingDrc(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), BOARD::Draw(), BOARD::DrawHighLight(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::ExportVRML_File(), BOARD::FindModule(), DSN::SPECCTRA_DB::FlipMODULEs(), PCB_IO::format(), C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads(), BOARD::GetFootprint(), PCB_BASE_FRAME::GetFootprintFromBoardByReference(), BOARD::GetLockPoint(), NETINFO_ITEM::GetMsgPanelInfo(), BOARD::GetPad(), PCB_BASE_FRAME::GlobalChange_PadSettings(), globalChangePadSettings(), DIALOG_GENDRILL::InitDisplayParams(), PCB_EDIT_FRAME::ListAndSelectModuleName(), C3D_RENDER_OGL_LEGACY::load_3D_models(), C3D_RENDER_RAYTRACING::load_3D_models(), PCB_EDIT_FRAME::LockModule(), MODULE_EDITOR_TOOLS::ModuleEdgeOutlines(), MODULE_EDITOR_TOOLS::ModuleTextOutlines(), DIALOG_FIND::onButtonFindItemClick(), PCB_EDIT_FRAME::OnPlaceOrRouteFootprints(), PCB_BASE_FRAME::OnTogglePadDrawMode(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateReplaceModuleInBoard(), PCBNEW_CONTROL::PadDisplayMode(), PickModule(), PlaceCells(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotDrillMarks(), PlotLayerOutlines(), PlotSilkScreen(), PlotSolderMaskLayer(), PlotStandardLayer(), PCB_EDIT_FRAME::PrintPage(), PCB_EDIT_FRAME::Process_Config(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), RN_DATA::ProcessBoard(), PCB_EDIT_FRAME::ReadPcbNetlist(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), RecreateCmpFile(), C3D_RENDER_OGL_LEGACY::render_3D_models(), BOARD::ReplaceNetlist(), DSN::SPECCTRA_DB::RevertMODULEs(), SELECTION_TOOL::selectAllItemsOnSheet(), FOOTPRINT_EDIT_FRAME::SelectFootprint(), PNS_KICAD_IFACE::SyncWorld(), BOARD::Test_Connections_To_Copper_Areas(), ZONE_CONTAINER::TestForCopperIslandAndRemoveInsulatedIslands(), NETINFO_MAPPING::Update(), and DIALOG_NETLIST::verifyFootprints().

99 { return static_cast<MODULE*>( Pnext ); }
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:164
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 241 of file base_struct.cpp.

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

242 {
243  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
244  GetChars( GetClass() ) ) );
245 
246  return false;
247 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
virtual wxString GetClass() const =0
Function GetClass returns the class name.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
MODULE & MODULE::operator= ( const MODULE aOther)

Definition at line 159 of file class_module.cpp.

References Add(), CalculateBoundingBox(), DHEAD::DeleteAll(), m_3D_Drawings, m_Attributs, m_BoundaryBox, m_CntRot180, m_CntRot90, m_Doc, m_Drawings, m_fpid, m_KeyWord, m_LastEditTime, m_Link, m_LocalClearance, m_LocalSolderMaskMargin, m_LocalSolderPasteMargin, m_LocalSolderPasteMarginRatio, m_ModuleStatus, m_Orient, m_Pads, m_Path, m_Pos, m_Reference, m_ThermalGap, m_ThermalWidth, m_Value, m_ZoneConnection, D_PAD::Next(), BOARD_ITEM::Next(), EDA_ITEM::operator=(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, and EDA_ITEM::SetParent().

160 {
161  BOARD_ITEM::operator=( aOther );
162 
163  m_Pos = aOther.m_Pos;
164  m_fpid = aOther.m_fpid;
165  m_Attributs = aOther.m_Attributs;
167  m_Orient = aOther.m_Orient;
168  m_BoundaryBox = aOther.m_BoundaryBox;
169  m_CntRot90 = aOther.m_CntRot90;
170  m_CntRot180 = aOther.m_CntRot180;
172  m_Link = aOther.m_Link;
173  m_Path = aOther.m_Path; //is this correct behavior?
174 
181  m_ThermalGap = aOther.m_ThermalGap;
182 
183  // Copy reference and value
184  *m_Reference = *aOther.m_Reference;
185  m_Reference->SetParent( this );
186  *m_Value = *aOther.m_Value;
187  m_Value->SetParent( this );
188 
189  // Copy auxiliary data: Pads
190  m_Pads.DeleteAll();
191 
192  for( D_PAD* pad = aOther.m_Pads; pad; pad = pad->Next() )
193  {
194  Add( new D_PAD( *pad ) );
195  }
196 
197  // Copy auxiliary data: Drawings
199 
200  for( BOARD_ITEM* item = aOther.m_Drawings; item; item = item->Next() )
201  {
202  switch( item->Type() )
203  {
204  case PCB_MODULE_TEXT_T:
205  case PCB_MODULE_EDGE_T:
206  Add( static_cast<BOARD_ITEM*>( item->Clone() ) );
207  break;
208 
209  default:
210  wxLogMessage( wxT( "MODULE::operator=() internal error: unknown type" ) );
211  break;
212  }
213  }
214 
215  // Copy auxiliary data: 3D_Drawings info
216  m_3D_Drawings.clear();
217  m_3D_Drawings = aOther.m_3D_Drawings;
218  m_Doc = aOther.m_Doc;
219  m_KeyWord = aOther.m_KeyWord;
220 
221  // Ensure auxiliary data is up to date
223 
224  return *this;
225 }
LIB_ID m_fpid
The LIB_ID of the MODULE.
Definition: class_module.h:670
void Add(BOARD_ITEM *aBoardItem, ADD_MODE aMode=ADD_INSERT) override
>
int m_CntRot90
Horizontal automatic placement cost ( 0..10 ).
Definition: class_module.h:686
wxString m_KeyWord
Search keywords to find module in library.
Definition: class_module.h:679
wxString m_Path
Definition: class_module.h:680
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
int m_ThermalWidth
Definition: class_module.h:676
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
double m_LocalSolderPasteMarginRatio
Solder mask margin ratio value of pad size.
Definition: class_module.h:695
int m_LocalSolderPasteMargin
Solder paste margin absolute value.
Definition: class_module.h:694
int m_ThermalGap
Definition: class_module.h:677
std::list< S3D_INFO > m_3D_Drawings
Linked list of 3D models.
Definition: class_module.h:665
time_t m_Link
Temporary logical link used in edition.
Definition: class_module.h:685
void DeleteAll()
Function DeleteAll deletes all items on the list and leaves the list empty.
Definition: dlist.cpp:41
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
wxString m_Doc
File name and path for documentation file.
Definition: class_module.h:678
BOARD_ITEM * Next() const
int m_LocalClearance
Definition: class_module.h:692
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
EDA_RECT m_BoundaryBox
Bounding box : coordinates on board, real orientation.
Definition: class_module.h:673
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
D_PAD * Next() const
Definition: class_pad.h:106
int m_LocalSolderMaskMargin
Solder mask margin.
Definition: class_module.h:693
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Operator assignment is used to assign the members of aItem to another object.
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
time_t m_LastEditTime
Definition: class_module.h:682
int m_CntRot180
Vertical automatic placement cost ( 0..10 ).
Definition: class_module.h:687
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
ZoneConnection m_ZoneConnection
Definition: class_module.h:681
int m_Attributs
Flag bits ( see Mod_Attribut )
Definition: class_module.h:671
double MODULE::PadCoverageRatio ( ) const

Function PadCoverageRatio Calculates the ratio of total area of the footprint pads to the area of the footprint.

Used by selection tool heuristics.

Returns
the ratio

Definition at line 1208 of file class_module.cpp.

References EDA_RECT::GetArea(), GetFootprintRect(), m_Pads, min, and D_PAD::Next().

1209 {
1210  double padArea = 0.0;
1211  double moduleArea = GetFootprintRect().GetArea();
1212 
1213  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
1214  padArea += pad->GetBoundingBox().GetArea();
1215 
1216  if( moduleArea == 0.0 )
1217  return 1.0;
1218 
1219  double ratio = padArea / moduleArea;
1220 
1221  return std::min( ratio, 1.0 );
1222 }
double GetArea() const
Function GetArea returns the area of the rectangle.
EDA_RECT GetFootprintRect() const
Function GetFootprintRect() Returns the area of the module footprint excluding any text...
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
#define min(a, b)
Definition: auxiliary.h:85
DLIST<D_PAD>& MODULE::Pads ( )
inline

Definition at line 133 of file class_module.h.

References m_Pads.

Referenced by RN_DATA::Add(), RN_DATA::AddBlocked(), PCB_BASE_FRAME::AddPad(), CINFO3D_VISU::AddPadsShapesWithClearanceToContainer(), RN_DATA::AddSimple(), PCAD2KICAD::PCB_PAD::AddToModule(), PCB_EDIT_FRAME::Autoroute(), PCB_BASE_FRAME::build_ratsnest_module(), DRAG_LIST::BuildDragListe(), ClearAllNets(), ClearMarkItems(), GRID_HELPER::computeAnchors(), CopyMarkedItems(), CopyNetlistSettings(), PCB_EDIT_FRAME::Create_MuWaveComponent(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), PCB_EDIT_FRAME::CreateMuWaveBaseFootprint(), CreateShapesSection(), CreateSignalsSection(), DeleteMarkedItems(), DrawMovingBlockOutlines(), DrawOutlinesWhenMoving(), Duplicate(), PCB_EDIT_FRAME::Edit_Gap(), MODULE_EDITOR_TOOLS::EnumeratePads(), export_vrml_module(), genModuleOnRoutingMatrix(), GetNextPadName(), getOptimalModulePlacement(), GetUniquePadCount(), PCB_BASE_FRAME::GlobalChange_PadSettings(), HasNonSMDPins(), idf_export_module(), EAGLE_PLUGIN::loadElements(), LEGACY_PLUGIN::loadPAD(), EAGLE_PLUGIN::loadPlain(), MarkItemsInBloc(), MirrorMarkedItems(), MoveAnchorPosition(), MoveMarkedItems(), MoveMarkedItemsExactly(), EAGLE_PLUGIN::packageHole(), EAGLE_PLUGIN::packagePad(), EAGLE_PLUGIN::packageSMD(), MODULE_EDITOR_TOOLS::PasteItems(), Print_Module(), RN_DATA::Remove(), BOARD::ReplaceNetlist(), RotateMarkedItems(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), PCB_EDIT_FRAME::Show_1_Ratsnest(), Trace_Pads_Only(), TransformPadsShapesWithClearanceToPolygon(), and BOARD_NETLIST_UPDATER::updateComponentPadConnections().

133 { return m_Pads; }
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
const DLIST<D_PAD>& MODULE::Pads ( ) const
inline

Definition at line 134 of file class_module.h.

References m_Pads.

134 { return m_Pads; }
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
bool MODULE::PadsLocked ( ) const
inline

Definition at line 259 of file class_module.h.

References m_ModuleStatus, and MODULE_PADS_LOCKED.

Referenced by DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), and SELECTION_TOOL::SanitizeSelection().

259 { return ( m_ModuleStatus & MODULE_PADS_LOCKED ); }
#define MODULE_PADS_LOCKED
In autoplace: module waiting for autoplace.
Definition: class_module.h:220
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
TEXTE_MODULE& MODULE::Reference ( ) const
inline

Definition at line 459 of file class_module.h.

References m_Reference.

459 { return *m_Reference; }
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
void MODULE::Remove ( BOARD_ITEM aBoardItem)
overridevirtual

>

Removes an item from the container.

Parameters
aItemis an item to be removed.

Implements BOARD_ITEM_CONTAINER.

Definition at line 311 of file class_module.cpp.

References m_Drawings, m_Pads, PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, PCB_PAD_T, DLIST< T >::Remove(), TEXTE_MODULE::TEXT_is_DIVERS, and EDA_ITEM::Type().

312 {
313  switch( aBoardItem->Type() )
314  {
315  case PCB_MODULE_TEXT_T:
316  // Only user texts can be removed this way. Reference and value are not hold in the DLIST.
317  assert( static_cast<TEXTE_MODULE*>( aBoardItem )->GetType() == TEXTE_MODULE::TEXT_is_DIVERS );
318 
319  // no break
320 
321  case PCB_MODULE_EDGE_T:
322  m_Drawings.Remove( aBoardItem );
323  break;
324 
325  case PCB_PAD_T:
326  m_Pads.Remove( static_cast<D_PAD*>( aBoardItem ) );
327  break;
328 
329  default:
330  {
331  wxString msg;
332  msg.Printf( wxT( "MODULE::Remove() needs work: BOARD_ITEM type (%d) not handled" ),
333  aBoardItem->Type() );
334  wxFAIL_MSG( msg );
335  }
336  }
337 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
T * Remove(T *aElement)
Function Remove removes aElement from the list, but does not delete it.
Definition: dlist.h:211
class D_PAD, a pad in a footprint
Definition: typeinfo.h:102
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
inherited

Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aTextA reference to a wxString object containing the text to be replaced.
Returns
True if aText was modified, otherwise false.

Definition at line 211 of file base_struct.cpp.

References GetChars(), EDA_ITEM::GetClass(), and EDA_ITEM::IsReplaceable().

Referenced by SCH_TEXT::Replace(), SCH_FIELD::Replace(), SCH_SHEET_PIN::Replace(), SCH_SHEET::Replace(), SCH_FIND_COLLECTOR::ReplaceItem(), and ALIAS_INFO_GENERATOR::SetHtmlAliasOf().

212 {
213  wxCHECK_MSG( IsReplaceable(), false,
214  wxT( "Attempt to replace text in <" ) + GetClass() + wxT( "> item." ) );
215 
216  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
217 
218  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
219  aSearchData.GetFindString() :
220  aSearchData.GetFindString().Upper() );
221 
222  if( result == wxNOT_FOUND )
223  return false;
224 
225  wxString prefix = aText.Left( result );
226  wxString suffix;
227 
228  if( aSearchData.GetFindString().length() + result < aText.length() )
229  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
230 
231  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
232  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
233  GetChars( suffix ) );
234 
235  aText = prefix + aSearchData.GetReplaceString() + suffix;
236 
237  return true;
238 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:444
const wxString traceFindReplace(wxT("KicadFindReplace"))
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
virtual wxString GetClass() const =0
Function GetClass returns the class name.
virtual bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
void *  aAuxData = NULL 
)
inlinevirtualinherited

Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace.

This function must be overridden for items that support text replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item text was modified, otherwise false.

Reimplemented in SCH_SHEET, SCH_SHEET_PIN, SCH_FIELD, and SCH_TEXT.

Definition at line 432 of file base_struct.h.

432 { return false; }
void MODULE::Rotate ( const wxPoint aRotCentre,
double  aAngle 
)
overridevirtual

Function Rotate Rotate this object.

Parameters
aRotCentre- the rotation point.
aAngle- the rotation angle in 0.1 degree.

Reimplemented from BOARD_ITEM.

Definition at line 910 of file class_module.cpp.

References GetOrientation(), m_Pos, RotatePoint(), SetOrientation(), and SetPosition().

Referenced by CopyNetlistSettings(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_EDITOR_CONTROL::PlaceModule(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

911 {
912  wxPoint newpos = m_Pos;
913  RotatePoint( &newpos, aRotCentre, aAngle );
914  SetPosition( newpos );
915  SetOrientation( GetOrientation() + aAngle );
916 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
double GetOrientation() const
Definition: class_module.h:147
void SetPosition(const wxPoint &aPos) override
void SetOrientation(double newangle)
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
void MODULE::RunOnChildren ( std::function< void(BOARD_ITEM *)>  aFunction)

Function RunOnChildren.

Invokes a function on all BOARD_ITEMs that belong to the module (pads, drawings, texts).

Parameters
aFunctionis the function to be invoked.

Definition at line 818 of file class_module.cpp.

References DisplayError(), m_Drawings, m_Pads, m_Reference, m_Value, D_PAD::Next(), and BOARD_ITEM::Next().

Referenced by PCB_TOOL::doInteractiveItemPlacement(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_EDITOR_CONTROL::PlaceModule(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), BOARD_COMMIT::Revert(), and SELECTION::updateDrawList().

819 {
820  try
821  {
822  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
823  aFunction( static_cast<BOARD_ITEM*>( pad ) );
824 
825  for( BOARD_ITEM* drawing = m_Drawings; drawing; drawing = drawing->Next() )
826  aFunction( drawing );
827 
828  aFunction( static_cast<BOARD_ITEM*>( m_Reference ) );
829  aFunction( static_cast<BOARD_ITEM*>( m_Value ) );
830  }
831  catch( std::bad_function_call& )
832  {
833  DisplayError( NULL, wxT( "Error running MODULE::RunOnChildren" ) );
834  }
835 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
BOARD_ITEM * Next() const
D_PAD * Next() const
Definition: class_pad.h:106
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:69
void MODULE::SetAttributes ( int  aAttributes)
inline
void EDA_ITEM::SetBrightened ( )
inlineinherited

Definition at line 229 of file base_struct.h.

References BRIGHTENED, and EDA_ITEM::SetFlags().

Referenced by SELECTION_TOOL::disambiguationMenu().

229 { SetFlags( BRIGHTENED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
void MODULE::SetDescription ( const wxString &  aDoc)
inline

Definition at line 155 of file class_module.h.

References m_Doc.

Referenced by LEGACY_PLUGIN::loadMODULE(), and DIALOG_MODULE_MODULE_EDITOR::OnOkClick().

155 { m_Doc = aDoc; }
wxString m_Doc
File name and path for documentation file.
Definition: class_module.h:678
void MODULE::SetFlag ( int  aFlag)
inline

Definition at line 187 of file class_module.h.

References m_arflag.

Referenced by PCB_EDIT_FRAME::ExportToGenCAD(), and PickModule().

187 { m_arflag = aFlag; }
int m_arflag
Use to trace ratsnest and auto routing.
Definition: class_module.h:683
void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 253 of file base_struct.h.

Referenced by SCH_SCREEN::addConnectedItemsToBlock(), AddSegmentToDragList(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::BeginMoveDimensionText(), PCB_EDIT_FRAME::BeginMoveTarget(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_EDIT_FRAME::ConvertPart(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_PART::CopySelectedItems(), SCH_EDIT_FRAME::CreateBusBusEntry(), SCH_EDIT_FRAME::CreateBusWireEntry(), SCH_EDIT_FRAME::CreateNewImage(), SCH_EDIT_FRAME::CreateNewText(), LIB_EDIT_FRAME::CreatePin(), SCH_EDIT_FRAME::CreateSheet(), SCH_EDIT_FRAME::CreateSheetPin(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::EditDimension(), LIB_PIN::EnableEditMode(), PCB_EDIT_FRAME::FlipTextePcb(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), FOOTPRINT_EDIT_FRAME::HandleBlockEnd(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_EDIT_FRAME::ImportSheetPin(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_COMPONENT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), SCH_EDIT_FRAME::Load_Component(), PCB_BASE_FRAME::LoadModuleFromLibrary(), SCH_SCREEN::MarkConnections(), MarkItemsInBloc(), moveBitmap(), SCH_EDIT_FRAME::MoveImage(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), LIB_EDIT_FRAME::OnEditPin(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnSelectUnit(), PCB_EDIT_FRAME::Other_Layer_Route(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PrepareMoveItem(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), SCH_EDIT_FRAME::ReSizeSheet(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), SCH_SCREEN::SchematicCleanUp(), SCH_SCREEN::SelectBlockItems(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), LIB_PIN::SetNumber(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::Start_Move_DrawItem(), FOOTPRINT_EDIT_FRAME::Start_Move_EdgeMod(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PCB_BASE_FRAME::StartMovePad(), LIB_EDIT_FRAME::StartMovePin(), PCB_BASE_FRAME::StartMoveTexteModule(), PCB_EDIT_FRAME::StartMoveTextePcb(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and UndrawAndMarkSegmentsToDrag().

253 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible.

Parameters
aEnableTrue forces the item to be drawn. False uses the item's visibility setting to determine if the item is to be drawn.

Definition at line 265 of file base_struct.h.

Referenced by SCH_EDIT_FRAME::OnFindSchematicItem(), and SCH_EDIT_FRAME::updateFindReplaceView().

265 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:172
void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 228 of file base_struct.h.

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

228 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
void MODULE::SetInitialComments ( wxArrayString *  aInitialComments)
inline

Function SetInitialComments takes ownership of caller's heap allocated aInitialComments block.

The comments are single line strings already containing the s-expression comments with optional leading whitespace and then a '#' character followed by optional single line text (text with no line endings, not even one). This block of single line comments will be output upfront of any generated s-expression text in the PCBIO::Format() function.

Note that a block of single line comments constitutes a multiline block of single line comments. That is, the block is made of consecutive single line comments.

Parameters
aInitialCommentsis a heap allocated wxArrayString or NULL, which the caller gives up ownership of over to this MODULE.

Definition at line 626 of file class_module.h.

References m_initial_comments.

627  {
628  delete m_initial_comments;
629  m_initial_comments = aInitialComments;
630  }
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed ...
Definition: class_module.h:698
void MODULE::SetIsPlaced ( bool  isPlaced)
inline

Definition at line 242 of file class_module.h.

References m_ModuleStatus, and MODULE_is_PLACED.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule(), and LEGACY_PLUGIN::loadMODULE().

243  {
244  if( isPlaced )
246  else
248  }
#define MODULE_is_PLACED
In autoplace: module automatically placed.
Definition: class_module.h:218
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
void MODULE::SetKeywords ( const wxString &  aKeywords)
inline

Definition at line 158 of file class_module.h.

References m_KeyWord.

Referenced by LEGACY_PLUGIN::loadMODULE(), and DIALOG_MODULE_MODULE_EDITOR::OnOkClick().

158 { m_KeyWord = aKeywords; }
wxString m_KeyWord
Search keywords to find module in library.
Definition: class_module.h:679
void MODULE::SetLastEditTime ( )
inline

Definition at line 270 of file class_module.h.

References m_LastEditTime.

270 { m_LastEditTime = time( NULL ); }
time_t m_LastEditTime
Definition: class_module.h:682
virtual void BOARD_ITEM::SetLayer ( LAYER_ID  aLayer)
inlinevirtualinherited

Function SetLayer sets the layer this item is on.

Parameters
aLayerThe layer number. is virtual because some items (in fact: class DIMENSION) have a slightly different initialization

Reimplemented in DIMENSION.

Definition at line 149 of file class_board_item.h.

Referenced by DXF2BRD_CONVERTER::addArc(), DXF2BRD_CONVERTER::addCircle(), PNS_KICAD_IFACE::AddItem(), DXF2BRD_CONVERTER::addLine(), DXF2BRD_CONVERTER::addMText(), DXF2BRD_CONVERTER::addPolyline(), DXF2BRD_CONVERTER::addText(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_LINE::AddToModule(), DIMENSION::AdjustDimensionDetails(), DIALOG_TRACK_VIA_PROPERTIES::Apply(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::Create_MuWaveComponent(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), PCB_BASE_FRAME::CreateNewModule(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::drawSegment(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), ZONE_SETTINGS::ExportSetting(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), EDGE_MODULE::Flip(), TEXTE_MODULE::Flip(), TRACK::Flip(), Flip(), DRAWSEGMENT::Flip(), ZONE_CONTAINER::Flip(), genPlacementRoutingMatrix(), DXF2BRD_CONVERTER::insertArc(), BOARD::InsertArea(), DXF2BRD_CONVERTER::insertLine(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadMODULE_TEXT(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), DSN::SPECCTRA_DB::makeTRACK(), PCB_EDIT_FRAME::Other_Layer_Route(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageSMD(), EAGLE_PLUGIN::packageText(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), PlaceCells(), DRAWING_TOOL::PlaceDXF(), DRAWING_TOOL::PlaceText(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), PlotSolderMaskLayer(), DIMENSION::SetLayer(), ShowNewTrackWhenMovingCursor(), PCB_EDIT_FRAME::Swap_Layers(), TEXTE_MODULE::TEXTE_MODULE(), DialogEditModuleText::TransferDataFromWindow(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataFromWindow().

150  {
151  // trap any invalid layers, then go find the caller and fix it.
152  // wxASSERT( unsigned( aLayer ) < unsigned( NB_PCB_LAYERS ) );
153  m_Layer = aLayer;
154  }
LAYER_ID m_Layer
void MODULE::SetLink ( time_t  aLink)
inline
void EDA_ITEM::SetList ( DHEAD aList)
inlineinherited

Definition at line 214 of file base_struct.h.

Referenced by DHEAD::append(), DHEAD::insert(), and DHEAD::remove().

214 { m_List = aList; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:166
void MODULE::SetLocalClearance ( int  aClearance)
inline
void MODULE::SetLocalSolderMaskMargin ( int  aMargin)
inline
void MODULE::SetLocalSolderPasteMargin ( int  aMargin)
inline
void MODULE::SetLocalSolderPasteMarginRatio ( double  aRatio)
inline

Definition at line 173 of file class_module.h.

References m_LocalSolderPasteMarginRatio.

Referenced by CopyNetlistSettings(), LEGACY_PLUGIN::loadMODULE(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

173 { m_LocalSolderPasteMarginRatio = aRatio; }
double m_LocalSolderPasteMarginRatio
Solder mask margin ratio value of pad size.
Definition: class_module.h:695
void MODULE::SetLocked ( bool  isLocked)
inlineoverridevirtual

Function SetLocked sets the MODULE_is_LOCKED bit in the m_ModuleStatus.

Parameters
isLockedWhen true means turn on locked status, else unlock

Reimplemented from BOARD_ITEM.

Definition at line 233 of file class_module.h.

References m_ModuleStatus, and MODULE_is_LOCKED.

Referenced by CopyNetlistSettings(), LEGACY_PLUGIN::loadMODULE(), PCB_EDIT_FRAME::LockModule(), PCB_EDIT_FRAME::OnHotKey(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

234  {
235  if( isLocked )
237  else
239  }
#define MODULE_is_LOCKED
module LOCKED: no autoplace allowed
Definition: class_module.h:217
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
void EDA_ITEM::SetModified ( )
inherited
void MODULE::SetNeedsPlaced ( bool  needsPlaced)
inline

Definition at line 251 of file class_module.h.

References m_ModuleStatus, and MODULE_to_PLACE.

Referenced by PCB_EDIT_FRAME::AutoPlaceModule().

252  {
253  if( needsPlaced )
255  else
257  }
#define MODULE_to_PLACE
In autoplace: module waiting for autoplace.
Definition: class_module.h:219
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
void MODULE::SetOrientation ( double  newangle)

Definition at line 1065 of file class_module.cpp.

References CalculateBoundingBox(), m_Drawings, m_Orient, m_Pads, m_Reference, m_Value, D_PAD::Next(), BOARD_ITEM::Next(), NORMALIZE_ANGLE_POS(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, and TEXTE_MODULE::SetDrawCoord().

Referenced by PCAD2KICAD::PCB_MODULE::AddToBoard(), PCB_IO::FootprintSave(), LEGACY_PLUGIN::loadMODULE(), EAGLE_PLUGIN::orientModuleAndText(), Rotate(), PCB_BASE_FRAME::Rotate_Module(), and SetOrientationDegrees().

1066 {
1067  double angleChange = newangle - m_Orient; // change in rotation
1068 
1069  NORMALIZE_ANGLE_POS( newangle );
1070 
1071  m_Orient = newangle;
1072 
1073  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
1074  {
1075  pad->SetOrientation( pad->GetOrientation() + angleChange );
1076  pad->SetDrawCoord();
1077  }
1078 
1079  // Update of the reference and value.
1081  m_Value->SetDrawCoord();
1082 
1083  // Displace contours and text of the footprint.
1084  for( BOARD_ITEM* item = m_Drawings; item; item = item->Next() )
1085  {
1086  if( item->Type() == PCB_MODULE_EDGE_T )
1087  {
1088  static_cast<EDGE_MODULE*>( item )->SetDrawCoord();
1089  }
1090  else if( item->Type() == PCB_MODULE_TEXT_T )
1091  {
1092  static_cast<TEXTE_MODULE*>( item )->SetDrawCoord();
1093  }
1094  }
1095 
1097 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:222
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
BOARD_ITEM * Next() const
double m_Orient
Orientation in tenths of a degree, 900=90.0 degrees.
Definition: class_module.h:666
D_PAD * Next() const
Definition: class_pad.h:106
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
void SetDrawCoord()
Set absolute coordinates.
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
void MODULE::SetOrientationDegrees ( double  aOrientation)
inline

Definition at line 146 of file class_module.h.

References SetOrientation().

146 { SetOrientation( aOrientation*10.0 ); }
void SetOrientation(double newangle)
void MODULE::SetPadsLocked ( bool  aPadsLocked)
inline

Definition at line 261 of file class_module.h.

References m_ModuleStatus, and MODULE_PADS_LOCKED.

Referenced by DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

262  {
263  if( aPadsLocked )
265  else
267  }
#define MODULE_PADS_LOCKED
In autoplace: module waiting for autoplace.
Definition: class_module.h:220
int m_ModuleStatus
For autoplace: flags (LOCKED, AUTOPLACED)
Definition: class_module.h:672
void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlineinherited

Definition at line 213 of file base_struct.h.

Referenced by Add(), BOARD::Add(), BOARD_NETLIST_UPDATER::addNewComponent(), LIB_FIELD::Copy(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), SCH_EDIT_FRAME::CreateSheet(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), LIB_PART::LIB_PART(), SCH_SHEET::Load(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN::loadHierarchy(), LIB_EDIT_FRAME::LoadOneSymbol(), MODULE(), DIALOG_MODULE_BOARD_EDITOR::OnEditReference(), DIALOG_MODULE_BOARD_EDITOR::OnEditValue(), DIALOG_LIB_EDIT_PIN::OnPaintShowPanel(), operator=(), SCH_COMPONENT::operator=(), PCB_PARSER::parseMODULE_unchecked(), MODULE_EDITOR_TOOLS::PasteItems(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), BOARD_NETLIST_UPDATER::replaceComponent(), BOARD::ReplaceNetlist(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SaveCopyOfZones(), SCH_COMPONENT::SCH_COMPONENT(), SCH_SHEET::SCH_SHEET(), SCH_SHEET_PIN::SCH_SHEET_PIN(), LIB_PART::SetFields(), SetSchItemParent(), PCB_EDIT_FRAME::StartMoveModule(), BOARD_ITEM::SwapData(), SCH_COMPONENT::SwapData(), and SCH_SHEET::SwapData().

213 { m_Parent = aParent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
void MODULE::SetPath ( const wxString &  aPath)
inline
void MODULE::SetPlacementCost180 ( int  aCost)
inline

Definition at line 521 of file class_module.h.

References m_CntRot180.

Referenced by LEGACY_PLUGIN::loadMODULE(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

521 { m_CntRot180 = aCost; }
int m_CntRot180
Vertical automatic placement cost ( 0..10 ).
Definition: class_module.h:687
void MODULE::SetPlacementCost90 ( int  aCost)
inline

Definition at line 524 of file class_module.h.

References m_CntRot90.

Referenced by LEGACY_PLUGIN::loadMODULE(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

524 { m_CntRot90 = aCost; }
int m_CntRot90
Horizontal automatic placement cost ( 0..10 ).
Definition: class_module.h:686
void MODULE::SetPosition ( const wxPoint aPos)
overridevirtual

Implements BOARD_ITEM.

Definition at line 964 of file class_module.cpp.

References CalculateBoundingBox(), delta, m_Drawings, m_Pads, m_Pos, m_Reference, m_Value, D_PAD::Next(), BOARD_ITEM::Next(), PCB_MODULE_EDGE_T, PCB_MODULE_TEXT_T, EDGE_MODULE::SetDrawCoord(), and TEXTE_MODULE::SetPosition().

Referenced by BOARD_NETLIST_UPDATER::addNewComponent(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), CopyNetlistSettings(), MWAVE::CreateMicrowaveInductor(), Flip(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_EDIT_FRAME::Import_Module(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), EAGLE_PLUGIN::loadElements(), LEGACY_PLUGIN::loadMODULE(), PCB_BASE_FRAME::LoadModuleFromLibrary(), EAGLE_PLUGIN::loadPlain(), Move(), MODULE_EDITOR_TOOLS::PasteItems(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_BASE_FRAME::PlaceModule(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_WIZARD_FRAME::ReloadFootprint(), BOARD::ReplaceNetlist(), Rotate(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

965 {
966  wxPoint delta = newpos - m_Pos;
967 
968  m_Pos += delta;
969 
970  m_Reference->EDA_TEXT::Offset( delta );
971  m_Value->EDA_TEXT::Offset( delta );
972 
973  for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
974  {
975  pad->SetPosition( pad->GetPosition() + delta );
976  }
977 
978  for( EDA_ITEM* item = m_Drawings; item; item = item->Next() )
979  {
980  switch( item->Type() )
981  {
982  case PCB_MODULE_EDGE_T:
983  {
984  EDGE_MODULE* pt_edgmod = (EDGE_MODULE*) item;
985  pt_edgmod->SetDrawCoord();
986  break;
987  }
988 
989  case PCB_MODULE_TEXT_T:
990  {
991  TEXTE_MODULE* text = static_cast<TEXTE_MODULE*>( item );
992  text->EDA_TEXT::Offset( delta );
993  break;
994  }
995 
996  default:
997  wxMessageBox( wxT( "Draw type undefined." ) );
998  break;
999  }
1000  }
1001 
1003 }
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
static const int delta[8][2]
Definition: solve.cpp:112
BOARD_ITEM * Next() const
D_PAD * Next() const
Definition: class_pad.h:106
virtual void SetPosition(const wxPoint &aPos) override
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:105
DLIST< BOARD_ITEM > m_Drawings
Linked list of graphical items.
Definition: class_module.h:664
void SetDrawCoord()
Set draw coordinates (absolute values ) from relative coordinates.
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
wxPoint m_Pos
Position of module on the board in internal units.
Definition: class_module.h:667
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
DLIST< D_PAD > m_Pads
Linked list of pads.
Definition: class_module.h:663
void MODULE::SetReference ( const wxString &  aReference)
inline

Function SetReference.

Parameters
aReferenceA reference to a wxString object containing the reference designator text.

Definition at line 421 of file class_module.h.

References m_Reference, and EDA_TEXT::SetText().

Referenced by PCB_BASE_FRAME::CreateNewModule(), PCB_EDIT_FRAME::Exchange_Module(), EAGLE_PLUGIN::loadElements(), EAGLE_PLUGIN::loadPlain(), BOARD_NETLIST_UPDATER::replaceComponent(), BOARD::ReplaceNetlist(), COMPONENT::SetModule(), and BOARD_NETLIST_UPDATER::updateComponentParameters().

422  {
423  m_Reference->SetText( aReference );
424  }
TEXTE_MODULE * m_Reference
Component reference designator value (U34, R18..)
Definition: class_module.h:668
virtual void SetText(const wxString &aText)
Definition: eda_text.h:141
void EDA_ITEM::SetSelected ( )
inlineinherited

Definition at line 227 of file base_struct.h.

References SELECTED, and EDA_ITEM::SetFlags().

Referenced by SELECTION_TOOL::selectVisually().

227 { SetFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:120
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited
void MODULE::SetThermalGap ( int  aGap)
inline

Definition at line 181 of file class_module.h.

References m_ThermalGap.

Referenced by CopyNetlistSettings(), and LEGACY_PLUGIN::loadMODULE().

181 { m_ThermalGap = aGap; }
int m_ThermalGap
Definition: class_module.h:677
void MODULE::SetThermalWidth ( int  aWidth)
inline

Definition at line 178 of file class_module.h.

References m_ThermalWidth.

Referenced by CopyNetlistSettings(), and LEGACY_PLUGIN::loadMODULE().

178 { m_ThermalWidth = aWidth; }
int m_ThermalWidth
Definition: class_module.h:676
void EDA_ITEM::SetTimeStamp ( time_t  aNewTimeStamp)
inlineinherited

Definition at line 203 of file base_struct.h.

Referenced by BOARD_NETLIST_UPDATER::addNewComponent(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::Begin_Zone(), SCH_EDIT_FRAME::CreateSheet(), Diagnose(), DuplicateItemsInList(), DuplicateStruct(), EDIT_TOOL::editFootprintInFpEditor(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), DIALOG_MODULE_BOARD_EDITOR::GotoModuleEditor(), EDA_ITEM::initVars(), BOARD::InsertArea(), SCH_SHEET::Load(), LEGACY_PLUGIN::loadMODULE(), PCB_BASE_FRAME::LoadModuleFromLibrary(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), EDA_ITEM::operator=(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageText(), SCH_EDIT_FRAME::PasteListOfItems(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), PCB_EDIT_FRAME::Process_Special_Functions(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), BOARD::ReplaceNetlist(), SCH_SHEET::SCH_SHEET(), SCH_COMPONENT::SetTimeStamp(), SimilarLabelsDiagnose(), BOARD_ITEM::SwapData(), and TestDuplicateSheetNames().

203 { m_TimeStamp = aNewTimeStamp; }
time_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:169
void MODULE::SetValue ( const wxString &  aValue)
inline

Function SetValue.

Parameters
aValueA reference to a wxString object containing the value text.

Definition at line 448 of file class_module.h.

References m_Value, and EDA_TEXT::SetText().

Referenced by PCB_BASE_FRAME::CreateNewModule(), PCB_EDIT_FRAME::Exchange_Module(), EAGLE_PLUGIN::loadElements(), BOARD::ReplaceNetlist(), COMPONENT::SetModule(), and BOARD_NETLIST_UPDATER::updateComponentParameters().

449  {
450  m_Value->SetText( aValue );
451  }
TEXTE_MODULE * m_Value
Component value (74LS00, 22K..)
Definition: class_module.h:669
virtual void SetText(const wxString &aText)
Definition: eda_text.h:141
void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 226 of file base_struct.h.

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

Referenced by moveItemWithMouseCursor().

226 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:117
void MODULE::SetZoneConnection ( ZoneConnection  aType)
inline

Definition at line 175 of file class_module.h.

References m_ZoneConnection.

Referenced by CopyNetlistSettings(), LEGACY_PLUGIN::loadMODULE(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

175 { m_ZoneConnection = aType; }
ZoneConnection m_ZoneConnection
Definition: class_module.h:681
wxString BOARD_ITEM::ShowShape ( STROKE_T  aShape)
staticinherited

Function ShowShape converts the enum STROKE_T integer value to a wxString.

Definition at line 38 of file class_board_item.cpp.

References S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_RECT, and S_SEGMENT.

Referenced by ConvertOutlineToPolygon(), DRAWSEGMENT::GetCenter(), EDGE_MODULE::GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), DSN::SPECCTRA_DB::makeIMAGE(), and DRAWSEGMENT::Rotate().

39 {
40  switch( aShape )
41  {
42  case S_SEGMENT: return _( "Line" );
43  case S_RECT: return _( "Rect" );
44  case S_ARC: return _( "Arc" );
45  case S_CIRCLE: return _( "Circle" );
46  case S_CURVE: return _( "Bezier Curve" );
47  case S_POLYGON: return _( "Polygon" );
48  default: return wxT( "??" );
49  }
50 }
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
segment with non rounded ends
Arcs (with rounded ends)
Bezier Curve.
static bool EDA_ITEM::Sort ( const EDA_ITEM aLeft,
const EDA_ITEM aRight 
)
inlinestaticinherited

Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers.

Parameters
aLeftThe left hand item to compare.
aRightThe right hand item to compare.
Returns
True if aLeft is less than aRight.

Definition at line 463 of file base_struct.h.

Referenced by PART_LIB::GetEntryTypePowerNames().

463 { return *aLeft < *aRight; }
const wxChar * MODULE::StringLibNameInvalidChars ( bool  aUserReadable)
static

static function StringLibNameInvalidChars Test for validity of the name in a library of the footprint ( no spaces, dir separators ...

)

Parameters
aUserReadable= false to get the list of invalid chars true to get a readable form (i.e ' ' = 'space' '\t'= 'tab')
Returns
a constant std::string giving the list of invalid chars in lib name

Definition at line 891 of file class_module.cpp.

Referenced by IsLibNameValid(), DIALOG_MODULE_MODULE_EDITOR::OnOkClick(), and FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary().

892 {
893  static const wxChar invalidChars[] = wxT("%$\t \"\\/");
894  static const wxChar invalidCharsReadable[] = wxT("% $ 'tab' 'space' \\ \" /");
895 
896  if( aUserReadable )
897  return invalidCharsReadable;
898  else
899  return invalidChars;
900 }
void BOARD_ITEM::SwapData ( BOARD_ITEM aImage)
inherited

Swap data between aItem and aImage.

aItem and aImage should have the same type Used in undo redo command to swap values between an item and its copy Only values like layer, size .. which are modified by edition are swapped, not the pointers like Pnext and Pback because aItem is not changed in the linked list

Parameters
aImage= the item image which contains data to swap

Definition at line 577 of file undo_redo.cpp.

References EDA_ITEM::Back(), EDA_ITEM::GetParent(), EDA_ITEM::GetTimeStamp(), EDA_ITEM::m_List, EDA_ITEM::Next(), EDA_ITEM::Pback, PCB_DIMENSION_T, PCB_LINE_T, PCB_MODULE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_AREA_T, PCB_ZONE_T, EDA_ITEM::Pnext, EDA_ITEM::SetParent(), EDA_ITEM::SetTimeStamp(), and EDA_ITEM::Type().

Referenced by Abort_Edit_Pcb_Text(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_EDIT_FRAME::PlaceTarget(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), and BOARD_COMMIT::Revert().

578 {
579  if( aImage == NULL )
580  return;
581 
582  wxASSERT( Type() == aImage->Type() );
583 
584  // Remark: to create images of edited items to undo, we are using Clone method
585  // which can duplication of items foe copy, but does not clone all members
586  // mainly pointers in chain and time stamp, which is set to new, unique value.
587  // So we have to use the current values of these parameters.
588 
589  EDA_ITEM* pnext = Next();
590  EDA_ITEM* pback = Back();
591  DHEAD* mylist = m_List;
592  time_t timestamp = GetTimeStamp();
593  EDA_ITEM* parent = GetParent();
594 
595  switch( Type() )
596  {
597  case PCB_MODULE_T:
598  std::swap( *((MODULE*) this), *((MODULE*) aImage) );
599  break;
600 
601  case PCB_ZONE_AREA_T:
602  std::swap( *((ZONE_CONTAINER*) this), *((ZONE_CONTAINER*) aImage) );
603  break;
604 
605  case PCB_LINE_T:
606  std::swap( *((DRAWSEGMENT*) this), *((DRAWSEGMENT*) aImage) );
607  break;
608 
609  case PCB_TRACE_T:
610  std::swap( *((TRACK*) this), *((TRACK*) aImage) );
611  break;
612 
613  case PCB_VIA_T:
614  std::swap( *((VIA*) this), *((VIA*) aImage) );
615  break;
616 
617  case PCB_TEXT_T:
618  std::swap( *((TEXTE_PCB*)this), *((TEXTE_PCB*)aImage) );
619  break;
620 
621  case PCB_TARGET_T:
622  std::swap( *((PCB_TARGET*)this), *((PCB_TARGET*)aImage) );
623  break;
624 
625  case PCB_DIMENSION_T:
626  std::swap( *((DIMENSION*)this), *((DIMENSION*)aImage) );
627  break;
628 
629  case PCB_ZONE_T:
630  default:
631  wxLogMessage( wxT( "SwapData() error: unexpected type %d" ), Type() );
632  break;
633  }
634 
635  // Restore pointers and time stamp, to be sure they are not broken
636  Pnext = pnext;
637  Pback = pback;
638  m_List = mylist;
639  SetTimeStamp( timestamp );
640  SetParent( parent );