KiCad PCB EDA Suite
LIB_PIN Class Reference

#include <lib_pin.h>

Inheritance diagram for LIB_PIN:
LIB_ITEM EDA_ITEM KIGFX::VIEW_ITEM

Public Types

enum  LIB_CONVERT : int { BASE = 1, DEMORGAN = 2 }
 
enum  COMPARE_FLAGS : int { NORMAL = 0x00, UNIT = 0x01 }
 The list of flags used by the compare function. More...
 

Public Member Functions

 LIB_PIN (LIB_PART *aParent)
 
 ~LIB_PIN ()
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
wxString GetTypeName () override
 Provide a user-consumable name of the object type. More...
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Function HitTest tests if aPosition is contained within or on the bounding box of an item. More...
 
void GetMsgPanelInfo (EDA_UNITS aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
 Display basic info (type, part and convert) about the current item in message panel. More...
 
void GetMsgPanelInfo (EDA_UNITS aUnits, std::vector< MSG_PANEL_ITEM > &aList, SCH_COMPONENT *aComponent)
 Display pin info (given by GetMsgPanelInfo) and add some info related to aComponent (schematic pin position, and sheet path) More...
 
bool Matches (wxFindReplaceData &aSearchData, void *aAuxData) override
 Function Matches compares the item against the search criteria in aSearchData. More...
 
const EDA_RECT GetBoundingBox () const override
 
const EDA_RECT GetBoundingBox (bool aIncludeInvisibles) const
 
wxPoint PinEndPoint () const
 
int PinDrawOrient (const TRANSFORM &aTransform) const
 Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation and the matrix transform (rot, mirror) aTransform. More...
 
const wxString & GetName () const
 
void SetName (const wxString &aName, bool aTestOtherPins=true)
 Set the pin name. More...
 
void SetNameTextSize (int aSize, bool aTestOtherPins=true)
 Set the aSize of the pin name text. More...
 
int GetNameTextSize () const
 
const wxString & GetNumber () const
 
void SetNumber (const wxString &aNumber)
 Set the pin number. More...
 
void SetNumberTextSize (int aSize, bool aTestOtherPins=true)
 Set the size of the pin number text. More...
 
int GetNumberTextSize () const
 
int GetOrientation () const
 
void SetOrientation (int aOrientation, bool aTestOtherPins=true)
 Set orientation on the pin. More...
 
GRAPHIC_PINSHAPE GetShape () const
 
void SetShape (GRAPHIC_PINSHAPE aShape)
 Set the shape of the pin to aShape. More...
 
ELECTRICAL_PINTYPE GetType () const
 Get the electrical type of the pin. More...
 
wxString const GetCanonicalElectricalTypeName () const
 return a string giving the electrical type of the pin. More...
 
wxString const GetElectricalTypeName () const
 return a translated string for messages giving the electrical type of the pin. More...
 
void SetType (ELECTRICAL_PINTYPE aType, bool aTestOtherPins=true)
 Set the electrical type of the pin. More...
 
void SetLength (int aLength, bool aTestOtherPins=true)
 Set the pin length. More...
 
int GetLength ()
 
void SetPartNumber (int aPart)
 Set the pin part number. More...
 
int GetPartNumber () const
 Get the pin part number. More...
 
void SetConversion (int aConversion)
 Set the body style (conversion) of the pin. More...
 
void SetVisible (bool aVisible)
 Set or clear the visibility flag for the pin. More...
 
void EnableEditMode (bool aEnable, bool aEditPinByPin=false)
 Enable or clear pin editing mode. More...
 
bool IsVisible () const
 Return the visibility status of the draw object. More...
 
bool IsPowerConnection () const
 Return whether this pin forms an implicit power connection: i.e., is hidden and of type POWER_IN. More...
 
int GetPenSize () const override
 
void PrintPinSymbol (wxDC *aDC, const wxPoint &aPos, int aOrientation)
 Print the pin symbol without text. More...
 
void PrintPinTexts (wxDC *aDC, wxPoint &aPosition, int aOrientation, int TextInside, bool DrawPinNum, bool DrawPinName)
 Put the pin number and pin text info, given the pin line coordinates. More...
 
void PrintPinElectricalTypeName (wxDC *aDC, wxPoint &aPosition, int aOrientation)
 Draw the electrical type text of the pin (only for the footprint editor) More...
 
void PlotPinTexts (PLOTTER *aPlotter, wxPoint &aPosition, int aOrientation, int aTextInside, bool aDrawPinNum, bool aDrawPinName, int aWidth)
 Plot the pin number and pin text info, given the pin line coordinates. More...
 
void PlotSymbol (PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation)
 
void Offset (const wxPoint &aOffset) override
 Set the drawing object by aOffset from the current position. More...
 
bool Inside (EDA_RECT &aRect) const override
 Test if any part of the draw object is inside rectangle bounds of aRect. More...
 
void MoveTo (const wxPoint &aPosition) override
 Move a draw object to aPosition. More...
 
wxPoint GetPosition () const override
 
void SetPinPosition (wxPoint aPosition)
 move this and all linked pins to the new position used in pin editing. More...
 
void MirrorHorizontal (const wxPoint &aCenter) override
 Mirror the draw object along the horizontal (X) axis about aCenter point. More...
 
void MirrorVertical (const wxPoint &aCenter) override
 Mirror the draw object along the MirrorVertical (Y) axis about aCenter point. More...
 
void Rotate (const wxPoint &aCenter, bool aRotateCCW=true) override
 Rotate the object about aCenter point. More...
 
void Plot (PLOTTER *aPlotter, const wxPoint &aOffset, bool aFill, const TRANSFORM &aTransform) override
 Plot the draw item using the plot object. More...
 
int GetWidth () const override
 
void SetWidth (int aWidth) override
 
BITMAP_DEF GetMenuImage () const override
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
wxString GetSelectMenuText (EDA_UNITS aUnits) 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...
 
EDA_ITEMClone () const override
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
void CalcEdit (const wxPoint &aPosition) override
 Calculates the attributes of an item at aPosition when it is being edited. More...
 
virtual void BeginEdit (const wxPoint aPosition)
 Begin drawing a component library draw item at aPosition. More...
 
virtual bool ContinueEdit (const wxPoint aPosition)
 Continue an edit in progress at aPosition. More...
 
virtual void EndEdit ()
 End an object editing action. More...
 
virtual void Print (wxDC *aDC, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform)
 Draw an item. More...
 
LIB_PARTGetParent () const
 
void ViewGetLayers (int aLayers[], int &aCount) const override
 Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const override
 Function HitTest tests if aRect intersects or is contained within the bounding box of an item. More...
 
bool operator== (const LIB_ITEM &aOther) const
 Test LIB_ITEM objects for equivalence. More...
 
bool operator== (const LIB_ITEM *aOther) const
 
bool operator< (const LIB_ITEM &aOther) const
 Test if another draw item is less than this draw object. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
void SetPosition (const wxPoint &aPosition)
 
bool IsFillable () const
 Check if draw object can be filled. More...
 
virtual COLOR4D GetDefaultColor ()
 
void SetUnit (int aUnit)
 
int GetUnit () const
 
void SetConvert (int aConvert)
 
int GetConvert () const
 
void SetFillMode (FILL_T aFillMode)
 
FILL_T GetFillMode () const
 
KICAD_T Type () const
 Function Type() More...
 
void SetParent (EDA_ITEM *aParent)
 
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
 
bool HasFlag (STATUS_FLAGS aFlag)
 
STATUS_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool IsType (const KICAD_T aScanTypes[]) const
 Function IsType Checks whether the item is one of the listed types. More...
 
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 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 its member data. 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...
 
virtual const BOX2I ViewBBox () const override
 Function ViewBBox() returns the bounding box of the item covering all its layers. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
virtual unsigned int ViewGetLOD (int aLayer, VIEW *aView) const
 Function ViewGetLOD() Returns the level of detail (LOD) of the item. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 

Static Public Member Functions

static const wxString GetCanonicalElectricalTypeName (ELECTRICAL_PINTYPE aType)
 return a string giving the electrical type of a pin. More...
 
static wxArrayString GetOrientationNames ()
 Get a list of pin orientation names. More...
 
static const BITMAP_DEFGetOrientationSymbols ()
 Get a list of pin orientation bitmaps for menus and dialogs. More...
 
static int GetOrientationCode (int aIndex)
 Get the orientation code by index used to set the pin orientation. More...
 
static int GetOrientationIndex (int aCode)
 Get the index of the orientation code. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
static 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...
 
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...
 

Public Attributes

const KIID m_Uuid
 

Protected Member Functions

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

Protected Attributes

int m_Unit
 Unit identification for multiple parts per package. More...
 
int m_Convert
 Shape identification for alternate body styles. More...
 
FILL_T m_Fill
 The body fill type. More...
 
bool m_isFillable
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) 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 Member Functions

void print (wxDC *aDC, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform) override
 Print a pin, with or without the pin texts. More...
 
void getMsgPanelInfoBase (EDA_UNITS aUnits, std::vector< MSG_PANEL_ITEM > &aList)
 Build the pin basic info to display in message panel. More...
 
int compare (const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const override
 Provide the draw object specific comparison called by the == and < operators. More...
 

Private Attributes

wxPoint m_position
 Position of the pin. More...
 
int m_length
 Length of the pin. More...
 
int m_orientation
 Pin orientation (Up, Down, Left, Right) More...
 
GRAPHIC_PINSHAPE m_shape
 Shape drawn around pin. More...
 
int m_width
 Line width of the pin. More...
 
ELECTRICAL_PINTYPE m_type
 Electrical type of the pin. See enum ELECTRICAL_PINTYPE. More...
 
int m_attributes
 Set bit 0 to indicate pin is invisible. More...
 
wxString m_name
 
wxString m_number
 
int m_numTextSize
 
int m_nameTextSize
 Pin num and Pin name sizes. More...
 

Friends

class SCH_LEGACY_PLUGIN_CACHE
 

Detailed Description

Definition at line 63 of file lib_pin.h.

Member Enumeration Documentation

◆ COMPARE_FLAGS

enum LIB_ITEM::COMPARE_FLAGS : int
inherited

The list of flags used by the compare function.

  • NORMAL This compares everthing between two LIB_ITEM objects.
  • UNIT This compare flag ignores unit and convert and pin number information when comparing LIB_ITEM objects for unit comparison.
Enumerator
NORMAL 
UNIT 

Definition at line 116 of file lib_item.h.

116 : int { NORMAL = 0x00, UNIT = 0x01 };

◆ LIB_CONVERT

enum LIB_ITEM::LIB_CONVERT : int
inherited
Enumerator
BASE 
DEMORGAN 

Definition at line 107 of file lib_item.h.

107 : int { BASE = 1, DEMORGAN = 2 };

Constructor & Destructor Documentation

◆ LIB_PIN()

LIB_PIN::LIB_PIN ( LIB_PART aParent)

Definition at line 147 of file lib_pin.cpp.

149 {
151  m_orientation = PIN_RIGHT; // Pin orient: Up, Down, Left, Right
152  m_type = ELECTRICAL_PINTYPE::PT_UNSPECIFIED; // electrical type of pin
153  m_attributes = 0; // bit 0 != 0: pin invisible
156  m_width = 0;
157 }
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
int m_numTextSize
Definition: lib_pin.h:79
static int GetDefaultPinLength()
unknown electrical properties: creates always a warning when connected
int m_length
Length of the pin.
Definition: lib_pin.h:71
static int GetPinNumDefaultSize()
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
int m_attributes
Set bit 0 to indicate pin is invisible.
Definition: lib_pin.h:76
static int GetPinNameDefaultSize()
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
LIB_ITEM(KICAD_T aType, LIB_PART *aComponent=NULL, int aUnit=0, int aConvert=0, FILL_T aFillType=NO_FILL)
Definition: lib_item.cpp:37
int m_width
Line width of the pin.
Definition: lib_pin.h:74

References LIB_EDIT_FRAME::GetDefaultPinLength(), LIB_EDIT_FRAME::GetPinNameDefaultSize(), LIB_EDIT_FRAME::GetPinNumDefaultSize(), LINE, m_attributes, m_length, m_nameTextSize, m_numTextSize, m_orientation, m_type, m_width, PIN_RIGHT, and PT_UNSPECIFIED.

Referenced by Clone().

◆ ~LIB_PIN()

LIB_PIN::~LIB_PIN ( )
inline

Definition at line 99 of file lib_pin.h.

99 { }

Member Function Documentation

◆ BeginEdit()

virtual void LIB_ITEM::BeginEdit ( const wxPoint  aPosition)
inlinevirtualinherited

Begin drawing a component library draw item at aPosition.

It typically would be called on a left click when a draw tool is selected in the component library editor and one of the graphics tools is selected.

Parameters
aPositionThe position in drawing coordinates where the drawing was started. May or may not be required depending on the item being drawn.

Reimplemented in LIB_FIELD, LIB_POLYLINE, LIB_ARC, LIB_TEXT, LIB_CIRCLE, and LIB_RECTANGLE.

Definition at line 133 of file lib_item.h.

133 {}

Referenced by LIB_DRAWING_TOOLS::DrawShape().

◆ CalcEdit()

void LIB_PIN::CalcEdit ( const wxPoint aPosition)
overridevirtual

Calculates the attributes of an item at aPosition when it is being edited.

This method gets called by the Draw() method when the item is being edited. This probably should be a pure virtual method but bezier curves are not yet editable in the component library editor. Therefore, the default method does nothing.

Parameters
aPositionThe current mouse position in drawing coordinates.

Reimplemented from LIB_ITEM.

Definition at line 1669 of file lib_pin.cpp.

1670 {
1671  if( IsMoving() )
1672  {
1673  DBG(printf("MOVEPIN\n");)
1674  MoveTo( aPosition );
1675  }
1676 }
bool IsMoving() const
Definition: base_struct.h:222
void MoveTo(const wxPoint &aPosition) override
Move a draw object to aPosition.
Definition: lib_pin.cpp:1310
#define DBG(x)
Definition: fctsys.h:33

References DBG, EDA_ITEM::IsMoving(), and MoveTo().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 237 of file base_struct.h.

237 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:143
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:258

References BRIGHTENED, and EDA_ITEM::ClearFlags().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PCB_BASE_FRAME::FocusOnItem(), SCH_BASE_FRAME::FocusOnItem(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), and SCH_EDITOR_CONTROL::UpdateNetHighlighting().

◆ ClearEditFlags()

void EDA_ITEM::ClearEditFlags ( )
inlineinherited

◆ ClearFlags()

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

Definition at line 258 of file base_struct.h.

258 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References EDA_ITEM::m_Flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_COMPONENT::ClearAllHighlightFlags(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearHighlighted(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), SCH_EDIT_FRAME::ConvertPart(), LIB_EDIT_TOOL::Copy(), MWAVE::CreateMicrowaveInductor(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), LIB_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::Exchange_Module(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), KIGFX::SCH_VIEW::HighlightItem(), MODULE_EDITOR_TOOLS::ImportFootprint(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), FOOTPRINT_EDIT_FRAME::LoadModuleFromLibrary(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceModule(), LIB_PIN_TOOL::PlacePin(), DRAWING_TOOL::PlaceText(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::RollbackPartFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearHighlighted()

void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 236 of file base_struct.h.

236 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:258

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

◆ ClearSelected()

void EDA_ITEM::ClearSelected ( )
inlineinherited

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 270 of file base_struct.h.

271  {
273  }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:131
#define CANDIDATE
flag indicating that the structure is connected
Definition: base_struct.h:130
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:126
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:258
#define DO_NOT_DRAW
Used to disable draw function.
Definition: base_struct.h:132
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:125

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

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 153 of file view_item.h.

154  {
156  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:161
#define NULL

References KIGFX::VIEW_ITEM::m_viewPrivData, and NULL.

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

◆ Clone()

EDA_ITEM * LIB_PIN::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 1235 of file lib_pin.cpp.

1236 {
1237  return new LIB_PIN( *this );
1238 }
LIB_PIN(LIB_PART *aParent)
Definition: lib_pin.cpp:147

References LIB_PIN().

Referenced by LIB_PIN_TOOL::CreateImagePins(), and LIB_PIN_TOOL::RepeatPin().

◆ compare()

int LIB_PIN::compare ( const LIB_ITEM aOther,
LIB_ITEM::COMPARE_FLAGS  aCompareFlags = LIB_ITEM::COMPARE_FLAGS::NORMAL 
) const
overrideprivatevirtual

Provide the draw object specific comparison called by the == and < operators.

The base object sort order which always proceeds the derived object sort order is as follows:

  • Component alternate part (DeMorgan) number.
  • Component part number.
  • KICAD_T enum value.
  • Result of derived classes comparison.
Note
Make sure you call down to LIB_ITEM::compare before doing any derived object comparisons or you will break the sorting using the symbol library file format.
Parameters
aOtherA reference to the other LIB_ITEM to compare the arc against.
aCompareFlagsThe flags used to perform the comparison.
Returns
An integer value less than 0 if the object is less than aOther ojbect, zero if the object is equal to aOther object, or greater than 0 if the object is greater than aOther object.

The pin specific sort order is as follows:

  • Pin number.
  • Pin name, case insensitive compare.
  • Pin horizontal (X) position.
  • Pin vertical (Y) position.

Reimplemented from LIB_ITEM.

Definition at line 1241 of file lib_pin.cpp.

1242 {
1243  wxASSERT( aOther.Type() == LIB_PIN_T );
1244 
1245  int retv = LIB_ITEM::compare( aOther, aCompareFlags );
1246 
1247  if( retv )
1248  return retv;
1249 
1250  const LIB_PIN* tmp = (LIB_PIN*) &aOther;
1251 
1252  // When comparing units, we do not compare the part numbers. If everything else is
1253  // identical, then we can just renumber the parts for the inherited symbol.
1254  if( !( aCompareFlags & COMPARE_FLAGS::UNIT ) && m_number != tmp->m_number )
1255  return m_number.Cmp( tmp->m_number );
1256 
1257  int result = m_name.CmpNoCase( tmp->m_name );
1258 
1259  if( result )
1260  return result;
1261 
1262  if( m_position.x != tmp->m_position.x )
1263  return m_position.x - tmp->m_position.x;
1264 
1265  if( m_position.y != tmp->m_position.y )
1266  return m_position.y - tmp->m_position.y;
1267 
1268  if( m_length != tmp->m_length )
1269  return m_length - tmp->m_length;
1270 
1271  if( m_orientation != tmp->m_orientation )
1272  return m_orientation - tmp->m_orientation;
1273 
1274  if( m_shape != tmp->m_shape )
1275  return static_cast<int>( m_shape ) - static_cast<int>( tmp->m_shape );
1276 
1277  if( m_type != tmp->m_type )
1278  return static_cast<int>( m_type ) - static_cast<int>( tmp->m_type );
1279 
1280  if( m_attributes != tmp->m_attributes )
1281  return m_attributes - tmp->m_attributes;
1282 
1283  if( m_width != tmp->m_width )
1284  return m_width - tmp->m_width;
1285 
1286  if( m_numTextSize != tmp->m_numTextSize )
1287  return m_numTextSize - tmp->m_numTextSize;
1288 
1289  if( m_nameTextSize != tmp->m_nameTextSize )
1290  return m_nameTextSize - tmp->m_nameTextSize;
1291 
1292  return 0;
1293 }
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
#define UNIT
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
int m_numTextSize
Definition: lib_pin.h:79
wxString m_name
Definition: lib_pin.h:77
int m_length
Length of the pin.
Definition: lib_pin.h:71
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxString m_number
Definition: lib_pin.h:78
int m_attributes
Set bit 0 to indicate pin is invisible.
Definition: lib_pin.h:76
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
int m_width
Line width of the pin.
Definition: lib_pin.h:74
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:76
KICAD_T Type() const
Function Type()
Definition: base_struct.h:212

References LIB_ITEM::compare(), LIB_PIN_T, m_attributes, m_length, m_name, m_nameTextSize, m_number, m_numTextSize, m_orientation, m_position, m_shape, m_type, m_width, EDA_ITEM::Type(), UNIT, wxPoint::x, and wxPoint::y.

◆ ContinueEdit()

virtual bool LIB_ITEM::ContinueEdit ( const wxPoint  aPosition)
inlinevirtualinherited

Continue an edit in progress at aPosition.

This is used to perform the next action while drawing an item. This would be called for each additional left click when the mouse is captured while the item is being drawn.

Parameters
aPositionThe position of the mouse left click in drawing coordinates.
Returns
True if additional mouse clicks are required to complete the edit in progress.

Reimplemented in LIB_POLYLINE.

Definition at line 145 of file lib_item.h.

145 { return false; }

Referenced by LIB_DRAWING_TOOLS::DrawShape().

◆ EnableEditMode()

void LIB_PIN::EnableEditMode ( bool  aEnable,
bool  aEditPinByPin = false 
)

Enable or clear pin editing mode.

The pin editing mode marks or unmarks all pins common to this pin object for further editing. If any of the pin modification methods are called after enabling the editing mode, all pins marked for editing will have the same attribute changed. The only case were this is not true making this pin common to all parts or body styles in the component. See SetCommonToAllParts() and SetCommonToAllBodyStyles() for more information.

Parameters
aEnable= true marks all common pins for editing mode. False clears the editing mode.
aEditPinByPin== true enables the edit pin by pin mode. aEditPinByPin == false enables the pin edit coupling between pins at the same location if aEnable == false, aEditPinByPin is not used

Definition at line 503 of file lib_pin.cpp.

504 {
505  LIB_PINS pinList;
506 
507  if( GetParent() == NULL )
508  return;
509 
510  GetParent()->GetPins( pinList );
511 
512  for( size_t i = 0; i < pinList.size(); i++ )
513  {
514  if( pinList[i] == this )
515  continue;
516 
517  if( ( pinList[i]->m_position == m_position )
518  && ( pinList[i]->m_orientation == m_orientation )
519  && !IsNew() && !aEditPinByPin && aEnable )
520  {
521  pinList[i]->SetFlags( IS_LINKED | IN_EDIT );
522  }
523  else
524  pinList[i]->ClearFlags( IS_LINKED | IN_EDIT );
525  }
526 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
#define IN_EDIT
Item currently edited.
Definition: base_struct.h:118
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
bool IsNew() const
Definition: base_struct.h:220
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
#define NULL
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IN_EDIT, IS_LINKED, EDA_ITEM::IsNew(), m_orientation, m_position, and NULL.

Referenced by LIB_PIN_TOOL::EditPinProperties().

◆ EndEdit()

virtual void LIB_ITEM::EndEdit ( )
inlinevirtualinherited

End an object editing action.

This is used to end or abort an edit action in progress initiated by BeginEdit().

Reimplemented in LIB_POLYLINE.

Definition at line 152 of file lib_item.h.

152 {}

Referenced by LIB_DRAWING_TOOLS::DrawShape().

◆ GetBoundingBox() [1/2]

const EDA_RECT LIB_PIN::GetBoundingBox ( ) const
inlineoverridevirtual
Returns
the boundary box for this, in library coordinates

Reimplemented from LIB_ITEM.

Definition at line 131 of file lib_pin.h.

131 { return GetBoundingBox( false ); }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:131

References GetBoundingBox().

Referenced by SCH_PIN::GetBoundingBox(), GetBoundingBox(), HitTest(), and DIALOG_LIB_EDIT_PIN::OnPaintShowPanel().

◆ GetBoundingBox() [2/2]

const EDA_RECT LIB_PIN::GetBoundingBox ( bool  aIncludeInvisibles) const
Parameters
aIncludeInvisibles- if false, do not include labels for invisible pins in the calculation.

Definition at line 1470 of file lib_pin.cpp.

1471 {
1472  LIB_PART* entry = static_cast<LIB_PART*>( m_Parent );
1473  EDA_RECT bbox;
1474  wxPoint begin;
1475  wxPoint end;
1476  int nameTextOffset = 0;
1477  bool showName = !m_name.IsEmpty() && (m_name != wxT( "~" ));
1478  bool showNum = !m_number.IsEmpty();
1479  int minsizeV = TARGET_PIN_RADIUS;
1480 
1481  if( !aIncludeInvisibles && !IsVisible() )
1482  showName = false;
1483 
1484  if( entry )
1485  {
1486  if( entry->ShowPinNames() )
1487  nameTextOffset = entry->GetPinNameOffset();
1488  else
1489  showName = false;
1490 
1491  showNum = entry->ShowPinNumbers();
1492  }
1493 
1494  // First, calculate boundary box corners position
1495  int numberTextLength = showNum ? m_numTextSize * m_number.Len() : 0;
1496 
1497  // Actual text height is bigger than text size
1498  int numberTextHeight = showNum ? KiROUND( m_numTextSize * 1.1 ) : 0;
1499 
1501  minsizeV = std::max( TARGET_PIN_RADIUS, ExternalPinDecoSize( *this ) );
1502 
1503  // calculate top left corner position
1504  // for the default pin orientation (PIN_RIGHT)
1505  begin.y = std::max( minsizeV, numberTextHeight + Mils2iu( PIN_TEXT_MARGIN ) );
1506  begin.x = std::min( -TARGET_PIN_RADIUS, m_length - (numberTextLength / 2) );
1507 
1508  // calculate bottom right corner position and adjust top left corner position
1509  int nameTextLength = 0;
1510  int nameTextHeight = 0;
1511 
1512  if( showName )
1513  {
1514  int length = m_name.Len();
1515 
1516  // Don't count the line over text symbol.
1517  if( m_name.Left( 1 ) == wxT( "~" ) )
1518  length -= 1;
1519 
1520  nameTextLength = ( m_nameTextSize * length ) + nameTextOffset;
1521 
1522  // Actual text height are bigger than text size
1523  nameTextHeight = KiROUND( m_nameTextSize * 1.1 ) + Mils2iu( PIN_TEXT_MARGIN );
1524  }
1525 
1526  if( nameTextOffset ) // for values > 0, pin name is inside the body
1527  {
1528  end.x = m_length + nameTextLength + TARGET_PIN_RADIUS;
1529  end.y = std::min( -minsizeV, -nameTextHeight / 2 );
1530  }
1531  else // if value == 0:
1532  // pin name is outside the body, and above the pin line
1533  // pin num is below the pin line
1534  {
1535  end.x = std::max( m_length + TARGET_PIN_RADIUS, nameTextLength );
1536  end.y = -begin.y;
1537  begin.y = std::max( minsizeV, nameTextHeight );
1538  }
1539 
1540  // Now, calculate boundary box corners position for the actual pin orientation
1541  int orient = PinDrawOrient( DefaultTransform );
1542 
1543  /* Calculate the pin position */
1544  switch( orient )
1545  {
1546  case PIN_UP:
1547  // Pin is rotated and texts positions are mirrored
1548  RotatePoint( &begin, wxPoint( 0, 0 ), -900 );
1549  RotatePoint( &end, wxPoint( 0, 0 ), -900 );
1550  break;
1551 
1552  case PIN_DOWN:
1553  RotatePoint( &begin, wxPoint( 0, 0 ), 900 );
1554  RotatePoint( &end, wxPoint( 0, 0 ), 900 );
1555  begin.x = -begin.x;
1556  end.x = -end.x;
1557  break;
1558 
1559  case PIN_LEFT:
1560  begin.x = -begin.x;
1561  end.x = -end.x;
1562  break;
1563 
1564  case PIN_RIGHT:
1565  break;
1566  }
1567 
1568  begin += m_position;
1569  end += m_position;
1570 
1571  bbox.SetOrigin( begin );
1572  bbox.SetEnd( end );
1573  bbox.Normalize();
1574  bbox.Inflate( ( GetPenSize() / 2 ) + 1 );
1575 
1576  // Draw Y axis is reversed in schematic:
1577  bbox.RevertYAxis();
1578 
1579  return bbox;
1580 }
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:183
static int ExternalPinDecoSize(const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:142
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
int GetPinNameOffset()
int m_numTextSize
Definition: lib_pin.h:79
TRANSFORM DefaultTransform
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
wxString m_name
Definition: lib_pin.h:77
Definition: lib_pin.h:58
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:208
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:1201
int m_length
Length of the pin.
Definition: lib_pin.h:71
void RevertYAxis()
Function RevertYAxis Mirror the rectangle from the X axis (negate Y pos and size)
Definition: eda_rect.h:209
bool ShowPinNames()
int GetPenSize() const override
Definition: lib_pin.cpp:537
bool ShowPinNumbers()
wxString m_number
Definition: lib_pin.h:78
void SetEnd(int x, int y)
Definition: eda_rect.h:192
Define a library symbol object.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
void Normalize()
Function Normalize ensures that the height ant width are positive.
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:66
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:61
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:46
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.

References DefaultTransform, ExternalPinDecoSize(), GetPenSize(), LIB_PART::GetPinNameOffset(), EDA_RECT::Inflate(), INVERTED, INVERTED_CLOCK, IsVisible(), KiROUND(), m_length, m_name, m_nameTextSize, m_number, m_numTextSize, EDA_ITEM::m_Parent, m_position, m_shape, EDA_RECT::Normalize(), PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, PinDrawOrient(), EDA_RECT::RevertYAxis(), RotatePoint(), EDA_RECT::SetEnd(), EDA_RECT::SetOrigin(), LIB_PART::ShowPinNames(), LIB_PART::ShowPinNumbers(), TARGET_PIN_RADIUS, wxPoint::x, and wxPoint::y.

◆ GetCanonicalElectricalTypeName() [1/2]

const wxString LIB_PIN::GetCanonicalElectricalTypeName ( ELECTRICAL_PINTYPE  aType)
static

return a string giving the electrical type of a pin.

Can be used when a known, not translated name is needed (for instance in net lists)

Parameters
aTypeis the electrical type (see enum ELECTRICAL_PINTYPE )
Returns
The electrical name for a pin type (see enun MsgPinElectricType for names).

Definition at line 79 of file lib_pin.cpp.

80 {
81  // These strings are the canonical name of the electrictal type
82  // Not translated, no space in name, only ASCII chars.
83  // to use when the string name must be known and well defined
84  // must have same order than enum ELECTRICAL_PINTYPE (see lib_pin.h)
85  static const wxChar* msgPinElectricType[] =
86  {
87  wxT( "input" ),
88  wxT( "output" ),
89  wxT( "BiDi" ),
90  wxT( "3state" ),
91  wxT( "passive" ),
92  wxT( "unspc" ),
93  wxT( "power_in" ),
94  wxT( "power_out" ),
95  wxT( "openCol" ),
96  wxT( "openEm" ),
97  wxT( "NotConnected" )
98  };
99 
100  return msgPinElectricType[static_cast<int>( aType )];
101 }

◆ GetCanonicalElectricalTypeName() [2/2]

wxString const LIB_PIN::GetCanonicalElectricalTypeName ( ) const
inline

return a string giving the electrical type of the pin.

Can be used when a known, not translated name is needed (for instance in net lists)

Returns
The canonical electrical name of the pin.

Definition at line 250 of file lib_pin.h.

251  {
253  }
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
wxString const GetCanonicalElectricalTypeName() const
return a string giving the electrical type of the pin.
Definition: lib_pin.h:250

References m_type.

◆ GetClass()

wxString LIB_PIN::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Implements EDA_ITEM.

Definition at line 101 of file lib_pin.h.

102  {
103  return wxT( "LIB_PIN" );
104  }

◆ GetConvert()

◆ GetDefaultColor()

COLOR4D LIB_ITEM::GetDefaultColor ( )
virtualinherited

Reimplemented in LIB_FIELD.

Definition at line 152 of file lib_item.cpp.

153 {
154  return GetLayerColor( LAYER_DEVICE );
155 }
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper for all the old plotting/printing code while it still exists.

References GetLayerColor(), and LAYER_DEVICE.

Referenced by LIB_TEXT::print().

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 262 of file base_struct.h.

263  {
267  return m_Flags & mask;
268  }
#define TEMP_SELECTED
flag indicating that the structure has already selected
Definition: base_struct.h:128
#define END_ONPAD
Pcbnew: flag set for track segment ending on a pad.
Definition: base_struct.h:139
#define BEGIN_ONPAD
Pcbnew: flag set for track segment starting on a pad.
Definition: base_struct.h:138
#define EDA_ITEM_ALL_FLAGS
Definition: base_struct.h:157
#define SELECTED
Definition: base_struct.h:127
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:143
#define DP_COUPLED
item is coupled with another item making a differential pair
Definition: base_struct.h:145
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
#define IS_DANGLING
indicates a pin is dangling
Definition: base_struct.h:149
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:126
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:125

References BEGIN_ONPAD, BRIGHTENED, DP_COUPLED, EDA_ITEM_ALL_FLAGS, END_ONPAD, ENDPOINT, HIGHLIGHTED, IS_DANGLING, EDA_ITEM::m_Flags, SELECTED, STARTPOINT, and TEMP_SELECTED.

Referenced by SCH_EDIT_TOOL::ChangeShape(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::ConvertTextType(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditWithLibEdit(), LIB_MOVE_TOOL::Main(), POINT_EDITOR::OnSelectionChange(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_EDIT_PIN::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow(), and SCH_EDIT_FRAME::TrimWire().

◆ GetElectricalTypeName()

wxString const LIB_PIN::GetElectricalTypeName ( ) const
inline

return a translated string for messages giving the electrical type of the pin.

Returns
The electrical name of the pin.

Definition at line 259 of file lib_pin.h.

260  {
261  return GetText( m_type );
262  }
wxString GetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:58
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75

References GetText(), and m_type.

Referenced by KIGFX::SCH_PAINTER::draw(), GetSelectMenuText(), and PrintPinElectricalTypeName().

◆ GetFillMode()

◆ GetFlags()

◆ GetLength()

◆ GetMenuImage()

BITMAP_DEF LIB_PIN::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 1623 of file lib_pin.cpp.

1624 {
1625  return GetBitmap( m_type );
1626 }
BITMAP_DEF GetBitmap(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:68
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75

References GetBitmap(), and m_type.

◆ GetMsgPanelInfo() [1/2]

void LIB_PIN::GetMsgPanelInfo ( EDA_UNITS  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Display basic info (type, part and convert) about the current item in message panel.

This base function is used to display the information common to the all library items. Call the base class from the derived class or the common information will not be updated in the message panel.

Parameters
aListis the list to populate.

Reimplemented from LIB_ITEM.

Referenced by LIB_PIN_TOOL::EditPinProperties(), and SCH_PIN::GetMsgPanelInfo().

◆ GetMsgPanelInfo() [2/2]

void LIB_PIN::GetMsgPanelInfo ( EDA_UNITS  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList,
SCH_COMPONENT aComponent 
)

Display pin info (given by GetMsgPanelInfo) and add some info related to aComponent (schematic pin position, and sheet path)

Parameters
aListis the message list to fill
aComponentis the component which "owns" the pin

Definition at line 1439 of file lib_pin.cpp.

1441 {
1442  getMsgPanelInfoBase( aUnits, aList );
1443 
1444  if( !aComponent )
1445  return;
1446 
1447  wxString text;
1448  wxPoint pinpos = aComponent->GetTransform().TransformCoordinate( GetPosition() )
1449  + aComponent->GetPosition();
1450 
1451  text = MessageTextFromValue( aUnits, pinpos.x, true );
1452  aList.emplace_back( _( "Pos X" ), text, DARKMAGENTA );
1453 
1454  text = MessageTextFromValue( aUnits, pinpos.y, true );
1455  aList.emplace_back( _( "Pos Y" ), text, DARKMAGENTA );
1456 
1457  aList.emplace_back( aComponent->GetField( REFERENCE )->GetShownText(),
1458  aComponent->GetField( VALUE )->GetShownText(), DARKCYAN );
1459 
1460 #if defined(DEBUG)
1461 
1462  auto conn = aComponent->GetConnectionForPin( this, *g_CurrentSheet );
1463 
1464  if( conn )
1465  conn->AppendDebugInfoToMsgPanel( aList );
1466 
1467 #endif
1468 }
Field Reference of part, i.e. "IC21".
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
#define VALUE
SCH_SHEET_PATH * g_CurrentSheet
With the new connectivity algorithm, many more places than before want to know what the current sheet...
TRANSFORM & GetTransform() const
SCH_CONNECTION * GetConnectionForPin(LIB_PIN *aPin, const SCH_SHEET_PATH &aSheet)
Retrieves the connection for a given pin of the component.
void AppendDebugInfoToMsgPanel(MSG_PANEL_ITEMS &aList) const
Adds extended debug information about the connection object to aList.
wxPoint GetPosition() const override
Definition: lib_pin.h:432
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aUseMils, EDA_DATA_TYPE aType)
Definition: base_units.cpp:127
void getMsgPanelInfoBase(EDA_UNITS aUnits, std::vector< MSG_PANEL_ITEM > &aList)
Build the pin basic info to display in message panel.
Definition: lib_pin.cpp:1399
#define _(s)
Definition: 3d_actions.cpp:33
wxPoint GetPosition() const override
Function GetPosition.
virtual wxString GetShownText() const
Return the string actually shown after processing of the base text.
Definition: eda_text.h:129

References _, SCH_CONNECTION::AppendDebugInfoToMsgPanel(), DARKCYAN, DARKMAGENTA, g_CurrentSheet, SCH_COMPONENT::GetConnectionForPin(), SCH_COMPONENT::GetField(), getMsgPanelInfoBase(), GetPosition(), SCH_COMPONENT::GetPosition(), EDA_TEXT::GetShownText(), SCH_COMPONENT::GetTransform(), MessageTextFromValue(), REFERENCE, TRANSFORM::TransformCoordinate(), VALUE, wxPoint::x, and wxPoint::y.

◆ getMsgPanelInfoBase()

void LIB_PIN::getMsgPanelInfoBase ( EDA_UNITS  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
private

Build the pin basic info to display in message panel.

they are pin info without the actual pin position, which is not known in schematic without knowing the parent component

Definition at line 1399 of file lib_pin.cpp.

1400 {
1401  wxString text = m_number.IsEmpty() ? wxT( "?" ) : m_number;
1402 
1403  LIB_ITEM::GetMsgPanelInfo( aUnits, aList );
1404 
1405  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), m_name, DARKCYAN ) );
1406  aList.push_back( MSG_PANEL_ITEM( _( "Number" ), text, DARKCYAN ) );
1407  aList.push_back( MSG_PANEL_ITEM( _( "Type" ), GetText( m_type ), RED ) );
1408 
1409  text = GetText( m_shape );
1410  aList.push_back( MSG_PANEL_ITEM( _( "Style" ), text, BLUE ) );
1411 
1412  text = IsVisible() ? _( "Yes" ) : _( "No" );
1413  aList.push_back( MSG_PANEL_ITEM( _( "Visible" ), text, DARKGREEN ) );
1414 
1415  // Display pin length
1416  text = StringFromValue( aUnits, m_length, true );
1417  aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text, MAGENTA ) );
1418 
1420  aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text, DARKMAGENTA ) );
1421 }
Definition: colors.h:57
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
void GetMsgPanelInfo(EDA_UNITS aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
Display basic info (type, part and convert) about the current item in message panel.
Definition: lib_item.cpp:52
static const wxString getPinOrientationName(unsigned aPinOrientationCode)
Definition: lib_pin.cpp:108
static int GetOrientationIndex(int aCode)
Get the index of the orientation code.
Definition: lib_pin.cpp:1603
Definition: colors.h:61
wxString StringFromValue(EDA_UNITS aUnits, double aValue, bool aAddUnitSymbol, bool aUseMils)
Function StringFromValue returns the string from aValue according to units (inch, mm ....
Definition: base_units.cpp:234
wxString m_name
Definition: lib_pin.h:77
int m_length
Length of the pin.
Definition: lib_pin.h:71
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxString m_number
Definition: lib_pin.h:78
wxString GetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:58
Definition: colors.h:60
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
#define _(s)
Definition: 3d_actions.cpp:33
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53

References _, BLUE, DARKCYAN, DARKGREEN, DARKMAGENTA, LIB_ITEM::GetMsgPanelInfo(), GetOrientationIndex(), getPinOrientationName(), GetText(), IsVisible(), m_length, m_name, m_number, m_orientation, m_shape, m_type, MAGENTA, RED, and StringFromValue().

Referenced by GetMsgPanelInfo().

◆ GetName()

◆ GetNameTextSize()

◆ GetNumber()

◆ GetNumberTextSize()

◆ GetOrientation()

◆ GetOrientationCode()

int LIB_PIN::GetOrientationCode ( int  aIndex)
static

Get the orientation code by index used to set the pin orientation.

Parameters
aIndex- The index of the orientation code to look up.
Returns
Orientation code if index is valid. Returns right orientation on index error.

Definition at line 1594 of file lib_pin.cpp.

1595 {
1596  if( index >= 0 && index < (int) PIN_ORIENTATION_CNT )
1597  return pin_orientation_codes[ index ];
1598 
1599  return PIN_RIGHT;
1600 }
static const int pin_orientation_codes[]
Definition: lib_pin.cpp:56
#define PIN_ORIENTATION_CNT
Definition: lib_pin.cpp:63

References PIN_ORIENTATION_CNT, pin_orientation_codes, and PIN_RIGHT.

Referenced by DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), PIN_TABLE_DATA_MODEL::SetValue(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ GetOrientationIndex()

int LIB_PIN::GetOrientationIndex ( int  aCode)
static

Get the index of the orientation code.

Parameters
aCode- The orientation code to look up.
Returns
The index of the orientation code if found. Otherwise, return wxNOT_FOUND.

Definition at line 1603 of file lib_pin.cpp.

1604 {
1605  size_t i;
1606 
1607  for( i = 0; i < PIN_ORIENTATION_CNT; i++ )
1608  {
1609  if( pin_orientation_codes[i] == code )
1610  return (int) i;
1611  }
1612 
1613  return wxNOT_FOUND;
1614 }
static const int pin_orientation_codes[]
Definition: lib_pin.cpp:56
#define PIN_ORIENTATION_CNT
Definition: lib_pin.cpp:63

References PIN_ORIENTATION_CNT, and pin_orientation_codes.

Referenced by getMsgPanelInfoBase(), PIN_TABLE_DATA_MODEL::GetValue(), and DIALOG_LIB_EDIT_PIN::TransferDataToWindow().

◆ GetOrientationNames()

wxArrayString LIB_PIN::GetOrientationNames ( void  )
static

Get a list of pin orientation names.

Returns
List of valid pin orientation names.

Definition at line 1583 of file lib_pin.cpp.

1584 {
1585  wxArrayString tmp;
1586 
1587  for( unsigned ii = 0; ii < PIN_ORIENTATION_CNT; ii++ )
1588  tmp.Add( getPinOrientationName( ii ) );
1589 
1590  return tmp;
1591 }
static const wxString getPinOrientationName(unsigned aPinOrientationCode)
Definition: lib_pin.cpp:108
#define PIN_ORIENTATION_CNT
Definition: lib_pin.cpp:63

References getPinOrientationName(), and PIN_ORIENTATION_CNT.

Referenced by DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), and DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE().

◆ GetOrientationSymbols()

const BITMAP_DEF * LIB_PIN::GetOrientationSymbols ( )
static

Get a list of pin orientation bitmaps for menus and dialogs.

Returns
List of valid pin orientation bitmaps symbols in .xpm format

Definition at line 1617 of file lib_pin.cpp.

1618 {
1619  return iconsPinsOrientations;
1620 }
static const BITMAP_DEF iconsPinsOrientations[]
Definition: lib_pin.cpp:70

References iconsPinsOrientations.

Referenced by DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), and DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE().

◆ GetParent()

◆ GetPartNumber()

int LIB_PIN::GetPartNumber ( ) const
inline

Get the pin part number.

Definition at line 299 of file lib_pin.h.

299 { return m_Unit; }
int m_Unit
Unit identification for multiple parts per package.
Definition: lib_item.h:81

References LIB_ITEM::m_Unit.

◆ GetPenSize()

int LIB_PIN::GetPenSize ( ) const
overridevirtual
Returns
the size of the "pen" that be used to draw or plot this item

Implements LIB_ITEM.

Definition at line 537 of file lib_pin.cpp.

538 {
539  if( m_width > 0 )
540  return m_width;
541 
542  if( m_width == 0 )
543  return GetDefaultLineThickness();
544 
545  return 0;
546 }
int GetDefaultLineThickness()
Default line thickness used to draw/plot items having a default thickness line value (i....
int m_width
Line width of the pin.
Definition: lib_pin.h:74

References GetDefaultLineThickness(), and m_width.

Referenced by GetBoundingBox(), Plot(), PlotPinTexts(), PlotSymbol(), PrintPinSymbol(), and PrintPinTexts().

◆ GetPosition()

◆ GetSelectMenuText()

wxString LIB_PIN::GetSelectMenuText ( EDA_UNITS  aUnits) 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 1629 of file lib_pin.cpp.

1630 {
1631  return wxString::Format( _( "Pin %s, %s, %s" ),
1632  m_number,
1634  GetText( m_shape ));
1635 }
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
wxString m_number
Definition: lib_pin.h:78
wxString const GetElectricalTypeName() const
return a translated string for messages giving the electrical type of the pin.
Definition: lib_pin.h:259
wxString GetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:58
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
#define _(s)
Definition: 3d_actions.cpp:33

References _, Format(), GetElectricalTypeName(), GetText(), m_number, and m_shape.

Referenced by SCH_PIN::GetSelectMenuText(), and Matches().

◆ GetShape()

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 241 of file base_struct.h.

242  {
243  return m_Status & type;
244  }
STATUS_FLAGS m_Status
Definition: base_struct.h:179

References EDA_ITEM::m_Status.

Referenced by SELECTION_TOOL::expandConnection(), TRACK::GetMsgPanelInfoBase_Common(), TRACK::IsLocked(), TRACK::Print(), and ZONE_CONTAINER::PrintFilledArea().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 254 of file base_struct.h.

254 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:179

References EDA_ITEM::m_Status.

Referenced by PCB_IO::format().

◆ GetType()

ELECTRICAL_PINTYPE LIB_PIN::GetType ( ) const
inline

Get the electrical type of the pin.

Returns
The electrical type of the pin (see enum ELECTRICAL_PINTYPE for values).

Definition at line 235 of file lib_pin.h.

235 { return m_type; }
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75

References m_type.

Referenced by KIGFX::SCH_PAINTER::draw(), LIB_PIN_TOOL::EditPinProperties(), SCH_PIN::GetType(), IsPowerConnection(), DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), LIB_PIN_TOOL::PlacePin(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), and DIALOG_LIB_EDIT_PIN::TransferDataToWindow().

◆ GetTypeName()

wxString LIB_PIN::GetTypeName ( )
inlineoverridevirtual

Provide a user-consumable name of the object type.

Perform localization when called so that run-time language selection works.

Implements LIB_ITEM.

Definition at line 106 of file lib_pin.h.

107  {
108  return _( "Pin" );
109  }
#define _(s)
Definition: 3d_actions.cpp:33

References _.

◆ GetUnit()

◆ GetWidth()

int LIB_PIN::GetWidth ( ) const
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 449 of file lib_pin.h.

449 { return m_width; }
int m_width
Line width of the pin.
Definition: lib_pin.h:74

References m_width.

◆ HasFlag()

◆ HitTest() [1/2]

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

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

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

Reimplemented from LIB_ITEM.

Definition at line 529 of file lib_pin.cpp.

530 {
531  EDA_RECT rect = GetBoundingBox();
532 
533  return rect.Inflate( aAccuracy ).Contains( aPosition );
534 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:131
bool Contains(const wxPoint &aPoint) const
Function Contains.
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.

References EDA_RECT::Contains(), GetBoundingBox(), and EDA_RECT::Inflate().

◆ HitTest() [2/2]

bool LIB_ITEM::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
overridevirtualinherited

Function HitTest tests if aRect intersects or is contained within the bounding box of an item.

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

Reimplemented from EDA_ITEM.

Reimplemented in LIB_POLYLINE, and LIB_TEXT.

Definition at line 119 of file lib_item.cpp.

120 {
121  if( m_Flags & ( STRUCT_DELETED | SKIP_STRUCT ) )
122  return false;
123 
124  EDA_RECT sel = aRect;
125 
126  if ( aAccuracy )
127  sel.Inflate( aAccuracy );
128 
129  if( aContained )
130  return sel.Contains( GetBoundingBox() );
131 
132  return sel.Intersects( GetBoundingBox() );
133 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_item.h:204
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:131
bool Contains(const wxPoint &aPoint) const
Function Contains.
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:129
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.

References EDA_RECT::Contains(), LIB_ITEM::GetBoundingBox(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), EDA_ITEM::m_Flags, SKIP_STRUCT, and STRUCT_DELETED.

◆ Inside()

bool LIB_PIN::Inside ( EDA_RECT aRect) const
overridevirtual

Test if any part of the draw object is inside rectangle bounds of aRect.

Parameters
aRectRectangle to check against.
Returns
True if object is inside rectangle.

Implements LIB_ITEM.

Definition at line 1302 of file lib_pin.cpp.

1303 {
1304  wxPoint end = PinEndPoint();
1305 
1306  return rect.Contains( m_position.x, -m_position.y ) || rect.Contains( end.x, -end.y );
1307 }
wxPoint PinEndPoint() const
Definition: lib_pin.cpp:1185
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References EDA_RECT::Contains(), m_position, PinEndPoint(), wxPoint::x, and wxPoint::y.

◆ IsBrightened()

bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 223 of file base_struct.h.

223 { return m_Flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: base_struct.h:122
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References IS_DRAGGED, and EDA_ITEM::m_Flags.

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), KIGFX::SCH_PAINTER::setDeviceColors(), and ShowClearance().

◆ IsFillable()

bool LIB_ITEM::IsFillable ( ) const
inlineinherited

Check if draw object can be filled.

The default setting is false. If the derived object support filling, set the m_isFillable member to true.

Definition at line 304 of file lib_item.h.

304 { return m_isFillable; }
bool m_isFillable
Definition: lib_item.h:94

References LIB_ITEM::m_isFillable.

Referenced by LIB_EDIT_TOOL::editGraphicProperties(), formatFill(), and DIALOG_LIB_EDIT_DRAW_ITEM::TransferDataToWindow().

◆ IsHighlighted()

bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 227 of file base_struct.h.

227 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References HIGHLIGHTED, and EDA_ITEM::m_Flags.

Referenced by SCH_COMPONENT::ClearAllHighlightFlags(), KIGFX::SCH_PAINTER::draw(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), and KIGFX::SCH_VIEW::HighlightItem().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 221 of file base_struct.h.

221 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:116
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References IS_CHANGED, and EDA_ITEM::m_Flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsPowerConnection()

bool LIB_PIN::IsPowerConnection ( ) const
inline

Return whether this pin forms an implicit power connection: i.e., is hidden and of type POWER_IN.

Definition at line 352 of file lib_pin.h.

353  {
355  && ( !IsVisible() || (LIB_PART*) GetParent()->IsPower() );
356  }
power input (GND, VCC for ICs). Must be connected to a power output.
LIB_PART * GetParent() const
Definition: lib_item.h:185
Define a library symbol object.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
ELECTRICAL_PINTYPE GetType() const
Get the electrical type of the pin.
Definition: lib_pin.h:235
bool IsPower() const

References LIB_ITEM::GetParent(), GetType(), LIB_PART::IsPower(), IsVisible(), and PT_POWER_IN.

Referenced by KIGFX::SCH_PAINTER::draw(), SCH_PIN::GetDefaultNetName(), and SCH_PIN::IsPowerConnection().

◆ IsReplaceable()

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_TEXT, SCH_SHEET_PIN, and SCH_FIELD.

Definition at line 517 of file base_struct.h.

517 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 226 of file base_struct.h.

226 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:121

References IS_RESIZED, and EDA_ITEM::m_Flags.

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

◆ IsSelected()

◆ IsType()

virtual bool EDA_ITEM::IsType ( const KICAD_T  aScanTypes[]) const
inlinevirtualinherited

Function IsType Checks whether the item is one of the listed types.

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

Reimplemented in SCH_LABEL, SCH_FIELD, and SCH_LINE.

Definition at line 286 of file base_struct.h.

287  {
288  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
289  return true;
290 
291  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
292  {
293  if( m_StructType == *p )
294  return true;
295  }
296 
297  return false;
298  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:178
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78

References EOT, EDA_ITEM::m_StructType, and SCH_LOCATE_ANY_T.

Referenced by SCH_LINE_WIRE_BUS_TOOL::IsDrawingBus(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLine(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingWire(), SCH_LINE::IsType(), SCH_FIELD::IsType(), SCH_LABEL::IsType(), EE_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EDA_ITEM::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsVisible()

bool LIB_PIN::IsVisible ( ) const
inline

Return the visibility status of the draw object.

Returns
True if draw object is visible otherwise false.

Definition at line 346 of file lib_pin.h.

346 { return ( m_attributes & PIN_INVISIBLE ) == 0; }
#define PIN_INVISIBLE
Definition: lib_pin.h:49
int m_attributes
Set bit 0 to indicate pin is invisible.
Definition: lib_pin.h:76

References m_attributes, and PIN_INVISIBLE.

Referenced by KIGFX::SCH_PAINTER::draw(), LIB_PIN_TOOL::EditPinProperties(), GetBoundingBox(), getMsgPanelInfoBase(), IsPowerConnection(), SCH_PIN::IsVisible(), Plot(), print(), PrintPinElectricalTypeName(), PrintPinSymbol(), PrintPinTexts(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SetVisible(), and DIALOG_LIB_EDIT_PIN::TransferDataToWindow().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 224 of file base_struct.h.

224 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:124
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References IS_WIRE_IMAGE, and EDA_ITEM::m_Flags.

◆ IterateForward() [1/2]

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

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

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

Definition at line 399 of file base_struct.h.

403  {
404  for( auto it : aList )
405  {
406  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
408  return SEARCH_RESULT::QUIT;
409  }
410 
412  }
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...

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

Referenced by GERBER_FILE_IMAGE::Visit(), and BOARD::Visit().

◆ IterateForward() [2/2]

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

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

This changes first parameter to avoid the DList and use std::vector instead

Definition at line 420 of file base_struct.h.

422  {
423  for( auto it : aList )
424  {
425  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
427  return SEARCH_RESULT::QUIT;
428  }
429 
431  }
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...

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

◆ Matches() [1/2]

bool LIB_PIN::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData 
)
overridevirtual

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.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented from EDA_ITEM.

Definition at line 1638 of file lib_pin.cpp.

1639 {
1640  wxLogTrace( traceFindItem, wxT( " item " ) + GetSelectMenuText( EDA_UNITS::MILLIMETRES ) );
1641 
1642  // Note: this will have to be modified if we add find and replace capability to the
1643  // compoment library editor. Otherwise, you wont be able to replace pin text.
1644  if( !( aSearchData.GetFlags() & FR_SEARCH_ALL_PINS )
1645  || ( aSearchData.GetFlags() & FR_SEARCH_REPLACE ) )
1646  return false;
1647 
1648  wxLogTrace(
1649  traceFindItem, wxT( " child item " ) + GetSelectMenuText( EDA_UNITS::MILLIMETRES ) );
1650 
1651  return EDA_ITEM::Matches( GetName(), aSearchData )
1652  || EDA_ITEM::Matches( m_number, aSearchData );
1653 }
wxString GetSelectMenuText(EDA_UNITS aUnits) const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
Definition: lib_pin.cpp:1629
wxString m_number
Definition: lib_pin.h:78
const wxString & GetName() const
Definition: lib_pin.h:152
const wxChar *const traceFindItem
Flag to enable find debug tracing.
virtual bool Matches(wxFindReplaceData &aSearchData, void *aAuxData)
Function Matches compares the item against the search criteria in aSearchData.
Definition: base_struct.h:473

References FR_SEARCH_ALL_PINS, FR_SEARCH_REPLACE, GetName(), GetSelectMenuText(), m_number, EDA_ITEM::Matches(), MILLIMETRES, and traceFindItem.

Referenced by SCH_PIN::Matches().

◆ Matches() [2/2]

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 152 of file base_struct.cpp.

153 {
154  wxString text = aText;
155  wxString searchText = aSearchData.GetFindString();
156 
157  // Don't match if searching for replaceable item and the item doesn't support text replace.
158  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
159  return false;
160 
161  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
162  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
163 
164  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
165  {
166  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
167  return text.Matches( searchText );
168 
169  return text.MakeUpper().Matches( searchText.MakeUpper() );
170  }
171 
172  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
173  return aText.Find( searchText ) != wxNOT_FOUND;
174 
175  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
176 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:517

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

◆ MirrorHorizontal()

void LIB_PIN::MirrorHorizontal ( const wxPoint aCenter)
overridevirtual

Mirror the draw object along the horizontal (X) axis about aCenter point.

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 1320 of file lib_pin.cpp.

1321 {
1322  m_position.x -= center.x;
1323  m_position.x *= -1;
1324  m_position.x += center.x;
1325 
1326  if( m_orientation == PIN_RIGHT )
1328  else if( m_orientation == PIN_LEFT )
1330 }
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_orientation, m_position, PIN_LEFT, PIN_RIGHT, and wxPoint::x.

◆ MirrorVertical()

void LIB_PIN::MirrorVertical ( const wxPoint aCenter)
overridevirtual

Mirror the draw object along the MirrorVertical (Y) axis about aCenter point.

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 1332 of file lib_pin.cpp.

1333 {
1334  m_position.y -= center.y;
1335  m_position.y *= -1;
1336  m_position.y += center.y;
1337 
1338  if( m_orientation == PIN_UP )
1340  else if( m_orientation == PIN_DOWN )
1342 }
Definition: lib_pin.h:58
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_orientation, m_position, PIN_DOWN, PIN_UP, and wxPoint::y.

◆ MoveTo()

void LIB_PIN::MoveTo ( const wxPoint aPosition)
overridevirtual

Move a draw object to aPosition.

Parameters
aPositionPosition to move draw item to.

Implements LIB_ITEM.

Definition at line 1310 of file lib_pin.cpp.

1311 {
1312  if( m_position != newPosition )
1313  {
1314  m_position = newPosition;
1315  SetModified();
1316  }
1317 }
void SetModified()
Definition: base_struct.cpp:94
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_position, and EDA_ITEM::SetModified().

Referenced by CalcEdit(), and LIB_PIN_TOOL::CreatePin().

◆ Offset()

void LIB_PIN::Offset ( const wxPoint aOffset)
overridevirtual

Set the drawing object by aOffset from the current position.

Parameters
aOffsetCoordinates to offset the item position.

Implements LIB_ITEM.

Definition at line 1296 of file lib_pin.cpp.

1297 {
1298  m_position += aOffset;
1299 }
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_position.

Referenced by LIB_PIN_TOOL::RepeatPin().

◆ operator<() [1/2]

bool LIB_ITEM::operator< ( const LIB_ITEM aOther) const
inherited

Test if another draw item is less than this draw object.

Parameters
aOther- Draw item to compare against.
Returns
- True if object is less than this object.

Definition at line 98 of file lib_item.cpp.

99 {
100  int result = m_Convert - aOther.m_Convert;
101 
102  if( result != 0 )
103  return result < 0;
104 
105  result = m_Unit - aOther.m_Unit;
106 
107  if( result != 0 )
108  return result < 0;
109 
110  result = Type() - aOther.Type();
111 
112  if( result != 0 )
113  return result < 0;
114 
115  return ( compare( aOther ) < 0 );
116 }
int m_Unit
Unit identification for multiple parts per package.
Definition: lib_item.h:81
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:76
KICAD_T Type() const
Function Type()
Definition: base_struct.h:212

References LIB_ITEM::compare(), LIB_ITEM::m_Convert, LIB_ITEM::m_Unit, and EDA_ITEM::Type().

◆ operator<() [2/2]

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 206 of file base_struct.cpp.

207 {
208  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
209  GetChars( GetClass() ) ) );
210 
211  return false;
212 }
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:101
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

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

◆ operator==() [1/2]

bool LIB_ITEM::operator== ( const LIB_ITEM aOther) const
inherited

Test LIB_ITEM objects for equivalence.

Parameters
aOtherObject to test against.
Returns
True if object is identical to this object.

Definition at line 92 of file lib_item.cpp.

93 {
94  return compare( aOther ) == 0;
95 }
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:76

References LIB_ITEM::compare().

◆ operator==() [2/2]

bool LIB_ITEM::operator== ( const LIB_ITEM aOther) const
inlineinherited

Definition at line 224 of file lib_item.h.

225  {
226  return *this == *aOther;
227  }

◆ PinDrawOrient()

int LIB_PIN::PinDrawOrient ( const TRANSFORM aTransform) const

Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation and the matrix transform (rot, mirror) aTransform.

Parameters
aTransformTransform matrix

Definition at line 1201 of file lib_pin.cpp.

1202 {
1203  int orient;
1204  wxPoint end; // position of pin end starting at 0,0 according to its orientation, length = 1
1205 
1206  switch( m_orientation )
1207  {
1208  case PIN_UP: end.y = 1; break;
1209  case PIN_DOWN: end.y = -1; break;
1210  case PIN_LEFT: end.x = -1; break;
1211  case PIN_RIGHT: end.x = 1; break;
1212  }
1213 
1214  // = pos of end point, according to the component orientation
1215  end = aTransform.TransformCoordinate( end );
1216  orient = PIN_UP;
1217 
1218  if( end.x == 0 )
1219  {
1220  if( end.y > 0 )
1221  orient = PIN_DOWN;
1222  }
1223  else
1224  {
1225  orient = PIN_RIGHT;
1226 
1227  if( end.x < 0 )
1228  orient = PIN_LEFT;
1229  }
1230 
1231  return orient;
1232 }
Definition: lib_pin.h:58
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72

References m_orientation, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, TRANSFORM::TransformCoordinate(), wxPoint::x, and wxPoint::y.

Referenced by AUTOPLACER::get_pin_side(), GetBoundingBox(), Plot(), and print().

◆ PinEndPoint()

wxPoint LIB_PIN::PinEndPoint ( ) const
Returns
The pin end position for a component in the normal orientation.

Definition at line 1185 of file lib_pin.cpp.

1186 {
1187  wxPoint pos = m_position;
1188 
1189  switch( m_orientation )
1190  {
1191  case PIN_UP: pos.y += m_length; break;
1192  case PIN_DOWN: pos.y -= m_length; break;
1193  case PIN_LEFT: pos.x -= m_length; break;
1194  case PIN_RIGHT: pos.x += m_length; break;
1195  }
1196 
1197  return pos;
1198 }
Definition: lib_pin.h:58
int m_length
Length of the pin.
Definition: lib_pin.h:71
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_length, m_orientation, m_position, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, wxPoint::x, and wxPoint::y.

Referenced by Inside().

◆ Plot()

void LIB_PIN::Plot ( PLOTTER aPlotter,
const wxPoint aOffset,
bool  aFill,
const TRANSFORM aTransform 
)
overridevirtual

Plot the draw item using the plot object.

Parameters
aPlotterThe plot object to plot to.
aOffsetPlot offset position.
aFillFlag to indicate whether or not the object is filled.
aTransformThe plot transform.

Implements LIB_ITEM.

Definition at line 1373 of file lib_pin.cpp.

1375 {
1376  if( ! IsVisible() )
1377  return;
1378 
1379  int orient = PinDrawOrient( aTransform );
1380 
1381  wxPoint pos = aTransform.TransformCoordinate( m_position ) + offset;
1382 
1383  PlotSymbol( plotter, pos, orient );
1384  PlotPinTexts( plotter, pos, orient, GetParent()->GetPinNameOffset(),
1385  GetParent()->ShowPinNumbers(), GetParent()->ShowPinNames(), GetPenSize() );
1386 }
LIB_PART * GetParent() const
Definition: lib_item.h:185
void PlotPinTexts(PLOTTER *aPlotter, wxPoint &aPosition, int aOrientation, int aTextInside, bool aDrawPinNum, bool aDrawPinName, int aWidth)
Plot the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:996
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:1201
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
int GetPenSize() const override
Definition: lib_pin.cpp:537
void PlotSymbol(PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation)
Definition: lib_pin.cpp:869
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References LIB_ITEM::GetParent(), GetPenSize(), IsVisible(), m_position, PinDrawOrient(), PlotPinTexts(), PlotSymbol(), and TRANSFORM::TransformCoordinate().

◆ PlotPinTexts()

void LIB_PIN::PlotPinTexts ( PLOTTER aPlotter,
wxPoint aPosition,
int  aOrientation,
int  aTextInside,
bool  aDrawPinNum,
bool  aDrawPinName,
int  aWidth 
)

Plot the pin number and pin text info, given the pin line coordinates.

Same as DrawPinTexts((), but output is the plotter The line must be vertical or horizontal. If TextInside then the text is been put inside (moving from x1, y1 in the opposite direction to x2,y2), otherwise all is drawn outside.

Definition at line 996 of file lib_pin.cpp.

999 {
1000  if( m_name.IsEmpty() || m_name == wxT( "~" ) )
1001  DrawPinName = false;
1002 
1003  if( m_number.IsEmpty() )
1004  DrawPinNum = false;
1005 
1006  if( !DrawPinNum && !DrawPinName )
1007  return;
1008 
1009  int x, y;
1010  wxSize PinNameSize = wxSize( m_nameTextSize, m_nameTextSize );
1011  wxSize PinNumSize = wxSize( m_numTextSize, m_numTextSize );
1012 
1013  int nameLineWidth = GetPenSize();
1014  nameLineWidth = Clamp_Text_PenSize( nameLineWidth, m_nameTextSize, false );
1015  int numLineWidth = GetPenSize();
1016  numLineWidth = Clamp_Text_PenSize( numLineWidth, m_numTextSize, false );
1017 
1018  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) +
1019  ( nameLineWidth + GetDefaultLineThickness() ) / 2;
1020  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) +
1021  ( numLineWidth + GetDefaultLineThickness() ) / 2;
1022 
1023  /* Get the num and name colors */
1024  COLOR4D NameColor = GetLayerColor( LAYER_PINNAM );
1025  COLOR4D NumColor = GetLayerColor( LAYER_PINNUM );
1026 
1027  int x1 = pin_pos.x;
1028  int y1 = pin_pos.y;
1029 
1030  switch( orient )
1031  {
1032  case PIN_UP: y1 -= m_length; break;
1033  case PIN_DOWN: y1 += m_length; break;
1034  case PIN_LEFT: x1 -= m_length; break;
1035  case PIN_RIGHT: x1 += m_length; break;
1036  }
1037 
1038  /* Draw the text inside, but the pin numbers outside. */
1039  if( TextInside )
1040  {
1041  if( (orient == PIN_LEFT) || (orient == PIN_RIGHT) ) /* Its an horizontal line. */
1042  {
1043  if( DrawPinName )
1044  {
1045  if( orient == PIN_RIGHT )
1046  {
1047  x = x1 + TextInside;
1048  plotter->Text( wxPoint( x, y1 ), NameColor,
1049  m_name,
1051  PinNameSize,
1054  aWidth, false, false );
1055  }
1056  else // orient == PIN_LEFT
1057  {
1058  x = x1 - TextInside;
1059 
1060  if( DrawPinName )
1061  plotter->Text( wxPoint( x, y1 ),
1062  NameColor, m_name, TEXT_ANGLE_HORIZ,
1063  PinNameSize,
1066  aWidth, false, false );
1067  }
1068  }
1069  if( DrawPinNum )
1070  {
1071  plotter->Text( wxPoint( (x1 + pin_pos.x) / 2,
1072  y1 - num_offset ),
1073  NumColor, m_number,
1074  TEXT_ANGLE_HORIZ, PinNumSize,
1077  aWidth, false, false );
1078  }
1079  }
1080  else /* Its a vertical line. */
1081  {
1082  if( orient == PIN_DOWN )
1083  {
1084  y = y1 + TextInside;
1085 
1086  if( DrawPinName )
1087  plotter->Text( wxPoint( x1, y ), NameColor,
1088  m_name,
1089  TEXT_ANGLE_VERT, PinNameSize,
1092  aWidth, false, false );
1093 
1094  if( DrawPinNum )
1095  {
1096  plotter->Text( wxPoint( x1 - num_offset,
1097  (y1 + pin_pos.y) / 2 ),
1098  NumColor, m_number,
1099  TEXT_ANGLE_VERT, PinNumSize,
1102  aWidth, false, false );
1103  }
1104  }
1105  else /* PIN_UP */
1106  {
1107  y = y1 - TextInside;
1108 
1109  if( DrawPinName )
1110  plotter->Text( wxPoint( x1, y ), NameColor,
1111  m_name,
1112  TEXT_ANGLE_VERT, PinNameSize,
1115  aWidth, false, false );
1116 
1117  if( DrawPinNum )
1118  {
1119  plotter->Text( wxPoint( x1 - num_offset,
1120  (y1 + pin_pos.y) / 2 ),
1121  NumColor, m_number,
1122  TEXT_ANGLE_VERT, PinNumSize,
1125  aWidth, false, false );
1126  }
1127  }
1128  }
1129  }
1130  else /* Draw num & text pin outside */
1131  {
1132  if( (orient == PIN_LEFT) || (orient == PIN_RIGHT) )
1133  {
1134  /* Its an horizontal line. */
1135  if( DrawPinName )
1136  {
1137  x = (x1 + pin_pos.x) / 2;
1138  plotter->Text( wxPoint( x, y1 - name_offset ),
1139  NameColor, m_name,
1140  TEXT_ANGLE_HORIZ, PinNameSize,
1143  aWidth, false, false );
1144  }
1145 
1146  if( DrawPinNum )
1147  {
1148  x = ( x1 + pin_pos.x ) / 2;
1149  plotter->Text( wxPoint( x, y1 + num_offset ),
1150  NumColor, m_number,
1151  TEXT_ANGLE_HORIZ, PinNumSize,
1154  aWidth, false, false );
1155  }
1156  }
1157  else /* Its a vertical line. */
1158  {
1159  if( DrawPinName )
1160  {
1161  y = ( y1 + pin_pos.y ) / 2;
1162  plotter->Text( wxPoint( x1 - name_offset, y ),
1163  NameColor, m_name,
1164  TEXT_ANGLE_VERT, PinNameSize,
1167  aWidth, false, false );
1168  }
1169 
1170  if( DrawPinNum )
1171  {
1172  plotter->Text( wxPoint( x1 + num_offset,
1173  ( y1 + pin_pos.y ) / 2 ),
1174  NumColor, m_number,
1175  TEXT_ANGLE_VERT, PinNumSize,
1178  aWidth, false, false );
1179  }
1180  }
1181  }
1182 }
#define TEXT_ANGLE_HORIZ
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
#define TEXT_ANGLE_VERT
int m_numTextSize
Definition: lib_pin.h:79
int GetDefaultLineThickness()
Default line thickness used to draw/plot items having a default thickness line value (i....
wxString m_name
Definition: lib_pin.h:77
Definition: lib_pin.h:58
int m_length
Length of the pin.
Definition: lib_pin.h:71
int GetPenSize() const override
Definition: lib_pin.cpp:537
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Function Clamp_Text_PenSize Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:81
wxString m_number
Definition: lib_pin.h:78
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper for all the old plotting/printing code while it still exists.
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:66
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References Clamp_Text_PenSize(), GetDefaultLineThickness(), GetLayerColor(), GetPenSize(), GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, LAYER_PINNAM, LAYER_PINNUM, m_length, m_name, m_nameTextSize, m_number, m_numTextSize, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, PLOTTER::Text(), TEXT_ANGLE_HORIZ, TEXT_ANGLE_VERT, wxPoint::x, and wxPoint::y.

Referenced by Plot().

◆ PlotSymbol()

void LIB_PIN::PlotSymbol ( PLOTTER aPlotter,
const wxPoint aPosition,
int  aOrientation 
)

Definition at line 869 of file lib_pin.cpp.

870 {
871  int MapX1, MapY1, x1, y1;
872  COLOR4D color = aPlotter->ColorSettings()->GetColor( LAYER_PIN );
873 
874  aPlotter->SetColor( color );
875  aPlotter->SetCurrentLineWidth( GetPenSize() );
876 
877  MapX1 = MapY1 = 0;
878  x1 = aPosition.x; y1 = aPosition.y;
879 
880  switch( aOrientation )
881  {
882  case PIN_UP: y1 = aPosition.y - m_length; MapY1 = 1; break;
883  case PIN_DOWN: y1 = aPosition.y + m_length; MapY1 = -1; break;
884  case PIN_LEFT: x1 = aPosition.x - m_length; MapX1 = 1; break;
885  case PIN_RIGHT: x1 = aPosition.x + m_length; MapX1 = -1; break;
886  }
887 
889  {
890  const int radius = ExternalPinDecoSize( *this );
891  aPlotter->Circle( wxPoint( MapX1 * radius + x1, MapY1 * radius + y1 ),
892  radius * 2, NO_FILL, GetPenSize() );
893 
894  aPlotter->MoveTo( wxPoint( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 ) );
895  aPlotter->FinishTo( aPosition );
896  }
898  {
899  const int deco_size = InternalPinDecoSize( *this );
900  if( MapY1 == 0 ) /* MapX1 = +- 1 */
901  {
902  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
903  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
904  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
905  }
906  else /* MapX1 = 0 */
907  {
908  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
909  aPlotter->LineTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
910  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
911  }
912 
913  aPlotter->MoveTo( wxPoint( MapX1 * deco_size * 2 + x1, MapY1 * deco_size * 2 + y1 ) );
914  aPlotter->FinishTo( aPosition );
915  }
916  else
917  {
918  aPlotter->MoveTo( wxPoint( x1, y1 ) );
919  aPlotter->FinishTo( aPosition );
920  }
921 
924  {
925  const int deco_size = InternalPinDecoSize( *this );
926  if( MapY1 == 0 ) /* MapX1 = +- 1 */
927  {
928  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
929  aPlotter->LineTo( wxPoint( x1 - MapX1 * deco_size * 2, y1 ) );
930  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
931  }
932  else /* MapX1 = 0 */
933  {
934  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
935  aPlotter->LineTo( wxPoint( x1, y1 - MapY1 * deco_size * 2 ) );
936  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
937  }
938  }
939 
941  || m_shape == GRAPHIC_PINSHAPE::CLOCK_LOW ) /* IEEE symbol "Active Low Input" */
942  {
943  const int deco_size = ExternalPinDecoSize( *this );
944 
945  if( MapY1 == 0 ) /* MapX1 = +- 1 */
946  {
947  aPlotter->MoveTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
948  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 - deco_size * 2 ) );
949  aPlotter->FinishTo( wxPoint( x1, y1 ) );
950  }
951  else /* MapX1 = 0 */
952  {
953  aPlotter->MoveTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
954  aPlotter->LineTo( wxPoint( x1 - deco_size * 2, y1 + MapY1 * deco_size * 2 ) );
955  aPlotter->FinishTo( wxPoint( x1, y1 ) );
956  }
957  }
958 
959 
960  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
961  {
962  const int symbol_size = ExternalPinDecoSize( *this );
963 
964  if( MapY1 == 0 ) /* MapX1 = +- 1 */
965  {
966  aPlotter->MoveTo( wxPoint( x1, y1 - symbol_size * 2 ) );
967  aPlotter->FinishTo( wxPoint( x1 + MapX1 * symbol_size * 2, y1 ) );
968  }
969  else /* MapX1 = 0 */
970  {
971  aPlotter->MoveTo( wxPoint( x1 - symbol_size * 2, y1 ) );
972  aPlotter->FinishTo( wxPoint( x1, y1 + MapY1 * symbol_size * 2 ) );
973  }
974  }
975  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
976  {
977  const int deco_size = ExternalPinDecoSize( *this );
978  aPlotter->MoveTo( wxPoint( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size ) );
979  aPlotter->FinishTo( wxPoint( x1 + (MapX1 + MapY1) * deco_size, y1 + (MapY1 - MapX1) * deco_size ) );
980  aPlotter->MoveTo( wxPoint( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size ) );
981  aPlotter->FinishTo( wxPoint( x1 + (MapX1 - MapY1) * deco_size, y1 + (MapY1 + MapX1) * deco_size ) );
982  }
983  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
984  {
985  const int deco_size = TARGET_PIN_RADIUS;
986  const int ex1 = aPosition.x;
987  const int ey1 = aPosition.y;
988  aPlotter->MoveTo( wxPoint( ex1 - deco_size, ey1 - deco_size ) );
989  aPlotter->FinishTo( wxPoint( ex1 + deco_size, ey1 + deco_size ) );
990  aPlotter->MoveTo( wxPoint( ex1 + deco_size, ey1 - deco_size ) );
991  aPlotter->FinishTo( wxPoint( ex1 - deco_size, ey1 + deco_size ) );
992  }
993 }
void FinishTo(const wxPoint &pos)
Definition: plotter.h:283
static int ExternalPinDecoSize(const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:142
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
virtual void SetColor(COLOR4D color)=0
int color
Definition: DXF_plotter.cpp:61
Definition: lib_pin.h:58
int m_length
Length of the pin.
Definition: lib_pin.h:71
int GetPenSize() const override
Definition: lib_pin.cpp:537
void LineTo(const wxPoint &pos)
Definition: plotter.h:278
COLOR_SETTINGS * ColorSettings()
Definition: plotter.h:145
static int InternalPinDecoSize(const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:133
void MoveTo(const wxPoint &pos)
Definition: plotter.h:273
COLOR4D GetColor(int aLayer) const
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:46
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
not connected (must be left open)
virtual void Circle(const wxPoint &pos, int diametre, FILL_T fill, int width=USE_DEFAULT_LINE_WIDTH)=0
virtual void SetCurrentLineWidth(int width, void *aData=NULL)=0
Set the line width for the next drawing.
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References PLOTTER::Circle(), CLOCK, CLOCK_LOW, color, PLOTTER::ColorSettings(), ExternalPinDecoSize(), FALLING_EDGE_CLOCK, PLOTTER::FinishTo(), COLOR_SETTINGS::GetColor(), GetPenSize(), INPUT_LOW, InternalPinDecoSize(), INVERTED, INVERTED_CLOCK, LAYER_PIN, PLOTTER::LineTo(), m_length, m_shape, m_type, PLOTTER::MoveTo(), NO_FILL, NONLOGIC, OUTPUT_LOW, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, PT_NC, PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), TARGET_PIN_RADIUS, wxPoint::x, and wxPoint::y.

Referenced by Plot().

◆ print()

void LIB_PIN::print ( wxDC *  aDC,
const wxPoint aOffset,
void *  aData,
const TRANSFORM aTransform 
)
overrideprivatevirtual

Print a pin, with or without the pin texts.

Parameters
aDCDevice Context (can be null)
aOffsetOffset to draw
aData= used here as a boolean indicating whether or not to draw the pin electrical types
aTransformTransform Matrix (rotation, mirror ..)

Implements LIB_ITEM.

Definition at line 549 of file lib_pin.cpp.

550 {
551  PART_DRAW_OPTIONS* opts = (PART_DRAW_OPTIONS*) aData;
552  LIB_PART* part = GetParent();
553 
554  /* Calculate pin orient taking in account the component orientation. */
555  int orient = PinDrawOrient( aTransform );
556 
557  /* Calculate the pin position */
558  wxPoint pos1 = aTransform.TransformCoordinate( m_position ) + aOffset;
559 
560  if( IsVisible() || ( opts && opts->draw_hidden_fields ) )
561  {
562  PrintPinSymbol( aDC, pos1, orient );
563 
564  PrintPinTexts( aDC, pos1, orient, part->GetPinNameOffset(), part->ShowPinNumbers(),
565  part->ShowPinNames() );
566 
567  if( opts && opts->show_elec_type )
568  PrintPinElectricalTypeName( aDC, pos1, orient );
569  }
570 }
int GetPinNameOffset()
void PrintPinTexts(wxDC *aDC, wxPoint &aPosition, int aOrientation, int TextInside, bool DrawPinNum, bool DrawPinName)
Put the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:679
LIB_PART * GetParent() const
Definition: lib_item.h:185
void PrintPinElectricalTypeName(wxDC *aDC, wxPoint &aPosition, int aOrientation)
Draw the electrical type text of the pin (only for the footprint editor)
Definition: lib_pin.cpp:819
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:1201
bool draw_hidden_fields
Whether to draw "hidden" fields.
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
bool ShowPinNames()
bool ShowPinNumbers()
Define a library symbol object.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
bool show_elec_type
Whether to show the pin electrical type.
void PrintPinSymbol(wxDC *aDC, const wxPoint &aPos, int aOrientation)
Print the pin symbol without text.
Definition: lib_pin.cpp:573

References PART_DRAW_OPTIONS::draw_hidden_fields, LIB_ITEM::GetParent(), LIB_PART::GetPinNameOffset(), IsVisible(), m_position, PinDrawOrient(), PrintPinElectricalTypeName(), PrintPinSymbol(), PrintPinTexts(), PART_DRAW_OPTIONS::show_elec_type, LIB_PART::ShowPinNames(), LIB_PART::ShowPinNumbers(), and TRANSFORM::TransformCoordinate().

◆ Print()

void LIB_ITEM::Print ( wxDC *  aDC,
const wxPoint aOffset,
void *  aData,
const TRANSFORM aTransform 
)
virtualinherited

Draw an item.

Parameters
aDCDevice Context (can be null)
aOffsetOffset to draw
aDataValue or pointer used to pass others parameters, depending on body items. Used for some items to force to force no fill mode ( has meaning only for items what can be filled ). used in printing or moving objects mode or to pass reference to the lib component for pins.
aTransformTransform Matrix (rotation, mirror ..)

Definition at line 136 of file lib_item.cpp.

137 {
138  print( aDC, aOffset, aData, aTransform );
139 }
virtual void print(wxDC *aDC, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform)=0
Print the item to aDC.

References LIB_ITEM::print().

Referenced by DIALOG_LIB_EDIT_PIN::OnPaintShowPanel().

◆ PrintPinElectricalTypeName()

void LIB_PIN::PrintPinElectricalTypeName ( wxDC *  aDC,
wxPoint aPosition,
int  aOrientation 
)

Draw the electrical type text of the pin (only for the footprint editor)

Definition at line 819 of file lib_pin.cpp.

820 {
821  wxString typeName = GetElectricalTypeName();
822 
823  // Use a reasonable (small) size to draw the text
824  int textSize = (m_nameTextSize*3)/4;
825 
826  #define ETXT_MAX_SIZE Millimeter2iu(0.7 )
827  if( textSize > ETXT_MAX_SIZE )
828  textSize = ETXT_MAX_SIZE;
829 
830  // Use a reasonable pen size to draw the text
831  int pensize = textSize/6;
832 
833  // Get a suitable color
835 
836  wxPoint txtpos = aPosition;
837  int offset = Millimeter2iu( 0.4 );
839  int orient = TEXT_ANGLE_HORIZ;
840 
841  switch( aOrientation )
842  {
843  case PIN_UP:
844  txtpos.y += offset;
845  orient = TEXT_ANGLE_VERT;
846  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
847  break;
848 
849  case PIN_DOWN:
850  txtpos.y -= offset;
851  orient = TEXT_ANGLE_VERT;
852  break;
853 
854  case PIN_LEFT:
855  txtpos.x += offset;
856  break;
857 
858  case PIN_RIGHT:
859  txtpos.x -= offset;
860  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
861  break;
862  }
863 
864  GRText( aDC, txtpos, color, typeName, orient, wxSize( textSize, textSize ), hjustify,
865  GR_TEXT_VJUSTIFY_CENTER, pensize, false, false );
866 }
#define TEXT_ANGLE_HORIZ
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:44
#define ETXT_MAX_SIZE
#define TEXT_ANGLE_VERT
int color
Definition: DXF_plotter.cpp:61
Definition: lib_pin.h:58
COLOR4D GetInvisibleItemColor()
wxString const GetElectricalTypeName() const
return a translated string for messages giving the electrical type of the pin.
Definition: lib_pin.h:259
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper for all the old plotting/printing code while it still exists.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
void GRText(wxDC *aDC, const wxPoint &aPos, COLOR4D aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void(*aCallback)(int x0, int y0, int xf, int yf, void *aData), void *aCallbackData, PLOTTER *aPlotter)
Function GRText Draw a graphic text (like module texts)
Definition: gr_text.cpp:143
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References color, ETXT_MAX_SIZE, GetElectricalTypeName(), GetInvisibleItemColor(), GetLayerColor(), GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, GRText(), IsVisible(), LAYER_NOTES, m_nameTextSize, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, TEXT_ANGLE_HORIZ, TEXT_ANGLE_VERT, wxPoint::x, and wxPoint::y.

Referenced by print().

◆ PrintPinSymbol()

void LIB_PIN::PrintPinSymbol ( wxDC *  aDC,
const wxPoint aPos,
int  aOrientation 
)

Print the pin symbol without text.

If aColor != 0, draw with aColor, else with the normal pin color.

Definition at line 573 of file lib_pin.cpp.

574 {
575  int MapX1, MapY1, x1, y1;
576  int width = GetPenSize();
577  int posX = aPos.x, posY = aPos.y, len = m_length;
579 
580  MapX1 = MapY1 = 0;
581  x1 = posX;
582  y1 = posY;
583 
584  switch( aOrient )
585  {
586  case PIN_UP: y1 = posY - len; MapY1 = 1; break;
587  case PIN_DOWN: y1 = posY + len; MapY1 = -1; break;
588  case PIN_LEFT: x1 = posX - len; MapX1 = 1; break;
589  case PIN_RIGHT: x1 = posX + len; MapX1 = -1; break;
590  }
591 
593  {
594  const int radius = ExternalPinDecoSize( *this );
595  GRCircle( nullptr, aDC, MapX1 * radius + x1, MapY1 * radius + y1, radius, width, color );
596 
597  GRMoveTo( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 );
598  GRLineTo( nullptr, aDC, posX, posY, width, color );
599  }
600  else
601  {
602  GRMoveTo( x1, y1 );
603  GRLineTo( nullptr, aDC, posX, posY, width, color );
604  }
605 
606  // Draw the clock shape (>)inside the symbol
610  {
611  const int clock_size = InternalPinDecoSize( *this );
612  if( MapY1 == 0 ) /* MapX1 = +- 1 */
613  {
614  GRMoveTo( x1, y1 + clock_size );
615  GRLineTo( nullptr, aDC, x1 - MapX1 * clock_size * 2, y1, width, color );
616  GRLineTo( nullptr, aDC, x1, y1 - clock_size, width, color );
617  }
618  else /* MapX1 = 0 */
619  {
620  GRMoveTo( x1 + clock_size, y1 );
621  GRLineTo( nullptr, aDC, x1, y1 - MapY1 * clock_size * 2, width, color );
622  GRLineTo( nullptr, aDC, x1 - clock_size, y1, width, color );
623  }
624  }
625 
626  // Draw the active low (or H to L active transition)
629  {
630  const int deco_size = ExternalPinDecoSize( *this );
631  if( MapY1 == 0 ) /* MapX1 = +- 1 */
632  {
633  GRMoveTo( x1 + MapX1 * deco_size * 2, y1 );
634  GRLineTo( nullptr, aDC, x1 + MapX1 * deco_size * 2, y1 - deco_size * 2, width, color );
635  GRLineTo( nullptr, aDC, x1, y1, width, color );
636  }
637  else /* MapX1 = 0 */
638  {
639  GRMoveTo( x1, y1 + MapY1 * deco_size * 2 );
640  GRLineTo( nullptr, aDC, x1 - deco_size * 2, y1 + MapY1 * deco_size * 2, width, color );
641  GRLineTo( nullptr, aDC, x1, y1, width, color );
642  }
643  }
644 
645  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
646  {
647  const int deco_size = ExternalPinDecoSize( *this );
648  if( MapY1 == 0 ) /* MapX1 = +- 1 */
649  {
650  GRMoveTo( x1, y1 - deco_size * 2 );
651  GRLineTo( nullptr, aDC, x1 + MapX1 * deco_size * 2, y1, width, color );
652  }
653  else /* MapX1 = 0 */
654  {
655  GRMoveTo( x1 - deco_size * 2, y1 );
656  GRLineTo( nullptr, aDC, x1, y1 + MapY1 * deco_size * 2, width, color );
657  }
658  }
659  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
660  {
661  const int deco_size = ExternalPinDecoSize( *this );
662  GRMoveTo( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size );
663  GRLineTo( nullptr, aDC, x1 + (MapX1 + MapY1) * deco_size, y1 + (MapY1 - MapX1) * deco_size, width,
664  color );
665  GRMoveTo( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size );
666  GRLineTo( nullptr, aDC, x1 + (MapX1 - MapY1) * deco_size, y1 + (MapY1 + MapX1) * deco_size, width,
667  color );
668  }
669 
670  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
671  {
672  const int deco_size = TARGET_PIN_RADIUS;
673  GRLine( nullptr, aDC, posX - deco_size, posY - deco_size, posX + deco_size, posY + deco_size, width, color );
674  GRLine( nullptr, aDC, posX + deco_size, posY - deco_size, posX - deco_size, posY + deco_size, width, color );
675  }
676 }
static int ExternalPinDecoSize(const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:142
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
int color
Definition: DXF_plotter.cpp:61
Definition: lib_pin.h:58
int m_length
Length of the pin.
Definition: lib_pin.h:71
COLOR4D GetInvisibleItemColor()
void GRLineTo(EDA_RECT *ClipBox, wxDC *DC, int x, int y, int width, COLOR4D Color)
Definition: gr_basic.cpp:266
int GetPenSize() const override
Definition: lib_pin.cpp:537
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper for all the old plotting/printing code while it still exists.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
static int InternalPinDecoSize(const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:133
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color, wxPenStyle aStyle)
Definition: gr_basic.cpp:230
void GRMoveTo(int x, int y)
Definition: gr_basic.cpp:256
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:596
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:46
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75
not connected (must be left open)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References CLOCK, CLOCK_LOW, color, ExternalPinDecoSize(), FALLING_EDGE_CLOCK, GetInvisibleItemColor(), GetLayerColor(), GetPenSize(), GRCircle(), GRLine(), GRLineTo(), GRMoveTo(), INPUT_LOW, InternalPinDecoSize(), INVERTED, INVERTED_CLOCK, IsVisible(), LAYER_PIN, m_length, m_shape, m_type, NONLOGIC, OUTPUT_LOW, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, PT_NC, TARGET_PIN_RADIUS, wxPoint::x, and wxPoint::y.

Referenced by print().

◆ PrintPinTexts()

void LIB_PIN::PrintPinTexts ( wxDC *  aDC,
wxPoint aPosition,
int  aOrientation,
int  TextInside,
bool  DrawPinNum,
bool  DrawPinName 
)

Put the pin number and pin text info, given the pin line coordinates.

The line must be vertical or horizontal. If DrawPinName == false the pin name is not printed. If DrawPinNum = false the pin number is not printed. If TextInside then the text is been put inside,otherwise all is drawn outside. Pin Name: substring between '~' is negated

Definition at line 679 of file lib_pin.cpp.

681 {
682  if( !DrawPinName && !DrawPinNum )
683  return;
684 
685  int x, y;
686 
687  wxSize PinNameSize( m_nameTextSize, m_nameTextSize );
688  wxSize PinNumSize( m_numTextSize, m_numTextSize );
689  int nameLineWidth = Clamp_Text_PenSize( GetPenSize(), m_nameTextSize, false );
690  int numLineWidth = Clamp_Text_PenSize( GetPenSize(), m_numTextSize, false );
691  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) +
692  ( nameLineWidth + GetDefaultLineThickness() ) / 2;
693  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) +
694  ( numLineWidth + GetDefaultLineThickness() ) / 2;
695 
696  /* Get the num and name colors */
699 
700  int x1 = pin_pos.x;
701  int y1 = pin_pos.y;
702 
703  switch( orient )
704  {
705  case PIN_UP: y1 -= m_length; break;
706  case PIN_DOWN: y1 += m_length; break;
707  case PIN_LEFT: x1 -= m_length; break;
708  case PIN_RIGHT: x1 += m_length; break;
709  }
710 
711  if( m_name.IsEmpty() )
712  DrawPinName = false;
713 
714  if( TextInside ) // Draw the text inside, but the pin numbers outside.
715  {
716  if( (orient == PIN_LEFT) || (orient == PIN_RIGHT) )
717  {
718  // It is an horizontal line
719  if( DrawPinName )
720  {
721  if( orient == PIN_RIGHT )
722  {
723  x = x1 + TextInside;
724  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
726  nameLineWidth, false, false );
727  }
728  else // Orient == PIN_LEFT
729  {
730  x = x1 - TextInside;
731  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
733  nameLineWidth, false, false );
734  }
735  }
736 
737  if( DrawPinNum )
738  {
739  GRText( DC, wxPoint( (x1 + pin_pos.x) / 2, y1 - num_offset ), NumColor, m_number,
741  GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, false, false );
742  }
743  }
744  else /* Its a vertical line. */
745  {
746  // Text is drawn from bottom to top (i.e. to negative value for Y axis)
747  if( orient == PIN_DOWN )
748  {
749  y = y1 + TextInside;
750 
751  if( DrawPinName )
752  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
753  GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false,
754  false );
755 
756  if( DrawPinNum )
757  GRText( DC, wxPoint( x1 - num_offset, (y1 + pin_pos.y) / 2 ), NumColor,
759  GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, false, false );
760  }
761  else /* PIN_UP */
762  {
763  y = y1 - TextInside;
764 
765  if( DrawPinName )
766  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
767  GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, nameLineWidth, false,
768  false );
769 
770  if( DrawPinNum )
771  GRText( DC, wxPoint( x1 - num_offset, (y1 + pin_pos.y) / 2 ), NumColor,
773  GR_TEXT_VJUSTIFY_BOTTOM, numLineWidth, false, false );
774  }
775  }
776  }
777  else /**** Draw num & text pin outside ****/
778  {
779  if( (orient == PIN_LEFT) || (orient == PIN_RIGHT) )
780  {
781  /* Its an horizontal line. */
782  if( DrawPinName )
783  {
784  x = (x1 + pin_pos.x) / 2;
785  GRText( DC, wxPoint( x, y1 - name_offset ), NameColor, m_name, TEXT_ANGLE_HORIZ,
787  nameLineWidth, false, false );
788  }
789  if( DrawPinNum )
790  {
791  x = (x1 + pin_pos.x) / 2;
792  GRText( DC, wxPoint( x, y1 + num_offset ), NumColor, m_number, TEXT_ANGLE_HORIZ,
793  PinNumSize, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, numLineWidth,
794  false, false );
795  }
796  }
797  else /* Its a vertical line. */
798  {
799  if( DrawPinName )
800  {
801  y = (y1 + pin_pos.y) / 2;
802  GRText( DC, wxPoint( x1 - name_offset, y ), NameColor, m_name, TEXT_ANGLE_VERT,
804  nameLineWidth, false, false );
805  }
806 
807  if( DrawPinNum )
808  {
809  GRText( DC, wxPoint( x1 + num_offset, (y1 + pin_pos.y) / 2 ), NumColor, m_number,
811  numLineWidth, false, false );
812  }
813  }
814  }
815 }
#define TEXT_ANGLE_HORIZ
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
#define TEXT_ANGLE_VERT
int m_numTextSize
Definition: lib_pin.h:79
int GetDefaultLineThickness()
Default line thickness used to draw/plot items having a default thickness line value (i....
wxString m_name
Definition: lib_pin.h:77
Definition: lib_pin.h:58
int m_length
Length of the pin.
Definition: lib_pin.h:71
COLOR4D GetInvisibleItemColor()
int GetPenSize() const override
Definition: lib_pin.cpp:537
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Function Clamp_Text_PenSize Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:81
wxString m_number
Definition: lib_pin.h:78
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper for all the old plotting/printing code while it still exists.
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
void GRText(wxDC *aDC, const wxPoint &aPos, COLOR4D aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void(*aCallback)(int x0, int y0, int xf, int yf, void *aData), void *aCallbackData, PLOTTER *aPlotter)
Function GRText Draw a graphic text (like module texts)
Definition: gr_text.cpp:143
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:66
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References Clamp_Text_PenSize(), GetDefaultLineThickness(), GetInvisibleItemColor(), GetLayerColor(), GetPenSize(), GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, GRText(), IsVisible(), LAYER_PINNAM, LAYER_PINNUM, m_length, m_name, m_nameTextSize, m_number, m_numTextSize, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, TEXT_ANGLE_HORIZ, TEXT_ANGLE_VERT, wxPoint::x, and wxPoint::y.

Referenced by print().

◆ Replace() [1/2]

bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
staticinherited

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 179 of file base_struct.cpp.

180 {
181  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
182 
183  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
184  aSearchData.GetFindString() :
185  aSearchData.GetFindString().Upper() );
186 
187  if( result == wxNOT_FOUND )
188  return false;
189 
190  wxString prefix = aText.Left( result );
191  wxString suffix;
192 
193  if( aSearchData.GetFindString().length() + result < aText.length() )
194  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
195 
196  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
197  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
198  GetChars( suffix ) );
199 
200  aText = prefix + aSearchData.GetReplaceString() + suffix;
201 
202  return true;
203 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.
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:101

References GetChars(), and traceFindReplace.

Referenced by SCH_FIELD::Replace(), EDA_TEXT::Replace(), and SCH_EDITOR_CONTROL::ReplaceAndFindNext().

◆ Replace() [2/2]

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_TEXT, SCH_SHEET_PIN, and SCH_FIELD.

Definition at line 505 of file base_struct.h.

505 { return false; }

◆ Rotate()

void LIB_PIN::Rotate ( const wxPoint aCenter,
bool  aRotateCCW = true 
)
overridevirtual

Rotate the object about aCenter point.

Parameters
aCenterPoint to rotate around.
aRotateCCWTrue to rotate counter clockwise. False to rotate clockwise.

Implements LIB_ITEM.

Definition at line 1344 of file lib_pin.cpp.

1345 {
1346  int rot_angle = aRotateCCW ? -900 : 900;
1347 
1348  RotatePoint( &m_position, center, rot_angle );
1349 
1350  if( aRotateCCW )
1351  {
1352  switch( m_orientation )
1353  {
1354  case PIN_RIGHT: m_orientation = PIN_UP; break;
1355  case PIN_UP: m_orientation = PIN_LEFT; break;
1356  case PIN_LEFT: m_orientation = PIN_DOWN; break;
1357  case PIN_DOWN: m_orientation = PIN_RIGHT; break;
1358  }
1359  }
1360  else
1361  {
1362  switch( m_orientation )
1363  {
1364  case PIN_RIGHT: m_orientation = PIN_DOWN; break;
1365  case PIN_UP: m_orientation = PIN_RIGHT; break;
1366  case PIN_LEFT: m_orientation = PIN_UP; break;
1367  case PIN_DOWN: m_orientation = PIN_LEFT; break;
1368  }
1369  }
1370 }
Definition: lib_pin.h:58
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:208
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70

References m_orientation, m_position, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, and RotatePoint().

◆ SetBrightened()

void EDA_ITEM::SetBrightened ( )
inlineinherited

◆ SetConversion()

void LIB_PIN::SetConversion ( int  aConversion)

Set the body style (conversion) of the pin.

If the pin is changed from not common to common to all body styles, any linked pins will be removed from the parent component.

Parameters
aConversion- Body style of the pin. Set to zero to make pin common to all body styles.

Definition at line 439 of file lib_pin.cpp.

440 {
441  if( m_Convert == style )
442  return;
443 
444  m_Convert = style;
445  SetFlags( IS_CHANGED );
446 
447  if( style == 0 )
448  {
449  LIB_PIN* pin;
450  LIB_PIN* tmp = GetParent()->GetNextPin();
451 
452  while( tmp != NULL )
453  {
454  pin = tmp;
455  tmp = GetParent()->GetNextPin( pin );
456 
457  if( ( pin->m_Flags & IS_LINKED ) == 0
458  || ( pin == this )
459  || ( m_Unit && ( m_Unit != pin->m_Unit ) )
460  || ( m_position != pin->m_position )
461  || ( pin->m_orientation != m_orientation ) )
462  continue;
463 
464  GetParent()->RemoveDrawItem( (LIB_ITEM*) pin );
465  }
466  }
467 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
LIB_PART * GetParent() const
Definition: lib_item.h:185
int m_Unit
Unit identification for multiple parts per package.
Definition: lib_item.h:81
The base class for drawable items used by schematic library components.
Definition: lib_item.h:60
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:116
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:257
#define NULL
LIB_PIN * GetNextPin(LIB_PIN *aItem=NULL)
Return the next pin object from the draw list.
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.

References LIB_PART::GetNextPin(), LIB_ITEM::GetParent(), IS_CHANGED, IS_LINKED, LIB_ITEM::m_Convert, EDA_ITEM::m_Flags, m_orientation, m_position, LIB_ITEM::m_Unit, NULL, LIB_PART::RemoveDrawItem(), and EDA_ITEM::SetFlags().

Referenced by DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetConvert()

◆ SetFillMode()

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 257 of file base_struct.h.

257 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References EDA_ITEM::m_Flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddModuleToBoard(), PCBNEW_CONTROL::AppendBoard(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::ConvertTextType(), SCH_EDIT_FRAME::CreateNewText(), LIB_PIN_TOOL::CreatePin(), SCH_EDIT_FRAME::CreateSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), KIGFX::SCH_PAINTER::draw(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawLine(), LIB_DRAWING_TOOLS::DrawShape(), SCH_EDIT_TOOL::Duplicate(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_VIEW::HighlightItem(), EDIT_POINTS_FACTORY::Make(), TRACKS_CLEANER::mergeCollinearSegments(), SCH_MOVE_TOOL::moveItem(), LIB_MOVE_TOOL::moveItem(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), LIB_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), PCB_EDITOR_CONTROL::PlaceModule(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), SetConversion(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), WS_DATA_ITEM::SyncDrawItems(), WS_DATA_ITEM_TEXT::SyncDrawItems(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ SetForceVisible()

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 308 of file base_struct.h.

308 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:186

References EDA_ITEM::m_forceVisible.

◆ SetHighlighted()

void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 232 of file base_struct.h.

232 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:257
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

◆ SetLength()

void LIB_PIN::SetLength ( int  aLength,
bool  aTestOtherPins = true 
)

Set the pin length.

This will also update the length of the pins marked by EnableEditMode().

Parameters
aLength- The length of the pin in mils.
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 352 of file lib_pin.cpp.

353 {
354  if( m_length != length )
355  {
356  m_length = length;
357  SetModified();
358  }
359 
360  if( !aTestOtherPins )
361  return;
362 
363  if( GetParent() == NULL )
364  return;
365 
366  LIB_PINS pinList;
367  GetParent()->GetPins( pinList );
368 
369  for( size_t i = 0; i < pinList.size(); i++ )
370  {
371  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0
372  || pinList[i]->m_Convert != m_Convert
373  || pinList[i]->m_length == length )
374  continue;
375 
376  pinList[i]->m_length = length;
377  SetModified();
378  }
379 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
int m_length
Length of the pin.
Definition: lib_pin.h:71
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, LIB_ITEM::m_Convert, EDA_ITEM::m_Flags, m_length, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 94 of file base_struct.cpp.

95 {
97 
98  // If this a child object, then the parent modification state also needs to be set.
99  if( m_Parent )
101 }
void SetModified()
Definition: base_struct.cpp:94
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:183
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:116
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:257

References IS_CHANGED, EDA_ITEM::m_Parent, EDA_ITEM::SetFlags(), and EDA_ITEM::SetModified().

Referenced by SCH_COMPONENT::ClearAnnotation(), LEGACY_PLUGIN::loadZONE_CONTAINER(), SCH_LINE::Move(), SCH_COMPONENT::Move(), SCH_LINE::MoveEnd(), SCH_LINE::MoveStart(), MoveTo(), LIB_PART::RemoveDrawItem(), SCH_COMPONENT::SetConvert(), SetLength(), SCH_COMPONENT::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SetName(), SetNameTextSize(), SetNumber(), SetNumberTextSize(), SetOrientation(), SetPartNumber(), SetPinPosition(), SetShape(), SCH_COMPONENT::SetTransform(), SetType(), SCH_COMPONENT::SetUnit(), SetVisible(), and SetWidth().

◆ SetName()

void LIB_PIN::SetName ( const wxString &  aName,
bool  aTestOtherPins = true 
)

Set the pin name.

This will also all of the pin names marked by EnableEditMode().

Parameters
aNameNew pin name.
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 160 of file lib_pin.cpp.

161 {
162  wxString tmp = ( aName.IsEmpty() ) ? wxT( "~" ) : aName;
163 
164  // pin name string does not support spaces
165  tmp.Replace( wxT( " " ), wxT( "_" ) );
166 
167  if( m_name != tmp )
168  {
169  m_name = tmp;
170  SetModified();
171  }
172 
173  if( !aTestOtherPins )
174  return;
175 
176  if( GetParent() == NULL )
177  return;
178 
179  LIB_PINS pinList;
180  GetParent()->GetPins( pinList );
181 
182  for( size_t i = 0; i < pinList.size(); i++ )
183  {
184  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 || pinList[i]->m_name == m_name )
185  continue;
186 
187  pinList[i]->m_name = m_name;
188  SetModified();
189  }
190 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
wxString m_name
Definition: lib_pin.h:77
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, EDA_ITEM::m_Flags, m_name, NULL, and EDA_ITEM::SetModified().

Referenced by DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), LIB_PIN_TOOL::RepeatPin(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetNameTextSize()

void LIB_PIN::SetNameTextSize ( int  aSize,
bool  aTestOtherPins = true 
)

Set the aSize of the pin name text.

This will also update the text size of the name of the pins marked by EnableEditMode().

Parameters
aSizeThe text size of the pin name in schematic units ( mils ).
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 193 of file lib_pin.cpp.

194 {
195  if( size != m_nameTextSize )
196  {
197  m_nameTextSize = size;
198  SetModified();
199  }
200 
201  if( !aTestOtherPins )
202  return;
203 
204  if( GetParent() == NULL )
205  return;
206 
207  LIB_PINS pinList;
208  GetParent()->GetPins( pinList );
209 
210  for( size_t i = 0; i < pinList.size(); i++ )
211  {
212  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 || pinList[i]->m_nameTextSize == size )
213  continue;
214 
215  pinList[i]->m_nameTextSize = size;
216  SetModified();
217  }
218 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
int m_nameTextSize
Pin num and Pin name sizes.
Definition: lib_pin.h:80
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, EDA_ITEM::m_Flags, m_nameTextSize, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetNumber()

void LIB_PIN::SetNumber ( const wxString &  aNumber)

Set the pin number.

Others pin numbers marked by EnableEditMode() are not modified because each pin has its own number

Parameters
aNumberNew pin number.

Definition at line 221 of file lib_pin.cpp.

222 {
223  // Unlike SetName, others pin numbers marked by EnableEditMode() are
224  // not modified because each pin has its own number, so set number
225  // only for this.
226 
227  wxString tmp = ( aNumber.IsEmpty() ) ? wxT( "~" ) : aNumber;
228 
229  // pin number string does not support spaces
230  tmp.Replace( wxT( " " ), wxT( "_" ) );
231 
232  if( m_number != tmp )
233  {
234  m_number = tmp;
235  SetModified();
236  }
237 }
void SetModified()
Definition: base_struct.cpp:94
wxString m_number
Definition: lib_pin.h:78

References m_number, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreateImagePins(), SCH_EAGLE_PLUGIN::loadSymbol(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), LIB_PIN_TOOL::RepeatPin(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetNumberTextSize()

void LIB_PIN::SetNumberTextSize ( int  aSize,
bool  aTestOtherPins = true 
)

Set the size of the pin number text.

This will also update the text size of the number of the pins marked by EnableEditMode().

Parameters
aSizeThe text size of the pin number in schematic units ( mils ).
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 240 of file lib_pin.cpp.

241 {
242  if( size != m_numTextSize )
243  {
244  m_numTextSize = size;
245  SetModified();
246  }
247 
248  if( !aTestOtherPins )
249  return;
250 
251  if( GetParent() == NULL )
252  return;
253 
254  LIB_PINS pinList;
255  GetParent()->GetPins( pinList );
256 
257  for( size_t i = 0; i < pinList.size(); i++ )
258  {
259  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 || pinList[i]->m_numTextSize == size )
260  continue;
261 
262  pinList[i]->m_numTextSize = size;
263  SetModified();
264  }
265 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
int m_numTextSize
Definition: lib_pin.h:79
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, EDA_ITEM::m_Flags, m_numTextSize, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetOrientation()

void LIB_PIN::SetOrientation ( int  aOrientation,
bool  aTestOtherPins = true 
)

Set orientation on the pin.

This will also update the orientation of the pins marked by EnableEditMode().

Parameters
aOrientation- The orientation of the pin.
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 268 of file lib_pin.cpp.

269 {
270  if( m_orientation != orientation )
271  {
272  m_orientation = orientation;
273  SetModified();
274  }
275 
276  if( !aTestOtherPins )
277  return;
278 
279  if( GetParent() == NULL )
280  return;
281 
282  LIB_PINS pinList;
283  GetParent()->GetPins( pinList );
284 
285  for( size_t i = 0; i < pinList.size(); i++ )
286  {
287  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 ||
288  pinList[i]->m_orientation == orientation )
289  continue;
290 
291  pinList[i]->m_orientation = orientation;
292  SetModified();
293  }
294 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, EDA_ITEM::m_Flags, m_orientation, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetParent()

◆ SetPartNumber()

void LIB_PIN::SetPartNumber ( int  aPart)

Set the pin part number.

If the pin is changed from not common to common to all parts, any linked pins will be removed from the parent component.

Parameters
aPart- Number of the part the pin belongs to. Set to zero to make pin common to all parts in a multi-part component.

Definition at line 409 of file lib_pin.cpp.

410 {
411  if( m_Unit == part )
412  return;
413 
414  m_Unit = part;
415  SetModified();
416 
417  if( m_Unit == 0 )
418  {
419  LIB_PIN* pin;
420  LIB_PIN* tmp = GetParent()->GetNextPin();
421 
422  while( tmp != NULL )
423  {
424  pin = tmp;
425  tmp = GetParent()->GetNextPin( pin );
426 
427  if( pin->m_Flags == 0 || pin == this
428  || ( m_Convert && ( m_Convert != pin->m_Convert ) )
429  || ( m_position != pin->m_position )
430  || ( pin->m_orientation != m_orientation ) )
431  continue;
432 
433  GetParent()->RemoveDrawItem( (LIB_ITEM*) pin );
434  }
435  }
436 }
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
int m_Unit
Unit identification for multiple parts per package.
Definition: lib_item.h:81
The base class for drawable items used by schematic library components.
Definition: lib_item.h:60
int m_orientation
Pin orientation (Up, Down, Left, Right)
Definition: lib_pin.h:72
#define NULL
LIB_PIN * GetNextPin(LIB_PIN *aItem=NULL)
Return the next pin object from the draw list.
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.

References LIB_PART::GetNextPin(), LIB_ITEM::GetParent(), LIB_ITEM::m_Convert, EDA_ITEM::m_Flags, m_orientation, m_position, LIB_ITEM::m_Unit, NULL, LIB_PART::RemoveDrawItem(), and EDA_ITEM::SetModified().

Referenced by DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetPinPosition()

void LIB_PIN::SetPinPosition ( wxPoint  aPosition)

move this and all linked pins to the new position used in pin editing.

use SetPinPosition to set the position of this only

Parameters
aPositionis the new position of this and linked pins

Definition at line 382 of file lib_pin.cpp.

383 {
384  if( m_position != aPosition )
385  {
386  m_position = aPosition;
387  SetModified();
388  }
389 
390  if( GetParent() == NULL )
391  return;
392 
393  LIB_PINS pinList;
394  GetParent()->GetPins( pinList );
395 
396  for( size_t i = 0; i < pinList.size(); i++ )
397  {
398  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0
399  || pinList[i]->m_Convert != m_Convert
400  || pinList[i]->m_position == aPosition )
401  continue;
402 
403  pinList[i]->m_position = aPosition;
404  SetModified();
405  }
406 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
wxPoint m_position
Position of the pin.
Definition: lib_pin.h:70
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, LIB_ITEM::m_Convert, EDA_ITEM::m_Flags, m_position, NULL, and EDA_ITEM::SetModified().

Referenced by DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetPosition()

◆ SetSelected()

void EDA_ITEM::SetSelected ( )
inlineinherited

◆ SetShape()

void LIB_PIN::SetShape ( GRAPHIC_PINSHAPE  aShape)

Set the shape of the pin to aShape.

This will also update the draw style of the pins marked by EnableEditMode().

Parameters
aShape- The draw shape of the pin. See enum GRAPHIC_PINSHAPE.

Definition at line 297 of file lib_pin.cpp.

298 {
299  if( m_shape != aShape )
300  {
301  m_shape = aShape;
302  SetModified();
303  }
304 
305  if( GetParent() == NULL )
306  return;
307 
308  LIB_PINS pinList;
309  GetParent()->GetPins( pinList );
310 
311  for( size_t i = 0; i < pinList.size(); i++ )
312  {
313  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0
314  || pinList[i]->m_Convert != m_Convert
315  || pinList[i]->m_shape == aShape )
316  continue;
317 
318  pinList[i]->m_shape = aShape;
319  SetModified();
320  }
321 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
GRAPHIC_PINSHAPE m_shape
Shape drawn around pin.
Definition: lib_pin.h:73
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:87

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, LIB_ITEM::m_Convert, EDA_ITEM::m_Flags, m_shape, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetState()

void EDA_ITEM::SetState ( int  type,
int  state 
)
inlineinherited

Definition at line 246 of file base_struct.h.

247  {
248  if( state )
249  m_Status |= type; // state = ON or OFF
250  else
251  m_Status &= ~type;
252  }
STATUS_FLAGS m_Status
Definition: base_struct.h:179

References EDA_ITEM::m_Status.

Referenced by LEGACY_PLUGIN::loadTrackList(), TRACKS_CLEANER::mergeCollinearSegments(), SELECTION_TOOL::selectConnectedTracks(), and TRACK::SetLocked().

◆ SetStatus()

void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited

Definition at line 255 of file base_struct.h.

255 { m_Status = aStatus; }
STATUS_FLAGS m_Status
Definition: base_struct.h:179

References EDA_ITEM::m_Status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetType()

void LIB_PIN::SetType ( ELECTRICAL_PINTYPE  aType,
bool  aTestOtherPins = true 
)

Set the electrical type of the pin.

This will also update the electrical type of the pins marked by EnableEditMode().

Parameters
aType- The electrical type of the pin(see enun ELECTRICAL_PINTYPE for values).
aTestOtherPinsdetermines if other pins need to be updated

Definition at line 324 of file lib_pin.cpp.

325 {
326  if( m_type != aType )
327  {
328  m_type = aType;
329  SetModified();
330  }
331 
332  if( !aTestOtherPins )
333  return;
334 
335  if( GetParent() == NULL )
336  return;
337 
338  LIB_PINS pinList;
339  GetParent()->GetPins( pinList );
340 
341  for( size_t i = 0; i < pinList.size(); i++ )
342  {
343  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 || pinList[i]->m_type == aType )
344  continue;
345 
346  pinList[i]->m_type = aType;
347  SetModified();
348  }
349 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189
ELECTRICAL_PINTYPE m_type
Electrical type of the pin. See enum ELECTRICAL_PINTYPE.
Definition: lib_pin.h:75

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, EDA_ITEM::m_Flags, m_type, NULL, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_LIB_EDIT_PIN::TransferDataFromWindow().

◆ SetUnit()

◆ SetVisible()

void LIB_PIN::SetVisible ( bool  aVisible)

Set or clear the visibility flag for the pin.

This will also update the visibility of the pins marked by EnableEditMode().

Parameters
aVisible- True to make the pin visible or false to hide the pin.

Definition at line 470 of file lib_pin.cpp.

471 {
472  if( visible == IsVisible() )
473  return;
474 
475  if( visible )
477  else
479 
480  SetModified();
481 
482  if( GetParent() == NULL )
483  return;
484 
485  LIB_PINS pinList;
486  GetParent()->GetPins( pinList );
487 
488  for( size_t i = 0; i < pinList.size(); i++ )
489  {
490  if( ( pinList[i]->m_Flags & IS_LINKED ) == 0 || pinList[i]->IsVisible() == visible )
491  continue;
492 
493  if( visible )
494  pinList[i]->m_attributes &= ~PIN_INVISIBLE;
495  else
496  pinList[i]->m_attributes |= PIN_INVISIBLE;
497 
498  SetModified();
499  }
500 }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
void SetModified()
Definition: base_struct.cpp:94
LIB_PART * GetParent() const
Definition: lib_item.h:185
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:54
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0)
Return a list of pin object pointers from the draw item list.
#define NULL
#define PIN_INVISIBLE
Definition: lib_pin.h:49
bool IsVisible() const
Return the visibility status of the draw object.
Definition: lib_pin.h:346
int m_attributes
Set bit 0 to indicate pin is invisible.
Definition: lib_pin.h:76
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:189

References LIB_ITEM::GetParent(), LIB_PART::GetPins(), IS_LINKED, IsVisible(), m_attributes, EDA_ITEM::m_Flags, NULL, PIN_INVISIBLE, and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::CreatePin(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), DIALOG_LIB_EDIT_PIN::TransferDataFromWindow(), and DIALOG_LIB_EDIT_PIN::TransferDataToWindow().

◆ SetWidth()

void LIB_PIN::SetWidth ( int  aWidth)
overridevirtual

Implements LIB_ITEM.

Definition at line 1389 of file lib_pin.cpp.

1390 {
1391  if( m_width != aWidth )
1392  {
1393  m_width = aWidth;
1394  SetModified();
1395  }
1396 }
void SetModified()
Definition: base_struct.cpp:94
int m_width
Line width of the pin.
Definition: lib_pin.h:74

References m_width, and EDA_ITEM::SetModified().

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 230 of file base_struct.h.

230 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:257
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:124

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ Sort()

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 536 of file base_struct.h.

536 { return *aLeft < *aRight; }

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Function Type()

returns the type of object. This attribute should never be changed after a constructor sets it, so there is no public "setter" method.

Returns
KICAD_T - the type of object.

Definition at line 212 of file base_struct.h.

213  {
214  return m_StructType;
215  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:178

References EDA_ITEM::m_StructType.

Referenced by MODULE::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), POINT_EDITOR::addCorner(), CONNECTION_SUBGRAPH::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded(), ZONE_FILLER::addKnockout(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), CN_ITEM::AnchorCount(), SCH_SCREEN::Append(), CONNECTION_GRAPH::buildConnectionGraph(), SCH_SCREENS::buildScreenList(), calcArea(), calcMaxArea(), PCB_INSPECTION_TOOL::calculateSelectionRatsnest(), POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), ROUTER_TOOL::CanInlineDrag(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), TEXTE_PCB::ClassOf(), SCH_NO_CONNECT::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_PIN::ClassOf(), EDGE_MODULE::ClassOf(), PCB_TARGET::ClassOf(), SCH_LINE::ClassOf(), SCH_FIELD::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), ZONE_CONTAINER::ClassOf(), SCH_BITMAP::ClassOf(), TRACK::ClassOf(), DIMENSION::ClassOf(), NETINFO_ITEM::ClassOf(), MARKER_PCB::ClassOf(), SCH_SHEET_PIN::ClassOf(), MODULE::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_SCREEN::ClassOf(), D_PAD::ClassOf(), SCH_COMPONENT::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), BOARD::ClassOf(), SCH_TEXT::ClassOf(), SCH_SHEET::ClassOf(), ARC::ClassOf(), SCH_LABEL::ClassOf(), VIA::ClassOf(), SCH_GLOBALLABEL::ClassOf(), SCH_HIERLABEL::ClassOf(), TRACKS_CLEANER::cleanupSegments(), LIB_RECTANGLE::compare(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_TEXT::compare(), LIB_POLYLINE::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_ITEM::compare(), compare(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), SCH_EDIT_FRAME::ConvertTextType(), MODULE::CoverageRatio(), CINFO3D_VISU::createLayers(), SCH_EDIT_FRAME::CreateNewText(), CINFO3D_VISU::createNewTrack(), NETLIST_EXPORTER::CreatePinList(), D_PAD::D_PAD(), SCH_SCREEN::DeleteItem(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), SCH_EDITOR_CONTROL::doCopy(), SCH_EDIT_TOOL::DoDelete(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), DRC::doTrackDrc(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), MODULE::DuplicateItem(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckLabels(), NETLIST_EXPORTER::findNextComponent(), PCB_BASE_FRAME::FocusOnItem(), SCH_BASE_FRAME::FocusOnItem(), EDIT_TOOL::FootprintFilter(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), SCH_FIELD::GetBoundingBox(), TRACK::GetBoundingBox(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), NETLIST_OBJECT::GetComponentParent(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), CONNECTION_GRAPH::getDefaultConnection(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), SCH_FIELD::GetFullyQualifiedText(), SCH_FIELD::GetMenuImage(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTION_SUBGRAPH::GetNameForDriver(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), DRAWSEGMENT::GetParentModule(), SCH_FIELD::GetParentPosition(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), getRect(), KIGFX::SCH_PAINTER::getRenderColor(), PCBNEW_SELECTION::GetTopLeftItem(), SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), hash_eda(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), KIGFX::SCH_VIEW::HighlightItem(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), TRACK::IsNull(), SCH_LINE::IsParallel(), SCH_FIELD::IsReplaceable(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), SCH_MOVE_TOOL::Main(), EE_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), SCH_MOVE_TOOL::moveItem(), SCH_CONNECTION::Name(), SCH_EDITOR_CONTROL::nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), POINT_EDITOR::OnSelectionChange(), SCH_BUS_ENTRY_BASE::operator<(), SCH_FIELD::operator<(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_TEXT::operator<(), SCH_ITEM::operator<(), SCH_SHEET::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_COMPONENT::operator=(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), SCH_SCREEN::Plot(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), SCH_FIELD::Print(), SCH_SCREEN::Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SELECTION_TOOL::RebuildSelection(), SCH_BASE_FRAME::RefreshItem(), SCH_BASE_FRAME::RefreshSelection(), EE_RTREE::remove(), MODULE::Remove(), CN_CONNECTIVITY_ALGO::Remove(), BOARD::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_FIELD::Replace(), WS_PROXY_UNDO_ITEM::Restore(), SCH_EDIT_TOOL::Rotate(), SCH_TEXT::Rotate(), SCH_SEXPR_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_SEXPR_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_SEXPR_PLUGIN_CACHE::saveCircle(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_SEXPR_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_SEXPR_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_SEXPR_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), SCH_SEXPR_PLUGIN_CACHE::saveSymbolDrawItem(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SELECTION_TOOL::select(), SELECTION_TOOL::Selectable(), EE_SELECTION_TOOL::Selectable(), SELECTION_TOOL::selectConnectedTracks(), ITEM_PICKER::SetItem(), SCH_FIELD::SetPosition(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), ShowClearance(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), TEXTE_PCB::SwapData(), SCH_SHEET_PIN::SwapData(), SCH_FIELD::SwapData(), TRACK::SwapData(), DIMENSION::SwapData(), ARC::SwapData(), SCH_SHEET::SwapData(), VIA::SwapData(), SCH_COMPONENT::SwapData(), MODULE::SwapData(), ZONE_CONTAINER::SwapData(), D_PAD::SwapData(), SwapItemData(), TEXTE_MODULE::TEXTE_MODULE(), AR_MATRIX::TraceSegmentPcb(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), TRACK::TransformShapeWithClearanceToPolygon(), LIB_DRAWING_TOOLS::TwoClickPlace(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), SCH_TEXT::UpdateDanglingState(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), EE_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), CONNECTION_GRAPH::updateItemConnectivity(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateView(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_SHEET::Visit(), SCH_COMPONENT::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ ViewBBox()

const BOX2I EDA_ITEM::ViewBBox ( ) const
overridevirtualinherited

Function ViewBBox() returns the bounding box of the item covering all its layers.

Returns
BOX2I - the current bounding box

Implements KIGFX::VIEW_ITEM.

Reimplemented in D_PAD, MODULE, EDIT_POINTS, GERBER_DRAW_ITEM, DRAWSEGMENT, DIMENSION, TEXTE_MODULE, TRACK, MARKER_PCB, KIGFX::WS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, MY_DRAWING, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::PREVIEW::POLYGON_ITEM, KIGFX::PREVIEW::SELECTION_AREA, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, BRIGHT_BOX, and KIGFX::PREVIEW::ARC_ASSISTANT.

Definition at line 227 of file base_struct.cpp.

228 {
229  // Basic fallback
230  return BOX2I( VECTOR2I( GetBoundingBox().GetOrigin() ),
231  VECTOR2I( GetBoundingBox().GetSize() ) );
232 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:521
VECTOR2< int > VECTOR2I
Definition: vector2d.h:594
virtual const EDA_RECT GetBoundingBox() const
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

References EDA_ITEM::GetBoundingBox().

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), BRIGHT_BOX::ViewBBox(), DIMENSION::ViewBBox(), DRAWSEGMENT::ViewBBox(), and BRIGHT_BOX::ViewDraw().

◆ ViewDraw()

virtual void KIGFX::VIEW_ITEM::ViewDraw ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewDraw() Draws the parts of the object belonging to layer aLayer.

viewDraw() is an alternative way for drawing objects if if there is no PAINTER assigned for the view or if the PAINTER doesn't know how to paint this particular implementation of VIEW_ITEM. The preferred way of drawing is to design an appropriate PAINTER object, the method below is intended only for quick hacks and debugging purposes.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on

Reimplemented in EDIT_POINTS, KIGFX::WS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, KIGFX::VIEW_GROUP, KIGFX::PREVIEW::SELECTION_AREA, MY_DRAWING, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, KIGFX::VIEW_OVERLAY, KIGFX::ORIGIN_VIEWITEM, BRIGHT_BOX, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, and PCB_BRIGHT_BOX.

Definition at line 116 of file view_item.h.

117  {}

Referenced by KIGFX::VIEW::draw(), and KIGFX::VIEW::updateItemGeometry().

◆ ViewGetLayers()

void LIB_ITEM::ViewGetLayers ( int  aLayers[],
int &  aCount 
) const
overridevirtualinherited

Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on.

For instance, a D_PAD spans zero or more copper layers and a few technical layers. ViewDraw() or PAINTER::Draw() is repeatedly called for each of the layers returned by ViewGetLayers(), depending on the rendering order.

Parameters
aLayers[]output layer index array
aCountnumber of layer indices in aLayers[]

Reimplemented from EDA_ITEM.

Reimplemented in LIB_TEXT.

Definition at line 142 of file lib_item.cpp.

143 {
144  // Basic fallback
145  aCount = 3;
146  aLayers[0] = LAYER_DEVICE;
147  aLayers[1] = LAYER_DEVICE_BACKGROUND;
148  aLayers[2] = LAYER_SELECTION_SHADOWS;
149 }

References LAYER_DEVICE, LAYER_DEVICE_BACKGROUND, and LAYER_SELECTION_SHADOWS.

◆ ViewGetLOD()

virtual unsigned int KIGFX::VIEW_ITEM::ViewGetLOD ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewGetLOD() Returns the level of detail (LOD) of the item.

A level of detail is the minimal VIEW scale that is sufficient for an item to be shown on a given layer.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on
Returns
the level of detail. 0 always show the item, because the actual zoom level (or VIEW scale) is always > 0

Reimplemented in MODULE_ZONE_CONTAINER, D_PAD, MODULE, VIA, GERBER_DRAW_ITEM, TEXTE_MODULE, TRACK, and EDGE_MODULE.

Definition at line 140 of file view_item.h.

141  {
142  // By default always show the item
143  return 0;
144  }

Referenced by KIGFX::VIEW::drawItem::operator()(), GRID_HELPER::queryVisible(), and SELECTION_TOOL::Selectable().

◆ viewPrivData()

◆ Visit()

SEARCH_RESULT EDA_ITEM::Visit ( INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
virtualinherited

Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data.

Implementations should call inspector->Inspect() on types in scanTypes[], and may use IterateForward() to do so on lists of such data.

Parameters
inspectorAn INSPECTOR instance to use in the inspection.
testDataArbitrary data used by the inspector.
scanTypesWhich KICAD_T types are of interest and the order is significant too, terminated by EOT.
Returns
SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan, else SCAN_CONTINUE, and determined by the inspector.

Reimplemented in BOARD, SCH_COMPONENT, MODULE, SCH_SHEET, LIB_PART, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, TRACK, and GBR_LAYOUT.

Definition at line 127 of file base_struct.cpp.

128 {
129 #if 0 && defined(DEBUG)
130  std::cout << GetClass().mb_str() << ' ';
131 #endif
132 
133  if( IsType( scanTypes ) )
134  {
135  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
136  return SEARCH_RESULT::QUIT;
137  }
138 
140 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Function IsType Checks whether the item is one of the listed types.
Definition: base_struct.h:286
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References CONTINUE, EDA_ITEM::GetClass(), EDA_ITEM::IsType(), and QUIT.

Referenced by GERBER_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), and EDA_ITEM::IterateForward().

Friends And Related Function Documentation

◆ SCH_LEGACY_PLUGIN_CACHE

friend class SCH_LEGACY_PLUGIN_CACHE
friend

Definition at line 68 of file lib_pin.h.

Member Data Documentation

◆ m_attributes

int LIB_PIN::m_attributes
private

Set bit 0 to indicate pin is invisible.

Definition at line 76 of file lib_pin.h.

Referenced by compare(), IsVisible(), LIB_PIN(), SCH_LEGACY_PLUGIN_CACHE::loadPin(), and SetVisible().

◆ m_Convert

int LIB_ITEM::m_Convert
protectedinherited

Shape identification for alternate body styles.

Set 0 if the item is common to all body styles. This is typially used for representing DeMorgan variants in KiCad.

Definition at line 87 of file lib_item.h.

Referenced by LIB_TEXT::Clone(), LIB_ITEM::compare(), LIB_ITEM::GetConvert(), LIB_ITEM::GetMsgPanelInfo(), LIB_ITEM::LIB_ITEM(), SCH_LEGACY_PLUGIN_CACHE::loadPin(), LIB_ITEM::operator<(), SetConversion(), LIB_PART::SetConversion(), LIB_ITEM::SetConvert(), SetLength(), SetPartNumber(), SetPinPosition(), and SetShape().

◆ m_Fill

◆ m_Flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

Set to true to override the visibility setting of the item.

Definition at line 186 of file base_struct.h.

Referenced by ZONE_CONTAINER::initDataFromSrcInCopyCtor(), EDA_ITEM::initVars(), EDA_ITEM::operator=(), SCH_FIELD::Print(), and EDA_ITEM::SetForceVisible().

◆ m_isFillable

◆ m_length

◆ m_name

wxString LIB_PIN::m_name
private

◆ m_nameTextSize

int LIB_PIN::m_nameTextSize
private

◆ m_number

◆ m_numTextSize

int LIB_PIN::m_numTextSize
private

◆ m_orientation

◆ m_Parent

◆ m_position

◆ m_shape

GRAPHIC_PINSHAPE LIB_PIN::m_shape
private

◆ m_type

ELECTRICAL_PINTYPE LIB_PIN::m_type
private

◆ m_Unit

int LIB_ITEM::m_Unit
protectedinherited

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 169 of file base_struct.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), Diagnose(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), CONNECTION_GRAPH::ercCheckNoConnects(), PCB_EDIT_FRAME::Exchange_Module(), PCB_BASE_FRAME::FocusOnItem(), SCH_BASE_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), SCH_SHEET::GetMsgPanelInfo(), SCH_REFERENCE::GetPath(), SCH_MARKER::GetUUID(), MARKER_PCB::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN::loadComponent(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), LEGACY_PLUGIN::loadTrackList(), NETLIST_EXPORTER_GENERIC::makeComponents(), mapExistingAnnotation(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), PCB_PARSER::parseDIMENSION(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_LEGACY_PLUGIN::saveComponent(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_EDIT_FRAME::SaveProject(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_LEGACY_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_COMPONENT::SCH_COMPONENT(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SHEET::SCH_SHEET(), RC_ITEM::SetData(), SwapItemData(), TestMultiunitFootprints(), DIALOG_SCH_SHEET_PROPS::TransferDataToWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataToWindow(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ m_width

int LIB_PIN::m_width
private

Line width of the pin.

Definition at line 74 of file lib_pin.h.

Referenced by compare(), GetPenSize(), GetWidth(), LIB_PIN(), and SetWidth().


The documentation for this class was generated from the following files: