KiCad PCB EDA Suite
LIB_PIN Class Reference

#include <lib_pin.h>

Inheritance diagram for LIB_PIN:
LIB_ITEM EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

Classes

struct  ALT
 

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 ()
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
wxString GetTypeName () const override
 Provide a user-consumable name of the object type. More...
 
int GetOrientation () const
 
void SetOrientation (int aOrientation)
 
GRAPHIC_PINSHAPE GetShape () const
 
void SetShape (GRAPHIC_PINSHAPE aShape)
 
int GetLength () const
 
void SetLength (int aLength)
 
ELECTRICAL_PINTYPE GetType () const
 
void SetType (ELECTRICAL_PINTYPE aType)
 
wxString const GetCanonicalElectricalTypeName () const
 
wxString const GetElectricalTypeName () const
 
bool IsVisible () const
 
void SetVisible (bool aVisible)
 
const wxString & GetName () const
 
void SetName (const wxString &aName)
 
const wxString & GetNumber () const
 
void SetNumber (const wxString &aNumber)
 
int GetNameTextSize () const
 
void SetNameTextSize (int aSize)
 
int GetNumberTextSize () const
 
void SetNumberTextSize (int aSize)
 
std::map< wxString, ALT > & GetAlternates ()
 
ALT GetAlt (const wxString &aAlt)
 
void print (RENDER_SETTINGS *aSettings, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform) override
 Print a pin, with or without the pin texts. More...
 
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...
 
 LIB_PIN (LIB_PART *aParent)
 
 LIB_PIN (LIB_PART *aParent, const wxString &aName, const wxString &aNumber, int aOrientation, ELECTRICAL_PINTYPE aPinType, int aLength, int aNameTextSize, int aNumTextSize, int aConvert, const wxPoint &aPos, int aUnit)
 
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...
 
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...
 
void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
 Display basic info (type, part and convert) about the current item in message panel. More...
 
const EDA_RECT GetBoundingBox () const override
 
const EDA_RECT GetBoundingBox (bool aIncludeInvisibles, bool aPinOnly=false) const
 
bool IsPowerConnection () const
 Return whether this pin forms an implicit power connection: i.e., is hidden and of type POWER_IN. More...
 
int GetPenWidth () const override
 
void PlotPinTexts (PLOTTER *aPlotter, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
 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...
 
void MoveTo (const wxPoint &aNewPosition) override
 Move a draw object to aPosition. More...
 
wxPoint GetPosition () const override
 
void SetPosition (const wxPoint &aPos) override
 
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 &aPffset, 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 (RENDER_SETTINGS *aSettings, 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 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...
 
bool IsFillable () const
 Check if draw object can be filled. More...
 
void SetUnit (int aUnit)
 
int GetUnit () const
 
void SetConvert (int aConvert)
 
int GetConvert () const
 
void SetFillMode (FILL_TYPE aFillMode)
 
FILL_TYPE GetFillMode () const
 
KICAD_T Type () const
 Function Type() More...
 
virtual void SetParent (EDA_ITEM *aParent)
 
bool IsModified () const
 
bool IsNew () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, 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...
 
bool IsForceVisible () const
 
virtual const wxPoint GetFocusPosition () const
 Function GetFocusPosition similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 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 Matches (wxFindReplaceData &aSearchData, void *aAuxData)
 Function Matches compares the item against the search criteria in aSearchData. 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 double 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 ()
 
bool Set (PROPERTY_BASE *aProperty, wxAny &aValue)
 
template<typename T >
bool Set (PROPERTY_BASE *aProperty, T aValue)
 
template<typename T >
bool Set (const wxString &aProperty, T aValue)
 
wxAny Get (PROPERTY_BASE *aProperty)
 
template<typename T >
Get (PROPERTY_BASE *aProperty)
 
template<typename T >
boost::optional< T > Get (const wxString &aProperty)
 

Static Public Member Functions

static const wxString GetCanonicalElectricalTypeName (ELECTRICAL_PINTYPE aType)
 return a string giving the electrical type of a pin. 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

void printPinSymbol (RENDER_SETTINGS *aSettings, const wxPoint &aPos, int aOrientation)
 Print the pin symbol without text. More...
 
void printPinTexts (RENDER_SETTINGS *aSettings, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
 Put the pin number and pin text info, given the pin line coordinates. More...
 
void printPinElectricalTypeName (RENDER_SETTINGS *aSettings, wxPoint &aPosition, int aOrientation)
 Draw the electrical type text of the pin (only for the footprint editor) More...
 
bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Protected Attributes

wxPoint m_position
 
int m_length
 
int m_orientation
 
GRAPHIC_PINSHAPE m_shape
 
ELECTRICAL_PINTYPE m_type
 
int m_attributes
 
wxString m_name
 
wxString m_number
 
int m_numTextSize
 
int m_nameTextSize
 
std::map< wxString, ALTm_alternates
 
int m_Unit
 Unit identification for multiple parts per package. More...
 
int m_Convert
 Shape identification for alternate body styles. More...
 
FILL_TYPE m_Fill
 The body fill type. More...
 
bool m_isFillable
 
STATUS_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
STATUS_FLAGS m_flags
 

Private Member Functions

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...
 

Detailed Description

Definition at line 55 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 117 of file lib_item.h.

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

◆ LIB_CONVERT

enum LIB_ITEM::LIB_CONVERT : int
inherited
Enumerator
BASE 
DEMORGAN 

Definition at line 108 of file lib_item.h.

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

Constructor & Destructor Documentation

◆ ~LIB_PIN()

LIB_PIN::~LIB_PIN ( )
inline

Definition at line 113 of file lib_pin.h.

113 { }

◆ LIB_PIN() [1/2]

LIB_PIN::LIB_PIN ( LIB_PART aParent)

Definition at line 96 of file lib_pin.cpp.

96  :
97  LIB_ITEM( LIB_PIN_T, aParent ),
101  m_attributes( 0 )
102 {
103  // Use the application settings for pin sizes if exists.
104  // pgm can be nullptr when running a shared lib from a script, not from a kicad appl
105  PGM_BASE* pgm = PgmOrNull();
106 
107  if( pgm )
108  {
109  auto* settings = pgm->GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
110  m_length = Mils2iu( settings->m_Defaults.pin_length );
111  m_numTextSize = Mils2iu( settings->m_Defaults.pin_num_size );
112  m_nameTextSize = Mils2iu( settings->m_Defaults.pin_name_size );
113  }
114  else // Use hardcoded eeschema defaults: symbol_editor settings are not existing.
115  {
116  m_length = Mils2iu( DEFAULT_PIN_LENGTH );
117  m_numTextSize = Mils2iu( DEFAULT_PINNUM_SIZE );
119  }
120 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
VTBL_ENTRY SETTINGS_MANAGER & GetSettingsManager() const
Definition: pgm_base.h:175
int m_numTextSize
Definition: lib_pin.h:74
PGM_BASE keeps program (whole process) data for KiCad programs.
Definition: pgm_base.h:137
unknown electrical properties: creates always a warning when connected
#define DEFAULT_PIN_LENGTH
The default pin number size when creating pins(can be changed in preference menu)
int m_length
Definition: lib_pin.h:67
int m_orientation
Definition: lib_pin.h:68
AppSettings * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
#define DEFAULT_PINNUM_SIZE
The default pin name size when creating pins(can be changed in preference menu)
#define DEFAULT_PINNAME_SIZE
The default selection highlight thickness (can be changed in preference menu)
int m_attributes
Definition: lib_pin.h:71
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
PGM_BASE * PgmOrNull()
similat to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from...
LIB_ITEM(KICAD_T aType, LIB_PART *aComponent=NULL, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35

References DEFAULT_PIN_LENGTH, DEFAULT_PINNAME_SIZE, DEFAULT_PINNUM_SIZE, SETTINGS_MANAGER::GetAppSettings(), PGM_BASE::GetSettingsManager(), LINE, m_length, m_nameTextSize, m_numTextSize, PgmOrNull(), and PT_UNSPECIFIED.

Referenced by Clone().

◆ LIB_PIN() [2/2]

LIB_PIN::LIB_PIN ( LIB_PART aParent,
const wxString &  aName,
const wxString &  aNumber,
int  aOrientation,
ELECTRICAL_PINTYPE  aPinType,
int  aLength,
int  aNameTextSize,
int  aNumTextSize,
int  aConvert,
const wxPoint &  aPos,
int  aUnit 
)

Definition at line 123 of file lib_pin.cpp.

125  :
126  LIB_ITEM( LIB_PIN_T, aParent ),
127  m_position( aPos ),
128  m_length( aLength ),
129  m_orientation( aOrientation ),
131  m_type( aPinType ),
132  m_attributes( 0 ),
133  m_numTextSize( aNumTextSize ),
134  m_nameTextSize( aNameTextSize )
135 {
136  SetName( aName );
137  SetNumber( aNumber );
138  SetUnit( aUnit );
139  SetConvert( aConvert );
140 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int m_numTextSize
Definition: lib_pin.h:74
int m_length
Definition: lib_pin.h:67
void SetNumber(const wxString &aNumber)
Definition: lib_pin.h:166
int m_orientation
Definition: lib_pin.h:68
void SetConvert(int aConvert)
Definition: lib_item.h:298
int m_attributes
Definition: lib_pin.h:71
void SetUnit(int aUnit)
Definition: lib_item.h:295
wxPoint m_position
Definition: lib_pin.h:66
void SetName(const wxString &aName)
Definition: lib_pin.h:157
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
LIB_ITEM(KICAD_T aType, LIB_PART *aComponent=NULL, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35

References LINE, LIB_ITEM::SetConvert(), SetName(), SetNumber(), and LIB_ITEM::SetUnit().

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_RECTANGLE, and LIB_CIRCLE.

Definition at line 134 of file lib_item.h.

134 {}

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 1168 of file lib_pin.cpp.

1169 {
1170  if( IsMoving() )
1171  {
1172  MoveTo( aPosition );
1173  }
1174 }
void MoveTo(const wxPoint &aNewPosition) override
Move a draw object to aPosition.
Definition: lib_pin.cpp:895
bool IsMoving() const
Definition: eda_item.h:188

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

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearEditFlags()

◆ ClearFlags()

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

Definition at line 221 of file eda_item.h.

221 { m_flags &= ~aMask; }
STATUS_FLAGS m_flags
Definition: eda_item.h:164

References EDA_ITEM::m_flags.

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

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 233 of file eda_item.h.

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

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

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 154 of file view_item.h.

155  {
157  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:162
#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 831 of file lib_pin.cpp.

832 {
833  return new LIB_PIN( *this );
834 }
LIB_PIN(LIB_PART *aParent)
Definition: lib_pin.cpp:96

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 837 of file lib_pin.cpp.

838 {
839  wxASSERT( aOther.Type() == LIB_PIN_T );
840 
841  int retv = LIB_ITEM::compare( aOther, aCompareFlags );
842 
843  if( retv )
844  return retv;
845 
846  const LIB_PIN* tmp = (LIB_PIN*) &aOther;
847 
848  // When comparing units, we do not compare the part numbers. If everything else is
849  // identical, then we can just renumber the parts for the inherited symbol.
850  if( !( aCompareFlags & COMPARE_FLAGS::UNIT ) && m_number != tmp->m_number )
851  return m_number.Cmp( tmp->m_number );
852 
853  int result = m_name.CmpNoCase( tmp->m_name );
854 
855  if( result )
856  return result;
857 
858  if( m_position.x != tmp->m_position.x )
859  return m_position.x - tmp->m_position.x;
860 
861  if( m_position.y != tmp->m_position.y )
862  return m_position.y - tmp->m_position.y;
863 
864  if( m_length != tmp->m_length )
865  return m_length - tmp->m_length;
866 
867  if( m_orientation != tmp->m_orientation )
868  return m_orientation - tmp->m_orientation;
869 
870  if( m_shape != tmp->m_shape )
871  return static_cast<int>( m_shape ) - static_cast<int>( tmp->m_shape );
872 
873  if( m_type != tmp->m_type )
874  return static_cast<int>( m_type ) - static_cast<int>( tmp->m_type );
875 
876  if( m_attributes != tmp->m_attributes )
877  return m_attributes - tmp->m_attributes;
878 
879  if( m_numTextSize != tmp->m_numTextSize )
880  return m_numTextSize - tmp->m_numTextSize;
881 
882  if( m_nameTextSize != tmp->m_nameTextSize )
883  return m_nameTextSize - tmp->m_nameTextSize;
884 
885  return 0;
886 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int m_numTextSize
Definition: lib_pin.h:74
wxString m_name
Definition: lib_pin.h:72
int m_length
Definition: lib_pin.h:67
int m_orientation
Definition: lib_pin.h:68
wxString m_number
Definition: lib_pin.h:73
int m_attributes
Definition: lib_pin.h:71
wxPoint m_position
Definition: lib_pin.h:66
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
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:74
KICAD_T Type() const
Function Type()
Definition: eda_item.h:181

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, and EDA_ITEM::Type().

◆ 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 146 of file lib_item.h.

146 { return false; }

Referenced by LIB_DRAWING_TOOLS::DrawShape().

◆ 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 153 of file lib_item.h.

153 {}

Referenced by LIB_DRAWING_TOOLS::DrawShape().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 84 of file inspectable.h.

85  {
87  TYPE_ID thisType = TYPE_HASH( *this );
88  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
89  return object ? aProperty->getter( object ) : wxAny();
90  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
virtual wxAny getter(void *aObject) const =0
Provides class metadata.
Definition: property_mgr.h:61
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

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

◆ Get() [2/3]

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

Definition at line 93 of file inspectable.h.

94  {
96  TYPE_ID thisType = TYPE_HASH( *this );
97  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
98  return object ? aProperty->get<T>( object ) : T();
99  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
Provides class metadata.
Definition: property_mgr.h:61
T get(void *aObject)
Definition: property.h:275
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

◆ Get() [3/3]

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

Definition at line 102 of file inspectable.h.

103  {
105  TYPE_ID thisType = TYPE_HASH( *this );
106  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
107  boost::optional<T> ret;
108 
109  if( prop )
110  {
111  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
112 
113  if( object )
114  ret = prop->get<T>( object );
115  }
116 
117  return ret;
118  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Returns a property for a specific type.
Provides class metadata.
Definition: property_mgr.h:61
T get(void *aObject)
Definition: property.h:275
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

◆ GetAlt()

ALT LIB_PIN::GetAlt ( const wxString &  aAlt)
inline

Definition at line 182 of file lib_pin.h.

182 { return m_alternates[ aAlt ]; }
std::map< wxString, ALT > m_alternates
Definition: lib_pin.h:77

References m_alternates.

Referenced by SCH_PIN::GetShape(), and SCH_PIN::GetType().

◆ GetAlternates()

std::map<wxString, ALT>& LIB_PIN::GetAlternates ( )
inline

◆ 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 222 of file lib_pin.h.

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

References GetBoundingBox().

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

◆ GetBoundingBox() [2/2]

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

Definition at line 1010 of file lib_pin.cpp.

1011 {
1012  EDA_RECT bbox;
1013  wxPoint begin;
1014  wxPoint end;
1015  int nameTextOffset = 0;
1016  bool showName = !m_name.IsEmpty() && ( m_name != wxT( "~" ) );
1017  bool showNum = !m_number.IsEmpty();
1018  int minsizeV = TARGET_PIN_RADIUS;
1019 
1020  if( !aIncludeInvisibles && !IsVisible() )
1021  showName = false;
1022 
1023  if( GetParent() )
1024  {
1025  if( GetParent()->ShowPinNames() )
1026  nameTextOffset = GetParent()->GetPinNameOffset();
1027  else
1028  showName = false;
1029 
1030  if( !GetParent()->ShowPinNumbers() )
1031  showNum = false;
1032  }
1033 
1034  if( aPinOnly )
1035  {
1036  showName = false;
1037  showNum = false;
1038  }
1039 
1040  // First, calculate boundary box corners position
1041  int numberTextLength = showNum ? m_numTextSize * m_number.Len() : 0;
1042 
1043  // Actual text height is bigger than text size
1044  int numberTextHeight = showNum ? KiROUND( m_numTextSize * 1.1 ) : 0;
1045 
1047  minsizeV = std::max( TARGET_PIN_RADIUS, externalPinDecoSize( nullptr, *this ) );
1048 
1049  // calculate top left corner position
1050  // for the default pin orientation (PIN_RIGHT)
1051  begin.y = std::max( minsizeV, numberTextHeight + Mils2iu( PIN_TEXT_MARGIN ) );
1052  begin.x = std::min( -TARGET_PIN_RADIUS, m_length - (numberTextLength / 2) );
1053 
1054  // calculate bottom right corner position and adjust top left corner position
1055  int nameTextLength = 0;
1056  int nameTextHeight = 0;
1057 
1058  if( showName )
1059  {
1060  int length = m_name.Len();
1061 
1062  // Don't count the line over text symbol.
1063  if( m_name.Left( 1 ) == wxT( "~" ) )
1064  length -= 1;
1065 
1066  nameTextLength = ( m_nameTextSize * length ) + nameTextOffset;
1067 
1068  // Actual text height are bigger than text size
1069  nameTextHeight = KiROUND( m_nameTextSize * 1.1 ) + Mils2iu( PIN_TEXT_MARGIN );
1070  }
1071 
1072  if( nameTextOffset ) // for values > 0, pin name is inside the body
1073  {
1074  end.x = m_length + nameTextLength + TARGET_PIN_RADIUS;
1075  end.y = std::min( -minsizeV, -nameTextHeight / 2 );
1076  }
1077  else // if value == 0:
1078  // pin name is outside the body, and above the pin line
1079  // pin num is below the pin line
1080  {
1081  end.x = std::max( m_length + TARGET_PIN_RADIUS, nameTextLength );
1082  end.y = -begin.y;
1083  begin.y = std::max( minsizeV, nameTextHeight );
1084  }
1085 
1086  // Now, calculate boundary box corners position for the actual pin orientation
1087  int orient = PinDrawOrient( DefaultTransform );
1088 
1089  /* Calculate the pin position */
1090  switch( orient )
1091  {
1092  case PIN_UP:
1093  // Pin is rotated and texts positions are mirrored
1094  RotatePoint( &begin, wxPoint( 0, 0 ), -900 );
1095  RotatePoint( &end, wxPoint( 0, 0 ), -900 );
1096  break;
1097 
1098  case PIN_DOWN:
1099  RotatePoint( &begin, wxPoint( 0, 0 ), 900 );
1100  RotatePoint( &end, wxPoint( 0, 0 ), 900 );
1101  begin.x = -begin.x;
1102  end.x = -end.x;
1103  break;
1104 
1105  case PIN_LEFT:
1106  begin.x = -begin.x;
1107  end.x = -end.x;
1108  break;
1109 
1110  case PIN_RIGHT:
1111  break;
1112  }
1113 
1114  begin += m_position;
1115  end += m_position;
1116 
1117  bbox.SetOrigin( begin );
1118  bbox.SetEnd( end );
1119  bbox.Normalize();
1120  bbox.Inflate( ( GetPenWidth() / 2 ) + 1 );
1121 
1122  // Draw Y axis is reversed in schematic:
1123  bbox.RevertYAxis();
1124 
1125  return bbox;
1126 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int GetPinNameOffset()
int m_numTextSize
Definition: lib_pin.h:74
LIB_PART * GetParent() const
Definition: lib_item.h:183
TRANSFORM DefaultTransform
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
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:797
int m_length
Definition: lib_pin.h:67
void RevertYAxis()
Function RevertYAxis Mirror the rectangle from the X axis (negate Y pos and size)
Definition: eda_rect.h:209
wxString m_number
Definition: lib_pin.h:73
void SetEnd(int x, int y)
Definition: eda_rect.h:192
int GetPenWidth() const override
Definition: lib_pin.cpp:168
bool IsVisible() const
Definition: lib_pin.h:147
void Normalize()
Function Normalize ensures that the height ant width are positive.
Definition: eda_rect.cpp:35
wxPoint m_position
Definition: lib_pin.h:66
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:41
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:68
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:38
static int externalPinDecoSize(RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:85
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:363

References DefaultTransform, externalPinDecoSize(), LIB_ITEM::GetParent(), GetPenWidth(), LIB_PART::GetPinNameOffset(), EDA_RECT::Inflate(), INVERTED, INVERTED_CLOCK, IsVisible(), KiROUND(), m_length, m_name, m_nameTextSize, m_number, m_numTextSize, 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(), and TARGET_PIN_RADIUS.

◆ 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 43 of file lib_pin.cpp.

44 {
45  // These strings are the canonical name of the electrictal type
46  // Not translated, no space in name, only ASCII chars.
47  // to use when the string name must be known and well defined
48  // must have same order than enum ELECTRICAL_PINTYPE (see lib_pin.h)
49  static const wxChar* msgPinElectricType[] =
50  {
51  wxT( "input" ),
52  wxT( "output" ),
53  wxT( "BiDi" ),
54  wxT( "3state" ),
55  wxT( "passive" ),
56  wxT( "unspc" ),
57  wxT( "power_in" ),
58  wxT( "power_out" ),
59  wxT( "openCol" ),
60  wxT( "openEm" ),
61  wxT( "NotConnected" )
62  };
63 
64  return msgPinElectricType[static_cast<int>( aType )];
65 }

◆ GetCanonicalElectricalTypeName() [2/2]

wxString const LIB_PIN::GetCanonicalElectricalTypeName ( ) const
inline

Definition at line 137 of file lib_pin.h.

138  {
140  }
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
wxString const GetCanonicalElectricalTypeName() const
Definition: lib_pin.h:137

References m_type.

◆ GetClass()

wxString LIB_PIN::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Implements EDA_ITEM.

Definition at line 115 of file lib_pin.h.

116  {
117  return wxT( "LIB_PIN" );
118  }

◆ GetConvert()

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 225 of file eda_item.h.

226  {
227  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVED | IS_RESIZED | IS_DRAGGED |
229 
230  return m_flags & mask;
231  }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:107
#define STRUCT_DELETED
flag indication structures to be erased
Definition: eda_item.h:115
#define IS_MOVED
Item being moved.
Definition: eda_item.h:105
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:108
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
Definition: eda_item.h:119
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110
STATUS_FLAGS m_flags
Definition: eda_item.h:164
#define IS_NEW
New item, just created.
Definition: eda_item.h:106

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

Referenced by SCH_EDIT_TOOL::ChangeTextType(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), LIB_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithLibEdit(), SCH_COMPONENT::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), LIB_MOVE_TOOL::Main(), POINT_EDITOR::OnSelectionChange(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), PAD_TOOL::recombinePad(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), and SCH_EDIT_FRAME::TrimWire().

◆ GetElectricalTypeName()

wxString const LIB_PIN::GetElectricalTypeName ( ) const
inline

Definition at line 142 of file lib_pin.h.

143  {
145  }
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:240
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70

References ElectricalPinTypeGetText(), and m_type.

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

◆ GetFillMode()

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

Function GetFocusPosition similar to GetPosition, but allows items to return their visual center rather than their anchor.

Reimplemented in BOARD, PCB_SHAPE, and TRACK.

Definition at line 333 of file eda_item.h.

333 { return GetPosition(); }
virtual wxPoint GetPosition() const
Definition: eda_item.h:325

References EDA_ITEM::GetPosition().

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

◆ 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 1129 of file lib_pin.cpp.

1130 {
1132 }
BITMAP_DEF ElectricalPinTypeGetBitmap(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:250
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70

References ElectricalPinTypeGetBitmap(), and m_type.

◆ GetMsgPanelInfo()

void LIB_PIN::GetMsgPanelInfo ( EDA_DRAW_FRAME aFrame,
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.

Definition at line 975 of file lib_pin.cpp.

976 {
977  wxString text = m_number.IsEmpty() ? wxT( "?" ) : m_number;
978 
979  LIB_ITEM::GetMsgPanelInfo( aFrame, aList );
980 
981  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), m_name ) );
982  aList.push_back( MSG_PANEL_ITEM( _( "Number" ), text ) );
983  aList.push_back( MSG_PANEL_ITEM( _( "Type" ), ElectricalPinTypeGetText( m_type ) ) );
984 
985  text = PinShapeGetText( m_shape );
986  aList.push_back( MSG_PANEL_ITEM( _( "Style" ), text ) );
987 
988  text = IsVisible() ? _( "Yes" ) : _( "No" );
989  aList.push_back( MSG_PANEL_ITEM( _( "Visible" ), text ) );
990 
991  // Display pin length
992  text = StringFromValue( aFrame->GetUserUnits(), m_length );
993  aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text ) );
994 
995  text = PinOrientationName( (unsigned) PinOrientationIndex( m_orientation ) );
996  aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text ) );
997 
998  wxPoint pinpos = GetPosition();
999  pinpos.y = -pinpos.y; // Display coord are top to bottom
1000  // lib items coord are bottom to top
1001 
1002  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.x );
1003  aList.push_back( MSG_PANEL_ITEM( _( "Pos X" ), text ) );
1004 
1005  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.y );
1006  aList.push_back( MSG_PANEL_ITEM( _( "Pos Y" ), text ) );
1007 }
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Definition: base_units.cpp:123
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:240
int PinOrientationIndex(int code)
Definition: pin_type.cpp:150
wxString m_name
Definition: lib_pin.h:72
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:260
int m_length
Definition: lib_pin.h:67
wxString PinOrientationName(unsigned aPinOrientationCode)
Definition: pin_type.cpp:119
int m_orientation
Definition: lib_pin.h:68
wxString m_number
Definition: lib_pin.h:73
bool IsVisible() const
Definition: lib_pin.h:147
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, 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:50
wxPoint GetPosition() const override
Definition: lib_pin.h:258
#define _(s)
Definition: 3d_actions.cpp:33
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
wxString StringFromValue(EDA_UNITS aUnits, double aValue, bool aAddUnitSymbol, EDA_DATA_TYPE aType)
Function StringFromValue returns the string from aValue according to units (inch, mm ....
Definition: base_units.cpp:220
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:54
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

References _, ElectricalPinTypeGetText(), LIB_ITEM::GetMsgPanelInfo(), GetPosition(), EDA_BASE_FRAME::GetUserUnits(), IsVisible(), m_length, m_name, m_number, m_orientation, m_shape, m_type, MessageTextFromValue(), PinOrientationIndex(), PinOrientationName(), PinShapeGetText(), and StringFromValue().

Referenced by LIB_PIN_TOOL::EditPinProperties().

◆ GetName()

◆ GetNameTextSize()

◆ GetNumber()

◆ GetNumberTextSize()

◆ GetOrientation()

◆ GetParent()

◆ GetPenWidth()

int LIB_PIN::GetPenWidth ( ) const
overridevirtual

Implements LIB_ITEM.

Definition at line 168 of file lib_pin.cpp.

169 {
170  return 1;
171 }

Referenced by GetBoundingBox(), 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 1135 of file lib_pin.cpp.

1136 {
1137  if( !m_name.IsEmpty() )
1138  {
1139  return wxString::Format( _( "Pin %s [%s, %s, %s]" ),
1140  m_number,
1141  m_name,
1143  PinShapeGetText( m_shape ) );
1144  }
1145  else
1146  {
1147  return wxString::Format( _( "Pin %s [%s, %s]" ),
1148  m_number,
1150  PinShapeGetText( m_shape ) );
1151  }
1152 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
wxString m_name
Definition: lib_pin.h:72
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:260
wxString m_number
Definition: lib_pin.h:73
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:142
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
#define _(s)
Definition: 3d_actions.cpp:33

References _, Format(), GetElectricalTypeName(), m_name, m_number, m_shape, and PinShapeGetText().

Referenced by SCH_PIN::GetSelectMenuText().

◆ GetShape()

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 204 of file eda_item.h.

205  {
206  return m_status & type;
207  }
STATUS_FLAGS m_status
Definition: eda_item.h:161

References EDA_ITEM::m_status.

Referenced by TRACK::GetMsgPanelInfoBase_Common(), and TRACK::IsLocked().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 217 of file eda_item.h.

217 { return m_status; }
STATUS_FLAGS m_status
Definition: eda_item.h:161

References EDA_ITEM::m_status.

◆ GetType()

◆ GetTypeName()

wxString LIB_PIN::GetTypeName ( ) const
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 120 of file lib_pin.h.

121  {
122  return _( "Pin" );
123  }
#define _(s)
Definition: 3d_actions.cpp:33

References _.

◆ GetUnit()

◆ GetWidth()

int LIB_PIN::GetWidth ( ) const
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 269 of file lib_pin.h.

269 { return 1; }

◆ 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 143 of file lib_pin.cpp.

144 {
145  EDA_RECT rect = GetBoundingBox();
146 
147  return rect.Inflate( aAccuracy ).Contains( aPosition );
148 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:222
bool Contains(const wxPoint &aPoint) const
Function Contains.
Definition: eda_rect.cpp:57
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.
Definition: eda_rect.cpp:363

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

◆ HitTest() [2/2]

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

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 LIB_ITEM.

Definition at line 151 of file lib_pin.cpp.

152 {
153  if( m_flags & (STRUCT_DELETED | SKIP_STRUCT ) )
154  return false;
155 
156  EDA_RECT sel = aRect;
157 
158  if ( aAccuracy )
159  sel.Inflate( aAccuracy );
160 
161  if( aContained )
162  return sel.Contains( GetBoundingBox( false, true ) );
163 
164  return sel.Intersects( GetBoundingBox( false, true ) );
165 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:222
bool Contains(const wxPoint &aPoint) const
Function Contains.
Definition: eda_rect.cpp:57
#define STRUCT_DELETED
flag indication structures to be erased
Definition: eda_item.h:115
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.
Definition: eda_rect.cpp:150
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: eda_item.h:117
STATUS_FLAGS m_flags
Definition: eda_item.h:164
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:363

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

◆ IsBrightened()

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 189 of file eda_item.h.

189 { return m_flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:108
STATUS_FLAGS m_flags
Definition: eda_item.h:164

References IS_DRAGGED, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), and KIGFX::SCH_PAINTER::setDeviceColors().

◆ 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 293 of file lib_item.h.

293 { return m_isFillable; }
bool m_isFillable
Definition: lib_item.h:95

References LIB_ITEM::m_isFillable.

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

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 274 of file eda_item.h.

274 { return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:163

References EDA_ITEM::m_forceVisible.

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

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 186 of file eda_item.h.

186 { return m_flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: eda_item.h:102
STATUS_FLAGS m_flags
Definition: eda_item.h:164

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 234 of file lib_pin.h.

235  {
237  && ( !IsVisible() || (LIB_PART*) GetParent()->IsPower() );
238  }
power input (GND, VCC for ICs). Must be connected to a power output.
LIB_PART * GetParent() const
Definition: lib_item.h:183
Define a library symbol object.
bool IsVisible() const
Definition: lib_pin.h:147
ELECTRICAL_PINTYPE GetType() const
Definition: lib_pin.h:134
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 490 of file eda_item.h.

490 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 192 of file eda_item.h.

192 { return m_flags & IS_RESIZED; }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:107
STATUS_FLAGS m_flags
Definition: eda_item.h:164

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 VIA, SCH_LABEL, DIMENSION_BASE, PAD, PCB_SHAPE, SCH_FIELD, SCH_LINE, FP_TEXT, FP_SHAPE, and PCB_TEXT.

Definition at line 250 of file eda_item.h.

251  {
252  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
253  return true;
254 
255  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
256  {
257  if( m_structType == *p )
258  return true;
259  }
260 
261  return false;
262  }
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
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:158

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(), PCB_TEXT::IsType(), FP_SHAPE::IsType(), FP_TEXT::IsType(), SCH_LINE::IsType(), SCH_FIELD::IsType(), PCB_SHAPE::IsType(), PAD::IsType(), DIMENSION_BASE::IsType(), SCH_LABEL::IsType(), VIA::IsType(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), SCH_BASE_FRAME::UpdateItem(), EDA_ITEM::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsVisible()

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 190 of file eda_item.h.

190 { return m_flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110
STATUS_FLAGS m_flags
Definition: eda_item.h:164

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 372 of file eda_item.h.

376  {
377  for( auto it : aList )
378  {
379  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
381  return SEARCH_RESULT::QUIT;
382  }
383 
385  }
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...
Definition: eda_item.cpp:107

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

Referenced by GERBER_FILE_IMAGE::Visit().

◆ IterateForward() [2/2]

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

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 393 of file eda_item.h.

395  {
396  for( auto it : aList )
397  {
398  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
400  return SEARCH_RESULT::QUIT;
401  }
402 
404  }
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...
Definition: eda_item.cpp:107

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

◆ Matches() [1/2]

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

Function Matches compares the item against the search criteria in aSearchData.

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

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

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

Definition at line 446 of file eda_item.h.

447  {
448  return false;
449  }

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

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

133 {
134  wxString text = aText;
135  wxString searchText = aSearchData.GetFindString();
136 
137  // Don't match if searching for replaceable item and the item doesn't support text replace.
138  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
139  return false;
140 
141  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
142  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
143 
144  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
145  {
146  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
147  return text.Matches( searchText );
148 
149  return text.MakeUpper().Matches( searchText.MakeUpper() );
150  }
151 
152  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
153  return aText.Find( searchText ) != wxNOT_FOUND;
154 
155  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
156 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: eda_item.h:490

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 905 of file lib_pin.cpp.

906 {
907  m_position.x -= aCenter.x;
908  m_position.x *= -1;
909  m_position.x += aCenter.x;
910 
911  if( m_orientation == PIN_RIGHT )
913  else if( m_orientation == PIN_LEFT )
915 }
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

References m_orientation, m_position, PIN_LEFT, and PIN_RIGHT.

◆ 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 918 of file lib_pin.cpp.

919 {
920  m_position.y -= aCenter.y;
921  m_position.y *= -1;
922  m_position.y += aCenter.y;
923 
924  if( m_orientation == PIN_UP )
926  else if( m_orientation == PIN_DOWN )
928 }
Definition: lib_pin.h:50
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

References m_orientation, m_position, PIN_DOWN, and PIN_UP.

◆ 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 895 of file lib_pin.cpp.

896 {
897  if( m_position != aNewPosition )
898  {
899  m_position = aNewPosition;
900  SetModified();
901  }
902 }
void SetModified()
Definition: eda_item.cpp:79
wxPoint m_position
Definition: lib_pin.h:66

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 889 of file lib_pin.cpp.

890 {
891  m_position += aOffset;
892 }
wxPoint m_position
Definition: lib_pin.h:66

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 99 of file lib_item.cpp.

100 {
101  int result = m_Convert - aOther.m_Convert;
102 
103  if( result != 0 )
104  return result < 0;
105 
106  result = m_Unit - aOther.m_Unit;
107 
108  if( result != 0 )
109  return result < 0;
110 
111  result = Type() - aOther.Type();
112 
113  if( result != 0 )
114  return result < 0;
115 
116  return ( compare( aOther ) < 0 );
117 }
int m_Unit
Unit identification for multiple parts per package.
Definition: lib_item.h:82
int m_Convert
Shape identification for alternate body styles.
Definition: lib_item.h:88
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:74
KICAD_T Type() const
Function Type()
Definition: eda_item.h:181

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

186 {
187  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
188  GetClass() ) );
189 
190  return false;
191 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References Format(), 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 93 of file lib_item.cpp.

94 {
95  return compare( aOther ) == 0;
96 }
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:74

References LIB_ITEM::compare().

◆ operator==() [2/2]

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

Definition at line 222 of file lib_item.h.

223  {
224  return *this == *aOther;
225  }

◆ 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 797 of file lib_pin.cpp.

798 {
799  int orient;
800  wxPoint end; // position of pin end starting at 0,0 according to its orientation, length = 1
801 
802  switch( m_orientation )
803  {
804  case PIN_UP: end.y = 1; break;
805  case PIN_DOWN: end.y = -1; break;
806  case PIN_LEFT: end.x = -1; break;
807  case PIN_RIGHT: end.x = 1; break;
808  }
809 
810  // = pos of end point, according to the component orientation
811  end = aTransform.TransformCoordinate( end );
812  orient = PIN_UP;
813 
814  if( end.x == 0 )
815  {
816  if( end.y > 0 )
817  orient = PIN_DOWN;
818  }
819  else
820  {
821  orient = PIN_RIGHT;
822 
823  if( end.x < 0 )
824  orient = PIN_LEFT;
825  }
826 
827  return orient;
828 }
Definition: lib_pin.h:50
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
int m_orientation
Definition: lib_pin.h:68

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

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

◆ 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 960 of file lib_pin.cpp.

962 {
963  if( ! IsVisible() )
964  return;
965 
966  int orient = PinDrawOrient( aTransform );
967  wxPoint pos = aTransform.TransformCoordinate( m_position ) + aPffset;
968 
969  PlotSymbol( aPlotter, pos, orient );
970  PlotPinTexts( aPlotter, pos, orient, GetParent()->GetPinNameOffset(),
971  GetParent()->ShowPinNumbers(), GetParent()->ShowPinNames() );
972 }
LIB_PART * GetParent() const
Definition: lib_item.h:183
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:797
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
void PlotSymbol(PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation)
Definition: lib_pin.cpp:516
bool IsVisible() const
Definition: lib_pin.h:147
void PlotPinTexts(PLOTTER *aPlotter, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
Plot the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:645
wxPoint m_position
Definition: lib_pin.h:66

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

◆ PlotPinTexts()

void LIB_PIN::PlotPinTexts ( PLOTTER aPlotter,
wxPoint &  aPinPos,
int  aPinOrient,
int  aTextInside,
bool  aDrawPinNum,
bool  aDrawPinName 
)

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 645 of file lib_pin.cpp.

647 {
648  if( m_name.IsEmpty() || m_name == wxT( "~" ) )
649  aDrawPinName = false;
650 
651  if( m_number.IsEmpty() )
652  aDrawPinNum = false;
653 
654  if( !aDrawPinNum && !aDrawPinName )
655  return;
656 
657  int x, y;
658  wxSize pinNameSize = wxSize( m_nameTextSize, m_nameTextSize );
659  wxSize pinNumSize = wxSize( m_numTextSize, m_numTextSize );
660 
661  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
662  aPlotter->RenderSettings()->GetDefaultPenWidth() );
663  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
664  aPlotter->RenderSettings()->GetDefaultPenWidth() );
665 
666  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
667  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
668 
669  /* Get the num and name colors */
670  COLOR4D nameColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNAM );
671  COLOR4D numColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNUM );
672 
673  int x1 = aPinPos.x;
674  int y1 = aPinPos.y;
675 
676  switch( aPinOrient )
677  {
678  case PIN_UP: y1 -= m_length; break;
679  case PIN_DOWN: y1 += m_length; break;
680  case PIN_LEFT: x1 -= m_length; break;
681  case PIN_RIGHT: x1 += m_length; break;
682  }
683 
684  /* Draw the text inside, but the pin numbers outside. */
685  if( aTextInside )
686  {
687  if( ( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) ) /* Its an horizontal line. */
688  {
689  if( aDrawPinName )
690  {
691  if( aPinOrient == PIN_RIGHT )
692  {
693  x = x1 + aTextInside;
694  aPlotter->Text( wxPoint( x, y1 ), nameColor, m_name, TEXT_ANGLE_HORIZ,
696  namePenWidth, false, false );
697  }
698  else // orient == PIN_LEFT
699  {
700  x = x1 - aTextInside;
701 
702  if( aDrawPinName )
703  {
704  aPlotter->Text( wxPoint( x, y1 ), nameColor, m_name, TEXT_ANGLE_HORIZ,
705  pinNameSize, GR_TEXT_HJUSTIFY_RIGHT,
706  GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false, false );
707  }
708  }
709  }
710  if( aDrawPinNum )
711  {
712  aPlotter->Text( wxPoint( ( x1 + aPinPos.x) / 2, y1 - num_offset ), numColor,
714  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
715  }
716  }
717  else /* Its a vertical line. */
718  {
719  if( aPinOrient == PIN_DOWN )
720  {
721  y = y1 + aTextInside;
722 
723  if( aDrawPinName )
724  aPlotter->Text( wxPoint( x1, y ), nameColor, m_name, TEXT_ANGLE_VERT,
726  namePenWidth, false, false );
727 
728  if( aDrawPinNum )
729  {
730  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
732  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
733  }
734  }
735  else /* PIN_UP */
736  {
737  y = y1 - aTextInside;
738 
739  if( aDrawPinName )
740  {
741  aPlotter->Text( wxPoint( x1, y ), nameColor, m_name, TEXT_ANGLE_VERT,
743  namePenWidth, false, false );
744  }
745 
746  if( aDrawPinNum )
747  {
748  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
750  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
751  }
752  }
753  }
754  }
755  else /* Draw num & text pin outside */
756  {
757  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
758  {
759  /* Its an horizontal line. */
760  if( aDrawPinName )
761  {
762  x = ( x1 + aPinPos.x) / 2;
763  aPlotter->Text( wxPoint( x, y1 - name_offset ), nameColor, m_name,
765  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
766  }
767 
768  if( aDrawPinNum )
769  {
770  x = ( x1 + aPinPos.x ) / 2;
771  aPlotter->Text( wxPoint( x, y1 + num_offset ), numColor, m_number,
773  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
774  }
775  }
776  else /* Its a vertical line. */
777  {
778  if( aDrawPinName )
779  {
780  y = ( y1 + aPinPos.y ) / 2;
781  aPlotter->Text( wxPoint( x1 - name_offset, y ), nameColor, m_name,
783  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
784  }
785 
786  if( aDrawPinNum )
787  {
788  aPlotter->Text( wxPoint( x1 + num_offset, ( y1 + aPinPos.y ) / 2 ), numColor,
790  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
791  }
792  }
793  }
794 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:75
int m_numTextSize
Definition: lib_pin.h:74
const COLOR4D & GetLayerColor(int aLayer) const
Function GetLayerColor Returns the color used to draw a layer.
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
virtual void Text(const wxPoint &aPos, const 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, bool aMultilineAllowed=false, void *aData=NULL)
Draws text with the plotter.
Definition: gr_text.cpp:219
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:69
wxString m_number
Definition: lib_pin.h:73
int GetPenWidth() const override
Definition: lib_pin.cpp:168
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:165
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:41
int GetDefaultPenWidth() const
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), 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::RenderSettings(), PLOTTER::Text(), TEXT_ANGLE_HORIZ, and TEXT_ANGLE_VERT.

Referenced by Plot().

◆ PlotSymbol()

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

Definition at line 516 of file lib_pin.cpp.

517 {
518  int MapX1, MapY1, x1, y1;
520  int penWidth = std::max( GetPenWidth(), aPlotter->RenderSettings()->GetDefaultPenWidth() );
521 
522  aPlotter->SetColor( color );
523  aPlotter->SetCurrentLineWidth( penWidth );
524 
525  MapX1 = MapY1 = 0;
526  x1 = aPosition.x; y1 = aPosition.y;
527 
528  switch( aOrientation )
529  {
530  case PIN_UP: y1 = aPosition.y - m_length; MapY1 = 1; break;
531  case PIN_DOWN: y1 = aPosition.y + m_length; MapY1 = -1; break;
532  case PIN_LEFT: x1 = aPosition.x - m_length; MapX1 = 1; break;
533  case PIN_RIGHT: x1 = aPosition.x + m_length; MapX1 = -1; break;
534  }
535 
537  {
538  const int radius = externalPinDecoSize( aPlotter->RenderSettings(), *this );
539  aPlotter->Circle( wxPoint( MapX1 * radius + x1, MapY1 * radius + y1 ), radius * 2,
540  FILL_TYPE::NO_FILL, penWidth );
541 
542  aPlotter->MoveTo( wxPoint( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 ) );
543  aPlotter->FinishTo( aPosition );
544  }
546  {
547  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
548  if( MapY1 == 0 ) /* MapX1 = +- 1 */
549  {
550  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
551  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
552  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
553  }
554  else /* MapX1 = 0 */
555  {
556  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
557  aPlotter->LineTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
558  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
559  }
560 
561  aPlotter->MoveTo( wxPoint( MapX1 * deco_size * 2 + x1, MapY1 * deco_size * 2 + y1 ) );
562  aPlotter->FinishTo( aPosition );
563  }
564  else
565  {
566  aPlotter->MoveTo( wxPoint( x1, y1 ) );
567  aPlotter->FinishTo( aPosition );
568  }
569 
573  {
574  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
575  if( MapY1 == 0 ) /* MapX1 = +- 1 */
576  {
577  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
578  aPlotter->LineTo( wxPoint( x1 - MapX1 * deco_size * 2, y1 ) );
579  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
580  }
581  else /* MapX1 = 0 */
582  {
583  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
584  aPlotter->LineTo( wxPoint( x1, y1 - MapY1 * deco_size * 2 ) );
585  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
586  }
587  }
588 
590  || m_shape == GRAPHIC_PINSHAPE::CLOCK_LOW ) /* IEEE symbol "Active Low Input" */
591  {
592  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
593 
594  if( MapY1 == 0 ) /* MapX1 = +- 1 */
595  {
596  aPlotter->MoveTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
597  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 - deco_size * 2 ) );
598  aPlotter->FinishTo( wxPoint( x1, y1 ) );
599  }
600  else /* MapX1 = 0 */
601  {
602  aPlotter->MoveTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
603  aPlotter->LineTo( wxPoint( x1 - deco_size * 2, y1 + MapY1 * deco_size * 2 ) );
604  aPlotter->FinishTo( wxPoint( x1, y1 ) );
605  }
606  }
607 
608  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
609  {
610  const int symbol_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
611 
612  if( MapY1 == 0 ) /* MapX1 = +- 1 */
613  {
614  aPlotter->MoveTo( wxPoint( x1, y1 - symbol_size * 2 ) );
615  aPlotter->FinishTo( wxPoint( x1 + MapX1 * symbol_size * 2, y1 ) );
616  }
617  else /* MapX1 = 0 */
618  {
619  aPlotter->MoveTo( wxPoint( x1 - symbol_size * 2, y1 ) );
620  aPlotter->FinishTo( wxPoint( x1, y1 + MapY1 * symbol_size * 2 ) );
621  }
622  }
623  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
624  {
625  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
626  aPlotter->MoveTo( wxPoint( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size ) );
627  aPlotter->FinishTo( wxPoint( x1 + (MapX1 + MapY1) * deco_size, y1 + (MapY1 - MapX1) * deco_size ) );
628  aPlotter->MoveTo( wxPoint( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size ) );
629  aPlotter->FinishTo( wxPoint( x1 + (MapX1 - MapY1) * deco_size, y1 + (MapY1 + MapX1) * deco_size ) );
630  }
631 
632  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
633  {
634  const int deco_size = TARGET_PIN_RADIUS;
635  const int ex1 = aPosition.x;
636  const int ey1 = aPosition.y;
637  aPlotter->MoveTo( wxPoint( ex1 - deco_size, ey1 - deco_size ) );
638  aPlotter->FinishTo( wxPoint( ex1 + deco_size, ey1 + deco_size ) );
639  aPlotter->MoveTo( wxPoint( ex1 + deco_size, ey1 - deco_size ) );
640  aPlotter->FinishTo( wxPoint( ex1 - deco_size, ey1 + deco_size ) );
641  }
642 }
void FinishTo(const wxPoint &pos)
Definition: plotter.h:277
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
virtual void SetColor(COLOR4D color)=0
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Function GetLayerColor Returns the color used to draw a layer.
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
static int internalPinDecoSize(RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:72
void LineTo(const wxPoint &pos)
Definition: plotter.h:272
int GetPenWidth() const override
Definition: lib_pin.cpp:168
virtual void Circle(const wxPoint &pos, int diametre, FILL_TYPE fill, int width=USE_DEFAULT_LINE_WIDTH)=0
void MoveTo(const wxPoint &pos)
Definition: plotter.h:267
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:165
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:38
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
int GetDefaultPenWidth() const
static int externalPinDecoSize(RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:85
not connected (must be left open)
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:100

References PLOTTER::Circle(), CLOCK, CLOCK_LOW, color, externalPinDecoSize(), FALLING_EDGE_CLOCK, PLOTTER::FinishTo(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), 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::RenderSettings(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), and TARGET_PIN_RADIUS.

Referenced by Plot().

◆ Print()

void LIB_ITEM::Print ( RENDER_SETTINGS aSettings,
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 137 of file lib_item.cpp.

139 {
140  print( aSettings, aOffset, aData, aTransform );
141 }
virtual void print(RENDER_SETTINGS *aSettings, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform)=0
Print the item to aDC.

References LIB_ITEM::print().

Referenced by DIALOG_PIN_PROPERTIES::OnPaintShowPanel().

◆ print()

void LIB_PIN::print ( RENDER_SETTINGS aSettings,
const wxPoint &  aOffset,
void *  aData,
const TRANSFORM aTransform 
)
overridevirtual

Print a pin, with or without the pin texts.

Parameters
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 174 of file lib_pin.cpp.

176 {
177  PART_DRAW_OPTIONS* opts = (PART_DRAW_OPTIONS*) aData;
178  bool drawHiddenFields = opts ? opts->draw_hidden_fields : false;
179  bool showPinType = opts ? opts->show_elec_type : false;
180 
181  LIB_PART* part = GetParent();
182 
183  /* Calculate pin orient taking in account the component orientation. */
184  int orient = PinDrawOrient( aTransform );
185 
186  /* Calculate the pin position */
187  wxPoint pos1 = aTransform.TransformCoordinate( m_position ) + aOffset;
188 
189  if( IsVisible() || drawHiddenFields )
190  {
191  printPinSymbol( aSettings, pos1, orient );
192 
193  printPinTexts( aSettings, pos1, orient, part->GetPinNameOffset(), part->ShowPinNumbers(),
194  part->ShowPinNames() );
195 
196  if( showPinType )
197  printPinElectricalTypeName( aSettings, pos1, orient );
198  }
199 }
void printPinElectricalTypeName(RENDER_SETTINGS *aSettings, wxPoint &aPosition, int aOrientation)
Draw the electrical type text of the pin (only for the footprint editor)
Definition: lib_pin.cpp:463
int GetPinNameOffset()
void printPinTexts(RENDER_SETTINGS *aSettings, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
Put the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:313
LIB_PART * GetParent() const
Definition: lib_item.h:183
void printPinSymbol(RENDER_SETTINGS *aSettings, const wxPoint &aPos, int aOrientation)
Print the pin symbol without text.
Definition: lib_pin.cpp:202
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:797
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
Definition: lib_pin.h:147
wxPoint m_position
Definition: lib_pin.h:66

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().

◆ printPinElectricalTypeName()

void LIB_PIN::printPinElectricalTypeName ( RENDER_SETTINGS aSettings,
wxPoint &  aPosition,
int  aOrientation 
)
protected

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

Definition at line 463 of file lib_pin.cpp.

465 {
466  wxDC* DC = aSettings->GetPrintDC();
467  wxString typeName = GetElectricalTypeName();
468 
469  // Use a reasonable (small) size to draw the text
470  int textSize = ( m_nameTextSize * 3 ) / 4;
471 
472  #define ETXT_MAX_SIZE Millimeter2iu( 0.7 )
473 
474  if( textSize > ETXT_MAX_SIZE )
475  textSize = ETXT_MAX_SIZE;
476 
477  // Use a reasonable pen size to draw the text
478  int pensize = textSize/6;
479 
480  // Get a suitable color
482 
483  wxPoint txtpos = aPosition;
484  int offset = Millimeter2iu( 0.4 );
486  int orient = TEXT_ANGLE_HORIZ;
487 
488  switch( aOrientation )
489  {
490  case PIN_UP:
491  txtpos.y += offset;
492  orient = TEXT_ANGLE_VERT;
493  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
494  break;
495 
496  case PIN_DOWN:
497  txtpos.y -= offset;
498  orient = TEXT_ANGLE_VERT;
499  break;
500 
501  case PIN_LEFT:
502  txtpos.x += offset;
503  break;
504 
505  case PIN_RIGHT:
506  txtpos.x -= offset;
507  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
508  break;
509  }
510 
511  GRText( DC, txtpos, color, typeName, orient, wxSize( textSize, textSize ), hjustify,
512  GR_TEXT_VJUSTIFY_CENTER, pensize, false, false, 0 );
513 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:75
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:61
#define ETXT_MAX_SIZE
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Function GetLayerColor Returns the color used to draw a layer.
Definition: lib_pin.h:50
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:142
bool IsVisible() const
Definition: lib_pin.h:147
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 footprint texts)
Definition: gr_text.cpp:131
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
static constexpr int Millimeter2iu(double mm)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References color, ETXT_MAX_SIZE, GetElectricalTypeName(), KIGFX::RENDER_SETTINGS::GetLayerColor(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, GRText(), IsVisible(), LAYER_HIDDEN, LAYER_NOTES, m_nameTextSize, Millimeter2iu(), PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, TEXT_ANGLE_HORIZ, and TEXT_ANGLE_VERT.

Referenced by print().

◆ printPinSymbol()

void LIB_PIN::printPinSymbol ( RENDER_SETTINGS aSettings,
const wxPoint &  aPos,
int  aOrientation 
)
protected

Print the pin symbol without text.

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

Definition at line 202 of file lib_pin.cpp.

203 {
204  wxDC* DC = aSettings->GetPrintDC();
205  int MapX1, MapY1, x1, y1;
206  int width = std::max( GetPenWidth(), aSettings->GetDefaultPenWidth() );
207  int posX = aPos.x, posY = aPos.y, len = m_length;
209 
210  MapX1 = MapY1 = 0;
211  x1 = posX;
212  y1 = posY;
213 
214  switch( aOrient )
215  {
216  case PIN_UP: y1 = posY - len; MapY1 = 1; break;
217  case PIN_DOWN: y1 = posY + len; MapY1 = -1; break;
218  case PIN_LEFT: x1 = posX - len; MapX1 = 1; break;
219  case PIN_RIGHT: x1 = posX + len; MapX1 = -1; break;
220  }
221 
223  {
224  const int radius = externalPinDecoSize( aSettings, *this );
225  GRCircle( nullptr, DC, MapX1 * radius + x1, MapY1 * radius + y1, radius, width, color );
226 
227  GRMoveTo( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 );
228  GRLineTo( nullptr, DC, posX, posY, width, color );
229  }
230  else
231  {
232  GRMoveTo( x1, y1 );
233  GRLineTo( nullptr, DC, posX, posY, width, color );
234  }
235 
236  // Draw the clock shape (>)inside the symbol
241  {
242  const int clock_size = internalPinDecoSize( aSettings, *this );
243  if( MapY1 == 0 ) /* MapX1 = +- 1 */
244  {
245  GRMoveTo( x1, y1 + clock_size );
246  GRLineTo( nullptr, DC, x1 - MapX1 * clock_size * 2, y1, width, color );
247  GRLineTo( nullptr, DC, x1, y1 - clock_size, width, color );
248  }
249  else /* MapX1 = 0 */
250  {
251  GRMoveTo( x1 + clock_size, y1 );
252  GRLineTo( nullptr, DC, x1, y1 - MapY1 * clock_size * 2, width, color );
253  GRLineTo( nullptr, DC, x1 - clock_size, y1, width, color );
254  }
255  }
256 
257  // Draw the active low (or H to L active transition)
261  {
262  const int deco_size = externalPinDecoSize( aSettings, *this );
263  if( MapY1 == 0 ) /* MapX1 = +- 1 */
264  {
265  GRMoveTo( x1 + MapX1 * deco_size * 2, y1 );
266  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1 - deco_size * 2, width, color );
267  GRLineTo( nullptr, DC, x1, y1, width, color );
268  }
269  else /* MapX1 = 0 */
270  {
271  GRMoveTo( x1, y1 + MapY1 * deco_size * 2 );
272  GRLineTo( nullptr, DC, x1 - deco_size * 2, y1 + MapY1 * deco_size * 2, width, color );
273  GRLineTo( nullptr, DC, x1, y1, width, color );
274  }
275  }
276 
277  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
278  {
279  const int deco_size = externalPinDecoSize( aSettings, *this );
280  if( MapY1 == 0 ) /* MapX1 = +- 1 */
281  {
282  GRMoveTo( x1, y1 - deco_size * 2 );
283  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1, width, color );
284  }
285  else /* MapX1 = 0 */
286  {
287  GRMoveTo( x1 - deco_size * 2, y1 );
288  GRLineTo( nullptr, DC, x1, y1 + MapY1 * deco_size * 2, width, color );
289  }
290  }
291  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
292  {
293  const int deco_size = externalPinDecoSize( aSettings, *this );
294  GRMoveTo( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size );
295  GRLineTo( nullptr, DC, x1 + (MapX1 + MapY1) * deco_size,
296  y1 + ( MapY1 - MapX1 ) * deco_size, width, color );
297  GRMoveTo( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size );
298  GRLineTo( nullptr, DC, x1 + (MapX1 - MapY1) * deco_size,
299  y1 + ( MapY1 + MapX1 ) * deco_size, width, color );
300  }
301 
302  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
303  {
304  const int deco_size = TARGET_PIN_RADIUS;
305  GRLine( nullptr, DC, posX - deco_size, posY - deco_size, posX + deco_size,
306  posY + deco_size, width, color );
307  GRLine( nullptr, DC, posX + deco_size, posY - deco_size, posX - deco_size,
308  posY + deco_size, width, color );
309  }
310 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Function GetLayerColor Returns the color used to draw a layer.
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
void GRLineTo(EDA_RECT *ClipBox, wxDC *DC, int x, int y, int width, COLOR4D Color)
Definition: gr_basic.cpp:264
static int internalPinDecoSize(RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:72
int GetPenWidth() const override
Definition: lib_pin.cpp:168
bool IsVisible() const
Definition: lib_pin.h:147
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:228
void GRMoveTo(int x, int y)
Definition: gr_basic.cpp:254
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:594
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:38
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
int GetDefaultPenWidth() const
static int externalPinDecoSize(RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:85
not connected (must be left open)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References CLOCK, CLOCK_LOW, color, externalPinDecoSize(), FALLING_EDGE_CLOCK, KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GRCircle(), GRLine(), GRLineTo(), GRMoveTo(), INPUT_LOW, internalPinDecoSize(), INVERTED, INVERTED_CLOCK, IsVisible(), LAYER_HIDDEN, LAYER_PIN, m_length, m_shape, m_type, NONLOGIC, OUTPUT_LOW, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, PT_NC, and TARGET_PIN_RADIUS.

Referenced by print().

◆ printPinTexts()

void LIB_PIN::printPinTexts ( RENDER_SETTINGS aSettings,
wxPoint &  aPinPos,
int  aPinOrient,
int  aTextInside,
bool  aDrawPinNum,
bool  aDrawPinName 
)
protected

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

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

Definition at line 313 of file lib_pin.cpp.

315 {
316  if( !aDrawPinName && !aDrawPinNum )
317  return;
318 
319  int x, y;
320  wxDC* DC = aSettings->GetPrintDC();
321  wxSize PinNameSize( m_nameTextSize, m_nameTextSize );
322  wxSize PinNumSize( m_numTextSize, m_numTextSize );
323 
324  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
325  aSettings->GetDefaultPenWidth() );
326  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
327  aSettings->GetDefaultPenWidth() );
328 
329  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
330  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
331 
332  /* Get the num and name colors */
333  COLOR4D NameColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNAM : LAYER_HIDDEN );
334  COLOR4D NumColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNUM : LAYER_HIDDEN );
335 
336  int x1 = aPinPos.x;
337  int y1 = aPinPos.y;
338 
339  switch( aPinOrient )
340  {
341  case PIN_UP: y1 -= m_length; break;
342  case PIN_DOWN: y1 += m_length; break;
343  case PIN_LEFT: x1 -= m_length; break;
344  case PIN_RIGHT: x1 += m_length; break;
345  }
346 
347  if( m_name.IsEmpty() )
348  aDrawPinName = false;
349 
350  if( aTextInside ) // Draw the text inside, but the pin numbers outside.
351  {
352  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
353  {
354  // It is an horizontal line
355  if( aDrawPinName )
356  {
357  if( aPinOrient == PIN_RIGHT )
358  {
359  x = x1 + aTextInside;
360  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
362  namePenWidth, false, false );
363  }
364  else // Orient == PIN_LEFT
365  {
366  x = x1 - aTextInside;
367  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
369  namePenWidth, false, false );
370  }
371  }
372 
373  if( aDrawPinNum )
374  {
375  GRText( DC, wxPoint(( x1 + aPinPos.x) / 2, y1 - num_offset ), NumColor, m_number,
377  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
378  }
379  }
380  else /* Its a vertical line. */
381  {
382  // Text is drawn from bottom to top (i.e. to negative value for Y axis)
383  if( aPinOrient == PIN_DOWN )
384  {
385  y = y1 + aTextInside;
386 
387  if( aDrawPinName )
388  {
389  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
390  GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
391  false );
392  }
393 
394  if( aDrawPinNum )
395  {
396  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
398  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
399  }
400  }
401  else /* PIN_UP */
402  {
403  y = y1 - aTextInside;
404 
405  if( aDrawPinName )
406  {
407  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
408  GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
409  false );
410  }
411 
412  if( aDrawPinNum )
413  {
414  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
416  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
417  }
418  }
419  }
420  }
421  else /**** Draw num & text pin outside ****/
422  {
423  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
424  {
425  /* Its an horizontal line. */
426  if( aDrawPinName )
427  {
428  x = ( x1 + aPinPos.x) / 2;
429  GRText( DC, wxPoint( x, y1 - name_offset ), NameColor, m_name, TEXT_ANGLE_HORIZ,
431  namePenWidth, false, false );
432  }
433  if( aDrawPinNum )
434  {
435  x = ( x1 + aPinPos.x) / 2;
436  GRText( DC, wxPoint( x, y1 + num_offset ), NumColor, m_number, TEXT_ANGLE_HORIZ,
437  PinNumSize, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, numPenWidth,
438  false, false );
439  }
440  }
441  else /* Its a vertical line. */
442  {
443  if( aDrawPinName )
444  {
445  y = ( y1 + aPinPos.y) / 2;
446  GRText( DC, wxPoint( x1 - name_offset, y ), NameColor, m_name, TEXT_ANGLE_VERT,
448  namePenWidth, false, false );
449  }
450 
451  if( aDrawPinNum )
452  {
453  GRText( DC, wxPoint( x1 + num_offset, ( y1 + aPinPos.y) / 2 ), NumColor, m_number,
455  numPenWidth, false, false );
456  }
457  }
458  }
459 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:75
int m_numTextSize
Definition: lib_pin.h:74
const COLOR4D & GetLayerColor(int aLayer) const
Function GetLayerColor Returns the color used to draw a layer.
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
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:69
wxString m_number
Definition: lib_pin.h:73
int GetPenWidth() const override
Definition: lib_pin.cpp:168
bool IsVisible() const
Definition: lib_pin.h:147
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 footprint texts)
Definition: gr_text.cpp:131
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:41
int GetDefaultPenWidth() const
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), 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_HIDDEN, 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, and TEXT_ANGLE_VERT.

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

160 {
161  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
162 
163  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
164  aSearchData.GetFindString() :
165  aSearchData.GetFindString().Upper() );
166 
167  if( result == wxNOT_FOUND )
168  return false;
169 
170  wxString prefix = aText.Left( result );
171  wxString suffix;
172 
173  if( aSearchData.GetFindString().length() + result < aText.length() )
174  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
175 
176  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
177  aText, prefix, aSearchData.GetReplaceString(), suffix );
178 
179  aText = prefix + aSearchData.GetReplaceString() + suffix;
180 
181  return true;
182 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.

References 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, SCH_FIELD, and SCH_PIN.

Definition at line 478 of file eda_item.h.

478 { 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 931 of file lib_pin.cpp.

932 {
933  int rot_angle = aRotateCCW ? -900 : 900;
934 
935  RotatePoint( &m_position, aCenter, rot_angle );
936 
937  if( aRotateCCW )
938  {
939  switch( m_orientation )
940  {
941  case PIN_RIGHT: m_orientation = PIN_UP; break;
942  case PIN_UP: m_orientation = PIN_LEFT; break;
943  case PIN_LEFT: m_orientation = PIN_DOWN; break;
944  case PIN_DOWN: m_orientation = PIN_RIGHT; break;
945  }
946  }
947  else
948  {
949  switch( m_orientation )
950  {
951  case PIN_RIGHT: m_orientation = PIN_DOWN; break;
952  case PIN_UP: m_orientation = PIN_RIGHT; break;
953  case PIN_LEFT: m_orientation = PIN_UP; break;
954  case PIN_DOWN: m_orientation = PIN_LEFT; break;
955  }
956  }
957 }
Definition: lib_pin.h:50
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:208
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

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

◆ Set() [1/3]

bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
wxAny &  aValue 
)
inlineinherited

Definition at line 40 of file inspectable.h.

41  {
43  TYPE_ID thisType = TYPE_HASH( *this );
44  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
45 
46  if( object )
47  aProperty->setter( object, aValue );
48 
49  return object != nullptr;
50  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
virtual void setter(void *aObject, wxAny &aValue)=0
Provides class metadata.
Definition: property_mgr.h:61
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

◆ Set() [2/3]

template<typename T >
bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
aValue 
)
inlineinherited

Definition at line 53 of file inspectable.h.

54  {
56  TYPE_ID thisType = TYPE_HASH( *this );
57  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
58 
59  if( object )
60  aProperty->set<T>( object, aValue );
61 
62  return object != nullptr;
63  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
Provides class metadata.
Definition: property_mgr.h:61
void set(void *aObject, T aValue)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

◆ Set() [3/3]

template<typename T >
bool INSPECTABLE::Set ( const wxString &  aProperty,
aValue 
)
inlineinherited

Definition at line 66 of file inspectable.h.

67  {
69  TYPE_ID thisType = TYPE_HASH( *this );
70  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
71  void* object = nullptr;
72 
73  if( prop )
74  {
75  object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
76 
77  if( object )
78  prop->set<T>( object, aValue );
79  }
80 
81  return object != nullptr;
82  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:64
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:55
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:41
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Returns a property for a specific type.
Provides class metadata.
Definition: property_mgr.h:61
void set(void *aObject, T aValue)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

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

◆ SetBrightened()

void EDA_ITEM::SetBrightened ( )
inlineinherited

◆ SetConvert()

◆ SetFillMode()

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 220 of file eda_item.h.

220 { m_flags |= aMask; }
STATUS_FLAGS m_flags
Definition: eda_item.h:164

References EDA_ITEM::m_flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddFootprintToBoard(), SCH_MOVE_TOOL::AlignElements(), PCBNEW_CONTROL::AppendBoard(), FOOTPRINT::BuildPolyCourtyards(), SCH_EDIT_TOOL::ChangeTextType(), TRACKS_CLEANER::cleanup(), GRAPHICS_CLEANER::cleanupSegments(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SCH_DRAWING_TOOLS::createNewText(), LIB_PIN_TOOL::CreatePin(), SCH_DRAWING_TOOLS::createSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), KIGFX::SCH_PAINTER::draw(), LIB_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_EDIT_TOOL::Duplicate(), SCH_MOVE_TOOL::getConnectedDragItems(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), TRACKS_CLEANER::mergeCollinearSegments(), LIB_MOVE_TOOL::moveItem(), SCH_MOVE_TOOL::moveItem(), EE_SELECTION_TOOL::narrowSelection(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), SCH_ALTIUM_PLUGIN::ParseBezier(), SCH_ALTIUM_PLUGIN::ParseBus(), SCH_ALTIUM_PLUGIN::ParseBusEntry(), SCH_ALTIUM_PLUGIN::ParseJunction(), SCH_ALTIUM_PLUGIN::ParseLabel(), SCH_ALTIUM_PLUGIN::ParseLine(), SCH_ALTIUM_PLUGIN::ParseNetLabel(), SCH_ALTIUM_PLUGIN::ParseNoERC(), SCH_ALTIUM_PLUGIN::ParsePolygon(), SCH_ALTIUM_PLUGIN::ParsePolyline(), SCH_ALTIUM_PLUGIN::ParsePort(), SCH_ALTIUM_PLUGIN::ParseRectangle(), SCH_ALTIUM_PLUGIN::ParseRoundRectangle(), SCH_ALTIUM_PLUGIN::ParseSheetSymbol(), SCH_ALTIUM_PLUGIN::ParseWire(), LIB_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), DRAWING_TOOL::PlaceText(), BACK_ANNOTATE::processNetNameChange(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), DRC_TEST_PROVIDER_HOLE_CLEARANCE::Run(), SYMBOL_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), 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_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::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 272 of file eda_item.h.

272 { m_forceVisible = aEnable; }
bool m_forceVisible
Definition: eda_item.h:163

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetLength()

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 79 of file eda_item.cpp.

80 {
82 
83  // If this a child object, then the parent modification state also needs to be set.
84  if( m_parent )
86 }
void SetModified()
Definition: eda_item.cpp:79
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:162
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: eda_item.h:102
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:220

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

Referenced by LIB_PIN_TOOL::EditPinProperties(), LEGACY_PLUGIN::loadZONE_CONTAINER(), SCH_LINE::Move(), SCH_COMPONENT::Move(), SCH_LINE::MoveEnd(), SCH_LINE::MoveStart(), MoveTo(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_ALTIUM_PLUGIN::Parse(), ALTIUM_PCB::Parse(), LIB_PART::RemoveDrawItem(), SCH_COMPONENT::SetConvert(), SCH_COMPONENT::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SCH_COMPONENT::SetTransform(), and SCH_COMPONENT::SetUnit().

◆ SetName()

void LIB_PIN::SetName ( const wxString &  aName)
inline

◆ SetNameTextSize()

void LIB_PIN::SetNameTextSize ( int  aSize)
inline

◆ SetNumber()

void LIB_PIN::SetNumber ( const wxString &  aNumber)
inline

◆ SetNumberTextSize()

void LIB_PIN::SetNumberTextSize ( int  aSize)
inline

◆ SetOrientation()

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in DIMENSION_BASE.

Definition at line 184 of file eda_item.h.

184 { m_parent = aParent; }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:162

References EDA_ITEM::m_parent.

Referenced by FOOTPRINT::Add(), BOARD::Add(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewComponent(), SCH_SHEET::AddPin(), LIB_CONTROL::AddSymbolToSchematic(), SCH_SCREEN::Append(), LIB_FIELD::Copy(), SYMBOL_EDIT_FRAME::CreateNewPart(), SCH_DRAWING_TOOLS::createNewText(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), SCH_EDIT_TOOL::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), LIB_PART::Flatten(), FOOTPRINT::FOOTPRINT(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), LIB_PART::LIB_PART(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), SYMBOL_EDIT_FRAME::LoadOneSymbol(), FOOTPRINT::operator=(), LIB_PART::operator=(), PCB_PARSER::parseFOOTPRINT_unchecked(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_SEXPR_PARSER::ParseSymbol(), LIB_EDIT_TOOL::Paste(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), pasteFootprintItemsToFootprintEditor(), SCH_DRAWING_TOOLS::PlaceComponent(), PCB_EDITOR_CONTROL::PlaceModule(), BACK_ANNOTATE::processNetNameChange(), BOARD_COMMIT::Push(), SCH_SEXPR_PLUGIN_CACHE::removeSymbol(), SCH_LEGACY_PLUGIN_CACHE::removeSymbol(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SaveCopyOfZones(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SHEET_PIN::SCH_SHEET_PIN(), LIB_PART::SetFields(), DIMENSION_BASE::SetParent(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_GLOBALLABEL::SwapData(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), and SwapItemData().

◆ SetPosition()

◆ SetSelected()

◆ SetShape()

◆ SetState()

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

Definition at line 209 of file eda_item.h.

210  {
211  if( state )
212  m_status |= type; // state = ON or OFF
213  else
214  m_status &= ~type;
215  }
STATUS_FLAGS m_status
Definition: eda_item.h:161

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 218 of file eda_item.h.

218 { m_status = aStatus; }
STATUS_FLAGS m_status
Definition: eda_item.h:161

References EDA_ITEM::m_status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetType()

◆ SetUnit()

◆ SetVisible()

◆ SetWidth()

void LIB_PIN::SetWidth ( int  aWidth)
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 270 of file lib_pin.h.

270 { };

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 195 of file eda_item.h.

195 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:220
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110

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 509 of file eda_item.h.

509 { 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 ctor sets it, so there is no public "setter" method.

Returns
KICAD_T - the type of object.

Definition at line 181 of file eda_item.h.

181 { return m_structType; }
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:158

References EDA_ITEM::m_structType.

Referenced by FOOTPRINT::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(), DIALOG_NET_INSPECTOR::buildNewItem(), 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_EDIT_TOOL::ChangeTextType(), CN_VISITOR::checkZoneItemConnection(), SCH_MARKER::ClassOf(), PCB_TEXT::ClassOf(), PCB_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), FP_SHAPE::ClassOf(), SCH_NO_CONNECT::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), PCB_GROUP::ClassOf(), PCB_TARGET::ClassOf(), SCH_PIN::ClassOf(), SCH_LINE::ClassOf(), FP_TEXT::ClassOf(), SCH_FIELD::ClassOf(), PCB_SHAPE::ClassOf(), ZONE::ClassOf(), PAD::ClassOf(), SCH_BITMAP::ClassOf(), TRACK::ClassOf(), NETINFO_ITEM::ClassOf(), SCH_SHEET_PIN::ClassOf(), FOOTPRINT::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_COMPONENT::ClassOf(), SCH_SCREEN::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), SCH_TEXT::ClassOf(), BOARD::ClassOf(), SCH_SHEET::ClassOf(), ARC::ClassOf(), SCH_LABEL::ClassOf(), ALIGNED_DIMENSION::ClassOf(), VIA::ClassOf(), SCH_GLOBALLABEL::ClassOf(), ORTHOGONAL_DIMENSION::ClassOf(), SCH_HIERLABEL::ClassOf(), LEADER::ClassOf(), CENTER_DIMENSION::ClassOf(), TRACKS_CLEANER::cleanup(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_TEXT::compare(), LIB_POLYLINE::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), compare(), LIB_ITEM::compare(), EE_GRID_HELPER::computeAnchors(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), BOARD::ConvertKIIDsToCrossReferences(), SCHEMATIC::ConvertKIIDsToRefs(), PAD_TOOL::copyPadSettings(), FOOTPRINT::CoverageRatio(), BOARD_ADAPTER::createLayers(), PCB_BASE_FRAME::CreateNewFootprint(), SCH_DRAWING_TOOLS::createNewText(), BOARD_ADAPTER::createNewTrack(), ZONE_CREATE_HELPER::createNewZone(), SCH_SCREEN::DeleteItem(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), 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(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), DRAWING_TOOL::DrawDimension(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), FOOTPRINT::DuplicateItem(), EDA_ITEM_DESC::EDA_ITEM_DESC(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckFloatingWires(), CONNECTION_GRAPH::ercCheckLabels(), CONNECTION_GRAPH::ercCheckNoConnects(), DRC_ENGINE::EvalRulesForItems(), EDIT_TOOL::FilletTracks(), NETLIST_EXPORTER_BASE::findNextSymbol(), PCB_BASE_FRAME::FocusOnItem(), EDIT_TOOL::FootprintFilter(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), FP_TEXT::FP_TEXT(), POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), SCH_FIELD::GetBoundingBox(), TRACK::GetBoundingBox(), SCH_FIELD::GetCanonicalName(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), SCH_TEXT::GetContextualTextVars(), CONNECTION_GRAPH::getDefaultConnection(), getDrilledHoleShape(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_FIELD::GetMenuImage(), DIMENSION_BASE::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTION_SUBGRAPH::GetNameForDriver(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), PCB_SHAPE::GetParentFootprint(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), getRect(), KIGFX::SCH_PAINTER::getRenderColor(), getShape(), PCB_TEXT::GetShownText(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), CONVERT_TOOL::getStartEndPoints(), BOARD::GroupLegalOps(), SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), hash_fp_item(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlightInternal(), PCB_INSPECTION_TOOL::HighlightItem(), PCB_INSPECTION_TOOL::highlightNet(), highlightNet(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), DRC_RTREE::Insert(), insideArea(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_INSPECTION_TOOL::InspectClearance(), PCB_INSPECTION_TOOL::InspectConstraints(), ARRAY_CREATOR::Invoke(), CN_ANCHOR::IsDangling(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), CADSTAR_PCB_ARCHIVE_LOADER::isFootprint(), SCH_FIELD::IsHypertext(), isKeepoutZone(), isNetTie(), TRACK::IsNull(), PNS_KICAD_IFACE::IsOnLayer(), SCH_LINE::IsParallel(), SCH_FIELD::IsReplaceable(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), SELECTION_TOOL::itemPassesFilter(), CONVERT_TOOL::LinesToPoly(), CLIPBOARD_IO::Load(), CADSTAR_SCH_ARCHIVE_LOADER::loadHierarchicalSheetPins(), EE_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), NETLIST_EXPORTER_XML::makeListOfNets(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), memberOf(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), APPEARANCE_CONTROLS::OnBoardItemAdded(), APPEARANCE_CONTROLS::OnBoardItemChanged(), APPEARANCE_CONTROLS::OnBoardItemRemoved(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), EDA_3D_CANVAS::OnMouseMove(), TRACK::cmp_tracks::operator()(), CN_VISITOR::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), SCH_JUNCTION::operator<(), 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=(), PAD::PAD(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), SCH_SCREEN::Plot(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), CONVERT_TOOL::PolyToLines(), SCH_FIELD::Print(), SCH_SCREEN::Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), BACK_ANNOTATE::processNetNameChange(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::PutDataInPreviousState(), SELECTION_TOOL::RebuildSelection(), SCH_CONNECTION::recacheName(), SCH_BASE_FRAME::RefreshSelection(), EE_RTREE::remove(), FOOTPRINT::Remove(), CN_CONNECTIVITY_ALGO::Remove(), SCH_SCREEN::Remove(), BOARD::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_FIELD::Replace(), SCHEMATIC::ResolveCrossReference(), CONNECTION_SUBGRAPH::ResolveDrivers(), PCB_PARSER::resolveGroups(), WS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), 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::saveField(), 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(), CLIPBOARD_IO::SaveSelection(), SCH_SEXPR_PLUGIN_CACHE::saveSymbolDrawItem(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_SCREEN::Schematic(), SCH_ITEM::Schematic(), CONVERT_TOOL::SegmentToArc(), SELECTION_TOOL::select(), SELECTION_TOOL::Selectable(), EE_SELECTION_TOOL::Selectable(), SELECTION_TOOL::selectConnectedTracks(), SCH_FIELD::SetId(), ITEM_PICKER::SetItem(), SCH_FIELD::SetPosition(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), PCB_GROUP::SwapData(), SCH_SHEET_PIN::SwapData(), PCB_TEXT::SwapData(), SCH_FIELD::SwapData(), TRACK::SwapData(), ARC::SwapData(), ALIGNED_DIMENSION::SwapData(), ORTHOGONAL_DIMENSION::SwapData(), SCH_SHEET::SwapData(), LEADER::SwapData(), SCH_COMPONENT::SwapData(), VIA::SwapData(), CENTER_DIMENSION::SwapData(), PAD::SwapData(), FOOTPRINT::SwapData(), ZONE::SwapData(), SwapItemData(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZones(), ERC_TESTER::TestMultUnitPinConflicts(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), ERC_TESTER::TestPinToPin(), ERC_TESTER::TestSimilarLabels(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), PCB_GROUP::TopLevelGroup(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), 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::unhighlightInternal(), KIGFX::PCB_VIEW::Update(), SCH_TEXT::UpdateDanglingState(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), PL_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateItem(), SCH_BASE_FRAME::UpdateItem(), CONNECTION_GRAPH::updateItemConnectivity(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updateParentItem(), SCH_EDITOR_CONTROL::updatePastedInstances(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), PCB_GROUP::Visit(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_GLOBALLABEL::Visit(), SCH_SHEET::Visit(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), PCB_GROUP::WithinScope(), and NETLIST_EXPORTER_CADSTAR::writeListOfNets().

◆ 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 PAD, FOOTPRINT, EDIT_POINTS, CENTER_DIMENSION, PCB_SHAPE, GERBER_DRAW_ITEM, DIMENSION_BASE, TRACK, FP_TEXT, KIGFX::WS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, PCB_MARKER, MY_DRAWING, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, 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 206 of file eda_item.cpp.

207 {
208  // Basic fallback
209  return BOX2I( VECTOR2I( GetBoundingBox().GetOrigin() ),
210  VECTOR2I( GetBoundingBox().GetSize() ) );
211 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:522
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.
Definition: eda_item.cpp:89

References EDA_ITEM::GetBoundingBox().

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), BRIGHT_BOX::ViewBBox(), DIMENSION_BASE::ViewBBox(), PCB_SHAPE::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::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::ORIGIN_VIEWITEM, BRIGHT_BOX, KIGFX::PREVIEW::ARC_ASSISTANT, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, and PCB_BRIGHT_BOX.

Definition at line 117 of file view_item.h.

118  {}

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 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 144 of file lib_item.cpp.

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

References LAYER_DEVICE, LAYER_DEVICE_BACKGROUND, and LAYER_SELECTION_SHADOWS.

◆ ViewGetLOD()

virtual double 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 FP_ZONE, PAD, FOOTPRINT, VIA, GERBER_DRAW_ITEM, TRACK, FP_TEXT, ZONE, PCB_GROUP, and FP_SHAPE.

Definition at line 141 of file view_item.h.

142  {
143  // By default always show the item
144  return 0.0;
145  }

Referenced by PNS_KICAD_IFACE::IsItemVisible(), KIGFX::VIEW::drawItem::operator()(), EE_GRID_HELPER::queryVisible(), 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, FOOTPRINT, SCH_SHEET, LIB_PART, GERBER_FILE_IMAGE, SCH_GLOBALLABEL, GERBER_DRAW_ITEM, TRACK, PCB_GROUP, and GBR_LAYOUT.

Definition at line 107 of file eda_item.cpp.

108 {
109 #if 0 && defined(DEBUG)
110  std::cout << GetClass().mb_str() << ' ';
111 #endif
112 
113  if( IsType( scanTypes ) )
114  {
115  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
116  return SEARCH_RESULT::QUIT;
117  }
118 
120 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Function IsType Checks whether the item is one of the listed types.
Definition: eda_item.h:250
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().

Member Data Documentation

◆ m_alternates

std::map<wxString, ALT> LIB_PIN::m_alternates
protected

Definition at line 77 of file lib_pin.h.

Referenced by GetAlt(), and GetAlternates().

◆ m_attributes

int LIB_PIN::m_attributes
protected

Definition at line 71 of file lib_pin.h.

Referenced by compare(), IsVisible(), 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 88 of file lib_item.h.

Referenced by LIB_TEXT::Clone(), LIB_ITEM::compare(), LIB_ITEM::GetConvert(), LIB_ITEM::GetMsgPanelInfo(), LIB_ITEM::LIB_ITEM(), LIB_ITEM::operator<(), LIB_PART::SetConversion(), and LIB_ITEM::SetConvert().

◆ m_Fill

◆ m_flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

◆ m_isFillable

◆ m_length

int LIB_PIN::m_length
protected

◆ m_name

wxString LIB_PIN::m_name
protected

◆ m_nameTextSize

int LIB_PIN::m_nameTextSize
protected

◆ m_number

wxString LIB_PIN::m_number
protected

◆ m_numTextSize

int LIB_PIN::m_numTextSize
protected

◆ m_orientation

int LIB_PIN::m_orientation
protected

◆ m_parent

◆ m_position

wxPoint LIB_PIN::m_position
protected

◆ m_shape

GRAPHIC_PINSHAPE LIB_PIN::m_shape
protected

◆ m_status

STATUS_FLAGS EDA_ITEM::m_status
protectedinherited

◆ m_type

◆ m_Unit

int LIB_ITEM::m_Unit
protectedinherited

Unit identification for multiple parts per package.

Set to 0 if the item is common to all units.

Definition at line 82 of file lib_item.h.

Referenced by LIB_TEXT::Clone(), LIB_ITEM::compare(), LIB_ITEM::GetMsgPanelInfo(), LIB_ITEM::GetUnit(), LIB_ITEM::LIB_ITEM(), LIB_ITEM::operator<(), LIB_ITEM::SetUnit(), and LIB_PART::SetUnitCount().

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 151 of file eda_item.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_COMPONENT::AddHierarchicalReference(), RC_ITEM::AddItem(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), SCHEMATIC::ConvertRefsToKIIDs(), MICROWAVE_TOOL::createMicrowaveInductor(), DRAWING_TOOL::DrawVia(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), FOOTPRINT::Duplicate(), FOOTPRINT::DuplicateItem(), PAD_TOOL::EditPad(), PCB_EDIT_FRAME::ExchangeFootprint(), PAD_TOOL::explodePad(), BOARD::FillItemMap(), SCH_SHEET_LIST::FillItemMap(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), BOARD::GetItem(), SCH_SHEET_LIST::GetItem(), DIALOG_BOARD_REANNOTATE::GetNewRefDes(), SCH_REFERENCE::GetPath(), SCH_MARKER::GetUUID(), PCB_MARKER::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), SCH_LEGACY_PLUGIN::loadComponent(), CADSTAR_PCB_ARCHIVE_LOADER::loadComponents(), LEGACY_PLUGIN::loadFOOTPRINT(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PCB_EDIT_FRAME::LoadFootprints(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), CADSTAR_SCH_ARCHIVE_LOADER::loadSchematicSymbol(), LEGACY_PLUGIN::loadTrackList(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_EDIT_FRAME::mapExistingAnnotation(), TRACK::cmp_tracks::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), FOOTPRINT::cmp_pads::operator()(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), PAD::PAD(), PCB_PARSER::parseDIMENSION(), PCB_PARSER::parseFOOTPRINT_unchecked(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_COMPONENT::ReplaceInstanceSheetPath(), PCB_PARSER::resolveGroups(), 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::SetItems(), SwapItemData(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), testGroupEqual(), SCH_EDITOR_CONTROL::updatePastedInstances(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().


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